ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgzZTU5YwotLS0gL2Rldi9udWxsCisrKyBiL01ha2VmaWxlCkBAIC0wLDAgKzEsMTMwIEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIworIyBNYWtlZmlsZSBmb3IgVGlueVhtbCB0ZXN0LgorIyBMZWUgVGhvbWFzb24KKyMgd3d3LmdyaW5uaW5nbGl6YXJkLmNvbQorIworIyBUaGlzIGlzIGEgR05VIG1ha2UgKGdtYWtlKSBtYWtlZmlsZQorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworIyBERUJVRyBjYW4gYmUgc2V0IHRvIFlFUyB0byBpbmNsdWRlIGRlYnVnZ2luZyBpbmZvLCBvciBOTyBvdGhlcndpc2UKK0RFQlVHICAgICAgICAgIDo9IFlFUworCisjIFBST0ZJTEUgY2FuIGJlIHNldCB0byBZRVMgdG8gaW5jbHVkZSBwcm9maWxpbmcgaW5mbywgb3IgTk8gb3RoZXJ3aXNlCitQUk9GSUxFICAgICAgICA6PSBOTworCisjIFRJTllYTUxfVVNFX1NUTCBjYW4gYmUgdXNlZCB0byB0dXJuIG9uIFNUTCBzdXBwb3J0LiBOTywgdGhlbiBTVEwKKyMgd2lsbCBub3QgYmUgdXNlZC4gWUVTIHdpbGwgaW5jbHVkZSB0aGUgU1RMIGZpbGVzLgorVElOWVhNTF9VU0VfU1RMIDo9IE5PCisKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0NDICAgICA6PSBnY2MKK0NYWCAgICA6PSBnKysKK0xEICAgICA6PSBnKysKK0FSICAgICA6PSBhciByYworUkFOTElCIDo9IHJhbmxpYgorCitERUJVR19DRkxBR1MgICAgIDo9IC1XYWxsIC1Xbm8tZm9ybWF0IC1nIC1EREVCVUcKK1JFTEVBU0VfQ0ZMQUdTICAgOj0gLVdhbGwgLVduby11bmtub3duLXByYWdtYXMgLVduby1mb3JtYXQgLU8zCisKK0xJQlMJCSA6PQorCitERUJVR19DWFhGTEFHUyAgIDo9ICR7REVCVUdfQ0ZMQUdTfSAKK1JFTEVBU0VfQ1hYRkxBR1MgOj0gJHtSRUxFQVNFX0NGTEFHU30KKworREVCVUdfTERGTEFHUyAgICA6PSAtZworUkVMRUFTRV9MREZMQUdTICA6PQorCitpZmVxIChZRVMsICR7REVCVUd9KQorICAgQ0ZMQUdTICAgICAgIDo9ICR7REVCVUdfQ0ZMQUdTfQorICAgQ1hYRkxBR1MgICAgIDo9ICR7REVCVUdfQ1hYRkxBR1N9CisgICBMREZMQUdTICAgICAgOj0gJHtERUJVR19MREZMQUdTfQorZWxzZQorICAgQ0ZMQUdTICAgICAgIDo9ICR7UkVMRUFTRV9DRkxBR1N9CisgICBDWFhGTEFHUyAgICAgOj0gJHtSRUxFQVNFX0NYWEZMQUdTfQorICAgTERGTEFHUyAgICAgIDo9ICR7UkVMRUFTRV9MREZMQUdTfQorZW5kaWYKKworaWZlcSAoWUVTLCAke1BST0ZJTEV9KQorICAgQ0ZMQUdTICAgOj0gJHtDRkxBR1N9IC1wZyAtTzMKKyAgIENYWEZMQUdTIDo9ICR7Q1hYRkxBR1N9IC1wZyAtTzMKKyAgIExERkxBR1MgIDo9ICR7TERGTEFHU30gLXBnCitlbmRpZgorCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyBQcmVwcm9jZXNzb3IgZGlyZWN0aXZlcworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworaWZlcSAoWUVTLCAke1RJTllYTUxfVVNFX1NUTH0pCisgIERFRlMgOj0gLURUSVhNTF9VU0VfU1RMCitlbHNlCisgIERFRlMgOj0KK2VuZGlmCisKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjIEluY2x1ZGUgcGF0aHMKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNJTkNTIDo9IC1JL3Vzci9pbmNsdWRlL2crKy0yIC1JL3Vzci9sb2NhbC9pbmNsdWRlCitJTkNTIDo9CisKKworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgTWFrZWZpbGUgY29kZSBjb21tb24gdG8gYWxsIHBsYXRmb3JtcworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQ0ZMQUdTICAgOj0gJHtDRkxBR1N9ICAgJHtERUZTfQorQ1hYRkxBR1MgOj0gJHtDWFhGTEFHU30gJHtERUZTfQorCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyBUYXJnZXRzIG9mIHRoZSBidWlsZAorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworT1VUUFVUIDo9IHhtbHRlc3QKKworYWxsOiAke09VVFBVVH0KKworCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyBTb3VyY2UgZmlsZXMKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NSQ1MgOj0gdGlueXhtbC5jcHAgdGlueXhtbHBhcnNlci5jcHAgeG1sdGVzdC5jcHAgdGlueXhtbGVycm9yLmNwcCB0aW55c3RyLmNwcAorCisjIEFkZCBvbiB0aGUgc291cmNlcyBmb3IgbGlicmFyaWVzCitTUkNTIDo9ICR7U1JDU30KKworT0JKUyA6PSAkKGFkZHN1ZmZpeCAubywkKGJhc2VuYW1lICR7U1JDU30pKQorCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyBPdXRwdXQKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyR7T1VUUFVUfTogJHtPQkpTfQorCSR7TER9IC1vICRAICR7TERGTEFHU30gJHtPQkpTfSAke0xJQlN9ICR7RVhUUkFfTElCU30KKworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgY29tbW9uIHJ1bGVzCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjIFJ1bGVzIGZvciBjb21waWxpbmcgc291cmNlIGZpbGVzIHRvIG9iamVjdCBmaWxlcworJS5vIDogJS5jcHAKKwkke0NYWH0gLWMgJHtDWFhGTEFHU30gJHtJTkNTfSAkPCAtbyAkQAorCislLm8gOiAlLmMKKwkke0NDfSAtYyAke0NGTEFHU30gJHtJTkNTfSAkPCAtbyAkQAorCitkaXN0OgorCWJhc2ggbWFrZWRpc3RsaW51eAorCitjbGVhbjoKKwktcm0gLWYgY29yZSAke09CSlN9ICR7T1VUUFVUfQorCitkZXBlbmQ6CisJI21ha2VkZXBlbmQgJHtJTkNTfSAke1NSQ1N9CisKK3Rpbnl4bWwubzogdGlueXhtbC5oIHRpbnlzdHIuaAordGlueXhtbHBhcnNlci5vOiB0aW55eG1sLmggdGlueXN0ci5oCit4bWx0ZXN0Lm86IHRpbnl4bWwuaCB0aW55c3RyLmgKK3Rpbnl4bWxlcnJvci5vOiB0aW55eG1sLmggdGlueXN0ci5oCmRpZmYgLS1naXQgYS9jaGFuZ2VzLnR4dCBiL2NoYW5nZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYzQ3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFuZ2VzLnR4dApAQCAtMCwwICsxLDIxMCBAQAorQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMC4xOgorLSBGaXhlZCBjb21tZW50IHRhZ3Mgd2hpY2ggd2VyZSBvdXRwdXRpbmcgYXMgJzw/LS0nIGluc3RlYWQgb2YgCisgIHRoZSBjb3JyZWN0ICc8IS0tJy4KKy0gSW1wbGVtZW50ZWQgdGhlIE5leHQgYW5kIFByZXYgbWV0aG9kcyBvZiB0aGUgVGlYbWxBdHRyaWJ1dGUgY2xhc3MuCistIFJlbmFtZWQgJ0xhc3RBdHRyaWJ0dXRlJyB0byAnTGFzdEF0dHJpYnV0ZScKKy0gRml4ZWQgYmFkIHBvaW50ZXIgdG8gJ2lzc3BhY2UnIHRoYXQgY291bGQgb2NjdXIgd2hpbGUgcGFyc2luZyB0ZXh0LgorLSBFcnJvcnMgZmluZGluZyBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0YWdzIG5vIGxvbmdlciB0aHJvdyBpdCBpbnRvIGFuCisgIGluZmluaXRlIGxvb3AuIChIb3BlZnVsbHkuKQorCitDaGFuZ2VzIGluIHZlcnNpb24gMS4wLjIKKy0gTWlub3IgZG9jdW1lbnRhdGlvbiBmaXhlcy4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMC4zCistIEFmdGVyIG5vZGVzIGFyZSBhZGRlZCB0byBhIGRvY3VtZW50LCB0aGV5IHJldHVybiBhIHBvaW50ZXIKKyAgdG8gdGhlIG5ldyBub2RlIGluc3RlYWQgb2YgYSBib29sIGZvciBzdWNjZXNzLgorLSBFbGVtZW50cyBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBhIHZhbHVlLCB3aGljaCBpcyB0aGUKKyAgZWxlbWVudCBuYW1lLiBFdmVyeSBlbGVtZW50IG11c3QgaGF2ZSBhIHZhbHVlIG9yIGl0IHdpbGwgYmUKKyAgaW52YWxpZCwgYnV0IHRoZSBjb2RlIGNoYW5nZXMgdG8gZW5mb3JjZSB0aGlzIGFyZSBub3QgZnVsbHkKKyAgaW4gcGxhY2UuCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAxLjEuMAorLSBBZGRlZCB0aGUJVGlYbWxBdHRyaWJ1dGVTZXQgY2xhc3MgdG8gcHVsbCB0aGUgYXR0cmlidXRlcyBpbnRvCisgIGEgc2VwZXJhdGUgY29udGFpbmVyLgorLSBNb3ZlZCB0aGUgZG91Ymx5IGxpa2VkIGxpc3Qgb3V0IG9mIFhtbEJhc2UuIE5vdyBYbWxCYXNlIG9ubHkKKyAgcmVxdWlyZXMgdGhlIFByaW50KCkgZnVuY3Rpb24gYW5kIGRlZmluZXMgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucy4KKy0gTW92ZWQgZXJyb3JzIGludG8gYSBzZXBlcmF0ZSBmaWxlLiAoV2l0aCB0aGUgaWRlYSBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbgorICB0byB0aGUgb3RoZXIgbGF0aW4tMSBsYW5ndWFnZXMuKQorLSBBZGRlZCB0aGUgIk5vZGVUeXBlIgorLSBGaXhlZCB3aGl0ZSBzcGFjZSBwYXJzaW5nIGluIHRleHQgdG8gY29uZm9ybSB3aXRoIHRoZSBzdGFuZGFyZC4gCisgIEJhc2ljYWxseSwgYWxsIHdoaXRlIHNwYWNlIGJlY29tZXMganVzdCBvbmUgc3BhY2UuCistIEFkZGVkIHRoZSBUaVhtbERlY2xhcmF0aW9uIGNsYXNzIHRvIHJlYWQgeG1sIGRlY2xhcmF0aW9ucy4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMi4wCistIFJlbW92ZWQgdGhlIGZhY3RvcnkuIFRoZSBmYWN0b3J5IHdhcyBub3QgcmVhbGx5IGluIHRoZSBzcGlyaXQgCisgIG9mIHNtYWxsIGFuZCBzaW1wbGUsIGNvbmZ1c2VkIHRoZSBjb2RlLCBhbmQgd2FzIG9mIGxpbWl0ZWQgdmFsdWUuCistIEFkZGVkIEZpcnN0Q2hpbGRFbGVtZW50IGFuZCBOZXh0U2libGluZ0VsZW1lbnQsIGJlY2F1c2UgdGhleQorICBhcmUgc3VjaCBjb21tb24gZnVuY3Rpb25zLgorLSBSZS13cm90ZSB0aGUgZXhhbXBsZSB0byB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBtb3JlIGZ1bmN0aW9uYWxpdHkuCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAxLjIuMQorLSBGaXhlZCBhIGJ1ZyB3aGVyZSBjb21tZW50cyBjb3VsZG4ndCBiZSBpbnNpZGUgZWxlbWVudHMuCistIExvYWRpbmcgbm93IGNsZWFycyBvdXQgZXhpc3RpbmcgWE1MIHJhdGhlciB0aGFuIGFwcGVuZGluZy4KKy0gQWRkZWQgdGhlICJDbGVhciIgbWV0aG9kIG9uIGEgbm9kZSB0byBkZWxldGUgYWxsIGl0cyBjaGlsZHJlbi4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMi4yCistIEZpeGVkIFRpWG1sQXR0cmlidXRlOjpQcmV2aW91cyBhY3R1YWxseSByZXR1cm5pbmcgIm5leHQuIiBUaGFua3MKKyAgdG8gUmlja2FyZCBUcm9lZHNzb24gZm9yIHRoZSBidWcgZml4LgorCitDaGFuZ2VzIGluIHZlcnNpb24gMS4yLjMKKy0gQWRkZWQgdGhlIFRJWE1MIHByZWZpeCB0byB0aGUgZXJyb3Igc3RyaW5ncyB0byByZXNvbHZlIGNvbmZsaWN0cworICB3aXRoICNkZWZpbmVzIGluIE9TIGhlYWRlcnMuIFRoYW5rcyB0byBTdGV2ZSBMaG9tbWUuCistIEZpeGVkIGEgZGVsZXRlIGJ1ZiB0aGF0IHNob3VsZCBiZSBhIGRlbGV0ZSBbXSBidWYuIAorICBUaGFua3MgdG8gRXBoaSBTaW5vd2l0ei4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMi40CistIFJlcGxhY2VDaGlsZCgpIHdhcyBhbG1vc3QgZ3VhcmVudGVlZCB0byBmYWlsLiBTaG91bGQgYmUgZml4ZWQsCisgIHRoYW5rcyB0byBKb2UgU21pdGguIEpvZSBhbHNvIHBvaW50ZWQgb3V0IHRoYXQgdGhlIFByaW50KCkgZnVuY3Rpb25zCisgIHNob3VsZCB0YWtlIHN0cmVhbSByZWZlcmVuY2VzOiBJIGFncmVlLCBhbmQgd291bGQgbGlrZSB0byBvdmVybG9hZAorICB0aGUgUHJpbnQoKSBtZXRob2QgdG8gdGFrZSBlaXRoZXIgZm9ybWF0LCBidXQgSSBkb24ndCB3YW50IHRvIGRvIAorICB0aGlzIGluIGEgZG90IHJlbGVhc2UuCistIFNvbWUgY29tcGlsZXJzIHNlZW0gdG8gbmVlZCBhbiBleHRyYSA8Y3R5cGUuaD4gaW5jbHVkZS4gVGhhbmtzCisgIHRvIFN0ZXZlIExob21tZSBmb3IgdGhhdC4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMC4wIEJFVEEKKy0gTWFkZSB0aGUgVG9YWFgoKSBjYXN0cyBzYWZlIGlmICd0aGlzJyBpcyBudWxsLiAKKyAgV2hlbiAiTG9hZEZpbGUiIGlzIGNhbGxlZCB3aXRoIGEgZmlsZW5hbWUsIHRoZSB2YWx1ZSB3aWxsIGNvcnJlY3RseSBnZXQgc2V0LgorICBUaGFua3MgdG8gQnJpYW4gWW9kZXIuCistIEZpeGVkIGJ1ZyB3aGVyZSBpc2FscGhhKCkgYW5kIGlzYWxudW0oKSB3b3VsZCBnZXQgY2FsbGVkIHdpdGggYSBuZWdhdGl2ZSB2YWx1ZSBmb3IgCisgIGhpZ2ggYXNjaWkgbnVtYmVycy4gVGhhbmtzIHRvIEFsZXNreSBBa3Nlbm92LgorLSBGaXhlZCBzb21lIGVycm9ycyBjb2RlcyB0aGF0IHdlcmUgbm90IGdldHRpbmcgc2V0LgorLSBNYWRlIG1ldGhvZHMgImNvbnN0IiB0aGF0IHdlcmUgbm90LgorLSBBZGRlZCBhIHN3aXRjaCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgaWdub3Jpbmcgb2Ygd2hpdGUgc3BhY2UuICggVGlYbWxEb2N1bWVudDo6U2V0SWdub3JlV2hpdGVTcGFjZSgpICkKKy0gR3JlYXRlciBzdGFuZGFyZGl6YXRpb24gYW5kIGNvZGUgcmUtdXNlIGluIHRoZSBwYXJzZXIuCistIEFkZGVkIGEgc3RyZWFtIG91dCBvcGVyYXRvci4KKy0gQWRkZWQgYSBzdHJlYW0gaW4gb3BlcmF0b3IuCistIEVudGl0eSBzdXBwb3J0LCBvZiBwcmVkZWZpbmVkIGVudGl0ZXMuICYjeCBlbnRpdGllcyBhcmUgdW50b3VjaGVkIGJ5IGlucHV0IG9yIG91dHB1dC4KKy0gSW1wcm92ZWQgdGV4dCBvdXQgZm9ybWF0dGluZy4KKy0gRml4ZWQgUmVwbGFjZUNoaWxkIGJ1ZywgdGhhbmtzIHRvIFRhbyBDaGVuLgorCitDaGFuZ2VzIGluIHZlcnNpb24gMi4wLjEKKy0gRml4ZWQgaGFuZ2luZyBvbiBsb2FkaW5nIGEgMCBsZW5ndGggZmlsZS4gVGhhbmtzIHRvIEplZmYgU2NvenphZmF2YS4KKy0gRml4ZWQgY3Jhc2hpbmcgb24gSW5zZXJ0QmVmb3JlQ2hpbGQgYW5kIEluc2VydEFmdGVyQ2hpbGQuIEFsc28gcG9zc2liaWxpdHkgb2YgYmFkIGxpbmtzIGJlaW5nCisgIGNyZWF0ZWQgYnkgc2FtZSBmdW5jdGlvbi4gVGhhbmtzIHRvIEZyYW5rIERlIHByaW5zLgorLSBBZGRlZCBtaXNzaW5nIGxpY2VuY2UgdGV4dC4gVGhhbmtzIHRvIExhcnMgV2lsbGVtc2Vucy4KKy0gQWRkZWQgPGN0eXBlLmg+IGluY2x1ZGUsIGF0IHRoZSBzdWdnZXN0aW9uIG9mIFN0ZXZlIFdhbHRlcnMuCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAyLjEuMAorLSBZdmVzIEJlcnF1aW4gYnJpbmdzIHVzIHRoZSBTVEwgc3dpdGNoLiBUaGUgZm9ydW0gb24gU291cmNlRm9yZ2UsIGFuZCB2YXJpb3VzIGVtYWlscyB0bworICBtZSwgaGF2ZSBsb25nIGRlYmF0ZWQgYWxsIG91dCBTVEwgdnMuIG5vIFNUTCBhdCBhbGwuIEFuZCBub3cgeW91IGNhbiBoYXZlIGl0IGJvdGggd2F5cy4KKyAgVGlueVhtbCB3aWxsIGNvbXBpbGUgZWl0aGVyIHdheS4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMS4xCistIENvbXBpbGF0aW9uIHdhcm5pbmdzLgorCitDaGFuZ2VzIGluIHZlcnNpb24gMi4xLjIKKy0gVW5lZWRlZCBjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgU1RMIGNhc2UuCistIENoYW5nZWQgaGVhZGVycyBzbyB0aGF0IFNUTCBjYW4gYmUgdHVybmVkIG9uIG9yIG9mZiBpbiB0aW55eG1sLmgKKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMS4zCistIEZpeGVkIG5vbi1jb25zdCByZWZlcmVuY2UgaW4gQVBJOyBub3cgdXNlcyBhIHBvaW50ZXIuCistIENvcHkgY29uc3RydWN0b3Igb2YgVGlYbWxTdHJpbmcgbm90IGNoZWNraW5nIGZvciBhc3NpZ25tZW50IHRvIHNlbGYuCistIE5pbXJvZCBDb2hlbiBmb3VuZCBhIHRydWx5IGV2aWwgYnVnIGluIHRoZSBTVEwgaW1wbGVtZW50YXRpb24gdGhhdCBvY2N1cnMKKyAgd2hlbiBhIHN0cmluZyBpcyBjb252ZXJ0ZWQgdG8gYSBjX3N0ciBhbmQgdGhlbiBhc3NpZ25lZCB0byBzZWxmLiBTZWFyY2ggZm9yCisgIFNUTF9TVFJJTkdfQlVHIGZvciBhIGZ1bGwgZGVzY3JpcHRpb24uIEknbSBhc3NlcnRpbmcgdGhpcyBpcyBhIE1pY3Jvc29mdCBTVEwKKyAgYnVnLCBzaW5jZSAmc3RyaW5nIGFuZCBzdHJpbmcuY19zdHIoKSBzaG91bGQgbmV2ZXIgYmUgdGhlIHNhbWUuIE5ldmVydGhlbGVzcywKKyAgdGhlIGNvZGUgd29ya3MgYXJvdW5kIGl0LgorLSBVcml2YW4gU2FhaWIgcG9pbnRlZCBvdXQgYSBjb21waWxlciBjb25mbGljdCwgd2hlcmUgdGhlIEMgaGVhZGVycyBkZWZpbmUKKyAgdGhlIGlzYmxhbmsgbWFjcm8sIHdoaWNoIHdhcyB3aXBpbmcgb3V0IHRoZSBUaVhtbFN0cmluZzo6aXNibGFuaygpIG1ldGhvZC4KKyAgVGhlIG1ldGhvZCB3YXMgdW51c2VkIGFuZCBoYXMgYmVlbiByZW1vdmVkLgorCitDaGFuZ2VzIGluIHZlcnNpb24gMi4xLjQKKy0gUmV3b3JrZWQgdGhlIGVudGl0eSBjb2RlLiBFbnRpdGllcyB3ZXJlIG5vdCBjb3JyZWN0bHkgc3VydmluZyByb3VuZCB0cmlwIGlucHV0IGFuZCBvdXRwdXQuCisgIFdpbGwgbm93IGF1dG9tYXRpY2FsbHkgY3JlYXRlIGVudGl0aWVzIGZvciBoaWdoIGFzY2lpIGluIG91dHB1dC4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMS41CistIEJ1ZyBmaXggYnkga3lsb3RhbiA6IGluZmluaXRlIGxvb3Agb24gc29tZSBpbnB1dCAodGlueXhtbHBhcnNlci5jcHAgcmV2IDEuMjcpCistIENvbnRyaWJ1dGVkIGJ5IEl2aWNhIEFyYWNpYyAoYnl0ZWxvcmQpIDogMSBuZXcgVkMrKyBwcm9qZWN0IHRvIGNvbXBpbGUgdmVyc2lvbnMgYXMgc3RhdGljIGxpYnJhcmllcyAodGlueXhtbF9saWIuZHNwKSwgCisgIGFuZCBhbiBleGFtcGxlIHVzYWdlIGluIHhtbHRlc3QuZHNwCisgIChQYXRjaCByZXF1ZXN0IElEIDY3ODYwNSkKKy0gQSBzdWdnZXN0aW9uIGJ5IFJvbmFsZCBGZW5uZXIgSnIgKGRvcm1sb2NrKSB0byBhZGQgI2luY2x1ZGUgPGlzdHJlYW0+IGFuZCA8b3N0cmVhbT4gZm9yIEFwcGxlJ3MgUHJvamVjdCBCdWlsZGVyIAorICAoUGF0Y2ggcmVxdWVzdCBJRCA2OTc2NDIpCistIEEgcGF0Y2ggZnJvbSBvaG9tbWVzIHRoYXQgYWxsb3dzIHRvIHBhcnNlIGNvcnJlY3RseSBkb3RzIGluIGVsZW1lbnQgbmFtZXMgYW5kIGF0dHJpYnV0ZSBuYW1lcworICAoUGF0Y2ggcmVxdWVzdCA2MDI2MDAgYW5kIGt5bG90YW4gNzAxNzI4KQorLSBBIHBhdGNoIGZyb20gIGhlcm1pdGdlZWsgKCBKYW1lcyApIGFuZCB3YXN0ZWxhbmQgZm9yIGltcHJvcGVyIGVycm9yIHJlcG9ydGluZworLSBSZXZpZXdlZCBieSBMZWUsIHdpdGggdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgorCS0gR290IHNpY2sgb2YgZmlnaHRpbmcgdGhlIFNUTC9ub24tU1RMIHRoaW5nIGluIHRoZSB3aW5kb3dzIGJ1aWxkLiBCcm9rZQorCSAgdGhlbSBvdXQgYXMgc2VwZXJhdGUgcHJvamVjdHMuCisJLSBJIGhhdmUgdG9vIGxvbmcgbm90IGluY2x1ZGVkIHRoZSBkc3cuIEFkZGVkLgorCS0gVGlueVhtbFRleHQgaGFkIGEgcHJvdGVjdGVkIFByaW50LiBPZGQuCisJLSBNYWRlIExpbmtFbmRDaGlsZCBwdWJsaWMsIHdpdGggZG9jcyBhbmQgYXBwcm9wcmlhdGUgd2FybmluZ3MuCisJLSBVcGRhdGVkIHRoZSBkb2NzLgorCisyLjIuMAorLSBGaXhlZCBhbiB1bmluaXRpYWxpemVkIHBvaW50ZXIgaW4gdGhlIFRpWG1sQXR0cmlidXRlcworLSBGaXhlZCBTVEwgY29tcGlsYXRpb24gcHJvYmxlbSBpbiBNaW5HVyAoYW5kIGdjYyAzPykgLSB0aGFua3MgQnJpYW4gWW9kZXIgZm9yIGZpbmRpbmcgdGhpcyBvbmUKKy0gRml4ZWQgYSBzeW50YXggZXJyb3IgaW4gVGlYbWxEZWNsYXJhdGlvbiAtIHRoYW5rcyBCcmlhbiBZb2RlcgorLSBGbGV0Y2hlciBEdW5uIHByb3Bvc2VkIGFuZCBzdWJtaXR0ZWQgbmV3IGVycm9yIGhhbmRsaW5nIHRoYXQgdHJhY2tlZCB0aGUgcm93IGFuZCBjb2x1bW4uIExlZQorICBtb2RpZmllZCBpdCB0byBub3QgaGF2ZSBwZXJmb3JtYW5jZSBpbXBhY3QuCistIEdlbmVyYWwgY2xlYW51cCBzdWdnZXN0aW9ucyBmcm9tIEZsZXRjaGVyIER1bm4uCistIEluIGVycm9yIGhhbmRsaW5nLCBnZW5lcmFsIGVycm9ycyB3aWxsIG5vIGxvbmdlciBjbGVhciB0aGUgZXJyb3Igc3RhdGUgb2Ygc3BlY2lmaWMgb25lcy4KKy0gRml4IGVycm9yIGluIGRvY3VtZW50YXRpb24gOiBjb21tZW50cyBzdGFydGluZyB3aXRoICI8Py0tIiBpbnN0ZWFkIG9mICI8IS0tIiAodGhhbmtzIGlvbl9wdWxzZSkKKy0gQWRkZWQgdGhlIFRpWG1sSGFuZGxlLiBBbiBlYXN5LCBzYWZlIHdheSB0byBicm93c2UgWE1MIERPTXMgd2l0aCBsZXNzIGNvZGUuCistIEFkZGVkIFF1ZXJ5QXR0cmlidXRlIGNhbGxzIHdoaWNoIGhhdmUgYmV0dGVyIGVycm9yIG1lc3NhZ2luZy4gKFByb3Bvc2VkIGJ5IEZsZXRjaGVyIER1bm4pCistIE5vZGVzIGFuZCBhdHRyaWJ1dGVzIGNhbiBub3cgcHJpbnQgdGhlbXNlbHZlcyB0byBzdHJpbmdzLiAoWXZlcyBzdWdnZXN0aW9uKQorLSBGaXhlZCBidWcgd2hlcmUgZW50aXRpZXMgd2l0aCBvbmUgY2hhcmFjdGVyIHdvdWxkIGNvbmZ1c2UgcGFyc2VyLiAoVGhhbmtzIFJvbWFuKQorCisyLjIuMQorLSBBZGRpdGlvbmFsIHRlc3RpbmcgKG5vIG1vcmUgYnVncyBmb3VuZCB0byBiZSBmaXhlZCBpbiB0aGlzIHJlbGVhc2UpCistIFNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IHRvIHRoZSBjdXJzb3IgY29kZS4KKworMi4zLjAKKy0gVXNlciBEYXRhIGFyZSBub3cgZGVmaW5lZCBpbiBUaVhtbEJhc2UgaW5zdGVhZCBvZiBUaVhtbE5vZGUKKy0gQ2hhcmFjdGVyIEVudGl0aWVzIGFyZSBub3cgVUNTLTIKKy0gQ2hhcmFjdGVyIEVudGl0aWVzIGNhbiBiZSBkZWNpbWFsIG9yIGhleGFkZWNpbWFsCistIFVURi04IGNvbnZlcnNpb24uCistIEZpeGVkIG1hbnksIG1hbnkgYnVncy4KKworMi4zLjEKKy0gRml4ZWQgYnVnIGluIGhhbmRsaW5nIG51bGxzIGVtYmVkZGVkIGluIHRoZSBpbnB1dC4KKy0gTWFrZSBVVEYtOCBwYXJzZXIgdG9sZXJhbnQgb2YgYmFkIHRleHQgZW5jb2RpbmcuCistIEFkZGVkIGVuY29kaW5nIGRldGVjdGlvbi4gCistIE1hbnkgZml4ZXMgYW5kIGlucHV0IGZyb20gSm9obi1QaGlsaXAgTGVvbmFyZCBKb2hhbnNzb24gKEpQKSBhbmQgRWxsZXJzLCAKKyAgaW5jbHVkaW5nIFVURi04IGZlZWRiYWNrLCBidWcgcmVwb3J0cywgYW5kIHBhdGNoZXMuIFRoYW5rcyEKKy0gQWRkZWQgdmVyc2lvbiAjIGNvbnN0YW50cyAtIGEgc3VnZ2VzdGlvbiBmcm9tIEpQIGFuZCBFbGxlcnMuCistIFsgOTc5MTgwIF0gTWlzc2luZyA7IGluIGVudGl0eSByZWZlcmVuY2UsIGZpeCBmcm9tIFJvYiBMYXZlYXV4LgorLSBDb3B5IGNvbnN0cnVjdG9ycyBhbmQgYXNzaWdubWVudCBoYXZlIGJlZW4gYSBsb25nIHRpbWUgY29taW5nLiBUaGFua3MgdG8KKyAgRm9ra2UgYW5kIEpQLgorCisyLjMuMgorLSBNYWRlIHRoZSBJc0FscGhhIGFuZCBJc0FscGhhTnVtIG11Y2ggbW9yZSB0b2xlcmFudCBvZiBub24tVVRGLTggZW5jb2RpbmdzLiBUaGFua3MKKyAgVm9sa2VyIEJvZXJjaGVycyBmb3IgZmluZGluZyB0aGUgaXNzdWUuCistIFJhbiB0aGUgcHJvZ3JhbSB0aG91Z2ggdGhlIG1hZ25pZmljZW50IFZhbGdyaW5kIC0gaHR0cDovL3ZhbGdyaW5kLmtkZS5vcmcgLSB0byBjaGVjaworICBmb3IgbWVtb3J5IGVycm9ycy4gRml4ZWQgc29tZSBtaW5vciBpc3N1ZXMuCisKKzIuMy4zCistIEZpeGVkIGNyYXNoIHdoZW4gdGVzdCBwcm9ncmFtIHdhcyBydW4gZnJvbSBpbmNvcnJlY3QgZGlyZWN0b3J5LgorLSBGaXhlZCBidWcgMTA3MDcxNyAtIGVtcHR5IGRvY3VtZW50IG5vdCByZXR1cm5lZCBjb3JyZWN0bHkgLSB0aGFua3MgS2F0c3VoaXNhIFl1YXNhLgorLSBCdWcgMTA3OTMwMSByZXNvbHZlZCAtIGRlcHJlY2F0ZWQgc3RkbGliIGNhbGxzLiBUaGFua3MgQWRyaWFuIEJvZWluZy4KKy0gQnVnIDEwMzUyMTggZml4ZWQgLSBkb2N1bWVudGF0aW9uIGVycm9ycy4gWHVuamkgTHVvCistIE90aGVyIGJ1ZyBmaXhlcyBoYXZlIGFjY3VtdWxhdGVkIGFuZCBiZWVuIGZpeGVkIG9uIHRoZSB3YXkgYXMgd2VsbDsgbXkgYXBvbG9naWVzIHRvCisgIGF1dGhvcnMgbm90IGNyZWRpdGVkIQorLSBCaWcgZml4IC8gYWRkaXRpb24gaXMgdG8gY29ycmVjdGx5IHJldHVybiBjb25zdCB2YWx1ZXMuIFRpbnlYbWwgY291bGQgYmFzaWNhbGx5CisgIHJlbW92ZSBjb25zdCBpbiBhIG1ldGhvZCBsaWtlIHRoaXM6IFRpWG1sRWxlbWVudCogRm9vKCkgY29uc3QsIHdoZXJlIHRoZSByZXR1cm5lZCBlbGVtZW50CisgIHdhcyBhIHBvaW50ZXIgdG8gaW50ZXJuYWwgZGF0YS4gVGhhdCBpcyBub3c6IGNvbnN0IFRpWG1sRWxlbWVudCogRm9vKCkgY29uc3QgYW5kCisgIFRpWG1sRWxlbWVudCogRm9vKCkuCisKKzIuMy40CistIEZpeGVkIGFkZGl0aW9uYWwgY29uc3QgZXJyb3JzLCB0aGFua3MgS2VudCBHaWJzb24uCistIENvcnJlY3RseSByZS1lbmFibGUgd2FybmluZ3MgYWZ0ZXIgdGlueXhtbCBoZWFkZXIuIFRoYW5rcyBDb3J5IE5lbHNvbi4KKy0gVmFyaWV0eSBvZiB0eXBlIGNsZWFudXAgYW5kIHdhcm5pbmcgZml4ZXMuIFRoYW5rcyBXYXJyZW4gU3RldmVucy4KKy0gQ2xlYW5lZCB1cCB1bm5lZWRlZCBjb25zdHJ1Y3RvciBjYWxscyBpbiBUaW55U3RyaW5nIC0gdGhhbmtzIHRvIEdlb2ZmIENhcmx0b24gYW5kCisgIHRoZSBkaXNjdXNzaW9uIGdyb3VwIG9uIHNvdXJjZWZvcmdlLgorCisyLjQuMAorLSBJbXByb3ZlZCBzdHJpbmcgY2xhc3MsIHRoYW5rcyBUeWdlIExvdnNldCAod2hvc2UgbmFtZSBnZXRzIG1hbmdsZWQgaW4gRW5nbGlzaCAtIHNvcnJ5KQorLSBUeXBlIGNhc3QgY29tcGlsZXIgd2FybmluZywgdGhhbmtzIFJvYiB2YW4gZGVuIEJvZ2FhcmQKKy0gQWRkZWQgR2V0VGV4dCgpIGNvbnZlbmllbmNlIGZ1bmN0aW9uLiBUaGFua3MgSWx5YSBQYXJuaXVrICYgQW5kcmV3IEVsbGVycyBmb3IgaW5wdXQuCistIE1hbnkgdGhhbmtzIHRvIG1hcmxvbmlzbSBmb3IgZmluZGluZyBhbiBpbmZpbml0ZSBsb29wIGluIGJhZCB4bWwuCistIEEgcGF0Y2ggdG8gY2xlYW51cCB3YXJuaW5ncyBmcm9tIFJvYmVydCBHZWJpcy4KKy0gQWRkZWQgVmFsdWVTdHIoKSB0byBnZXQgdGhlIHZhbHVlIG9mIGEgbm9kZSBhcyBhIHN0cmluZy4KKy0gVGlYbWxUZXh0IGNhbiBub3cgcGFyc2UgYW5kIG91dHB1dCBhcyBDREFUQQorLSBBZGRpdGlvbmFsIHN0cmluZyBpbXByb3ZlbWVudCBmcm9tIEphbWVzICh6Mjg5NSkKKy0gUmVtb3ZlZCBleHRyYW5lb3VzICdjb25zdCcsIHRoYW5rcyBEYXZpZCBBbGRyaWNoCistIEZpcnN0IHBhc3MgYXQgc3dpdGNoaW5nIHRvIHRoZSAic2FmZSIgc3RkbGliIGZ1bmN0aW9ucy4gTWFueSBwZW9wbGUgaGF2ZSBzdWdnZXN0ZWQgYW5kCisgIHB1c2hlZCBvbiB0aGlzLCBidXQgV2FycmVuIFN0ZXZlbnMgcHV0IHRvZ2V0aGVyIHRoZSBmaXJzdCBwcm9wb3NhbC4KKy0gVGlueVhtbCBub3cgd2lsbCBkbyBFT0wgbm9ybWFsaXphdGlvbiBiZWZvcmUgcGFyc2luZywgY29uc2lzdGVudCB3aXRoIHRoZSBXM0MgWE1MIHNwZWMuCistIERvY3VtZW50cyBsb2FkZWQgd2l0aCB0aGUgVVRGLTggQk9NIHdpbGwgbm93IHNhdmUgd2l0aCB0aGUgVVRGLTggQk9NLiBHb29kIHN1Z2dlc3Rpb24gCisgIGZyb20gJ2luc3RydWN0b3JfJworLSBFbGxlcnMgc3VibWl0dGVkIGhpcyB2ZXJ5IHBvcHVsYXIgdHV0b3JpYWxzLCB3aGljaCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGRpc3RyaWJ1dGlvbi4KKwpkaWZmIC0tZ2l0IGEvZG9jcy9hbm5vdGF0ZWQuaHRtbCBiL2RvY3MvYW5ub3RhdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQyYWYzZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvYW5ub3RhdGVkLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IENsYXNzIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpbnlYbWwgQ2xhc3MgTGlzdDwvaDE+SGVyZSBhcmUgdGhlIGNsYXNzZXMsIHN0cnVjdHMsIHVuaW9ucyBhbmQgaW50ZXJmYWNlcyB3aXRoIGJyaWVmIGRlc2NyaXB0aW9uczo8dGFibGU+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPkFuIGF0dHJpYnV0ZSBpcyBhIG5hbWUtdmFsdWUgcGFpciA8L3RkPjwvdHI+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+VGlYbWxCYXNlIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXZlcnkgY2xhc3MgaW4gVGlueVhtbCA8L3RkPjwvdHI+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+QW4gWE1MIGNvbW1lbnQgPC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+SW4gY29ycmVjdCBYTUwgdGhlIGRlY2xhcmF0aW9uIGlzIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgZmlsZSA8L3RkPjwvdHI+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj5BbHdheXMgdGhlIHRvcCBsZXZlbCBub2RlIDwvdGQ+PC90cj4KKyAgPHRyPjx0ZCBjbGFzcz0iaW5kZXhrZXkiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj5UaGUgZWxlbWVudCBpcyBhIGNvbnRhaW5lciBjbGFzcyA8L3RkPjwvdHI+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPkEgVGlYbWxIYW5kbGUgaXMgYSBjbGFzcyB0aGF0IHdyYXBzIGEgbm9kZSBwb2ludGVyIHdpdGggbnVsbCBjaGVja3M7IHRoaXMgaXMgYW4gaW5jcmVkaWJseSB1c2VmdWwgdGhpbmcgPC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPlRoZSBwYXJlbnQgY2xhc3MgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlIERvY3VtZW50IE9iamVjdCBNb2RlbCA8L3RkPjwvdHI+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+WE1MIHRleHQgPC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPkFueSB0YWcgdGhhdCB0aW55WG1sIGRvZXNuJ3QgcmVjb2duaXplIGlzIHNhdmVkIGFzIGFuIHVua25vd24gPC90ZD48L3RyPgorPC90YWJsZT4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQXR0cmlidXRlLW1lbWJlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzE0YTczCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sQXR0cmlidXRlLW1lbWJlcnMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbEF0dHJpYnV0ZSBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTYiPkRvdWJsZVZhbHVlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E1Ij5JbnRWYWx1ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTMiPk5hbWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNSI+TmV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTciPlByZXZpb3VzPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyMyI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTgiPlF1ZXJ5RG91YmxlVmFsdWU8L2E+KGRvdWJsZSAqX3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNyI+UXVlcnlJbnRWYWx1ZTwvYT4oaW50ICpfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlPC9hPihib29sIGNvbmRlbnNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEyIj5TZXREb3VibGVWYWx1ZTwvYT4oZG91YmxlIF92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTEiPlNldEludFZhbHVlPC9hPihpbnQgX3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E5Ij5TZXROYW1lPC9hPihjb25zdCBjaGFyICpfbmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEzIj5TZXROYW1lPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19uYW1lKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTAiPlNldFZhbHVlPC9hPihjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNCI+U2V0VmFsdWU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMCI+VGlYbWxBdHRyaWJ1dGU8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEiPlRpWG1sQXR0cmlidXRlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19uYW1lLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIiPlRpWG1sQXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpfbmFtZSwgY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E0Ij5WYWx1ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKzwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI0ZGI1MQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sCkBAIC0wLDAgKzEsMTc5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogVGlYbWxBdHRyaWJ1dGUgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxBdHRyaWJ1dGUgQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbEF0dHJpYnV0ZSIgLS0+PCEtLSBkb3h5dGFnOiBpbmhlcml0cz0iVGlYbWxCYXNlIiAtLT5BbiBhdHRyaWJ1dGUgaXMgYSBuYW1lLXZhbHVlIHBhaXIuICAKKzxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KKzxwPgorPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Cis8cD4KKzxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sQXR0cmlidXRlOgorPHA+PGNlbnRlcj48aW1nIHNyYz0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5wbmciIHVzZW1hcD0iI1RpWG1sQXR0cmlidXRlX21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Cis8bWFwIG5hbWU9IlRpWG1sQXR0cmlidXRlX21hcCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIiBhbHQ9IlRpWG1sQmFzZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDkwLDI0Ij4KKzwvbWFwPgorPGEgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6VGlYbWxBdHRyaWJ1dGUiIHJlZj0iYTAiIGFyZ3M9IigpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMCI+VGlYbWxBdHRyaWJ1dGU8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3QgYW4gZW1wdHkgYXR0cmlidXRlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6VGlYbWxBdHRyaWJ1dGUiIHJlZj0iYTEiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19uYW1lLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgorJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExIj5UaVhtbEF0dHJpYnV0ZTwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+c3RkOjpzdHJpbmcgY29uc3RydWN0b3IuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpUaVhtbEF0dHJpYnV0ZSIgcmVmPSJhMiIgYXJncz0iKGNvbnN0IGNoYXIgKl9uYW1lLCBjb25zdCBjaGFyICpfdmFsdWUpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMiI+VGlYbWxBdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpfbmFtZSwgY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29uc3RydWN0IGFuIGF0dHJpYnV0ZSB3aXRoIGEgbmFtZSBhbmQgdmFsdWUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpOYW1lIiByZWY9ImEzIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EzIj5OYW1lPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgbmFtZSBvZiB0aGlzIGF0dHJpYnV0ZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlZhbHVlIiByZWY9ImE0IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E0Ij5WYWx1ZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6SW50VmFsdWUiIHJlZj0iYTUiIGFyZ3M9IigpIGNvbnN0ICIgLS0+CitpbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTUiPkludFZhbHVlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUsIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6RG91YmxlVmFsdWUiIHJlZj0iYTYiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citkb3VibGUmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTYiPkRvdWJsZVZhbHVlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUsIGNvbnZlcnRlZCB0byBhIGRvdWJsZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E3Ij5RdWVyeUludFZhbHVlPC9hPiAoaW50ICpfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UXVlcnlJbnRWYWx1ZSBleGFtaW5lcyB0aGUgdmFsdWUgc3RyaW5nLiAgPGEgaHJlZj0iI2E3Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlF1ZXJ5RG91YmxlVmFsdWUiIHJlZj0iYTgiIGFyZ3M9Iihkb3VibGUgKl92YWx1ZSkgY29uc3QgIiAtLT4KK2ludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOCI+UXVlcnlEb3VibGVWYWx1ZTwvYT4gKGRvdWJsZSAqX3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlF1ZXJ5RG91YmxlVmFsdWUgZXhhbWluZXMgdGhlIHZhbHVlIHN0cmluZy4gU2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E3Ij5RdWVyeUludFZhbHVlKCk8L2E+LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6U2V0TmFtZSIgcmVmPSJhOSIgYXJncz0iKGNvbnN0IGNoYXIgKl9uYW1lKSIgLS0+Cit2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E5Ij5TZXROYW1lPC9hPiAoY29uc3QgY2hhciAqX25hbWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TZXQgdGhlIG5hbWUgb2YgdGhpcyBhdHRyaWJ1dGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6U2V0VmFsdWUiIHJlZj0iYTEwIiBhcmdzPSIoY29uc3QgY2hhciAqX3ZhbHVlKSIgLS0+Cit2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMCI+U2V0VmFsdWU8L2E+IChjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TZXQgdGhlIHZhbHVlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlNldEludFZhbHVlIiByZWY9ImExMSIgYXJncz0iKGludCBfdmFsdWUpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTExIj5TZXRJbnRWYWx1ZTwvYT4gKGludCBfdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TZXQgdGhlIHZhbHVlIGZyb20gYW4gaW50ZWdlci4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpTZXREb3VibGVWYWx1ZSIgcmVmPSJhMTIiIGFyZ3M9Iihkb3VibGUgX3ZhbHVlKSIgLS0+Cit2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMiI+U2V0RG91YmxlVmFsdWU8L2E+IChkb3VibGUgX3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2V0IHRoZSB2YWx1ZSBmcm9tIGEgZG91YmxlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlNldE5hbWUiIHJlZj0iYTEzIiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfbmFtZSkiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTMiPlNldE5hbWU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19uYW1lKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6U2V0VmFsdWUiIHJlZj0iYTE0IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE0Ij5TZXRWYWx1ZTwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6TmV4dCIgcmVmPSJhMTUiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE1Ij5OZXh0PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkdldCB0aGUgbmV4dCBzaWJsaW5nIGF0dHJpYnV0ZSBpbiB0aGUgRE9NLiBSZXR1cm5zIG51bGwgYXQgZW5kLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlByZXZpb3VzIiByZWY9ImExNyIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTciPlByZXZpb3VzPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkdldCB0aGUgcHJldmlvdXMgc2libGluZyBhdHRyaWJ1dGUgaW4gdGhlIERPTS4gUmV0dXJucyBudWxsIGF0IGJlZ2lubmluZy4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dmlydHVhbCB2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyMyI+UHJpbnQ8L2E+IChGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFsbCBUaW55WG1sIGNsYXNzZXMgY2FuIHByaW50IHRoZW1zZWx2ZXMgdG8gYSBmaWxlc3RyZWFtLiAgPGEgaHJlZj0iI2EyMyI+PC9hPjxicj48L3RkPjwvdHI+Cis8L3RhYmxlPgorPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KK0FuIGF0dHJpYnV0ZSBpcyBhIG5hbWUtdmFsdWUgcGFpci4gCis8cD4KK0VsZW1lbnRzIGhhdmUgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBhdHRyaWJ1dGVzLCBlYWNoIHdpdGggYSB1bmlxdWUgbmFtZS48cD4KKzxkbCBjb21wYWN0PjxkdD48Yj5Ob3RlOjwvYj48L2R0PjxkZD5UaGUgYXR0cmlidXRlcyBhcmUgbm90IFRpWG1sTm9kZXMsIHNpbmNlIHRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSB0aW55WE1MIGRvY3VtZW50IG9iamVjdCBtb2RlbC4gVGhlcmUgYXJlIG90aGVyIHN1Z2dlc3RlZCB3YXlzIHRvIGxvb2sgYXQgdGhpcyBwcm9ibGVtLjwvZGQ+PC9kbD4KKworPHA+Cis8aHI+PGgyPk1lbWJlciBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6UHJpbnQiIHJlZj0iYTIzIiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dmlydHVhbCB2b2lkIFRpWG1sQXR0cmlidXRlOjpQcmludCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5GSUxFICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5jZmlsZTwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5pbnQmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5kZXB0aDwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+IGNvbnN0PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitBbGwgVGlueVhtbCBjbGFzc2VzIGNhbiBwcmludCB0aGVtc2VsdmVzIHRvIGEgZmlsZXN0cmVhbS4gCis8cD4KK1RoaXMgaXMgYSBmb3JtYXR0ZWQgcHJpbnQsIGFuZCB3aWxsIGluc2VydCB0YWJzIGFuZCBuZXdsaW5lcy48cD4KKyhGb3IgYW4gdW5mb3JtYXR0ZWQgc3RyZWFtLCB1c2UgdGhlICZsdDsmbHQ7IG9wZXJhdG9yLikKKzxwPgorSW1wbGVtZW50cyA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTIiPlRpWG1sQmFzZTwvYT4uICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlF1ZXJ5SW50VmFsdWUiIHJlZj0iYTciIGFyZ3M9IihpbnQgKl92YWx1ZSkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50IFRpWG1sQXR0cmlidXRlOjpRdWVyeUludFZhbHVlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5fdmFsdWU8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUXVlcnlJbnRWYWx1ZSBleGFtaW5lcyB0aGUgdmFsdWUgc3RyaW5nLiAKKzxwPgorSXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E1Ij5JbnRWYWx1ZSgpPC9hPiBtZXRob2Qgd2l0aCByaWNoZXIgZXJyb3IgY2hlY2tpbmcuIElmIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLCBpdCBpcyBzdG9yZWQgaW4gJ3ZhbHVlJyBhbmQgdGhlIGNhbGwgcmV0dXJucyBUSVhNTF9TVUNDRVNTLiBJZiBpdCBpcyBub3QgYW4gaW50ZWdlciwgaXQgcmV0dXJucyBUSVhNTF9XUk9OR19UWVBFLjxwPgorQSBzcGVjaWFsaXplZCBidXQgdXNlZnVsIGNhbGwuIE5vdGUgdGhhdCBmb3Igc3VjY2VzcyBpdCByZXR1cm5zIDAsIHdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBvZiBhbG1vc3QgYWxsIG90aGVyIFRpbnlYbWwgY2FsbHMuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQXR0cmlidXRlLnBuZyBiL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhYzVjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQmFzZS1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxCYXNlLW1lbWJlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzg2ZDkwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sQmFzZS1tZW1iZXJzLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IE1lbWJlciBMaXN0PC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxCYXNlIE1lbWJlciBMaXN0PC9oMT5UaGlzIGlzIHRoZSBjb21wbGV0ZSBsaXN0IG9mIG1lbWJlcnMgZm9yIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPiwgaW5jbHVkaW5nIGFsbCBpbmhlcml0ZWQgbWVtYmVycy48cD48dGFibGU+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTIiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA9MDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHVyZSB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlPC9hPihib29sIGNvbmRlbnNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgorPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQmFzZS5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YzBjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxCYXNlLmh0bWwKQEAgLTAsMCArMSwxOTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBUaVhtbEJhc2UgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxCYXNlIENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxCYXNlIiAtLT5UaVhtbEJhc2UgaXMgYSBiYXNlIGNsYXNzIGZvciBldmVyeSBjbGFzcyBpbiBUaW55WG1sLiAgCis8YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Cis8cD4KKzxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgorPHA+Cis8cD5Jbmhlcml0YW5jZSBkaWFncmFtIGZvciBUaVhtbEJhc2U6Cis8cD48Y2VudGVyPjxpbWcgc3JjPSJjbGFzc1RpWG1sQmFzZS5wbmciIHVzZW1hcD0iI1RpWG1sQmFzZV9tYXAiIGJvcmRlcj0iMCIgYWx0PSIiPjwvY2VudGVyPgorPG1hcCBuYW1lPSJUaVhtbEJhc2VfbWFwIj4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCIgYWx0PSJUaVhtbEF0dHJpYnV0ZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCw1NiwxMDgsODAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCIgYWx0PSJUaVhtbE5vZGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjI5NSw1Niw0MDMsODAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCIgYWx0PSJUaVhtbENvbW1lbnQiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMTEyLDEwOCwxMzYiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiIGFsdD0iVGlYbWxEZWNsYXJhdGlvbiIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMTE4LDExMiwyMjYsMTM2Ij4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIiBhbHQ9IlRpWG1sRG9jdW1lbnQiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIzNiwxMTIsMzQ0LDEzNiI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIiBhbHQ9IlRpWG1sRWxlbWVudCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMzU0LDExMiw0NjIsMTM2Ij4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiIGFsdD0iVGlYbWxUZXh0IiBzaGFwZT0icmVjdCIgY29vcmRzPSI0NzIsMTEyLDU4MCwxMzYiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCIgYWx0PSJUaVhtbFVua25vd24iIHNoYXBlPSJyZWN0IiBjb29yZHM9IjU5MCwxMTIsNjk4LDEzNiI+Cis8L21hcD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxCYXNlLW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKzx0cj48dGQ+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTIiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPTA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFsbCBUaW55WG1sIGNsYXNzZXMgY2FuIHByaW50IHRoZW1zZWx2ZXMgdG8gYSBmaWxlc3RyZWFtLiAgPGEgaHJlZj0iI2EyIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgcG9zaXRpb24sIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb2YgdGhpcyBub2RlIG9yIGF0dHJpYnV0ZS4gIDxhIGhyZWY9IiNhMyI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6Q29sdW1uIiByZWY9ImE0IiBhcmdzPSIoKSBjb25zdCAiIC0tPgoraW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdygpPC9hPi4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5TdGF0aWMgUHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+c3RhdGljIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+IChib29sIGNvbmRlbnNlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIHdvcmxkIGRvZXMgbm90IGFncmVlIG9uIHdoZXRoZXIgd2hpdGUgc3BhY2Ugc2hvdWxkIGJlIGtlcHQgb3Igbm90LiAgPGEgaHJlZj0iI2UwIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iZTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjpJc1doaXRlU3BhY2VDb25kZW5zZWQiIHJlZj0iZTEiIGFyZ3M9IigpIiAtLT4KK3N0YXRpYyBib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSBjdXJyZW50IHdoaXRlIHNwYWNlIHNldHRpbmcuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHJvdGVjdGVkIEF0dHJpYnV0ZXM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0icDEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjp1c2VyRGF0YSIgcmVmPSJwMSIgYXJncz0iIiAtLT4KK3ZvaWQgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+RmllbGQgY29udGFpbmluZyBhIGdlbmVyaWMgdXNlciBwb2ludGVyLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPkZyaWVuZHM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjpUaVhtbE5vZGUiIHJlZj0ibjAiIGFyZ3M9IiIgLS0+CitjbGFzcyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjbjAiPlRpWG1sTm9kZTwvYT48L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjpUaVhtbEVsZW1lbnQiIHJlZj0ibjEiIGFyZ3M9IiIgLS0+CitjbGFzcyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjbjEiPlRpWG1sRWxlbWVudDwvYT48L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjpUaVhtbERvY3VtZW50IiByZWY9Im4yIiBhcmdzPSIiIC0tPgorY2xhc3MmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI24yIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PC90cj4KKworPC90YWJsZT4KKzxocj48YSBuYW1lPSJfZGV0YWlscyI+PC9hPjxoMj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+CitUaVhtbEJhc2UgaXMgYSBiYXNlIGNsYXNzIGZvciBldmVyeSBjbGFzcyBpbiBUaW55WG1sLiAKKzxwPgorSXQgZG9lcyBsaXR0bGUgZXhjZXB0IHRvIGVzdGFibGlzaCB0aGF0IFRpbnlYbWwgY2xhc3NlcyBjYW4gYmUgcHJpbnRlZCBhbmQgcHJvdmlkZSBzb21lIHV0aWxpdHkgZnVuY3Rpb25zLjxwPgorSW4gWE1MLCB0aGUgZG9jdW1lbnQgYW5kIGVsZW1lbnRzIGNhbiBjb250YWluIG90aGVyIGVsZW1lbnRzIGFuZCBvdGhlciB0eXBlcyBvZiBub2Rlcy48cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CUEgRG9jdW1lbnQgY2FuIGNvbnRhaW46CUVsZW1lbnQJKGNvbnRhaW5lciBvciBsZWFmKQorCQkJCQkJCUNvbW1lbnQgKGxlYWYpCisJCQkJCQkJVW5rbm93biAobGVhZikKKwkJCQkJCQlEZWNsYXJhdGlvbiggbGVhZiApCisKKwlBbiBFbGVtZW50IGNhbiBjb250YWluOglFbGVtZW50IChjb250YWluZXIgb3IgbGVhZikKKwkJCQkJCQlUZXh0CShsZWFmKQorCQkJCQkJCUF0dHJpYnV0ZXMgKG5vdCBvbiB0cmVlKQorCQkJCQkJCUNvbW1lbnQgKGxlYWYpCisJCQkJCQkJVW5rbm93biAobGVhZikKKworCUEgRGVjbGVyYXRpb24gY29udGFpbnM6IEF0dHJpYnV0ZXMgKG5vdCBvbiB0cmVlKQorCTwvcHJlPjwvZGl2PgorPHA+Cis8aHI+PGgyPk1lbWJlciBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6UHJpbnQiIHJlZj0iYTIiIGFyZ3M9IihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA9MCIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZpcnR1YWwgdm9pZCBUaVhtbEJhc2U6OlByaW50ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPkZJTEUgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmNmaWxlPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmludCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmRlcHRoPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj4gY29uc3Q8Y29kZT4gW3B1cmUgdmlydHVhbF08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQWxsIFRpbnlYbWwgY2xhc3NlcyBjYW4gcHJpbnQgdGhlbXNlbHZlcyB0byBhIGZpbGVzdHJlYW0uIAorPHA+CitUaGlzIGlzIGEgZm9ybWF0dGVkIHByaW50LCBhbmQgd2lsbCBpbnNlcnQgdGFicyBhbmQgbmV3bGluZXMuPHA+CisoRm9yIGFuIHVuZm9ybWF0dGVkIHN0cmVhbSwgdXNlIHRoZSAmbHQ7Jmx0OyBvcGVyYXRvci4pCis8cD4KK0ltcGxlbWVudGVkIGluIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyMyI+VGlYbWxBdHRyaWJ1dGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI5Ij5UaVhtbEVsZW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTUiPlRpWG1sQ29tbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNSI+VGlYbWxUZXh0PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMTAiPlRpWG1sRGVjbGFyYXRpb248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTUiPlRpWG1sVW5rbm93bjwvYT4sIGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyNCI+VGlYbWxEb2N1bWVudDwvYT4uICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjpSb3ciIHJlZj0iYTMiIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCBUaVhtbEJhc2U6OlJvdyAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1JldHVybiB0aGUgcG9zaXRpb24sIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb2YgdGhpcyBub2RlIG9yIGF0dHJpYnV0ZS4gCis8cD4KK1RoZSByb3cgYW5kIGNvbHVtbiBhcmUgMS1iYXNlZC4gKFRoYXQgaXMgdGhlIGZpcnN0IHJvdyBhbmQgZmlyc3QgY29sdW1uIGlzIDEsMSkuIElmIHRoZSByZXR1cm5zIHZhbHVlcyBhcmUgMCBvciBsZXNzLCB0aGVuIHRoZSBwYXJzZXIgZG9lcyBub3QgaGF2ZSBhIHJvdyBhbmQgY29sdW1uIHZhbHVlLjxwPgorR2VuZXJhbGx5LCB0aGUgcm93IGFuZCBjb2x1bW4gdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiB0aGUgVGlYbWxEb2N1bWVudDo6TG9hZCgpLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E2Ij5UaVhtbERvY3VtZW50OjpMb2FkRmlsZSgpPC9hPiwgb3IgYW55IFRpWG1sTm9kZTo6UGFyc2UoKSBpcyBjYWxsZWQuIEl0IHdpbGwgTk9UIGJlIHNldCB3aGVuIHRoZSBET00gd2FzIGNyZWF0ZWQgZnJvbSBvcGVyYXRvciZndDsmZ3Q7LjxwPgorVGhlIHZhbHVlcyByZWZsZWN0IHRoZSBpbml0aWFsIGxvYWQuIE9uY2UgdGhlIERPTSBpcyBtb2RpZmllZCBwcm9ncmFtbWF0aWNhbGx5IChieSBhZGRpbmcgb3IgY2hhbmdpbmcgbm9kZXMgYW5kIGF0dHJpYnV0ZXMpIHRoZSBuZXcgdmFsdWVzIHdpbGwgTk9UIHVwZGF0ZSB0byByZWZsZWN0IGNoYW5nZXMgaW4gdGhlIGRvY3VtZW50LjxwPgorVGhlcmUgaXMgYSBtaW5vciBwZXJmb3JtYW5jZSBjb3N0IHRvIGNvbXB1dGluZyB0aGUgcm93IGFuZCBjb2x1bW4uIENvbXB1dGF0aW9uIGNhbiBiZSBkaXNhYmxlZCBpZiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+VGlYbWxEb2N1bWVudDo6U2V0VGFiU2l6ZSgpPC9hPiBpcyBjYWxsZWQgd2l0aCAwIGFzIHRoZSB2YWx1ZS48cD4KKzxkbCBjb21wYWN0PjxkdD48Yj5TZWUgYWxzbzo8L2I+PC9kdD48ZGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlRpWG1sRG9jdW1lbnQ6OlNldFRhYlNpemUoKTwvYT48L2RkPjwvZGw+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJlMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSIgcmVmPSJlMCIgYXJncz0iKGJvb2wgY29uZGVuc2UpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+c3RhdGljIHZvaWQgVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Ym9vbCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+Y29uZGVuc2U8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorVGhlIHdvcmxkIGRvZXMgbm90IGFncmVlIG9uIHdoZXRoZXIgd2hpdGUgc3BhY2Ugc2hvdWxkIGJlIGtlcHQgb3Igbm90LiAKKzxwPgorSW4gb3JkZXIgdG8gbWFrZSBldmVyeW9uZSBoYXBweSwgdGhlc2UgZ2xvYmFsLCBzdGF0aWMgZnVuY3Rpb25zIGFyZSBwcm92aWRlZCB0byBzZXQgd2hldGhlciBvciBub3QgVGlueVhtbCB3aWxsIGNvbmRlbnNlIGFsbCB3aGl0ZSBzcGFjZSBpbnRvIGEgc2luZ2xlIHNwYWNlIG9yIG5vdC4gVGhlIGRlZmF1bHQgaXMgdG8gY29uZGVuc2UuIE5vdGUgY2hhbmdpbmcgdGhpcyB2YWx1ZXMgaXMgbm90IHRocmVhZCBzYWZlLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEJhc2UucG5nIGIvZG9jcy9jbGFzc1RpWG1sQmFzZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg1ZGI2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbEJhc2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC1tZW1iZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcwNDdiMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQtbWVtYmVycy5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sQ29tbWVudCBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTQiPkNsb25lPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTUiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTAiPlRpWG1sQ29tbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPlRvQ29tbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY4Ij5Ub0NvbW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY1Ij5Ub0RlY2xhcmF0aW9uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPlRvRGVjbGFyYXRpb248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYwIj5Ub0RvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPlRvRG9jdW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj5Ub0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+VG9FbGVtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPlRvVGV4dDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY5Ij5Ub1Vua25vd248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij5UeXBlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+PC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtwcm90ZWN0ZWRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPlZhbHVlU3RyPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Cis8L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxDb21tZW50Lmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxDb21tZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkzYWY5YwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogVGlYbWxDb21tZW50IENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sQ29tbWVudCBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sQ29tbWVudCIgLS0+PCEtLSBkb3h5dGFnOiBpbmhlcml0cz0iVGlYbWxOb2RlIiAtLT5BbiBYTUwgY29tbWVudC4gIAorPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgorPHA+Cis8Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KKzxwPgorPHA+SW5oZXJpdGFuY2UgZGlhZ3JhbSBmb3IgVGlYbWxDb21tZW50OgorPHA+PGNlbnRlcj48aW1nIHNyYz0iY2xhc3NUaVhtbENvbW1lbnQucG5nIiB1c2VtYXA9IiNUaVhtbENvbW1lbnRfbWFwIiBib3JkZXI9IjAiIGFsdD0iIj48L2NlbnRlcj4KKzxtYXAgbmFtZT0iVGlYbWxDb21tZW50X21hcCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIiBhbHQ9IlRpWG1sTm9kZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCw1Niw5NCw4MCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIiBhbHQ9IlRpWG1sQmFzZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDk0LDI0Ij4KKzwvbWFwPgorPGEgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQtbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxDb21tZW50OjpUaVhtbENvbW1lbnQiIHJlZj0iYTAiIGFyZ3M9IigpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTAiPlRpWG1sQ29tbWVudDwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdHMgYW4gZW1wdHkgY29tbWVudC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxDb21tZW50OjpDbG9uZSIgcmVmPSJhNCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK3ZpcnR1YWwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E0Ij5DbG9uZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm5zIGEgY29weSBvZiB0aGlzIENvbW1lbnQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQ29tbWVudDo6UHJpbnQiIHJlZj0iYTUiIGFyZ3M9IihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCAiIC0tPgordmlydHVhbCB2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNSI+UHJpbnQ8L2E+IChGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPldyaXRlIHRoaXMgQ29tbWVudCB0byBhIEZJTEUgc3RyZWFtLiA8YnI+PC90ZD48L3RyPgorPC90YWJsZT4KKzxocj48YSBuYW1lPSJfZGV0YWlscyI+PC9hPjxoMj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+CitBbiBYTUwgY29tbWVudC4gCis8cD4KKzxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQucG5nIGIvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMzZDc0MgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbERlY2xhcmF0aW9uLW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbERlY2xhcmF0aW9uLW1lbWJlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmM2M2NkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sRGVjbGFyYXRpb24tbWVtYmVycy5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sRGVjbGFyYXRpb24gTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E5Ij5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E3Ij5FbmNvZGluZzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEwIj5GaXJzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTExIj5GaXJzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTYiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE3Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTIiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU0Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU3Ij5HZXREb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjkiPkluc2VydEFmdGVyQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+SW5zZXJ0QmVmb3JlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYmVmb3JlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPkluc2VydEVuZENoaWxkPC9hPihjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIyIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjQiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIFRpWG1sTm9kZSAqcHJldmlvdXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMyI+TGFzdENoaWxkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNSI+TGFzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTgiPkxhc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTkiPkxhc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNyI+TGlua0VuZENoaWxkPC9hPihUaVhtbE5vZGUgKmFkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM4Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzkiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQyIj5OZXh0U2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDYiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDgiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDkiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1OSI+Tm9DaGlsZHJlbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPk5vZGVUeXBlPC9hPiBlbnVtIG5hbWU8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMyI+b3BlcmF0b3ImbHQ7Jmx0OzwvYT4oc3RkOjpvc3RyZWFtICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuNCI+b3BlcmF0b3ImbHQ7Jmx0OzwvYT4oc3RkOjpzdHJpbmcgJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24yIj5vcGVyYXRvciZndDsmZ3Q7PC9hPihzdGQ6OmlzdHJlYW0gJmFtcDtpbiwgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPlBhcmVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM0Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM2Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM3Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTEwIj5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E4Ij5TdGFuZGFsb25lPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMSI+VGlYbWxEZWNsYXJhdGlvbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmVyc2lvbiwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfZW5jb2RpbmcsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3N0YW5kYWxvbmUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTIiPlRpWG1sRGVjbGFyYXRpb248L2E+KGNvbnN0IGNoYXIgKl92ZXJzaW9uLCBjb25zdCBjaGFyICpfZW5jb2RpbmcsIGNvbnN0IGNoYXIgKl9zdGFuZGFsb25lKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E2Ij5WZXJzaW9uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKzwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOTdlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBUaVhtbERlY2xhcmF0aW9uIENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sRGVjbGFyYXRpb24gQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbERlY2xhcmF0aW9uIiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbE5vZGUiIC0tPkluIGNvcnJlY3QgWE1MIHRoZSBkZWNsYXJhdGlvbiBpcyB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGZpbGUuICAKKzxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KKzxwPgorPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Cis8cD4KKzxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sRGVjbGFyYXRpb246Cis8cD48Y2VudGVyPjxpbWcgc3JjPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24ucG5nIiB1c2VtYXA9IiNUaVhtbERlY2xhcmF0aW9uX21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Cis8bWFwIG5hbWU9IlRpWG1sRGVjbGFyYXRpb25fbWFwIj4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiIGFsdD0iVGlYbWxOb2RlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDU2LDEwOCw4MCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIiBhbHQ9IlRpWG1sQmFzZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDEwOCwyNCI+Cis8L21hcD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERlY2xhcmF0aW9uOjpUaVhtbERlY2xhcmF0aW9uIiByZWY9ImEwIiBhcmdzPSIoKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdCBhbiBlbXB0eSBkZWNsYXJhdGlvbi4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEZWNsYXJhdGlvbjo6VGlYbWxEZWNsYXJhdGlvbiIgcmVmPSJhMSIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZlcnNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X2VuY29kaW5nLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19zdGFuZGFsb25lKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMSI+VGlYbWxEZWNsYXJhdGlvbjwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZlcnNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X2VuY29kaW5nLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19zdGFuZGFsb25lKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29uc3RydWN0b3IuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRGVjbGFyYXRpb246OlRpWG1sRGVjbGFyYXRpb24iIHJlZj0iYTIiIGFyZ3M9Iihjb25zdCBjaGFyICpfdmVyc2lvbiwgY29uc3QgY2hhciAqX2VuY29kaW5nLCBjb25zdCBjaGFyICpfc3RhbmRhbG9uZSkiIC0tPgorJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTIiPlRpWG1sRGVjbGFyYXRpb248L2E+IChjb25zdCBjaGFyICpfdmVyc2lvbiwgY29uc3QgY2hhciAqX2VuY29kaW5nLCBjb25zdCBjaGFyICpfc3RhbmRhbG9uZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEZWNsYXJhdGlvbjo6VmVyc2lvbiIgcmVmPSJhNiIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E2Ij5WZXJzaW9uPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlZlcnNpb24uIFdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiBub25lIHdhcyBmb3VuZC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEZWNsYXJhdGlvbjo6RW5jb2RpbmciIHJlZj0iYTciIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNyI+RW5jb2Rpbmc8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+RW5jb2RpbmcuIFdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiBub25lIHdhcyBmb3VuZC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEZWNsYXJhdGlvbjo6U3RhbmRhbG9uZSIgcmVmPSJhOCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E4Ij5TdGFuZGFsb25lPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPklzIHRoaXMgYSBzdGFuZGFsb25lIGRvY3VtZW50PyA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERlY2xhcmF0aW9uOjpDbG9uZSIgcmVmPSJhOSIgYXJncz0iKCkgY29uc3QgIiAtLT4KK3ZpcnR1YWwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOSI+Q2xvbmU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBEZWNsYXJhdGlvbiBhbmQgcmV0dXJucyBpdC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRGVjbGFyYXRpb246OlByaW50IiByZWY9ImExMCIgYXJncz0iKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ICIgLS0+Cit2aXJ0dWFsIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMTAiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5QcmludCB0aGlzIGRlY2xhcmF0aW9uIHRvIGEgRklMRSBzdHJlYW0uIDxicj48L3RkPjwvdHI+Cis8L3RhYmxlPgorPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KK0luIGNvcnJlY3QgWE1MIHRoZSBkZWNsYXJhdGlvbiBpcyB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGZpbGUuIAorPHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkJJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJ5ZXMiPyZndDsKKwk8L3ByZT48L2Rpdj48cD4KK1RpbnlYbWwgd2lsbCBoYXBwaWx5IHJlYWQgb3Igd3JpdGUgZmlsZXMgd2l0aG91dCBhIGRlY2xhcmF0aW9uLCBob3dldmVyLiBUaGVyZSBhcmUgMyBwb3NzaWJsZSBhdHRyaWJ1dGVzIHRvIHRoZSBkZWNsYXJhdGlvbjogdmVyc2lvbiwgZW5jb2RpbmcsIGFuZCBzdGFuZGFsb25lLjxwPgorTm90ZTogSW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBjb2RlLCB0aGUgYXR0cmlidXRlcyBhcmUgaGFuZGxlZCBhcyBzcGVjaWFsIGNhc2VzLCBub3QgZ2VuZXJpYyBhdHRyaWJ1dGVzLCBzaW1wbHkgYmVjYXVzZSB0aGVyZSBjYW4gb25seSBiZSBhdCBtb3N0IDMgYW5kIHRoZXkgYXJlIGFsd2F5cyB0aGUgc2FtZS4KKzxwPgorPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sRGVjbGFyYXRpb24ucG5nIGIvZG9jcy9jbGFzc1RpWG1sRGVjbGFyYXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMDkxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQtbWVtYmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YmY2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC1tZW1iZXJzLmh0bWwKQEAgLTAsMCArMSw5OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IE1lbWJlciBMaXN0PC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxEb2N1bWVudCBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiwgaW5jbHVkaW5nIGFsbCBpbmhlcml0ZWQgbWVtYmVycy48cD48dGFibGU+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNSI+Q2xlYXI8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIyIj5DbGVhckVycm9yPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2IxIj5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkLCB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE1Ij5FcnJvcjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij5FcnJvckNvbDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTYiPkVycm9yRGVzYzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE3Ij5FcnJvcklkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPkVycm9yUm93PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNiI+TG9hZEZpbGU8L2E+KFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhOCI+TG9hZEZpbGU8L2E+KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEwIj5Mb2FkRmlsZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMiI+UGFyc2U8L2E+KGNvbnN0IGNoYXIgKnAsIFRpWG1sUGFyc2luZ0RhdGEgKmRhdGE9MCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM0Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM2Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM3Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIzIj5QcmludDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTI0Ij5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aD0wKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMxIj5SZW1vdmVDaGlsZDwvYT4oVGlYbWxOb2RlICpyZW1vdmVUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMCI+UmVwbGFjZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlcGxhY2VUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDt3aXRoVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEzIj5Sb290RWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTciPlNhdmVGaWxlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E5Ij5TYXZlRmlsZTwvYT4oY29uc3QgY2hhciAqZmlsZW5hbWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMSI+U2F2ZUZpbGU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZmlsZW5hbWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+U2V0VGFiU2l6ZTwvYT4oaW50IF90YWJzaXplKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4oY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNCI+U2V0VmFsdWU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTAiPlRpWG1sRG9jdW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMSI+VGlYbWxEb2N1bWVudDwvYT4oY29uc3QgY2hhciAqZG9jdW1lbnROYW1lKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyIj5UaVhtbERvY3VtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2RvY3VtZW50TmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRvQ29tbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VG9EZWNsYXJhdGlvbjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPlRvRG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VG9Eb2N1bWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5Ub0VsZW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VG9UZXh0PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRvVW5rbm93bjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlR5cGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlZhbHVlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKzwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MmFlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5odG1sCkBAIC0wLDAgKzEsNDQ3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogVGlYbWxEb2N1bWVudCBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbERvY3VtZW50IENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxEb2N1bWVudCIgLS0+PCEtLSBkb3h5dGFnOiBpbmhlcml0cz0iVGlYbWxOb2RlIiAtLT5BbHdheXMgdGhlIHRvcCBsZXZlbCBub2RlLiAgCis8YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Cis8cD4KKzxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgorPHA+Cis8cD5Jbmhlcml0YW5jZSBkaWFncmFtIGZvciBUaVhtbERvY3VtZW50OgorPHA+PGNlbnRlcj48aW1nIHNyYz0iY2xhc3NUaVhtbERvY3VtZW50LnBuZyIgdXNlbWFwPSIjVGlYbWxEb2N1bWVudF9tYXAiIGJvcmRlcj0iMCIgYWx0PSIiPjwvY2VudGVyPgorPG1hcCBuYW1lPSJUaVhtbERvY3VtZW50X21hcCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIiBhbHQ9IlRpWG1sTm9kZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCw1Niw5OSw4MCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIiBhbHQ9IlRpWG1sQmFzZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDk5LDI0Ij4KKzwvbWFwPgorPGEgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50LW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKzx0cj48dGQ+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlRpWG1sRG9jdW1lbnQiIHJlZj0iYTAiIGFyZ3M9IigpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EwIj5UaVhtbERvY3VtZW50PC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlIGFuIGVtcHR5IGRvY3VtZW50LCB0aGF0IGhhcyBubyBuYW1lLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpUaVhtbERvY3VtZW50IiByZWY9ImExIiBhcmdzPSIoY29uc3QgY2hhciAqZG9jdW1lbnROYW1lKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMSI+VGlYbWxEb2N1bWVudDwvYT4gKGNvbnN0IGNoYXIgKmRvY3VtZW50TmFtZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZSBhIGRvY3VtZW50IHdpdGggYSBuYW1lLiBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnQgaXMgYWxzbyB0aGUgZmlsZW5hbWUgb2YgdGhlIHhtbC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6VGlYbWxEb2N1bWVudCIgcmVmPSJhMiIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZG9jdW1lbnROYW1lKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMiI+VGlYbWxEb2N1bWVudDwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZG9jdW1lbnROYW1lKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29uc3RydWN0b3IuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmJvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNiI+TG9hZEZpbGU8L2E+IChUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Mb2FkIGEgZmlsZSB1c2luZyB0aGUgY3VycmVudCBkb2N1bWVudCB2YWx1ZS4gIDxhIGhyZWY9IiNhNiI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlNhdmVGaWxlIiByZWY9ImE3IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorYm9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E3Ij5TYXZlRmlsZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TYXZlIGEgZmlsZSB1c2luZyB0aGUgY3VycmVudCBkb2N1bWVudCB2YWx1ZS4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkxvYWRGaWxlIiByZWY9ImE4IiBhcmdzPSIoY29uc3QgY2hhciAqZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORykiIC0tPgorYm9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E4Ij5Mb2FkRmlsZTwvYT4gKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Mb2FkIGEgZmlsZSB1c2luZyB0aGUgZ2l2ZW4gZmlsZW5hbWUuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpTYXZlRmlsZSIgcmVmPSJhOSIgYXJncz0iKGNvbnN0IGNoYXIgKmZpbGVuYW1lKSBjb25zdCAiIC0tPgorYm9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E5Ij5TYXZlRmlsZTwvYT4gKGNvbnN0IGNoYXIgKmZpbGVuYW1lKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNhdmUgYSBmaWxlIHVzaW5nIHRoZSBnaXZlbiBmaWxlbmFtZS4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmJvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTAiPkxvYWRGaWxlPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6U2F2ZUZpbGUiIHJlZj0iYTExIiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtmaWxlbmFtZSkgY29uc3QgIiAtLT4KK2Jvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTEiPlNhdmVGaWxlPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtmaWxlbmFtZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij4mbHQ7IFNUTCBzdGQ6OnN0cmluZyB2ZXJzaW9uLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52aXJ0dWFsIGNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMiI+UGFyc2U8L2E+IChjb25zdCBjaGFyICpwLCBUaVhtbFBhcnNpbmdEYXRhICpkYXRhPTAsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlBhcnNlIHRoZSBnaXZlbiBudWxsIHRlcm1pbmF0ZWQgYmxvY2sgb2YgeG1sIGRhdGEuICA8YSBocmVmPSIjYTEyIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTMiPlJvb3RFbGVtZW50PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkdldCB0aGUgcm9vdCBlbGVtZW50IC0tIHRoZSBvbmx5IHRvcCBsZXZlbCBlbGVtZW50IC0tIG9mIHRoZSBkb2N1bWVudC4gIDxhIGhyZWY9IiNhMTMiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE1Ij5FcnJvcjwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5JZiBhbiBlcnJvciBvY2N1cnMsIEVycm9yIHdpbGwgYmUgc2V0IHRvIHRydWUuICA8YSBocmVmPSIjYTE1Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkVycm9yRGVzYyIgcmVmPSJhMTYiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTYiPkVycm9yRGVzYzwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db250YWlucyBhIHRleHR1YWwgKGVuZ2xpc2gpIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciBpZiBvbmUgb2NjdXJzLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5pbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTciPkVycm9ySWQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+R2VuZXJhbGx5LCB5b3UgcHJvYmFibHkgd2FudCB0aGUgZXJyb3Igc3RyaW5nICggPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTYiPkVycm9yRGVzYygpPC9hPiApLiAgPGEgaHJlZj0iI2ExNyI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOCI+RXJyb3JSb3c8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm5zIHRoZSBsb2NhdGlvbiAoaWYga25vd24pIG9mIHRoZSBlcnJvci4gIDxhIGhyZWY9IiNhMTgiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6RXJyb3JDb2wiIHJlZj0iYTE5IiBhcmdzPSIoKSIgLS0+CitpbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPkVycm9yQ29sPC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIGNvbHVtbiB3aGVyZSB0aGUgZXJyb3Igb2NjdXJlZC4gU2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5FcnJvclJvdygpPC9hPi4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+U2V0VGFiU2l6ZTwvYT4gKGludCBfdGFic2l6ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5TZXRUYWJTaXplKCk8L2E+IGFsbG93cyB0aGUgZXJyb3IgcmVwb3J0aW5nIGZ1bmN0aW9ucyAoPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPkVycm9yUm93KCk8L2E+IGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+RXJyb3JDb2woKTwvYT4pIHRvIHJlcG9ydCB0aGUgY29ycmVjdCB2YWx1ZXMgZm9yIHJvdyBhbmQgY29sdW1uLiAgPGEgaHJlZj0iI2EyMCI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjIiPkNsZWFyRXJyb3I8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5JZiB5b3UgaGF2ZSBoYW5kbGVkIHRoZSBlcnJvciwgaXQgY2FuIGJlIHJlc2V0IHdpdGggdGhpcyBjYWxsLiAgPGEgaHJlZj0iI2EyMiI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpQcmludCIgcmVmPSJhMjMiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cit2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIzIj5QcmludDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EdW1wIHRoZSBkb2N1bWVudCB0byBzdGFuZGFyZCBvdXQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpQcmludCIgcmVmPSJhMjQiIGFyZ3M9IihGSUxFICpjZmlsZSwgaW50IGRlcHRoPTApIGNvbnN0ICIgLS0+Cit2aXJ0dWFsIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjQiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aD0wKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlByaW50IHRoaXMgRG9jdW1lbnQgdG8gYSBGSUxFIHN0cmVhbS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5Qcm90ZWN0ZWQgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYjEiPkNsb25lPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZSBhbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcyBub2RlIGFuZCByZXR1cm4gaXQuICA8YSBocmVmPSIjYjEiPjwvYT48YnI+PC90ZD48L3RyPgorPC90YWJsZT4KKzxocj48YSBuYW1lPSJfZGV0YWlscyI+PC9hPjxoMj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+CitBbHdheXMgdGhlIHRvcCBsZXZlbCBub2RlLiAKKzxwPgorQSBkb2N1bWVudCBiaW5kcyB0b2dldGhlciBhbGwgdGhlIFhNTCBwaWVjZXMuIEl0IGNhbiBiZSBzYXZlZCwgbG9hZGVkLCBhbmQgcHJpbnRlZCB0byB0aGUgc2NyZWVuLiBUaGUgJ3ZhbHVlJyBvZiBhIGRvY3VtZW50IG5vZGUgaXMgdGhlIHhtbCBmaWxlIG5hbWUuCis8cD4KKzxocj48aDI+TWVtYmVyIEZ1bmN0aW9uIERvY3VtZW50YXRpb248L2gyPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkNsZWFyRXJyb3IiIHJlZj0iYTIyIiBhcmdzPSIoKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZvaWQgVGlYbWxEb2N1bWVudDo6Q2xlYXJFcnJvciAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0lmIHlvdSBoYXZlIGhhbmRsZWQgdGhlIGVycm9yLCBpdCBjYW4gYmUgcmVzZXQgd2l0aCB0aGlzIGNhbGwuIAorPHA+CitUaGUgZXJyb3Igc3RhdGUgaXMgYXV0b21hdGljYWxseSBjbGVhcmVkIGlmIHlvdSBQYXJzZSBhIG5ldyBYTUwgYmxvY2suICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYjEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6Q2xvbmUiIHJlZj0iYjEiIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZpcnR1YWwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBUaVhtbERvY3VtZW50OjpDbG9uZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtwcm90ZWN0ZWQsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0NyZWF0ZSBhbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcyBub2RlIGFuZCByZXR1cm4gaXQuIAorPHA+CitUaGUgbWVtb3J5IG11c3QgYmUgZGVsZXRlZCBieSB0aGUgY2FsbGVyLgorPHA+CitJbXBsZW1lbnRzIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzIiPlRpWG1sTm9kZTwvYT4uICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkVycm9yIiByZWY9ImExNSIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Ym9vbCBUaVhtbERvY3VtZW50OjpFcnJvciAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0lmIGFuIGVycm9yIG9jY3VycywgRXJyb3Igd2lsbCBiZSBzZXQgdG8gdHJ1ZS4gCis8cD4KK0Fsc28sPHVsPgorPGxpPlRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNyI+RXJyb3JJZCgpPC9hPiB3aWxsIGNvbnRhaW4gdGhlIGludGVnZXIgaWRlbnRpZmllciBvZiB0aGUgZXJyb3IgKG5vdCBnZW5lcmFsbHkgdXNlZnVsKTwvbGk+PGxpPlRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNiI+RXJyb3JEZXNjKCk8L2E+IG1ldGhvZCB3aWxsIHJldHVybiB0aGUgbmFtZSBvZiB0aGUgZXJyb3IuICh2ZXJ5IHVzZWZ1bCk8L2xpPjxsaT5UaGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPkVycm9yUm93KCk8L2E+IGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+RXJyb3JDb2woKTwvYT4gd2lsbCByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBlcnJvciAoaWYga25vd24pPC9saT48L3VsPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkVycm9ySWQiIHJlZj0iYTE3IiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQgVGlYbWxEb2N1bWVudDo6RXJyb3JJZCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0dlbmVyYWxseSwgeW91IHByb2JhYmx5IHdhbnQgdGhlIGVycm9yIHN0cmluZyAoIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5FcnJvckRlc2MoKTwvYT4gKS4gCis8cD4KK0J1dCBpZiB5b3UgcHJlZmVyIHRoZSBFcnJvcklkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggaXQuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkVycm9yUm93IiByZWY9ImExOCIgYXJncz0iKCkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQgVGlYbWxEb2N1bWVudDo6RXJyb3JSb3cgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitSZXR1cm5zIHRoZSBsb2NhdGlvbiAoaWYga25vd24pIG9mIHRoZSBlcnJvci4gCis8cD4KK1RoZSBmaXJzdCBjb2x1bW4gaXMgY29sdW1uIDEsIGFuZCB0aGUgZmlyc3Qgcm93IGlzIHJvdyAxLiBBIHZhbHVlIG9mIDAgbWVhbnMgdGhlIHJvdyBhbmQgY29sdW1uIHdhc24ndCBhcHBsaWNhYmxlIChtZW1vcnkgZXJyb3JzLCBmb3IgZXhhbXBsZSwgaGF2ZSBubyByb3cvY29sdW1uKSBvciB0aGUgcGFyc2VyIGxvc3QgdGhlIGVycm9yLiAoQW4gZXJyb3IgaW4gdGhlIGVycm9yIHJlcG9ydGluZywgaW4gdGhhdCBjYXNlLik8cD4KKzxkbCBjb21wYWN0PjxkdD48Yj5TZWUgYWxzbzo8L2I+PC9kdD48ZGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlNldFRhYlNpemU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPjwvZGQ+PC9kbD4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpMb2FkRmlsZSIgcmVmPSJhMTAiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2ZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Ym9vbCBUaVhtbERvY3VtZW50OjpMb2FkRmlsZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBzdGQ6OnN0cmluZyAmYW1wOyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmZpbGVuYW1lPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPlRpWG1sRW5jb2RpbmcmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5lbmNvZGluZzwvZW0+ID0gPGNvZGU+VElYTUxfREVGQVVMVF9FTkNPRElORzwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorPGRsIGNvbXBhY3Q+PGR0PjxiPlBhcmFtZXRlcnM6IDwvYj48L2R0PjxkZD4KKzx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIyIiBjZWxscGFkZGluZz0iMCI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48ZW0+ZW5jb2Rpbmc8L2VtPiZuYnNwOzwvdGQ+PHRkPgorU1RMIHN0ZDo6c3RyaW5nIHZlcnNpb24uIDwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2RsPiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkxvYWRGaWxlIiByZWY9ImE2IiBhcmdzPSIoVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmJvb2wgVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+VGlYbWxFbmNvZGluZyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+ZW5jb2Rpbmc8L2VtPiA9IDxjb2RlPlRJWE1MX0RFRkFVTFRfRU5DT0RJTkc8L2NvZGU+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitMb2FkIGEgZmlsZSB1c2luZyB0aGUgY3VycmVudCBkb2N1bWVudCB2YWx1ZS4gCis8cD4KK1JldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLiBXaWxsIGRlbGV0ZSBhbnkgZXhpc3RpbmcgZG9jdW1lbnQgZGF0YSBiZWZvcmUgbG9hZGluZy4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6UGFyc2UiIHJlZj0iYTEyIiBhcmdzPSIoY29uc3QgY2hhciAqcCwgVGlYbWxQYXJzaW5nRGF0YSAqZGF0YT0wLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dmlydHVhbCBjb25zdCBjaGFyKiBUaVhtbERvY3VtZW50OjpQYXJzZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5wPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPlRpWG1sUGFyc2luZ0RhdGEgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmRhdGE8L2VtPiA9IDxjb2RlPjA8L2NvZGU+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5UaVhtbEVuY29kaW5nJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+ZW5jb2Rpbmc8L2VtPiA9IDxjb2RlPlRJWE1MX0RFRkFVTFRfRU5DT0RJTkc8L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitQYXJzZSB0aGUgZ2l2ZW4gbnVsbCB0ZXJtaW5hdGVkIGJsb2NrIG9mIHhtbCBkYXRhLiAKKzxwPgorUGFzc2luZyBpbiBhbiBlbmNvZGluZyB0byB0aGlzIG1ldGhvZCAoZWl0aGVyIFRJWE1MX0VOQ09ESU5HX0xFR0FDWSBvciBUSVhNTF9FTkNPRElOR19VVEY4IHdpbGwgZm9yY2UgVGlueVhtbCB0byB1c2UgdGhhdCBlbmNvZGluZywgcmVnYXJkbGVzcyBvZiB3aGF0IFRpbnlYbWwgbWlnaHQgb3RoZXJ3aXNlIHRyeSB0byBkZXRlY3QuCis8cD4KK0ltcGxlbWVudHMgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpSb290RWxlbWVudCIgcmVmPSJhMTMiIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogVGlYbWxEb2N1bWVudDo6Um9vdEVsZW1lbnQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitHZXQgdGhlIHJvb3QgZWxlbWVudCAtLSB0aGUgb25seSB0b3AgbGV2ZWwgZWxlbWVudCAtLSBvZiB0aGUgZG9jdW1lbnQuIAorPHA+CitJbiB3ZWxsIGZvcm1lZCBYTUwsIHRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZS4gVGlueVhtbCBpcyB0b2xlcmFudCBvZiBtdWx0aXBsZSBlbGVtZW50cyBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlNldFRhYlNpemUiIHJlZj0iYTIwIiBhcmdzPSIoaW50IF90YWJzaXplKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZvaWQgVGlYbWxEb2N1bWVudDo6U2V0VGFiU2l6ZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPl90YWJzaXplPC9lbT4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+U2V0VGFiU2l6ZSgpPC9hPiBhbGxvd3MgdGhlIGVycm9yIHJlcG9ydGluZyBmdW5jdGlvbnMgKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5FcnJvclJvdygpPC9hPiBhbmQgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPkVycm9yQ29sKCk8L2E+KSB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWVzIGZvciByb3cgYW5kIGNvbHVtbi4gCis8cD4KK0l0IGRvZXMgbm90IGNoYW5nZSB0aGUgb3V0cHV0IG9yIGlucHV0IGluIGFueSB3YXkuPHA+CitCeSBjYWxsaW5nIHRoaXMgbWV0aG9kLCB3aXRoIGEgdGFiIHNpemUgZ3JlYXRlciB0aGFuIDAsIHRoZSByb3cgYW5kIGNvbHVtbiBvZiBlYWNoIG5vZGUgYW5kIGF0dHJpYnV0ZSBpcyBzdG9yZWQgd2hlbiB0aGUgZmlsZSBpcyBsb2FkZWQuIFZlcnkgdXNlZnVsIGZvciB0cmFja2luZyB0aGUgRE9NIGJhY2sgaW4gdG8gdGhlIHNvdXJjZSBmaWxlLjxwPgorVGhlIHRhYiBzaXplIGlzIHJlcXVpcmVkIGZvciBjYWxjdWxhdGluZyB0aGUgbG9jYXRpb24gb2Ygbm9kZXMuIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IG9mIDQgaXMgdXNlZC4gVGhlIHRhYnNpemUgaXMgc2V0IHBlciBkb2N1bWVudC4gU2V0dGluZyB0aGUgdGFic2l6ZSB0byAwIGRpc2FibGVzIHJvdy9jb2x1bW4gdHJhY2tpbmcuPHA+CitOb3RlIHRoYXQgcm93IGFuZCBjb2x1bW4gdHJhY2tpbmcgaXMgbm90IHN1cHBvcnRlZCB3aGVuIHVzaW5nIG9wZXJhdG9yJmd0OyZndDsuPHA+CitUaGUgdGFiIHNpemUgbmVlZHMgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIHBhcnNlIG9yIGxvYWQuIENvcnJlY3QgdXNhZ2U6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlNldFRhYlNpemUoIDggKTsKKwkJZG9jLkxvYWQoICJteWZpbGUueG1sIiApOworCQk8L3ByZT48L2Rpdj48cD4KKzxkbCBjb21wYWN0PjxkdD48Yj5TZWUgYWxzbzo8L2I+PC9kdD48ZGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT48L2RkPjwvZGw+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5wbmcgYi9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJmZDI2NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbERvY3VtZW50LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxFbGVtZW50LW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEVsZW1lbnQtbWVtYmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYmYxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxFbGVtZW50LW1lbWJlcnMuaHRtbApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbEVsZW1lbnQgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E2Ij5BdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUsIGludCAqaSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTciPkF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqbmFtZSwgZG91YmxlICpkKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNSI+Q2xlYXI8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjgiPkNsb25lPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIzIj5GaXJzdEF0dHJpYnV0ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5HZXRUZXh0PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4oVGlYbWxOb2RlICphZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4oVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+KGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjIiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgVGlYbWxOb2RlICpwcmV2aW91cyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI1Ij5MYXN0QXR0cmlidXRlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI5Ij5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+UXVlcnlEb3VibGVBdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqX3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTAiPlF1ZXJ5RmxvYXRBdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUsIGZsb2F0ICpfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+UXVlcnlJbnRBdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUsIGludCAqX3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjEiPlJlbW92ZUF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqbmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjIiPlJlbW92ZUF0dHJpYnV0ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtuYW1lKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO3dpdGhUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMSI+U2V0QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTE3Ij5TZXRBdHRyaWJ1dGU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7bmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExOSI+U2V0QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjAiPlNldERvdWJsZUF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqbmFtZSwgZG91YmxlIHZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4oY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNCI+U2V0VmFsdWU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMCI+VGlYbWxFbGVtZW50PC9hPihjb25zdCBjaGFyICppbl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMSI+VGlYbWxFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPlRvQ29tbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY4Ij5Ub0NvbW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY1Ij5Ub0RlY2xhcmF0aW9uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPlRvRGVjbGFyYXRpb248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYwIj5Ub0RvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPlRvRG9jdW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj5Ub0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+VG9FbGVtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPlRvVGV4dDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY5Ij5Ub1Vua25vd248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij5UeXBlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+PC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtwcm90ZWN0ZWRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPlZhbHVlU3RyPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Cis8L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxFbGVtZW50Lmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxFbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdiNGJkOQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbEVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDQxOCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IFRpWG1sRWxlbWVudCBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbEVsZW1lbnQgQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbEVsZW1lbnQiIC0tPjwhLS0gZG94eXRhZzogaW5oZXJpdHM9IlRpWG1sTm9kZSIgLS0+VGhlIGVsZW1lbnQgaXMgYSBjb250YWluZXIgY2xhc3MuICAKKzxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KKzxwPgorPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Cis8cD4KKzxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sRWxlbWVudDoKKzxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxFbGVtZW50LnBuZyIgdXNlbWFwPSIjVGlYbWxFbGVtZW50X21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Cis8bWFwIG5hbWU9IlRpWG1sRWxlbWVudF9tYXAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCIgYWx0PSJUaVhtbE5vZGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsNTYsODcsODAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCw4NywyNCI+Cis8L21hcD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50LW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKzx0cj48dGQ+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6VGlYbWxFbGVtZW50IiByZWY9ImEwIiBhcmdzPSIoY29uc3QgY2hhciAqaW5fdmFsdWUpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTAiPlRpWG1sRWxlbWVudDwvYT4gKGNvbnN0IGNoYXIgKmluX3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29uc3RydWN0IGFuIGVsZW1lbnQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6VGlYbWxFbGVtZW50IiByZWY9ImExIiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEiPlRpWG1sRWxlbWVudDwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+c3RkOjpzdHJpbmcgY29uc3RydWN0b3IuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6QXR0cmlidXRlIiByZWY9ImE1IiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSkgY29uc3QgIiAtLT4KK2NvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+R2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlKCk8L2E+IHJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgYXR0cmlidXRlIG9mIHRoYXQgbmFtZSwgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNiI+QXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSwgaW50ICppKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZSgpPC9hPiByZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuICA8YSBocmVmPSIjYTYiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E3Ij5BdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgKmQpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+R2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlKCk8L2E+IHJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgYXR0cmlidXRlIG9mIHRoYXQgbmFtZSwgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4gIDxhIGhyZWY9IiNhNyI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlF1ZXJ5SW50QXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSwgaW50ICpfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UXVlcnlJbnRBdHRyaWJ1dGUgZXhhbWluZXMgdGhlIGF0dHJpYnV0ZSAtIGl0IGlzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZSgpPC9hPiBtZXRob2Qgd2l0aCByaWNoZXIgZXJyb3IgY2hlY2tpbmcuICA8YSBocmVmPSIjYTgiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlF1ZXJ5RG91YmxlQXR0cmlidXRlIiByZWY9ImE5IiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlICpfdmFsdWUpIGNvbnN0ICIgLS0+CitpbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E5Ij5RdWVyeURvdWJsZUF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqX3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlF1ZXJ5RG91YmxlQXR0cmlidXRlIGV4YW1pbmVzIHRoZSBhdHRyaWJ1dGUgLSBzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E4Ij5RdWVyeUludEF0dHJpYnV0ZSgpPC9hPi4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6UXVlcnlGbG9hdEF0dHJpYnV0ZSIgcmVmPSJhMTAiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lLCBmbG9hdCAqX3ZhbHVlKSBjb25zdCAiIC0tPgoraW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTAiPlF1ZXJ5RmxvYXRBdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lLCBmbG9hdCAqX3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlF1ZXJ5RmxvYXRBdHRyaWJ1dGUgZXhhbWluZXMgdGhlIGF0dHJpYnV0ZSAtIHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlF1ZXJ5SW50QXR0cmlidXRlKCk8L2E+LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNldHMgYW4gYXR0cmlidXRlIG9mIG5hbWUgdG8gYSBnaXZlbiB2YWx1ZS4gIDxhIGhyZWY9IiNhMTEiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpTZXRBdHRyaWJ1dGUiIHJlZj0iYTE3IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTE3Ij5TZXRBdHRyaWJ1dGU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIFNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTkiPlNldEF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNldHMgYW4gYXR0cmlidXRlIG9mIG5hbWUgdG8gYSBnaXZlbiB2YWx1ZS4gIDxhIGhyZWY9IiNhMTkiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjAiPlNldERvdWJsZUF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSB2YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNldHMgYW4gYXR0cmlidXRlIG9mIG5hbWUgdG8gYSBnaXZlbiB2YWx1ZS4gIDxhIGhyZWY9IiNhMjAiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpSZW1vdmVBdHRyaWJ1dGUiIHJlZj0iYTIxIiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSkiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIxIj5SZW1vdmVBdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+RGVsZXRlcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlIiByZWY9ImEyMiIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7bmFtZSkiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIyIj5SZW1vdmVBdHRyaWJ1dGU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO25hbWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6Rmlyc3RBdHRyaWJ1dGUiIHJlZj0iYTIzIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjMiPkZpcnN0QXR0cmlidXRlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFjY2VzcyB0aGUgZmlyc3QgYXR0cmlidXRlIGluIHRoaXMgZWxlbWVudC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6TGFzdEF0dHJpYnV0ZSIgcmVmPSJhMjUiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+TGFzdEF0dHJpYnV0ZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BY2Nlc3MgdGhlIGxhc3QgYXR0cmlidXRlIGluIHRoaXMgZWxlbWVudC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPkdldFRleHQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGVhc3kgYWNjZXNzIHRvIHRoZSB0ZXh0IGluc2lkZSBhbiBlbGVtZW50LiAgPGEgaHJlZj0iI2EyNyI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OkNsb25lIiByZWY9ImEyOCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK3ZpcnR1YWwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOCI+Q2xvbmU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlcyBhIG5ldyBFbGVtZW50IGFuZCByZXR1cm5zIGl0IC0gdGhlIHJldHVybmVkIGVsZW1lbnQgaXMgYSBjb3B5LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52aXJ0dWFsIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOSI+UHJpbnQ8L2E+IChGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFsbCBUaW55WG1sIGNsYXNzZXMgY2FuIHByaW50IHRoZW1zZWx2ZXMgdG8gYSBmaWxlc3RyZWFtLiAgPGEgaHJlZj0iI2EyOSI+PC9hPjxicj48L3RkPjwvdHI+Cis8L3RhYmxlPgorPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KK1RoZSBlbGVtZW50IGlzIGEgY29udGFpbmVyIGNsYXNzLiAKKzxwPgorSXQgaGFzIGEgdmFsdWUsIHRoZSBlbGVtZW50IG5hbWUsIGFuZCBjYW4gY29udGFpbiBvdGhlciBlbGVtZW50cywgdGV4dCwgY29tbWVudHMsIGFuZCB1bmtub3ducy4gRWxlbWVudHMgYWxzbyBjb250YWluIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgYXR0cmlidXRlcy4KKzxwPgorPGhyPjxoMj5NZW1iZXIgRnVuY3Rpb24gRG9jdW1lbnRhdGlvbjwvaDI+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OkF0dHJpYnV0ZSIgcmVmPSJhNyIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqZCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciogVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+bmFtZTwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5kb3VibGUgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmQ8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0dpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZSgpPC9hPiByZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuIAorPHA+CitJZiB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbmQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBkb3VibGUsIHRoZSBkb3VibGUgdmFsdWUgd2lsbCBiZSBwdXQgaW4gdGhlIHJldHVybiAnZCcsIGlmICdkJyBpcyBub24tbnVsbC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OkF0dHJpYnV0ZSIgcmVmPSJhNiIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqaSkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciogVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+bmFtZTwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5pbnQgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmk8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0dpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZSgpPC9hPiByZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuIAorPHA+CitJZiB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbmQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyLCB0aGUgaW50ZWdlciB2YWx1ZSB3aWxsIGJlIHB1dCBpbiB0aGUgcmV0dXJuICdpJywgaWYgJ2knIGlzIG5vbi1udWxsLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OkdldFRleHQiIHJlZj0iYTI3IiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyKiBUaVhtbEVsZW1lbnQ6OkdldFRleHQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0NvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBlYXN5IGFjY2VzcyB0byB0aGUgdGV4dCBpbnNpZGUgYW4gZWxlbWVudC4gCis8cD4KK0FsdGhvdWdoIGVhc3kgYW5kIGNvbmNpc2UsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPkdldFRleHQoKTwvYT4gaXMgbGltaXRlZCBjb21wYXJlZCB0byBnZXR0aW5nIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4gY2hpbGQgYW5kIGFjY2Vzc2luZyBpdCBkaXJlY3RseS48cD4KK0lmIHRoZSBmaXJzdCBjaGlsZCBvZiAndGhpcycgaXMgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4sIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5HZXRUZXh0KCk8L2E+IHJldHVycyB0aGUgY2hhcmFjdGVyIHN0cmluZyBvZiB0aGUgVGV4dCBub2RlLCBlbHNlIG51bGwgaXMgcmV0dXJuZWQuPHA+CitUaGlzIGlzIGEgY29udmVuaWVudCBtZXRob2QgZm9yIGdldHRpbmcgdGhlIHRleHQgb2Ygc2ltcGxlIGNvbnRhaW5lZCB0ZXh0OiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkJJmx0O2ZvbyZndDtUaGlzIGlzIHRleHQmbHQ7L2ZvbyZndDsKKwkJY29uc3QgY2hhciogc3RyID0gZm9vRWxlbWVudC0mZ3Q7R2V0VGV4dCgpOworCQk8L3ByZT48L2Rpdj48cD4KKydzdHInIHdpbGwgYmUgYSBwb2ludGVyIHRvICJUaGlzIGlzIHRleHQiLjxwPgorTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGJlIG1pc2xlYWRpbmcuIElmIHRoZSBlbGVtZW50IGZvbyB3YXMgY3JlYXRlZCBmcm9tIHRoaXMgWE1MOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkJJmx0O2ZvbyZndDsmbHQ7YiZndDtUaGlzIGlzIHRleHQmbHQ7L2ImZ3Q7Jmx0Oy9mb28mZ3Q7IAorCQk8L3ByZT48L2Rpdj48cD4KK3RoZW4gdGhlIHZhbHVlIG9mIHN0ciB3b3VsZCBiZSBudWxsLiBUaGUgZmlyc3QgY2hpbGQgbm9kZSBpc24ndCBhIHRleHQgbm9kZSwgaXQgaXMgYW5vdGhlciBlbGVtZW50LiBGcm9tIHRoaXMgWE1MOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkJJmx0O2ZvbyZndDtUaGlzIGlzICZsdDtiJmd0O3RleHQmbHQ7L2ImZ3Q7Jmx0Oy9mb28mZ3Q7IAorCQk8L3ByZT48L2Rpdj4gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+R2V0VGV4dCgpPC9hPiB3aWxsIHJldHVybiAiVGhpcyBpcyAiLjxwPgorV0FSTklORzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+R2V0VGV4dCgpPC9hPiBhY2Nlc3NlcyBhIGNoaWxkIG5vZGUgLSBkb24ndCBiZWNvbWUgY29uZnVzZWQgd2l0aCB0aGUgc2ltaWxhcmx5IG5hbWVkIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNyI+VGlYbWxIYW5kbGU6OlRleHQoKTwvYT4gYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPlRpWG1sTm9kZTo6VG9UZXh0KCk8L2E+IHdoaWNoIGFyZSBzYWZlIHR5cGUgY2FzdHMgb24gdGhlIHJlZmVyZW5jZWQgbm9kZS4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpQcmludCIgcmVmPSJhMjkiIGFyZ3M9IihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52aXJ0dWFsIHZvaWQgVGlYbWxFbGVtZW50OjpQcmludCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5GSUxFICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5jZmlsZTwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5pbnQmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5kZXB0aDwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+IGNvbnN0PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitBbGwgVGlueVhtbCBjbGFzc2VzIGNhbiBwcmludCB0aGVtc2VsdmVzIHRvIGEgZmlsZXN0cmVhbS4gCis8cD4KK1RoaXMgaXMgYSBmb3JtYXR0ZWQgcHJpbnQsIGFuZCB3aWxsIGluc2VydCB0YWJzIGFuZCBuZXdsaW5lcy48cD4KKyhGb3IgYW4gdW5mb3JtYXR0ZWQgc3RyZWFtLCB1c2UgdGhlICZsdDsmbHQ7IG9wZXJhdG9yLikKKzxwPgorSW1wbGVtZW50cyA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTIiPlRpWG1sQmFzZTwvYT4uICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpRdWVyeUludEF0dHJpYnV0ZSIgcmVmPSJhOCIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqX3ZhbHVlKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQgVGlYbWxFbGVtZW50OjpRdWVyeUludEF0dHJpYnV0ZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5uYW1lPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmludCAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+X3ZhbHVlPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitRdWVyeUludEF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gaXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlKCk8L2E+IG1ldGhvZCB3aXRoIHJpY2hlciBlcnJvciBjaGVja2luZy4gCis8cD4KK0lmIHRoZSBhdHRyaWJ1dGUgaXMgYW4gaW50ZWdlciwgaXQgaXMgc3RvcmVkIGluICd2YWx1ZScgYW5kIHRoZSBjYWxsIHJldHVybnMgVElYTUxfU1VDQ0VTUy4gSWYgaXQgaXMgbm90IGFuIGludGVnZXIsIGl0IHJldHVybnMgVElYTUxfV1JPTkdfVFlQRS4gSWYgdGhlIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgdGhlbiBUSVhNTF9OT19BVFRSSUJVVEUgaXMgcmV0dXJuZWQuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6U2V0QXR0cmlidXRlIiByZWY9ImExOSIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWx1ZSkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52b2lkIFRpWG1sRWxlbWVudDo6U2V0QXR0cmlidXRlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPm5hbWU8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+aW50Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+dmFsdWU8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1NldHMgYW4gYXR0cmlidXRlIG9mIG5hbWUgdG8gYSBnaXZlbiB2YWx1ZS4gCis8cD4KK1RoZSBhdHRyaWJ1dGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBjaGFuZ2VkIGlmIGl0IGRvZXMuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6U2V0QXR0cmlidXRlIiByZWY9ImExMSIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKl92YWx1ZSkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52b2lkIFRpWG1sRWxlbWVudDo6U2V0QXR0cmlidXRlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPm5hbWU8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+X3ZhbHVlPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitTZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuIAorPHA+CitUaGUgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgY2hhbmdlZCBpZiBpdCBkb2VzLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlNldERvdWJsZUF0dHJpYnV0ZSIgcmVmPSJhMjAiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgdmFsdWUpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dm9pZCBUaVhtbEVsZW1lbnQ6OlNldERvdWJsZUF0dHJpYnV0ZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5uYW1lPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmRvdWJsZSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPnZhbHVlPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitTZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuIAorPHA+CitUaGUgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgY2hhbmdlZCBpZiBpdCBkb2VzLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEVsZW1lbnQucG5nIGIvZG9jcy9jbGFzc1RpWG1sRWxlbWVudC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYzIxYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbEVsZW1lbnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEhhbmRsZS1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxIYW5kbGUtbWVtYmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZmFlYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxIYW5kbGUtbWVtYmVycy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sSGFuZGxlIE1lbWJlciBMaXN0PC9oMT5UaGlzIGlzIHRoZSBjb21wbGV0ZSBsaXN0IG9mIG1lbWJlcnMgZm9yIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNyI+Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlLCBpbnQgaW5kZXgpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E4Ij5DaGlsZDwvYT4oaW50IGluZGV4KSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOSI+Q2hpbGRFbGVtZW50PC9hPihjb25zdCBjaGFyICp2YWx1ZSwgaW50IGluZGV4KSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTAiPkNoaWxkRWxlbWVudDwvYT4oaW50IGluZGV4KSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTYiPkVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EzIj5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E0Ij5GaXJzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E2Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNSI+Tm9kZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE3Ij5UZXh0PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMCI+VGlYbWxIYW5kbGU8L2E+KFRpWG1sTm9kZSAqX25vZGUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExIj5UaVhtbEhhbmRsZTwvYT4oY29uc3QgVGlYbWxIYW5kbGUgJmFtcDtyZWYpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExOCI+VW5rbm93bjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKzwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEhhbmRsZS5odG1sIGIvZG9jcy9jbGFzc1RpWG1sSGFuZGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdhZjYwMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbEhhbmRsZS5odG1sCkBAIC0wLDAgKzEsMjcwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogVGlYbWxIYW5kbGUgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxIYW5kbGUgQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbEhhbmRsZSIgLS0+QSBUaVhtbEhhbmRsZSBpcyBhIGNsYXNzIHRoYXQgd3JhcHMgYSBub2RlIHBvaW50ZXIgd2l0aCBudWxsIGNoZWNrczsgdGhpcyBpcyBhbiBpbmNyZWRpYmx5IHVzZWZ1bCB0aGluZy4gIAorPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgorPHA+Cis8Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KKzxwPgorPGEgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6VGlYbWxIYW5kbGUiIHJlZj0iYTAiIGFyZ3M9IihUaVhtbE5vZGUgKl9ub2RlKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTAiPlRpWG1sSGFuZGxlPC9hPiAoPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICpfbm9kZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZSBhIGhhbmRsZSBmcm9tIGFueSBub2RlIChhdCBhbnkgZGVwdGggb2YgdGhlIHRyZWUuKSBUaGlzIGNhbiBiZSBhIG51bGwgcG9pbnRlci4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OlRpWG1sSGFuZGxlIiByZWY9ImExIiBhcmdzPSIoY29uc3QgVGlYbWxIYW5kbGUgJmFtcDtyZWYpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMSI+VGlYbWxIYW5kbGU8L2E+IChjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+ICZhbXA7cmVmKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29weSBjb25zdHJ1Y3Rvci4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGQiIHJlZj0iYTMiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EzIj5GaXJzdENoaWxkPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgbm9kZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGQiIHJlZj0iYTQiIGFyZ3M9Iihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTQiPkZpcnN0Q2hpbGQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGZpcnN0IGNoaWxkIG5vZGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGRFbGVtZW50IiByZWY9ImE1IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZEVsZW1lbnQiIHJlZj0iYTYiIGFyZ3M9Iihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTYiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiAoY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IHdpdGggdGhlIGdpdmVuIG5hbWUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTciPkNoaWxkPC9hPiAoY29uc3QgY2hhciAqdmFsdWUsIGludCBpbmRleCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gIDxhIGhyZWY9IiNhNyI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTgiPkNoaWxkPC9hPiAoaW50IGluZGV4KSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZC4gIDxhIGhyZWY9IiNhOCI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTkiPkNoaWxkRWxlbWVudDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlLCBpbnQgaW5kZXgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gIDxhIGhyZWY9IiNhOSI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEwIj5DaGlsZEVsZW1lbnQ8L2E+IChpbnQgaW5kZXgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkIGVsZW1lbnQuICA8YSBocmVmPSIjYTEwIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpOb2RlIiByZWY9ImExNSIgYXJncz0iKCkgY29uc3QgIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNSI+Tm9kZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIGhhbmRsZSBhcyBhIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPi4gVGhpcyBtYXkgcmV0dXJuIG51bGwuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6RWxlbWVudCIgcmVmPSJhMTYiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTYiPkVsZW1lbnQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSBoYW5kbGUgYXMgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4uIFRoaXMgbWF5IHJldHVybiBudWxsLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OlRleHQiIHJlZj0iYTE3IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE3Ij5UZXh0PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgaGFuZGxlIGFzIGEgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+LiBUaGlzIG1heSByZXR1cm4gbnVsbC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpVbmtub3duIiByZWY9ImExOCIgYXJncz0iKCkgY29uc3QgIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExOCI+VW5rbm93bjwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIGhhbmRsZSBhcyBhIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPi4gVGhpcyBtYXkgcmV0dXJuIG51bGw7LiA8YnI+PC90ZD48L3RyPgorPC90YWJsZT4KKzxocj48YSBuYW1lPSJfZGV0YWlscyI+PC9hPjxoMj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+CitBIFRpWG1sSGFuZGxlIGlzIGEgY2xhc3MgdGhhdCB3cmFwcyBhIG5vZGUgcG9pbnRlciB3aXRoIG51bGwgY2hlY2tzOyB0aGlzIGlzIGFuIGluY3JlZGlibHkgdXNlZnVsIHRoaW5nLiAKKzxwPgorTm90ZSB0aGF0IFRpWG1sSGFuZGxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBUaW55WG1sIERPTSBzdHJ1Y3R1cmUuIEl0IGlzIGEgc2VwYXJhdGUgdXRpbGl0eSBjbGFzcy48cD4KK1Rha2UgYW4gZXhhbXBsZTogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JJmx0O0RvY3VtZW50Jmd0OworCQkmbHQ7RWxlbWVudCBhdHRyaWJ1dGVBID0gInZhbHVlQSImZ3Q7CisJCQkmbHQ7Q2hpbGQgYXR0cmlidXRlQiA9ICJ2YWx1ZTEiIC8mZ3Q7CisJCQkmbHQ7Q2hpbGQgYXR0cmlidXRlQiA9ICJ2YWx1ZTIiIC8mZ3Q7CisJCSZsdDsvRWxlbWVudCZndDsKKwkmbHQ7RG9jdW1lbnQmZ3Q7CisJPC9wcmU+PC9kaXY+PHA+CitBc3N1bWluZyB5b3Ugd2FudCB0aGUgdmFsdWUgb2YgImF0dHJpYnV0ZUIiIGluIHRoZSAybmQgIkNoaWxkIiBlbGVtZW50LCBpdCdzIHZlcnkgZWFzeSB0byB3cml0ZSBhICpsb3QqIG9mIGNvZGUgdGhhdCBsb29rcyBsaWtlOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JVGlYbWxFbGVtZW50KiByb290ID0gZG9jdW1lbnQuRmlyc3RDaGlsZEVsZW1lbnQoICJEb2N1bWVudCIgKTsKKwlpZiAoIHJvb3QgKQorCXsKKwkJVGlYbWxFbGVtZW50KiBlbGVtZW50ID0gcm9vdC0mZ3Q7Rmlyc3RDaGlsZEVsZW1lbnQoICJFbGVtZW50IiApOworCQlpZiAoIGVsZW1lbnQgKQorCQl7CisJCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gZWxlbWVudC0mZ3Q7Rmlyc3RDaGlsZEVsZW1lbnQoICJDaGlsZCIgKTsKKwkJCWlmICggY2hpbGQgKQorCQkJeworCQkJCVRpWG1sRWxlbWVudCogY2hpbGQyID0gY2hpbGQtJmd0O05leHRTaWJsaW5nRWxlbWVudCggIkNoaWxkIiApOworCQkJCWlmICggY2hpbGQyICkKKwkJCQl7CisJCQkJCS8vIEZpbmFsbHkgZG8gc29tZXRoaW5nIHVzZWZ1bC4KKwk8L3ByZT48L2Rpdj48cD4KK0FuZCB0aGF0IGRvZXNuJ3QgZXZlbiBjb3ZlciAiZWxzZSIgY2FzZXMuIFRpWG1sSGFuZGxlIGFkZHJlc3NlcyB0aGUgdmVyYm9zaXR5IG9mIHN1Y2ggY29kZS4gQSBUaVhtbEhhbmRsZSBjaGVja3MgZm9yIG51bGwgcG9pbnRlcnMgc28gaXQgaXMgcGVyZmVjdGx5IHNhZmUgYW5kIGNvcnJlY3QgdG8gdXNlOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JVGlYbWxIYW5kbGUgZG9jSGFuZGxlKCAmYW1wO2RvY3VtZW50ICk7CisJVGlYbWxFbGVtZW50KiBjaGlsZDIgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZCggIkRvY3VtZW50IiApLkZpcnN0Q2hpbGQoICJFbGVtZW50IiApLkNoaWxkKCAiQ2hpbGQiLCAxICkuRWxlbWVudCgpOworCWlmICggY2hpbGQyICkKKwl7CisJCS8vIGRvIHNvbWV0aGluZyB1c2VmdWwKKwk8L3ByZT48L2Rpdj48cD4KK1doaWNoIGlzIE1VQ0ggbW9yZSBjb25jaXNlIGFuZCB1c2VmdWwuPHA+CitJdCBpcyBhbHNvIHNhZmUgdG8gY29weSBoYW5kbGVzIC0gaW50ZXJuYWxseSB0aGV5IGFyZSBub3RoaW5nIG1vcmUgdGhhbiBub2RlIHBvaW50ZXJzLiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglUaVhtbEhhbmRsZSBoYW5kbGVDb3B5ID0gaGFuZGxlOworCTwvcHJlPjwvZGl2PjxwPgorV2hhdCB0aGV5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IgaXMgaXRlcmF0aW9uOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JaW50IGk9MDsgCisJd2hpbGUgKCB0cnVlICkKKwl7CisJCVRpWG1sRWxlbWVudCogY2hpbGQgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZCggIkRvY3VtZW50IiApLkZpcnN0Q2hpbGQoICJFbGVtZW50IiApLkNoaWxkKCAiQ2hpbGQiLCBpICkuRWxlbWVudCgpOworCQlpZiAoICFjaGlsZCApCisJCQlicmVhazsKKwkJLy8gZG8gc29tZXRoaW5nCisJCSsraTsKKwl9CisJPC9wcmU+PC9kaXY+PHA+CitJdCBzZWVtcyByZWFzb25hYmxlLCBidXQgaXQgaXMgaW4gZmFjdCB0d28gZW1iZWRkZWQgd2hpbGUgbG9vcHMuIFRoZSBDaGlsZCBtZXRob2QgaXMgYSBsaW5lYXIgd2FsayB0byBmaW5kIHRoZSBlbGVtZW50LCBzbyB0aGlzIGNvZGUgd291bGQgaXRlcmF0ZSBtdWNoIG1vcmUgdGhhbiBpdCBuZWVkcyB0by4gSW5zdGVhZCwgcHJlZmVyOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JVGlYbWxFbGVtZW50KiBjaGlsZCA9IGRvY0hhbmRsZS5GaXJzdENoaWxkKCAiRG9jdW1lbnQiICkuRmlyc3RDaGlsZCggIkVsZW1lbnQiICkuRmlyc3RDaGlsZCggIkNoaWxkIiApLkVsZW1lbnQoKTsKKworCWZvciggY2hpbGQ7IGNoaWxkOyBjaGlsZD1jaGlsZC0mZ3Q7TmV4dFNpYmxpbmdFbGVtZW50KCkgKQorCXsKKwkJLy8gZG8gc29tZXRoaW5nCisJfQorCTwvcHJlPjwvZGl2PgorPHA+Cis8aHI+PGgyPk1lbWJlciBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpDaGlsZCIgcmVmPSJhOCIgYXJncz0iKGludCBpbmRleCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiBUaVhtbEhhbmRsZTo6Q2hpbGQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5pbmRleDwvZW0+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitSZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQuIAorPHA+CitUaGUgZmlyc3QgY2hpbGQgaXMgMCwgdGhlIHNlY29uZCAxLCBldGMuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkNoaWxkIiByZWY9ImE3IiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUsIGludCBpbmRleCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiBUaVhtbEhhbmRsZTo6Q2hpbGQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+dmFsdWU8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+aW50Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+aW5kZXg8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1JldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAKKzxwPgorVGhlIGZpcnN0IGNoaWxkIGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Q2hpbGRFbGVtZW50IiByZWY9ImExMCIgYXJncz0iKGludCBpbmRleCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiBUaVhtbEhhbmRsZTo6Q2hpbGRFbGVtZW50ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+aW5kZXg8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkIGVsZW1lbnQuIAorPHA+CitUaGUgZmlyc3QgY2hpbGQgZWxlbWVudCBpcyAwLCB0aGUgc2Vjb25kIDEsIGV0Yy4gTm90ZSB0aGF0IG9ubHkgVGlYbWxFbGVtZW50cyBhcmUgaW5kZXhlZDogb3RoZXIgdHlwZXMgYXJlIG5vdCBjb3VudGVkLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpDaGlsZEVsZW1lbnQiIHJlZj0iYTkiIGFyZ3M9Iihjb25zdCBjaGFyICp2YWx1ZSwgaW50IGluZGV4KSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IFRpWG1sSGFuZGxlOjpDaGlsZEVsZW1lbnQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+dmFsdWU8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+aW50Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+aW5kZXg8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1JldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZCBlbGVtZW50IHdpdGggdGhlIGdpdmVuIG5hbWUuIAorPHA+CitUaGUgZmlyc3QgY2hpbGQgZWxlbWVudCBpcyAwLCB0aGUgc2Vjb25kIDEsIGV0Yy4gTm90ZSB0aGF0IG9ubHkgVGlYbWxFbGVtZW50cyBhcmUgaW5kZXhlZDogb3RoZXIgdHlwZXMgYXJlIG5vdCBjb3VudGVkLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbE5vZGUtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sTm9kZS1tZW1iZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVjYjgwMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbE5vZGUtbWVtYmVycy5odG1sCkBAIC0wLDAgKzEsODAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sTm9kZSBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcyIj5DbG9uZTwvYT4oKSBjb25zdCA9MDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHVyZSB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEwIj5GaXJzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTExIj5GaXJzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTYiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE3Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTIiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU0Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU3Ij5HZXREb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjkiPkluc2VydEFmdGVyQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+SW5zZXJ0QmVmb3JlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYmVmb3JlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPkluc2VydEVuZENoaWxkPC9hPihjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIyIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjQiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIFRpWG1sTm9kZSAqcHJldmlvdXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMyI+TGFzdENoaWxkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNSI+TGFzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTgiPkxhc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTkiPkxhc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNyI+TGlua0VuZENoaWxkPC9hPihUaVhtbE5vZGUgKmFkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM4Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzkiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQyIj5OZXh0U2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDYiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDgiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDkiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1OSI+Tm9DaGlsZHJlbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPk5vZGVUeXBlPC9hPiBlbnVtIG5hbWU8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMyI+b3BlcmF0b3ImbHQ7Jmx0OzwvYT4oc3RkOjpvc3RyZWFtICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuNCI+b3BlcmF0b3ImbHQ7Jmx0OzwvYT4oc3RkOjpzdHJpbmcgJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24yIj5vcGVyYXRvciZndDsmZ3Q7PC9hPihzdGQ6OmlzdHJlYW0gJmFtcDtpbiwgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPlBhcmVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM0Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM2Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM3Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ID0wPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtwdXJlIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sTm9kZS5odG1sIGIvZG9jcy9jbGFzc1RpWG1sTm9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYjk5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxOb2RlLmh0bWwKQEAgLTAsMCArMSw4NDUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBUaVhtbE5vZGUgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxOb2RlIENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxOb2RlIiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbEJhc2UiIC0tPlRoZSBwYXJlbnQgY2xhc3MgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlIERvY3VtZW50IE9iamVjdCBNb2RlbC4gIAorPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgorPHA+Cis8Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KKzxwPgorPHA+SW5oZXJpdGFuY2UgZGlhZ3JhbSBmb3IgVGlYbWxOb2RlOgorPHA+PGNlbnRlcj48aW1nIHNyYz0iY2xhc3NUaVhtbE5vZGUucG5nIiB1c2VtYXA9IiNUaVhtbE5vZGVfbWFwIiBib3JkZXI9IjAiIGFsdD0iIj48L2NlbnRlcj4KKzxtYXAgbmFtZT0iVGlYbWxOb2RlX21hcCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIiBhbHQ9IlRpWG1sQmFzZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjk1LDAsNDAzLDI0Ij4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiIGFsdD0iVGlYbWxDb21tZW50IiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDExMiwxMDgsMTM2Ij4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIiBhbHQ9IlRpWG1sRGVjbGFyYXRpb24iIHNoYXBlPSJyZWN0IiBjb29yZHM9IjExOCwxMTIsMjI2LDEzNiI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCIgYWx0PSJUaVhtbERvY3VtZW50IiBzaGFwZT0icmVjdCIgY29vcmRzPSIyMzYsMTEyLDM0NCwxMzYiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCIgYWx0PSJUaVhtbEVsZW1lbnQiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM1NCwxMTIsNDYyLDEzNiI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIiBhbHQ9IlRpWG1sVGV4dCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iNDcyLDExMiw1ODAsMTM2Ij4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiIGFsdD0iVGlYbWxVbmtub3duIiBzaGFwZT0icmVjdCIgY29vcmRzPSI1OTAsMTEyLDY5OCwxMzYiPgorPC9tYXA+Cis8YSBocmVmPSJjbGFzc1RpWG1sTm9kZS1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgVHlwZXM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+ZW51bSAmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgdHlwZXMgb2YgWE1MIG5vZGVzIHN1cHBvcnRlZCBieSBUaW55WG1sLiAgPGEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+TW9yZS4uLjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlZhbHVlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBtZWFuaW5nIG9mICd2YWx1ZScgY2hhbmdlcyBmb3IgdGhlIHNwZWNpZmljIHR5cGUgb2YgVGlYbWxOb2RlLiAgPGEgaHJlZj0iI2ExIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3Qgc3RkOjpzdHJpbmcgJmFtcDsmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZSgpPC9hPiBhcyBhIHN0ZDo6c3RyaW5nLiAgPGEgaHJlZj0iI2EyIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPiAoY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2hhbmdlcyB0aGUgdmFsdWUgb2YgdGhlIG5vZGUuICA8YSBocmVmPSIjYTMiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlNldFZhbHVlIiByZWY9ImE0IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5TZXRWYWx1ZTwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Q2xlYXIiIHJlZj0iYTUiIGFyZ3M9IigpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkRlbGV0ZSBhbGwgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZS4gRG9lcyBub3QgYWZmZWN0ICd0aGlzJy4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpQYXJlbnQiIHJlZj0iYTYiIGFyZ3M9IigpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+T25lIHN0ZXAgdXAgdGhlIERPTS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkIiByZWY9ImE4IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBmaXJzdCBjaGlsZCBvZiB0aGlzIG5vZGUuIFdpbGwgYmUgbnVsbCBpZiB0aGVyZSBhcmUgbm8gY2hpbGRyZW4uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkZpcnN0Q2hpbGQiIHJlZj0iYTEwIiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEwIj5GaXJzdENoaWxkPC9hPiAoY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIGZpcnN0IGNoaWxkIG9mIHRoaXMgbm9kZSB3aXRoIHRoZSBtYXRjaGluZyAndmFsdWUnLiBXaWxsIGJlIG51bGwgaWYgbm9uZSBmb3VuZC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Rmlyc3RDaGlsZCIgcmVmPSJhMTEiIGFyZ3M9Iihjb25zdCBjaGFyICp2YWx1ZSkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIGZpcnN0IGNoaWxkIG9mIHRoaXMgbm9kZSB3aXRoIHRoZSBtYXRjaGluZyAndmFsdWUnLiBXaWxsIGJlIG51bGwgaWYgbm9uZSBmb3VuZC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TGFzdENoaWxkIiByZWY9ImExMyIgYXJncz0iKCkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMyI+TGFzdENoaWxkPC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIGxhc3QgY2hpbGQgb2YgdGhpcyBub2RlLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpMYXN0Q2hpbGQiIHJlZj0iYTE1IiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIGxhc3QgY2hpbGQgb2YgdGhpcyBub2RlIG1hdGNoaW5nICd2YWx1ZScuIFdpbGwgYmUgbnVsbCBpZiB0aGVyZSBhcmUgbm8gY2hpbGRyZW4uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkZpcnN0Q2hpbGQiIHJlZj0iYTE2IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkZpcnN0Q2hpbGQiIHJlZj0iYTE3IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpMYXN0Q2hpbGQiIHJlZj0iYTE4IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TGFzdENoaWxkIiByZWY9ImExOSIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+IChjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKnByZXZpb3VzKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFuIGFsdGVybmF0ZSB3YXkgdG8gd2FsayB0aGUgY2hpbGRyZW4gb2YgYSBub2RlLiAgPGEgaHJlZj0iI2EyMCI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiIgcmVmPSJhMjIiIGFyZ3M9Iihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjIiPkl0ZXJhdGVDaGlsZHJlbjwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKnByZXZpb3VzKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoaXMgZmxhdm9yIG9mIEl0ZXJhdGVDaGlsZHJlbiBzZWFyY2hlcyBmb3IgY2hpbGRyZW4gd2l0aCBhIHBhcnRpY3VsYXIgJ3ZhbHVlJy4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6SXRlcmF0ZUNoaWxkcmVuIiByZWY9ImEyNCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiIgcmVmPSJhMjUiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgVGlYbWxOb2RlICpwcmV2aW91cykiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+SXRlcmF0ZUNoaWxkcmVuPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqcHJldmlvdXMpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+IChjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDthZGRUaGlzKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiAgPGEgaHJlZj0iI2EyNiI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqYWRkVGhpcyk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gIDxhIGhyZWY9IiNhMjciPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqYmVmb3JlVGhpcywgY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7YWRkVGhpcyk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gIDxhIGhyZWY9IiNhMjgiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPiAoPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICphZnRlclRoaXMsIGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wO2FkZFRoaXMpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuICA8YSBocmVmPSIjYTI5Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMCI+UmVwbGFjZUNoaWxkPC9hPiAoPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICpyZXBsYWNlVGhpcywgY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7d2l0aFRoaXMpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXBsYWNlIGEgY2hpbGQgb2YgdGhpcyBub2RlLiAgPGEgaHJlZj0iI2EzMCI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlJlbW92ZUNoaWxkIiByZWY9ImEzMSIgYXJncz0iKFRpWG1sTm9kZSAqcmVtb3ZlVGhpcykiIC0tPgorYm9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMxIj5SZW1vdmVDaGlsZDwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqcmVtb3ZlVGhpcyk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkRlbGV0ZSBhIGNoaWxkIG9mIHRoaXMgbm9kZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTMyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6UHJldmlvdXNTaWJsaW5nIiByZWY9ImEzMiIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5OYXZpZ2F0ZSB0byBhIHNpYmxpbmcgbm9kZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTM0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6UHJldmlvdXNTaWJsaW5nIiByZWY9ImEzNCIgYXJncz0iKGNvbnN0IGNoYXIgKikgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzQiPlByZXZpb3VzU2libGluZzwvYT4gKGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5OYXZpZ2F0ZSB0byBhIHNpYmxpbmcgbm9kZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTM2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6UHJldmlvdXNTaWJsaW5nIiByZWY9ImEzNiIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlByZXZpb3VzU2libGluZyIgcmVmPSJhMzciIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTM4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmciIHJlZj0iYTM4IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM4Ij5OZXh0U2libGluZzwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMzkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpOZXh0U2libGluZyIgcmVmPSJhMzkiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNDAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpOZXh0U2libGluZyIgcmVmPSJhNDAiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5OYXZpZ2F0ZSB0byBhIHNpYmxpbmcgbm9kZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmciIHJlZj0iYTQyIiBhcmdzPSIoY29uc3QgY2hhciAqKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+IChjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUgd2l0aCB0aGUgZ2l2ZW4gJ3ZhbHVlJy4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCB0aHJvdWdoIGVsZW1lbnRzLiAgPGEgaHJlZj0iI2E0NCI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDYiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4gKGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4gIDxhIGhyZWY9IiNhNDYiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNDgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpOZXh0U2libGluZ0VsZW1lbnQiIHJlZj0iYTQ4IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQ5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50IiByZWY9ImE0OSIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCIgcmVmPSJhNTAiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Rmlyc3RDaGlsZEVsZW1lbnQiIHJlZj0iYTUyIiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCB0aHJvdWdoIGVsZW1lbnRzLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCIgcmVmPSJhNTQiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1NSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkZpcnN0Q2hpbGRFbGVtZW50IiByZWY9ImE1NSIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZpcnR1YWwgaW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlR5cGU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UXVlcnkgdGhlIHR5cGUgKGFzIGFuIGVudW1lcmF0ZWQgdmFsdWUsIGFib3ZlKSBvZiB0aGlzIG5vZGUuICA8YSBocmVmPSIjYTU2Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU3Ij5HZXREb2N1bWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBEb2N1bWVudCB0aGlzIG5vZGUgbGl2ZXMgaW4uICA8YSBocmVmPSIjYTU3Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTU5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Tm9DaGlsZHJlbiIgcmVmPSJhNTkiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJucyB0cnVlIGlmIHRoaXMgbm9kZSBoYXMgbm8gY2hpbGRyZW4uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2MCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRvRG9jdW1lbnQiIHJlZj0iYTYwIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYwIj5Ub0RvY3VtZW50PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb0VsZW1lbnQiIHJlZj0iYTYxIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb0NvbW1lbnQiIHJlZj0iYTYyIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb1Vua25vd24iIHJlZj0iYTYzIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb1RleHQiIHJlZj0iYTY0IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb0RlY2xhcmF0aW9uIiByZWY9ImE2NSIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTY2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9Eb2N1bWVudCIgcmVmPSJhNjYiIGFyZ3M9IigpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VG9Eb2N1bWVudDwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb0VsZW1lbnQiIHJlZj0iYTY3IiBhcmdzPSIoKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5Ub0VsZW1lbnQ8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTY4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9Db21tZW50IiByZWY9ImE2OCIgYXJncz0iKCkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2OSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRvVW5rbm93biIgcmVmPSJhNjkiIGFyZ3M9IigpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRvVW5rbm93bjwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNzAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb1RleHQiIHJlZj0iYTcwIiBhcmdzPSIoKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTcxIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9EZWNsYXJhdGlvbiIgcmVmPSJhNzEiIGFyZ3M9IigpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VG9EZWNsYXJhdGlvbjwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzIiPkNsb25lPC9hPiAoKSBjb25zdCA9MDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlIGFuIGV4YWN0IGR1cGxpY2F0ZSBvZiB0aGlzIG5vZGUgYW5kIHJldHVybiBpdC4gIDxhIGhyZWY9IiNhNzIiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPkZyaWVuZHM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUaVhtbERvY3VtZW50IiByZWY9Im4wIiBhcmdzPSIiIC0tPgorY2xhc3MmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24wIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJuMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRpWG1sRWxlbWVudCIgcmVmPSJuMSIgYXJncz0iIiAtLT4KK2NsYXNzJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMSI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5zdGQ6OmlzdHJlYW0gJmFtcDsmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24yIj5vcGVyYXRvciZndDsmZ3Q7PC9hPiAoc3RkOjppc3RyZWFtICZhbXA7aW4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wO2Jhc2UpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BbiBpbnB1dCBzdHJlYW0gb3BlcmF0b3IsIGZvciBldmVyeSBjbGFzcy4gIDxhIGhyZWY9IiNuMiI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnN0ZDo6b3N0cmVhbSAmYW1wOyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+IChzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wO2Jhc2UpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BbiBvdXRwdXQgc3RyZWFtIG9wZXJhdG9yLCBmb3IgZXZlcnkgY2xhc3MuICA8YSBocmVmPSIjbjMiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJuNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Om9wZXJhdG9yJmx0OyZsdDsiIHJlZj0ibjQiIGFyZ3M9IihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSkiIC0tPgorc3RkOjpzdHJpbmcgJmFtcDsmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPiAoc3RkOjpzdHJpbmcgJmFtcDtvdXQsIGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wO2Jhc2UpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BcHBlbmRzIHRoZSBYTUwgbm9kZSBvciBhdHRyaWJ1dGUgdG8gYSBzdGQ6OnN0cmluZy4gPGJyPjwvdGQ+PC90cj4KKzwvdGFibGU+Cis8aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgorVGhlIHBhcmVudCBjbGFzcyBmb3IgZXZlcnl0aGluZyBpbiB0aGUgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLiAKKzxwPgorKEV4Y2VwdCBmb3IgYXR0cmlidXRlcykuIE5vZGVzIGhhdmUgc2libGluZ3MsIGEgcGFyZW50LCBhbmQgY2hpbGRyZW4uIEEgbm9kZSBjYW4gYmUgaW4gYSBkb2N1bWVudCwgb3Igc3RhbmQgb24gaXRzIG93bi4gVGhlIHR5cGUgb2YgYSBUaVhtbE5vZGUgY2FuIGJlIHF1ZXJpZWQsIGFuZCBpdCBjYW4gYmUgY2FzdCB0byBpdHMgbW9yZSBkZWZpbmVkIHR5cGUuCis8cD4KKzxocj48aDI+TWVtYmVyIEVudW1lcmF0aW9uIERvY3VtZW50YXRpb248L2gyPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0idzciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpOb2RlVHlwZSIgcmVmPSJ3NyIgYXJncz0iIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+ZW51bSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPlRpWG1sTm9kZTo6Tm9kZVR5cGU8L2E+ICAgICAgICAgIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1RoZSB0eXBlcyBvZiBYTUwgbm9kZXMgc3VwcG9ydGVkIGJ5IFRpbnlYbWwuIAorPHA+CisoQWxsIHRoZSB1bnN1cHBvcnRlZCB0eXBlcyBhcmUgcGlja2VkIHVwIGJ5IFVOS05PV04uKSAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxocj48aDI+TWVtYmVyIEZ1bmN0aW9uIERvY3VtZW50YXRpb248L2gyPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTcyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Q2xvbmUiIHJlZj0iYTcyIiBhcmdzPSIoKSBjb25zdCA9MCIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZpcnR1YWwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBUaVhtbE5vZGU6OkNsb25lICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW3B1cmUgdmlydHVhbF08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQ3JlYXRlIGFuIGV4YWN0IGR1cGxpY2F0ZSBvZiB0aGlzIG5vZGUgYW5kIHJldHVybiBpdC4gCis8cD4KK1RoZSBtZW1vcnkgbXVzdCBiZSBkZWxldGVkIGJ5IHRoZSBjYWxsZXIuCis8cD4KK0ltcGxlbWVudGVkIGluIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjgiPlRpWG1sRWxlbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNCI+VGlYbWxDb21tZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IwIj5UaVhtbFRleHQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E5Ij5UaVhtbERlY2xhcmF0aW9uPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E0Ij5UaVhtbFVua25vd248L2E+LCBhbmQgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNiMSI+VGlYbWxEb2N1bWVudDwvYT4uICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTU3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6R2V0RG9jdW1lbnQiIHJlZj0iYTU3IiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiogVGlYbWxOb2RlOjpHZXREb2N1bWVudCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgRG9jdW1lbnQgdGhpcyBub2RlIGxpdmVzIGluLiAKKzxwPgorUmV0dXJucyBudWxsIGlmIG5vdCBpbiBhIGRvY3VtZW50LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okluc2VydEFmdGVyQ2hpbGQiIHJlZj0iYTI5IiBhcmdzPSIoVGlYbWxOb2RlICphZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBUaVhtbE5vZGU6Okluc2VydEFmdGVyQ2hpbGQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5hZnRlclRoaXM8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+YWRkVGhpczwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiAKKzxwPgorQWRkcyBhIGNoaWxkIGFmdGVyIHRoZSBzcGVjaWZpZWQgY2hpbGQuIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgb2JqZWN0IG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJbnNlcnRCZWZvcmVDaGlsZCIgcmVmPSJhMjgiIGFyZ3M9IihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBUaVhtbE5vZGU6Okluc2VydEJlZm9yZUNoaWxkICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+YmVmb3JlVGhpczwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDsmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5hZGRUaGlzPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitBZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuIAorPHA+CitBZGRzIGEgY2hpbGQgYmVmb3JlIHRoZSBzcGVjaWZpZWQgY2hpbGQuIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgb2JqZWN0IG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJbnNlcnRFbmRDaGlsZCIgcmVmPSJhMjYiIGFyZ3M9Iihjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxOb2RlOjpJbnNlcnRFbmRDaGlsZCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDsmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPmFkZFRoaXM8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiAKKzxwPgorQWRkcyBhIGNoaWxkIHBhc3QgdGhlIExhc3RDaGlsZC4gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ldyBvYmplY3Qgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiIgcmVmPSJhMjAiIGFyZ3M9Iihjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIFRpWG1sTm9kZTo6SXRlcmF0ZUNoaWxkcmVuICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5wcmV2aW91czwvZW0+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitBbiBhbHRlcm5hdGUgd2F5IHRvIHdhbGsgdGhlIGNoaWxkcmVuIG9mIGEgbm9kZS4gCis8cD4KK09uZSB3YXkgdG8gaXRlcmF0ZSBvdmVyIG5vZGVzIGlzOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkJCWZvciggY2hpbGQgPSBwYXJlbnQtJmd0O0ZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtJmd0O05leHRTaWJsaW5nKCkgKQorCQk8L3ByZT48L2Rpdj48cD4KK0l0ZXJhdGVDaGlsZHJlbiBkb2VzIHRoZSBzYW1lIHRoaW5nIHdpdGggdGhlIHN5bnRheDogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCQljaGlsZCA9IDA7CisJCQl3aGlsZSggY2hpbGQgPSBwYXJlbnQtJmd0O0l0ZXJhdGVDaGlsZHJlbiggY2hpbGQgKSApCisJCTwvcHJlPjwvZGl2PjxwPgorSXRlcmF0ZUNoaWxkcmVuIHRha2VzIHRoZSBwcmV2aW91cyBjaGlsZCBhcyBpbnB1dCBhbmQgZmluZHMgdGhlIG5leHQgb25lLiBJZiB0aGUgcHJldmlvdXMgY2hpbGQgaXMgbnVsbCwgaXQgcmV0dXJucyB0aGUgZmlyc3QuIEl0ZXJhdGVDaGlsZHJlbiB3aWxsIHJldHVybiBudWxsIHdoZW4gZG9uZS4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpMaW5rRW5kQ2hpbGQiIHJlZj0iYTI3IiBhcmdzPSIoVGlYbWxOb2RlICphZGRUaGlzKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxOb2RlOjpMaW5rRW5kQ2hpbGQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPmFkZFRoaXM8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiAKKzxwPgorQWRkcyBhIGNoaWxkIHBhc3QgdGhlIExhc3RDaGlsZC48cD4KK05PVEU6IHRoZSBub2RlIHRvIGJlIGFkZGVkIGlzIHBhc3NlZCBieSBwb2ludGVyLCBhbmQgd2lsbCBiZSBoZW5jZWZvcnRoIG93bmVkIChhbmQgZGVsZXRlZCkgYnkgdGlueVhtbC4gVGhpcyBtZXRob2QgaXMgZWZmaWNpZW50IGFuZCBhdm9pZHMgYW4gZXh0cmEgY29weSwgYnV0IHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZSBhcyBpdCB1c2VzIGEgZGlmZmVyZW50IG1lbW9yeSBtb2RlbCB0aGFuIHRoZSBvdGhlciBpbnNlcnQgZnVuY3Rpb25zLjxwPgorPGRsIGNvbXBhY3Q+PGR0PjxiPlNlZSBhbHNvOjwvYj48L2R0PjxkZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT48L2RkPjwvZGw+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNDYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpOZXh0U2libGluZ0VsZW1lbnQiIHJlZj0iYTQ2IiBhcmdzPSIoY29uc3QgY2hhciAqKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIFRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuIAorPHA+CitDYWxscyBOZXh0U2libGluZyBhbmQgVG9FbGVtZW50LiBXaWxsIHNraXAgYWxsIG5vbi1FbGVtZW50IG5vZGVzLiBSZXR1cm5zIDAgaWYgdGhlcmUgaXMgbm90IGFub3RoZXIgZWxlbWVudC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNDQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpOZXh0U2libGluZ0VsZW1lbnQiIHJlZj0iYTQ0IiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIFRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4gCis8cD4KK0NhbGxzIE5leHRTaWJsaW5nIGFuZCBUb0VsZW1lbnQuIFdpbGwgc2tpcCBhbGwgbm9uLUVsZW1lbnQgbm9kZXMuIFJldHVybnMgMCBpZiB0aGVyZSBpcyBub3QgYW5vdGhlciBlbGVtZW50LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlJlcGxhY2VDaGlsZCIgcmVmPSJhMzAiIGFyZ3M9IihUaVhtbE5vZGUgKnJlcGxhY2VUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDt3aXRoVGhpcykiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIFRpWG1sTm9kZTo6UmVwbGFjZUNoaWxkICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+cmVwbGFjZVRoaXM8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+d2l0aFRoaXM8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1JlcGxhY2UgYSBjaGlsZCBvZiB0aGlzIG5vZGUuIAorPHA+CitSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpTZXRWYWx1ZSIgcmVmPSJhMyIgYXJncz0iKGNvbnN0IGNoYXIgKl92YWx1ZSkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52b2lkIFRpWG1sTm9kZTo6U2V0VmFsdWUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5fdmFsdWU8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0NoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBub2RlLiAKKzxwPgorRGVmaW5lZCBhczogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCURvY3VtZW50OglmaWxlbmFtZSBvZiB0aGUgeG1sIGZpbGUKKwkJRWxlbWVudDoJbmFtZSBvZiB0aGUgZWxlbWVudAorCQlDb21tZW50Ogl0aGUgY29tbWVudCB0ZXh0CisJCVVua25vd246CXRoZSB0YWcgY29udGVudHMKKwkJVGV4dDoJCXRoZSB0ZXh0IHN0cmluZworCQk8L3ByZT48L2Rpdj4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUeXBlIiByZWY9ImE1NiIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dmlydHVhbCBpbnQgVGlYbWxOb2RlOjpUeXBlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUXVlcnkgdGhlIHR5cGUgKGFzIGFuIGVudW1lcmF0ZWQgdmFsdWUsIGFib3ZlKSBvZiB0aGlzIG5vZGUuIAorPHA+CitUaGUgcG9zc2libGUgdHlwZXMgYXJlOiBET0NVTUVOVCwgRUxFTUVOVCwgQ09NTUVOVCwgVU5LTk9XTiwgVEVYVCwgYW5kIERFQ0xBUkFUSU9OLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VmFsdWUiIHJlZj0iYTEiIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIqIFRpWG1sTm9kZTo6VmFsdWUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitUaGUgbWVhbmluZyBvZiAndmFsdWUnIGNoYW5nZXMgZm9yIHRoZSBzcGVjaWZpYyB0eXBlIG9mIFRpWG1sTm9kZS4gCis8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQlEb2N1bWVudDoJZmlsZW5hbWUgb2YgdGhlIHhtbCBmaWxlCisJCUVsZW1lbnQ6CW5hbWUgb2YgdGhlIGVsZW1lbnQKKwkJQ29tbWVudDoJdGhlIGNvbW1lbnQgdGV4dAorCQlVbmtub3duOgl0aGUgdGFnIGNvbnRlbnRzCisJCVRleHQ6CQl0aGUgdGV4dCBzdHJpbmcKKwkJPC9wcmU+PC9kaXY+PHA+CitUaGUgc3ViY2xhc3NlcyB3aWxsIHdyYXAgdGhpcyBmdW5jdGlvbi4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlZhbHVlU3RyIiByZWY9ImEyIiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBzdGQ6OnN0cmluZyZhbXA7IFRpWG1sTm9kZTo6VmFsdWVTdHIgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitSZXR1cm4gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZSgpPC9hPiBhcyBhIHN0ZDo6c3RyaW5nLiAKKzxwPgorSWYgeW91IG9ubHkgdXNlIFNUTCwgdGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGNhbGxpbmcgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZSgpPC9hPi4gT25seSBhdmFpbGFibGUgaW4gU1RMIG1vZGUuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGhyPjxoMj5GcmllbmRzIEFuZCBSZWxhdGVkIEZ1bmN0aW9uIERvY3VtZW50YXRpb248L2gyPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpvcGVyYXRvciZsdDsmbHQ7IiByZWY9Im4zIiBhcmdzPSIoc3RkOjpvc3RyZWFtICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnN0ZDo6b3N0cmVhbSZhbXA7IG9wZXJhdG9yJmx0OyZsdDsgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+c3RkOjpvc3RyZWFtICZhbXA7Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+b3V0PC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wOyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmJhc2U8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitBbiBvdXRwdXQgc3RyZWFtIG9wZXJhdG9yLCBmb3IgZXZlcnkgY2xhc3MuIAorPHA+CitOb3RlIHRoYXQgdGhpcyBvdXRwdXRzIHdpdGhvdXQgYW55IG5ld2xpbmVzIG9yIGZvcm1hdHRpbmcsIGFzIG9wcG9zZWQgdG8gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5QcmludCgpPC9hPiwgd2hpY2ggaW5jbHVkZXMgdGFicyBhbmQgbmV3IGxpbmVzLjxwPgorVGhlIG9wZXJhdG9yJmx0OyZsdDsgYW5kIG9wZXJhdG9yJmd0OyZndDsgYXJlIG5vdCBjb21wbGV0ZWx5IHN5bW1ldHJpYy4gV3JpdGluZyBhIG5vZGUgdG8gYSBzdHJlYW0gaXMgdmVyeSB3ZWxsIGRlZmluZWQuIFlvdSdsbCBnZXQgYSBuaWNlIHN0cmVhbSBvZiBvdXRwdXQsIHdpdGhvdXQgYW55IGV4dHJhIHdoaXRlc3BhY2Ugb3IgbmV3bGluZXMuPHA+CitCdXQgcmVhZGluZyBpcyBub3QgYXMgd2VsbCBkZWZpbmVkLiAoQXMgaXQgYWx3YXlzIGlzLikgSWYgeW91IGNyZWF0ZSBhIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAoZm9yIGV4YW1wbGUpIGFuZCByZWFkIHRoYXQgZnJvbSBhbiBpbnB1dCBzdHJlYW0sIHRoZSB0ZXh0IG5lZWRzIHRvIGRlZmluZSBhbiBlbGVtZW50IG9yIGp1bmsgd2lsbCByZXN1bHQuIFRoaXMgaXMgdHJ1ZSBvZiBhbGwgaW5wdXQgc3RyZWFtcywgYnV0IGl0J3Mgd29ydGgga2VlcGluZyBpbiBtaW5kLjxwPgorQSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiB3aWxsIHJlYWQgbm9kZXMgdW50aWwgaXQgcmVhZHMgYSByb290IGVsZW1lbnQsIGFuZCBhbGwgdGhlIGNoaWxkcmVuIG9mIHRoYXQgcm9vdCBlbGVtZW50LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4yIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6b3BlcmF0b3ImZ3Q7Jmd0OyIgcmVmPSJuMiIgYXJncz0iKHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnN0ZDo6aXN0cmVhbSZhbXA7IG9wZXJhdG9yJmd0OyZndDsgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+c3RkOjppc3RyZWFtICZhbXA7Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+aW48L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+YmFzZTwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0FuIGlucHV0IHN0cmVhbSBvcGVyYXRvciwgZm9yIGV2ZXJ5IGNsYXNzLiAKKzxwPgorVG9sZXJhbnQgb2YgbmV3bGluZXMgYW5kIGZvcm1hdHRpbmcsIGJ1dCBkb2Vzbid0IGV4cGVjdCB0aGVtLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbE5vZGUucG5nIGIvZG9jcy9jbGFzc1RpWG1sTm9kZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE2NjNjZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbE5vZGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbFRleHQtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sVGV4dC1tZW1iZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U5YmM0ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbFRleHQtbWVtYmVycy5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sVGV4dCBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTYiPkNEQVRBPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IwIj5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZCwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTUiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTciPlNldENEQVRBPC9hPihib29sIF9jZGF0YSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTAiPlRpWG1sVGV4dDwvYT4oY29uc3QgY2hhciAqaW5pdFZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMiI+VGlYbWxUZXh0PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2luaXRWYWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sVGV4dC5odG1sIGIvZG9jcy9jbGFzc1RpWG1sVGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZTNhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxUZXh0Lmh0bWwKQEAgLTAsMCArMSw5MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IFRpWG1sVGV4dCBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbFRleHQgQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbFRleHQiIC0tPjwhLS0gZG94eXRhZzogaW5oZXJpdHM9IlRpWG1sTm9kZSIgLS0+WE1MIHRleHQuICAKKzxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KKzxwPgorPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Cis8cD4KKzxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sVGV4dDoKKzxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxUZXh0LnBuZyIgdXNlbWFwPSIjVGlYbWxUZXh0X21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Cis8bWFwIG5hbWU9IlRpWG1sVGV4dF9tYXAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCIgYWx0PSJUaVhtbE5vZGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsNTYsNzMsODAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCw3MywyNCI+Cis8L21hcD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxUZXh0LW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKzx0cj48dGQ+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTAiPlRpWG1sVGV4dDwvYT4gKGNvbnN0IGNoYXIgKmluaXRWYWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdG9yIGZvciB0ZXh0IGVsZW1lbnQuICA8YSBocmVmPSIjYTAiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OlRpWG1sVGV4dCIgcmVmPSJhMiIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7aW5pdFZhbHVlKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EyIj5UaVhtbFRleHQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2luaXRWYWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdG9yLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OlByaW50IiByZWY9ImE1IiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgIiAtLT4KK3ZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTUiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Xcml0ZSB0aGlzIHRleHQgb2JqZWN0IHRvIGEgRklMRSBzdHJlYW0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sVGV4dDo6Q0RBVEEiIHJlZj0iYTYiIGFyZ3M9IigpIiAtLT4KK2Jvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E2Ij5DREFUQTwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlF1ZXJpZXMgd2hldGhlciB0aGlzIHJlcHJlc2VudHMgdGV4dCB1c2luZyBhIENEQVRBIHNlY3Rpb24uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sVGV4dDo6U2V0Q0RBVEEiIHJlZj0iYTciIGFyZ3M9Iihib29sIF9jZGF0YSkiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTciPlNldENEQVRBPC9hPiAoYm9vbCBfY2RhdGEpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UdXJucyBvbiBvciBvZmYgYSBDREFUQSByZXByZXNlbnRhdGlvbiBvZiB0ZXh0LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlByb3RlY3RlZCBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImIwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sVGV4dDo6Q2xvbmUiIHJlZj0iYjAiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cit2aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMCI+Q2xvbmU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+W2ludGVybmFsIHVzZV0gQ3JlYXRlcyBhIG5ldyBFbGVtZW50IGFuZCByZXR1cm5zIGl0LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPkZyaWVuZHM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxUZXh0OjpUaVhtbEVsZW1lbnQiIHJlZj0ibjAiIGFyZ3M9IiIgLS0+CitjbGFzcyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjbjAiPlRpWG1sRWxlbWVudDwvYT48L3RkPjwvdHI+CisKKzwvdGFibGU+Cis8aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgorWE1MIHRleHQuIAorPHA+CitBIHRleHQgbm9kZSBjYW4gaGF2ZSAyIHdheXMgdG8gb3V0cHV0IHRoZSBuZXh0LiAibm9ybWFsIiBvdXRwdXQgYW5kIENEQVRBLiBJdCB3aWxsIGRlZmF1bHQgdG8gdGhlIG1vZGUgaXQgd2FzIHBhcnNlZCBmcm9tIHRoZSBYTUwgZmlsZSBhbmQgeW91IGdlbmVyYWxseSB3YW50IHRvIGxlYXZlIGl0IGFsb25lLCBidXQgeW91IGNhbiBjaGFuZ2UgdGhlIG91dHB1dCBtb2RlIHdpdGggPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E3Ij5TZXRDREFUQSgpPC9hPiBhbmQgcXVlcnkgaXQgd2l0aCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTYiPkNEQVRBKCk8L2E+LgorPHA+Cis8aHI+PGgyPkNvbnN0cnVjdG9yICZhbXA7IERlc3RydWN0b3IgRG9jdW1lbnRhdGlvbjwvaDI+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OlRpWG1sVGV4dCIgcmVmPSJhMCIgYXJncz0iKGNvbnN0IGNoYXIgKmluaXRWYWx1ZSkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5UaVhtbFRleHQ6OlRpWG1sVGV4dCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPmluaXRWYWx1ZTwvZW0+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQ29uc3RydWN0b3IgZm9yIHRleHQgZWxlbWVudC4gCis8cD4KK0J5IGRlZmF1bHQsIGl0IGlzIHRyZWF0ZWQgYXMgbm9ybWFsLCBlbmNvZGVkIHRleHQuIElmIHlvdSB3YW50IGl0IGJlIG91dHB1dCBhcyBhIENEQVRBIHRleHQgZWxlbWVudCwgc2V0IHRoZSBwYXJhbWV0ZXIgX2NkYXRhIHRvICd0cnVlJyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbFRleHQucG5nIGIvZG9jcy9jbGFzc1RpWG1sVGV4dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzllNzFkNAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbFRleHQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbFVua25vd24tbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi1tZW1iZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ5NGEwNAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbFVua25vd24tbWVtYmVycy5odG1sCkBAIC0wLDAgKzEsODAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sVW5rbm93biBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTQiPkNsb25lPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTUiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi5odG1sIGIvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NjYxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxVbmtub3duLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IFRpWG1sVW5rbm93biBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbFVua25vd24gQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbFVua25vd24iIC0tPjwhLS0gZG94eXRhZzogaW5oZXJpdHM9IlRpWG1sTm9kZSIgLS0+QW55IHRhZyB0aGF0IHRpbnlYbWwgZG9lc24ndCByZWNvZ25pemUgaXMgc2F2ZWQgYXMgYW4gdW5rbm93bi4gIAorPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgorPHA+Cis8Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KKzxwPgorPHA+SW5oZXJpdGFuY2UgZGlhZ3JhbSBmb3IgVGlYbWxVbmtub3duOgorPHA+PGNlbnRlcj48aW1nIHNyYz0iY2xhc3NUaVhtbFVua25vd24ucG5nIiB1c2VtYXA9IiNUaVhtbFVua25vd25fbWFwIiBib3JkZXI9IjAiIGFsdD0iIj48L2NlbnRlcj4KKzxtYXAgbmFtZT0iVGlYbWxVbmtub3duX21hcCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIiBhbHQ9IlRpWG1sTm9kZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCw1Niw5NCw4MCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIiBhbHQ9IlRpWG1sQmFzZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDk0LDI0Ij4KKzwvbWFwPgorPGEgaHJlZj0iY2xhc3NUaVhtbFVua25vd24tbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxVbmtub3duOjpDbG9uZSIgcmVmPSJhNCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK3ZpcnR1YWwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E0Ij5DbG9uZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DcmVhdGVzIGEgY29weSBvZiB0aGlzIFVua25vd24gYW5kIHJldHVybnMgaXQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sVW5rbm93bjo6UHJpbnQiIHJlZj0iYTUiIGFyZ3M9IihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCAiIC0tPgordmlydHVhbCB2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNSI+UHJpbnQ8L2E+IChGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlByaW50IHRoaXMgVW5rbm93biB0byBhIEZJTEUgc3RyZWFtLiA8YnI+PC90ZD48L3RyPgorPC90YWJsZT4KKzxocj48YSBuYW1lPSJfZGV0YWlscyI+PC9hPjxoMj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+CitBbnkgdGFnIHRoYXQgdGlueVhtbCBkb2Vzbid0IHJlY29nbml6ZSBpcyBzYXZlZCBhcyBhbiB1bmtub3duLiAKKzxwPgorSXQgaXMgYSB0YWcgb2YgdGV4dCwgYnV0IHNob3VsZCBub3QgYmUgbW9kaWZpZWQuIEl0IHdpbGwgYmUgd3JpdHRlbiBiYWNrIHRvIHRoZSBYTUwsIHVuY2hhbmdlZCwgd2hlbiB0aGUgZmlsZSBpcyBzYXZlZC48cD4KK0RURCB0YWdzIGdldCB0aHJvd24gaW50byBUaVhtbFVua25vd25zLgorPHA+Cis8aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxVbmtub3duLnBuZyBiL2RvY3MvY2xhc3NUaVhtbFVua25vd24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOGJmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxVbmtub3duLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2RveHlnZW4uY3NzIGIvZG9jcy9kb3h5Z2VuLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWNhZTllCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9kb3h5Z2VuLmNzcwpAQCAtMCwwICsxLDMwOSBAQAorQk9EWSxIMSxIMixIMyxINCxINSxINixQLENFTlRFUixURCxUSCxVTCxETCxESVYgeworCWZvbnQtZmFtaWx5OiBHZW5ldmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Cit9CitCT0RZLFREIHsKKyAgICAgICBmb250LXNpemU6IDkwJTsKK30KK0gxIHsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgICAgZm9udC1zaXplOiAxNjAlOworfQorSDIgeworICAgICAgIGZvbnQtc2l6ZTogMTIwJTsKK30KK0gzIHsKKyAgICAgICBmb250LXNpemU6IDEwMCU7Cit9CitDQVBUSU9OIHsgZm9udC13ZWlnaHQ6IGJvbGQgfQorRElWLnFpbmRleCB7CisJd2lkdGg6IDEwMCU7CisJYmFja2dyb3VuZC1jb2xvcjogI2VlZWVmZjsKKwlib3JkZXI6IDFweCBzb2xpZCAjYjBiMGIwOworCXRleHQtYWxpZ246IGNlbnRlcjsKKwltYXJnaW46IDJweDsKKwlwYWRkaW5nOiAycHg7CisJbGluZS1oZWlnaHQ6IDE0MCU7Cit9CitESVYubmF2IHsKKwl3aWR0aDogMTAwJTsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWZmOworCWJvcmRlcjogMXB4IHNvbGlkICNiMGIwYjA7CisJdGV4dC1hbGlnbjogY2VudGVyOworCW1hcmdpbjogMnB4OworCXBhZGRpbmc6IDJweDsKKwlsaW5lLWhlaWdodDogMTQwJTsKK30KK0RJVi5uYXZ0YWIgeworICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7CisgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2IwYjBiMDsKKyAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4OworICAgICAgIHBhZGRpbmc6IDJweDsKK30KK1RELm5hdnRhYiB7CisgICAgICAgZm9udC1zaXplOiA3MCU7Cit9CitBLnFpbmRleCB7CisgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgICAgIGNvbG9yOiAjMUE0MTlEOworfQorQS5xaW5kZXg6dmlzaXRlZCB7CisgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgICAgIGNvbG9yOiAjMUE0MTlECit9CitBLnFpbmRleDpob3ZlciB7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWJhY2tncm91bmQtY29sb3I6ICNkZGRkZmY7Cit9CitBLnFpbmRleEhMIHsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJZm9udC13ZWlnaHQ6IGJvbGQ7CisJYmFja2dyb3VuZC1jb2xvcjogIzY2NjZjYzsKKwljb2xvcjogI2ZmZmZmZjsKKwlib3JkZXI6IDFweCBkb3VibGUgIzkyOTVDMjsKK30KK0EucWluZGV4SEw6aG92ZXIgeworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NmNjOworCWNvbG9yOiAjZmZmZmZmOworfQorQS5xaW5kZXhITDp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NmNjOyBjb2xvcjogI2ZmZmZmZiB9CitBLmVsIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZCB9CitBLmVsUmVmIHsgZm9udC13ZWlnaHQ6IGJvbGQgfQorQS5jb2RlOmxpbmsgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjMDAwMEZGfQorQS5jb2RlOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjMDAwMEZGfQorQS5jb2RlUmVmOmxpbmsgeyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzAwMDBGRn0KK0EuY29kZVJlZjp2aXNpdGVkIHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICMwMDAwRkZ9CitBOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmZmIH0KK0RMLmVsIHsgbWFyZ2luLWxlZnQ6IC0xY20gfQorLmZyYWdtZW50IHsKKyAgICAgICBmb250LWZhbWlseTogRml4ZWQsIG1vbm9zcGFjZTsKKyAgICAgICBmb250LXNpemU6IDk1JTsKK30KK1BSRS5mcmFnbWVudCB7CisJYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQzsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OworCW1hcmdpbi10b3A6IDRweDsKKwltYXJnaW4tYm90dG9tOiA0cHg7CisJbWFyZ2luLWxlZnQ6IDJweDsKKwltYXJnaW4tcmlnaHQ6IDhweDsKKwlwYWRkaW5nLWxlZnQ6IDZweDsKKwlwYWRkaW5nLXJpZ2h0OiA2cHg7CisJcGFkZGluZy10b3A6IDRweDsKKwlwYWRkaW5nLWJvdHRvbTogNHB4OworfQorRElWLmFoIHsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI2ZmZmZmZjsgbWFyZ2luLWJvdHRvbTogM3B4OyBtYXJnaW4tdG9wOiAzcHggfQorVEQubWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEZCOyBmb250LXdlaWdodDogYm9sZDsgfQorVEQubWRQcmVmaXggeworICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNEY0RkI7CisgICAgICAgY29sb3I6ICM2MDYwNjA7CisJZm9udC1zaXplOiA4MCU7Cit9CitURC5tZG5hbWUxIHsgYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGQjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjNjAyMDIwOyB9CitURC5tZG5hbWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEZCOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICM2MDIwMjA7IHdpZHRoOiA2MDBweDsgfQorRElWLmdyb3VwSGVhZGVyIHsKKyAgICAgICBtYXJnaW4tbGVmdDogMTZweDsKKyAgICAgICBtYXJnaW4tdG9wOiAxMnB4OworICAgICAgIG1hcmdpbi1ib3R0b206IDZweDsKKyAgICAgICBmb250LXdlaWdodDogYm9sZDsKK30KK0RJVi5ncm91cFRleHQgeyBtYXJnaW4tbGVmdDogMTZweDsgZm9udC1zdHlsZTogaXRhbGljOyBmb250LXNpemU6IDkwJSB9CitCT0RZIHsKKwliYWNrZ3JvdW5kOiB3aGl0ZTsKKwljb2xvcjogYmxhY2s7CisJbWFyZ2luLXJpZ2h0OiAyMHB4OworCW1hcmdpbi1sZWZ0OiAyMHB4OworfQorVEQuaW5kZXhrZXkgeworCWJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7CisJZm9udC13ZWlnaHQ6IGJvbGQ7CisJcGFkZGluZy1yaWdodCAgOiAxMHB4OworCXBhZGRpbmctdG9wICAgIDogMnB4OworCXBhZGRpbmctbGVmdCAgIDogMTBweDsKKwlwYWRkaW5nLWJvdHRvbSA6IDJweDsKKwltYXJnaW4tbGVmdCAgICA6IDBweDsKKwltYXJnaW4tcmlnaHQgICA6IDBweDsKKwltYXJnaW4tdG9wICAgICA6IDJweDsKKwltYXJnaW4tYm90dG9tICA6IDJweDsKKwlib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOworfQorVEQuaW5kZXh2YWx1ZSB7CisJYmFja2dyb3VuZC1jb2xvcjogI2VlZWVmZjsKKwlmb250LXN0eWxlOiBpdGFsaWM7CisJcGFkZGluZy1yaWdodCAgOiAxMHB4OworCXBhZGRpbmctdG9wICAgIDogMnB4OworCXBhZGRpbmctbGVmdCAgIDogMTBweDsKKwlwYWRkaW5nLWJvdHRvbSA6IDJweDsKKwltYXJnaW4tbGVmdCAgICA6IDBweDsKKwltYXJnaW4tcmlnaHQgICA6IDBweDsKKwltYXJnaW4tdG9wICAgICA6IDJweDsKKwltYXJnaW4tYm90dG9tICA6IDJweDsKKwlib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOworfQorVFIubWVtbGlzdCB7CisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwOyAKK30KK1AuZm9ybXVsYURzcCB7IHRleHQtYWxpZ246IGNlbnRlcjsgfQorSU1HLmZvcm11bGFEc3AgeyB9CitJTUcuZm9ybXVsYUlubCB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KK1NQQU4ua2V5d29yZCAgICAgICB7IGNvbG9yOiAjMDA4MDAwIH0KK1NQQU4ua2V5d29yZHR5cGUgICB7IGNvbG9yOiAjNjA0MDIwIH0KK1NQQU4ua2V5d29yZGZsb3cgICB7IGNvbG9yOiAjZTA4MDAwIH0KK1NQQU4uY29tbWVudCAgICAgICB7IGNvbG9yOiAjODAwMDAwIH0KK1NQQU4ucHJlcHJvY2Vzc29yICB7IGNvbG9yOiAjODA2MDIwIH0KK1NQQU4uc3RyaW5nbGl0ZXJhbCB7IGNvbG9yOiAjMDAyMDgwIH0KK1NQQU4uY2hhcmxpdGVyYWwgICB7IGNvbG9yOiAjMDA4MDgwIH0KKy5tZFRhYmxlIHsKKwlib3JkZXI6IDFweCBzb2xpZCAjODY4Njg2OworCWJhY2tncm91bmQtY29sb3I6ICNGNEY0RkI7Cit9CisubWRSb3cgeworCXBhZGRpbmc6IDhweCAxMHB4OworfQorLm1kZXNjTGVmdCB7CisgICAgICAgcGFkZGluZzogMHB4IDhweCA0cHggOHB4OworCWZvbnQtc2l6ZTogODAlOworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOworCWJvcmRlci10b3A6IDFweCBub25lICNFMEUwRTA7CisJYm9yZGVyLXJpZ2h0OiAxcHggbm9uZSAjRTBFMEUwOworCWJvcmRlci1ib3R0b206IDFweCBub25lICNFMEUwRTA7CisJYm9yZGVyLWxlZnQ6IDFweCBub25lICNFMEUwRTA7CisJbWFyZ2luOiAwcHg7Cit9CisubWRlc2NSaWdodCB7CisgICAgICAgcGFkZGluZzogMHB4IDhweCA0cHggOHB4OworCWZvbnQtc2l6ZTogODAlOworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOworCWJvcmRlci10b3A6IDFweCBub25lICNFMEUwRTA7CisJYm9yZGVyLXJpZ2h0OiAxcHggbm9uZSAjRTBFMEUwOworCWJvcmRlci1ib3R0b206IDFweCBub25lICNFMEUwRTA7CisJYm9yZGVyLWxlZnQ6IDFweCBub25lICNFMEUwRTA7CisJbWFyZ2luOiAwcHg7Cit9CisubWVtSXRlbUxlZnQgeworCXBhZGRpbmc6IDFweCAwcHggMHB4IDhweDsKKwltYXJnaW46IDRweDsKKwlib3JkZXItdG9wLXdpZHRoOiAxcHg7CisJYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CisJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OworCWJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7CisJYm9yZGVyLXRvcC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItcmlnaHQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWJvdHRvbS1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItbGVmdC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsKKwlib3JkZXItcmlnaHQtc3R5bGU6IG5vbmU7CisJYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKKwlib3JkZXItbGVmdC1zdHlsZTogbm9uZTsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOworCWZvbnQtc2l6ZTogODAlOworfQorLm1lbUl0ZW1SaWdodCB7CisJcGFkZGluZzogMXB4IDhweCAwcHggOHB4OworCW1hcmdpbjogNHB4OworCWJvcmRlci10b3Atd2lkdGg6IDFweDsKKwlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKKwlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7CisJYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKKwlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci10b3Atc3R5bGU6IHNvbGlkOworCWJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKKwlib3JkZXItYm90dG9tLXN0eWxlOiBub25lOworCWJvcmRlci1sZWZ0LXN0eWxlOiBub25lOworCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CisJZm9udC1zaXplOiA4MCU7Cit9CisubWVtVGVtcGxJdGVtTGVmdCB7CisJcGFkZGluZzogMXB4IDBweCAwcHggOHB4OworCW1hcmdpbjogNHB4OworCWJvcmRlci10b3Atd2lkdGg6IDFweDsKKwlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKKwlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7CisJYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKKwlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci10b3Atc3R5bGU6IG5vbmU7CisJYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOworCWJvcmRlci1ib3R0b20tc3R5bGU6IG5vbmU7CisJYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7CisJYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKKwlmb250LXNpemU6IDgwJTsKK30KKy5tZW1UZW1wbEl0ZW1SaWdodCB7CisJcGFkZGluZzogMXB4IDhweCAwcHggOHB4OworCW1hcmdpbjogNHB4OworCWJvcmRlci10b3Atd2lkdGg6IDFweDsKKwlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKKwlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7CisJYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKKwlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci10b3Atc3R5bGU6IG5vbmU7CisJYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOworCWJvcmRlci1ib3R0b20tc3R5bGU6IG5vbmU7CisJYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7CisJYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKKwlmb250LXNpemU6IDgwJTsKK30KKy5tZW1UZW1wbFBhcmFtcyB7CisJcGFkZGluZzogMXB4IDBweCAwcHggOHB4OworCW1hcmdpbjogNHB4OworCWJvcmRlci10b3Atd2lkdGg6IDFweDsKKwlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKKwlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7CisJYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKKwlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci10b3Atc3R5bGU6IHNvbGlkOworCWJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKKwlib3JkZXItYm90dG9tLXN0eWxlOiBub25lOworCWJvcmRlci1sZWZ0LXN0eWxlOiBub25lOworICAgICAgIGNvbG9yOiAjNjA2MDYwOworCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CisJZm9udC1zaXplOiA4MCU7Cit9Cisuc2VhcmNoICAgICB7IGNvbG9yOiAjMDAzMzk5OworICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKK30KK0ZPUk0uc2VhcmNoIHsKKyAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OworICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwcHg7Cit9CitJTlBVVC5zZWFyY2ggeyBmb250LXNpemU6IDc1JTsKKyAgICAgICAgICAgICAgIGNvbG9yOiAjMDAwMDgwOworICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7Cit9CitURC50aW55ICAgICAgeyBmb250LXNpemU6IDc1JTsKK30KK2EgeworCWNvbG9yOiAjMjUyRTc4OworfQorYTp2aXNpdGVkIHsKKwljb2xvcjogIzNEMjE4NTsKK30KKy5kaXJ0YWIgeyBwYWRkaW5nOiA0cHg7CisgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKKyAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYjBiMGIwOworfQorVEguZGlydGFiIHsgYmFja2dyb3VuZDogI2VlZWVmZjsKKyAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorSFIgeyBoZWlnaHQ6IDFweDsKKyAgICAgYm9yZGVyOiBub25lOworICAgICBib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7Cit9CmRpZmYgLS1naXQgYS9kb2NzL2RveHlnZW4ucG5nIGIvZG9jcy9kb3h5Z2VuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGEyNzRiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9kb3h5Z2VuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZpbGVzLmh0bWwgYi9kb2NzL2ZpbGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0OGExZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZmlsZXMuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogRmlsZSBJbmRleDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlueVhtbCBGaWxlIExpc3Q8L2gxPkhlcmUgaXMgYSBsaXN0IG9mIGFsbCBkb2N1bWVudGVkIGZpbGVzIHdpdGggYnJpZWYgZGVzY3JpcHRpb25zOjx0YWJsZT4KKyAgPHRyPjx0ZCBjbGFzcz0iaW5kZXhrZXkiPjxiPnRpbnlzdHIuaDwvYj4gPGEgaHJlZj0idGlueXN0cl84aC1zb3VyY2UuaHRtbCI+W2NvZGVdPC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj48L3RkPjwvdHI+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48Yj50aW55eG1sLmg8L2I+IDxhIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPltjb2RlXTwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+PC90ZD48L3RyPgorPC90YWJsZT4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2Z1bmN0aW9ucy5odG1sIGIvZG9jcy9mdW5jdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mjc0MWYwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9mdW5jdGlvbnMuaHRtbApAQCAtMCwwICsxLDEzOCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IENsYXNzIE1lbWJlcnM8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5BbGw8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX2Z1bmMuaHRtbCI+RnVuY3Rpb25zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc192YXJzLmh0bWwiPlZhcmlhYmxlczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfZW51bS5odG1sIj5FbnVtZXJhdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3JlbGEuaHRtbCI+UmVsYXRlZCZuYnNwO0Z1bmN0aW9uczwvYT48L2Rpdj4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2EiPmE8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2MiPmM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2QiPmQ8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2UiPmU8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2YiPmY8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2ciPmc8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2kiPmk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2wiPmw8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X24iPm48L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X28iPm88L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3AiPnA8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3EiPnE8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3IiPnI8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3MiPnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3QiPnQ8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3UiPnU8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3YiPnY8L2E+PC9kaXY+CisKKzxwPgorSGVyZSBpcyBhIGxpc3Qgb2YgYWxsIGRvY3VtZW50ZWQgY2xhc3MgbWVtYmVycyB3aXRoIGxpbmtzIHRvIHRoZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBlYWNoIG1lbWJlcjoKKzxwPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2EiPi0gYSAtPC9hPjwvaDM+PHVsPgorPGxpPkF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNyI+VGlYbWxFbGVtZW50PC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfYyI+LSBjIC08L2E+PC9oMz48dWw+Cis8bGk+Q0RBVEEoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTYiPlRpWG1sVGV4dDwvYT48bGk+Q2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOCI+VGlYbWxIYW5kbGU8L2E+PGxpPkNoaWxkRWxlbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExMCI+VGlYbWxIYW5kbGU8L2E+PGxpPkNsZWFyKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5UaVhtbE5vZGU8L2E+PGxpPkNsZWFyRXJyb3IoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMiI+VGlYbWxEb2N1bWVudDwvYT48bGk+Q2xvbmUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2IxIj5UaVhtbERvY3VtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E0Ij5UaVhtbFVua25vd248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E5Ij5UaVhtbERlY2xhcmF0aW9uPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IwIj5UaVhtbFRleHQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTQiPlRpWG1sQ29tbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjgiPlRpWG1sRWxlbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzIiPlRpWG1sTm9kZTwvYT48bGk+Q29sdW1uKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5UaVhtbEJhc2U8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9kIj4tIGQgLTwvYT48L2gzPjx1bD4KKzxsaT5Eb3VibGVWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E2Ij5UaVhtbEF0dHJpYnV0ZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2UiPi0gZSAtPC9hPjwvaDM+PHVsPgorPGxpPkVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTYiPlRpWG1sSGFuZGxlPC9hPjxsaT5FbmNvZGluZygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTciPlRpWG1sRGVjbGFyYXRpb248L2E+PGxpPkVycm9yKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTUiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yQ29sKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yRGVzYygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvcklkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTciPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yUm93KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPlRpWG1sRG9jdW1lbnQ8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9mIj4tIGYgLTwvYT48L2gzPjx1bD4KKzxsaT5GaXJzdEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjMiPlRpWG1sRWxlbWVudDwvYT48bGk+Rmlyc3RDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E0Ij5UaVhtbEhhbmRsZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPlRpWG1sTm9kZTwvYT48bGk+Rmlyc3RDaGlsZEVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNiI+VGlYbWxIYW5kbGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5UaVhtbE5vZGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9nIj4tIGcgLTwvYT48L2gzPjx1bD4KKzxsaT5HZXREb2N1bWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPlRpWG1sTm9kZTwvYT48bGk+R2V0VGV4dCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPlRpWG1sRWxlbWVudDwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2kiPi0gaSAtPC9hPjwvaDM+PHVsPgorPGxpPkluc2VydEFmdGVyQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5UaVhtbE5vZGU8L2E+PGxpPkluc2VydEJlZm9yZUNoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+VGlYbWxOb2RlPC9hPjxsaT5JbnNlcnRFbmRDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPlRpWG1sTm9kZTwvYT48bGk+SW50VmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNSI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPklzV2hpdGVTcGFjZUNvbmRlbnNlZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+VGlYbWxCYXNlPC9hPjxsaT5JdGVyYXRlQ2hpbGRyZW4oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5UaVhtbE5vZGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9sIj4tIGwgLTwvYT48L2gzPjx1bD4KKzxsaT5MYXN0QXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+VGlYbWxFbGVtZW50PC9hPjxsaT5MYXN0Q2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5UaVhtbE5vZGU8L2E+PGxpPkxpbmtFbmRDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPlRpWG1sTm9kZTwvYT48bGk+TG9hZEZpbGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMCI+VGlYbWxEb2N1bWVudDwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X24iPi0gbiAtPC9hPjwvaDM+PHVsPgorPGxpPk5hbWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMyI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPk5leHQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTUiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5OZXh0U2libGluZygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPlRpWG1sTm9kZTwvYT48bGk+TmV4dFNpYmxpbmdFbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+VGlYbWxOb2RlPC9hPjxsaT5Ob0NoaWxkcmVuKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1OSI+VGlYbWxOb2RlPC9hPjxsaT5Ob2RlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE1Ij5UaVhtbEhhbmRsZTwvYT48bGk+Tm9kZVR5cGUKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5UaVhtbE5vZGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9vIj4tIG8gLTwvYT48L2gzPjx1bD4KKzxsaT5vcGVyYXRvciZsdDsmbHQ7Cis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuNCI+VGlYbWxOb2RlPC9hPjxsaT5vcGVyYXRvciZndDsmZ3Q7Cis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+VGlYbWxOb2RlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfcCI+LSBwIC08L2E+PC9oMz48dWw+Cis8bGk+UGFyZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5UaVhtbE5vZGU8L2E+PGxpPlBhcnNlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTIiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlByZXZpb3VzKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE3Ij5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+UHJldmlvdXNTaWJsaW5nKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+VGlYbWxOb2RlPC9hPjxsaT5QcmludCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTI0Ij5UaVhtbERvY3VtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E1Ij5UaVhtbFVua25vd248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNSI+VGlYbWxUZXh0PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E1Ij5UaVhtbENvbW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI5Ij5UaVhtbEVsZW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMjMiPlRpWG1sQXR0cmlidXRlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5UaVhtbEJhc2U8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9xIj4tIHEgLTwvYT48L2gzPjx1bD4KKzxsaT5RdWVyeURvdWJsZUF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeURvdWJsZVZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTgiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5RdWVyeUZsb2F0QXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMCI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeUludEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeUludFZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTciPlRpWG1sQXR0cmlidXRlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfciI+LSByIC08L2E+PC9oMz48dWw+Cis8bGk+UmVtb3ZlQXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMiI+VGlYbWxFbGVtZW50PC9hPjxsaT5SZW1vdmVDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlRpWG1sTm9kZTwvYT48bGk+UmVwbGFjZUNoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMCI+VGlYbWxOb2RlPC9hPjxsaT5Sb290RWxlbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEzIj5UaVhtbERvY3VtZW50PC9hPjxsaT5Sb3coKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlRpWG1sQmFzZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3MiPi0gcyAtPC9hPjwvaDM+PHVsPgorPGxpPlNhdmVGaWxlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTEiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlNldEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTkiPlRpWG1sRWxlbWVudDwvYT48bGk+U2V0Q0RBVEEoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTciPlRpWG1sVGV4dDwvYT48bGk+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5UaVhtbEJhc2U8L2E+PGxpPlNldERvdWJsZUF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjAiPlRpWG1sRWxlbWVudDwvYT48bGk+U2V0RG91YmxlVmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTIiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5TZXRJbnRWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMSI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlNldE5hbWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTMiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5TZXRUYWJTaXplKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlNldFZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE0Ij5UaVhtbEF0dHJpYnV0ZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNCI+VGlYbWxOb2RlPC9hPjxsaT5TdGFuZGFsb25lKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3QiPi0gdCAtPC9hPjwvaDM+PHVsPgorPGxpPlRleHQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTciPlRpWG1sSGFuZGxlPC9hPjxsaT5UaVhtbEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+VGlYbWxDb21tZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj5UaVhtbENvbW1lbnQ8L2E+PGxpPlRpWG1sRGVjbGFyYXRpb24oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EyIj5UaVhtbERlY2xhcmF0aW9uPC9hPjxsaT5UaVhtbERvY3VtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMiI+VGlYbWxEb2N1bWVudDwvYT48bGk+VGlYbWxFbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPlRpWG1sSGFuZGxlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEiPlRpWG1sSGFuZGxlPC9hPjxsaT5UaVhtbFRleHQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTIiPlRpWG1sVGV4dDwvYT48bGk+VG9Db21tZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VGlYbWxOb2RlPC9hPjxsaT5Ub0RlY2xhcmF0aW9uKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VGlYbWxOb2RlPC9hPjxsaT5Ub0RvY3VtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VGlYbWxOb2RlPC9hPjxsaT5Ub0VsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5UaVhtbE5vZGU8L2E+PGxpPlRvVGV4dCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPlRpWG1sTm9kZTwvYT48bGk+VG9Vbmtub3duKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VGlYbWxOb2RlPC9hPjxsaT5UeXBlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VGlYbWxOb2RlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfdSI+LSB1IC08L2E+PC9oMz48dWw+Cis8bGk+VW5rbm93bigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExOCI+VGlYbWxIYW5kbGU8L2E+PGxpPnVzZXJEYXRhCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+VGlYbWxCYXNlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfdiI+LSB2IC08L2E+PC9oMz48dWw+Cis8bGk+VmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNCI+VGlYbWxBdHRyaWJ1dGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlRpWG1sTm9kZTwvYT48bGk+VmFsdWVTdHIoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPlRpWG1sTm9kZTwvYT48bGk+VmVyc2lvbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTYiPlRpWG1sRGVjbGFyYXRpb248L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2Z1bmN0aW9uc19lbnVtLmh0bWwgYi9kb2NzL2Z1bmN0aW9uc19lbnVtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVlZTkzOQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZnVuY3Rpb25zX2VudW0uaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogQ2xhc3MgTWVtYmVycyAtIEVudW1lcmF0aW9uczwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5BbGw8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX2Z1bmMuaHRtbCI+RnVuY3Rpb25zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc192YXJzLmh0bWwiPlZhcmlhYmxlczwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9uc19lbnVtLmh0bWwiPkVudW1lcmF0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfcmVsYS5odG1sIj5SZWxhdGVkJm5ic3A7RnVuY3Rpb25zPC9hPjwvZGl2PgorCis8cD4KKzx1bD4KKzxsaT5Ob2RlVHlwZQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPlRpWG1sTm9kZTwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvZnVuY3Rpb25zX2Z1bmMuaHRtbCBiL2RvY3MvZnVuY3Rpb25zX2Z1bmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTdmYjBkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9mdW5jdGlvbnNfZnVuYy5odG1sCkBAIC0wLDAgKzEsMTMyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogQ2xhc3MgTWVtYmVycyAtIEZ1bmN0aW9uczwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5BbGw8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnNfZnVuYy5odG1sIj5GdW5jdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3ZhcnMuaHRtbCI+VmFyaWFibGVzPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19lbnVtLmh0bWwiPkVudW1lcmF0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfcmVsYS5odG1sIj5SZWxhdGVkJm5ic3A7RnVuY3Rpb25zPC9hPjwvZGl2PgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfYSI+YTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfYyI+YzwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfZCI+ZDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfZSI+ZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfZiI+ZjwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfZyI+ZzwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfaSI+aTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfbCI+bDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfbiI+bjwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfcCI+cDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfcSI+cTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfciI+cjwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfcyI+czwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfdCI+dDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfdSI+dTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSIjaW5kZXhfdiI+djwvYT48L2Rpdj4KKworPHA+CisKKzxwPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2EiPi0gYSAtPC9hPjwvaDM+PHVsPgorPGxpPkF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNyI+VGlYbWxFbGVtZW50PC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfYyI+LSBjIC08L2E+PC9oMz48dWw+Cis8bGk+Q0RBVEEoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTYiPlRpWG1sVGV4dDwvYT48bGk+Q2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOCI+VGlYbWxIYW5kbGU8L2E+PGxpPkNoaWxkRWxlbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExMCI+VGlYbWxIYW5kbGU8L2E+PGxpPkNsZWFyKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5UaVhtbE5vZGU8L2E+PGxpPkNsZWFyRXJyb3IoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMiI+VGlYbWxEb2N1bWVudDwvYT48bGk+Q2xvbmUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2IxIj5UaVhtbERvY3VtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E0Ij5UaVhtbFVua25vd248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E5Ij5UaVhtbERlY2xhcmF0aW9uPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IwIj5UaVhtbFRleHQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTQiPlRpWG1sQ29tbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjgiPlRpWG1sRWxlbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzIiPlRpWG1sTm9kZTwvYT48bGk+Q29sdW1uKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5UaVhtbEJhc2U8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9kIj4tIGQgLTwvYT48L2gzPjx1bD4KKzxsaT5Eb3VibGVWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E2Ij5UaVhtbEF0dHJpYnV0ZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2UiPi0gZSAtPC9hPjwvaDM+PHVsPgorPGxpPkVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTYiPlRpWG1sSGFuZGxlPC9hPjxsaT5FbmNvZGluZygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTciPlRpWG1sRGVjbGFyYXRpb248L2E+PGxpPkVycm9yKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTUiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yQ29sKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yRGVzYygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvcklkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTciPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yUm93KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPlRpWG1sRG9jdW1lbnQ8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9mIj4tIGYgLTwvYT48L2gzPjx1bD4KKzxsaT5GaXJzdEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjMiPlRpWG1sRWxlbWVudDwvYT48bGk+Rmlyc3RDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E0Ij5UaVhtbEhhbmRsZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPlRpWG1sTm9kZTwvYT48bGk+Rmlyc3RDaGlsZEVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNiI+VGlYbWxIYW5kbGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5UaVhtbE5vZGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9nIj4tIGcgLTwvYT48L2gzPjx1bD4KKzxsaT5HZXREb2N1bWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPlRpWG1sTm9kZTwvYT48bGk+R2V0VGV4dCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPlRpWG1sRWxlbWVudDwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2kiPi0gaSAtPC9hPjwvaDM+PHVsPgorPGxpPkluc2VydEFmdGVyQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5UaVhtbE5vZGU8L2E+PGxpPkluc2VydEJlZm9yZUNoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+VGlYbWxOb2RlPC9hPjxsaT5JbnNlcnRFbmRDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPlRpWG1sTm9kZTwvYT48bGk+SW50VmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNSI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPklzV2hpdGVTcGFjZUNvbmRlbnNlZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+VGlYbWxCYXNlPC9hPjxsaT5JdGVyYXRlQ2hpbGRyZW4oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5UaVhtbE5vZGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9sIj4tIGwgLTwvYT48L2gzPjx1bD4KKzxsaT5MYXN0QXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+VGlYbWxFbGVtZW50PC9hPjxsaT5MYXN0Q2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5UaVhtbE5vZGU8L2E+PGxpPkxpbmtFbmRDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPlRpWG1sTm9kZTwvYT48bGk+TG9hZEZpbGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMCI+VGlYbWxEb2N1bWVudDwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X24iPi0gbiAtPC9hPjwvaDM+PHVsPgorPGxpPk5hbWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMyI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPk5leHQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTUiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5OZXh0U2libGluZygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPlRpWG1sTm9kZTwvYT48bGk+TmV4dFNpYmxpbmdFbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+VGlYbWxOb2RlPC9hPjxsaT5Ob0NoaWxkcmVuKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1OSI+VGlYbWxOb2RlPC9hPjxsaT5Ob2RlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE1Ij5UaVhtbEhhbmRsZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3AiPi0gcCAtPC9hPjwvaDM+PHVsPgorPGxpPlBhcmVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+VGlYbWxOb2RlPC9hPjxsaT5QYXJzZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEyIj5UaVhtbERvY3VtZW50PC9hPjxsaT5QcmV2aW91cygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNyI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlByZXZpb3VzU2libGluZygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlRpWG1sTm9kZTwvYT48bGk+UHJpbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyNCI+VGlYbWxEb2N1bWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNSI+VGlYbWxVbmtub3duPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMTAiPlRpWG1sRGVjbGFyYXRpb248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTUiPlRpWG1sVGV4dDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNSI+VGlYbWxDb21tZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOSI+VGlYbWxFbGVtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIzIj5UaVhtbEF0dHJpYnV0ZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+VGlYbWxCYXNlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfcSI+LSBxIC08L2E+PC9oMz48dWw+Cis8bGk+UXVlcnlEb3VibGVBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlRpWG1sRWxlbWVudDwvYT48bGk+UXVlcnlEb3VibGVWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E4Ij5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+UXVlcnlGbG9hdEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTAiPlRpWG1sRWxlbWVudDwvYT48bGk+UXVlcnlJbnRBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlRpWG1sRWxlbWVudDwvYT48bGk+UXVlcnlJbnRWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E3Ij5UaVhtbEF0dHJpYnV0ZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3IiPi0gciAtPC9hPjwvaDM+PHVsPgorPGxpPlJlbW92ZUF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjIiPlRpWG1sRWxlbWVudDwvYT48bGk+UmVtb3ZlQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMxIj5UaVhtbE5vZGU8L2E+PGxpPlJlcGxhY2VDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlRpWG1sTm9kZTwvYT48bGk+Um9vdEVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMyI+VGlYbWxEb2N1bWVudDwvYT48bGk+Um93KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5UaVhtbEJhc2U8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9zIj4tIHMgLTwvYT48L2gzPjx1bD4KKzxsaT5TYXZlRmlsZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTExIj5UaVhtbERvY3VtZW50PC9hPjxsaT5TZXRBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTE5Ij5UaVhtbEVsZW1lbnQ8L2E+PGxpPlNldENEQVRBKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E3Ij5UaVhtbFRleHQ8L2E+PGxpPlNldENvbmRlbnNlV2hpdGVTcGFjZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+VGlYbWxCYXNlPC9hPjxsaT5TZXREb3VibGVBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIwIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPlNldERvdWJsZVZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEyIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+U2V0SW50VmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTEiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5TZXROYW1lKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEzIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+U2V0VGFiU2l6ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5UaVhtbERvY3VtZW50PC9hPjxsaT5TZXRWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNCI+VGlYbWxBdHRyaWJ1dGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlRpWG1sTm9kZTwvYT48bGk+U3RhbmRhbG9uZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTgiPlRpWG1sRGVjbGFyYXRpb248L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF90Ij4tIHQgLTwvYT48L2gzPjx1bD4KKzxsaT5UZXh0KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE3Ij5UaVhtbEhhbmRsZTwvYT48bGk+VGlYbWxBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMiI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlRpWG1sQ29tbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhMCI+VGlYbWxDb21tZW50PC9hPjxsaT5UaVhtbERlY2xhcmF0aW9uKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMiI+VGlYbWxEZWNsYXJhdGlvbjwvYT48bGk+VGlYbWxEb2N1bWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlRpWG1sRWxlbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMSI+VGlYbWxFbGVtZW50PC9hPjxsaT5UaVhtbEhhbmRsZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExIj5UaVhtbEhhbmRsZTwvYT48bGk+VGlYbWxUZXh0KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EyIj5UaVhtbFRleHQ8L2E+PGxpPlRvQ29tbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRpWG1sTm9kZTwvYT48bGk+VG9EZWNsYXJhdGlvbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPlRpWG1sTm9kZTwvYT48bGk+VG9Eb2N1bWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPlRpWG1sTm9kZTwvYT48bGk+VG9FbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+VGlYbWxOb2RlPC9hPjxsaT5Ub1RleHQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5UaVhtbE5vZGU8L2E+PGxpPlRvVW5rbm93bigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRpWG1sTm9kZTwvYT48bGk+VHlwZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlRpWG1sTm9kZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3UiPi0gdSAtPC9hPjwvaDM+PHVsPgorPGxpPlVua25vd24oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTgiPlRpWG1sSGFuZGxlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfdiI+LSB2IC08L2E+PC9oMz48dWw+Cis8bGk+VmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNCI+VGlYbWxBdHRyaWJ1dGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlRpWG1sTm9kZTwvYT48bGk+VmFsdWVTdHIoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPlRpWG1sTm9kZTwvYT48bGk+VmVyc2lvbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTYiPlRpWG1sRGVjbGFyYXRpb248L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2Z1bmN0aW9uc19yZWxhLmh0bWwgYi9kb2NzL2Z1bmN0aW9uc19yZWxhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgzODE2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZnVuY3Rpb25zX3JlbGEuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogQ2xhc3MgTWVtYmVycyAtIFJlbGF0ZWQgRnVuY3Rpb25zPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkFsbDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfZnVuYy5odG1sIj5GdW5jdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3ZhcnMuaHRtbCI+VmFyaWFibGVzPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19lbnVtLmh0bWwiPkVudW1lcmF0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9uc19yZWxhLmh0bWwiPlJlbGF0ZWQmbmJzcDtGdW5jdGlvbnM8L2E+PC9kaXY+CisKKzxwPgorPHVsPgorPGxpPm9wZXJhdG9yJmx0OyZsdDsKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5UaVhtbE5vZGU8L2E+PGxpPm9wZXJhdG9yJmd0OyZndDsKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24yIj5UaVhtbE5vZGU8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2Z1bmN0aW9uc192YXJzLmh0bWwgYi9kb2NzL2Z1bmN0aW9uc192YXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQzYjAzNwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZnVuY3Rpb25zX3ZhcnMuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogQ2xhc3MgTWVtYmVycyAtIFZhcmlhYmxlczwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5BbGw8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX2Z1bmMuaHRtbCI+RnVuY3Rpb25zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iZnVuY3Rpb25zX3ZhcnMuaHRtbCI+VmFyaWFibGVzPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19lbnVtLmh0bWwiPkVudW1lcmF0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfcmVsYS5odG1sIj5SZWxhdGVkJm5ic3A7RnVuY3Rpb25zPC9hPjwvZGl2PgorCis8cD4KKzx1bD4KKzxsaT51c2VyRGF0YQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPlRpWG1sQmFzZTwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvaGllcmFyY2h5Lmh0bWwgYi9kb2NzL2hpZXJhcmNoeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MDRjZjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2hpZXJhcmNoeS5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBIaWVyYXJjaGljYWwgSW5kZXg8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpbnlYbWwgQ2xhc3MgSGllcmFyY2h5PC9oMT5UaGlzIGluaGVyaXRhbmNlIGxpc3QgaXMgc29ydGVkIHJvdWdobHksIGJ1dCBub3QgY29tcGxldGVseSwgYWxwaGFiZXRpY2FsbHk6PHVsPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPgorPHVsPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4KKzx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+Cis8L3VsPgorPC91bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Cis8L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvaW5kZXguaHRtbCBiL2RvY3MvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTgxOGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMjM5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWFpbiBQYWdlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaW55WG1sIERvY3VtZW50YXRpb248L2gxPgorPHA+Cis8aDMgYWxpZ249ImNlbnRlciI+Mi40LjAgPC9oMz48aDE+VGlueVhtbCA8L2gxPgorPHA+CitUaW55WG1sIGlzIGEgc2ltcGxlLCBzbWFsbCwgQysrIFhNTCBwYXJzZXIgdGhhdCBjYW4gYmUgZWFzaWx5IGludGVncmF0aW5nIGludG8gb3RoZXIgcHJvZ3JhbXMuPHA+Cis8aDI+V2hhdCBpdCBkb2VzLiA8L2gyPgorPHA+CitJbiBicmllZiwgVGlueVhtbCBwYXJzZXMgYW4gWE1MIGRvY3VtZW50LCBhbmQgYnVpbGRzIGZyb20gdGhhdCBhIERvY3VtZW50IE9iamVjdCBNb2RlbCAoRE9NKSB0aGF0IGNhbiBiZSByZWFkLCBtb2RpZmllZCwgYW5kIHNhdmVkLjxwPgorWE1MIHN0YW5kcyBmb3IgImVYdGVuc2libGUgTWFya3VwIExhbmd1YWdlLiIgSXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgeW91ciBvd24gZG9jdW1lbnQgbWFya3Vwcy4gV2hlcmUgSFRNTCBkb2VzIGEgdmVyeSBnb29kIGpvYiBvZiBtYXJraW5nIGRvY3VtZW50cyBmb3IgYnJvd3NlcnMsIFhNTCBhbGxvd3MgeW91IHRvIGRlZmluZSBhbnkga2luZCBvZiBkb2N1bWVudCBtYXJrdXAsIGZvciBleGFtcGxlIGEgZG9jdW1lbnQgdGhhdCBkZXNjcmliZXMgYSAidG8gZG8iIGxpc3QgZm9yIGFuIG9yZ2FuaXplciBhcHBsaWNhdGlvbi4gWE1MIGlzIGEgdmVyeSBzdHJ1Y3R1cmVkIGFuZCBjb252ZW5pZW50IGZvcm1hdC4gQWxsIHRob3NlIHJhbmRvbSBmaWxlIGZvcm1hdHMgY3JlYXRlZCB0byBzdG9yZSBhcHBsaWNhdGlvbiBkYXRhIGNhbiBhbGwgYmUgcmVwbGFjZWQgd2l0aCBYTUwuIE9uZSBwYXJzZXIgZm9yIGV2ZXJ5dGhpbmcuPHA+CitUaGUgYmVzdCBwbGFjZSBmb3IgdGhlIGNvbXBsZXRlLCBjb3JyZWN0LCBhbmQgcXVpdGUgZnJhbmtseSBoYXJkIHRvIHJlYWQgc3BlYyBpcyBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvIj5odHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvPC9hPi4gQW4gaW50cm8gdG8gWE1MICh0aGF0IEkgcmVhbGx5IGxpa2UpIGNhbiBiZSBmb3VuZCBhdCA8YSBocmVmPSJodHRwOi8vc2tldy5vcmcveG1sL3R1dG9yaWFsLyI+aHR0cDovL3NrZXcub3JnL3htbC90dXRvcmlhbDwvYT4uPHA+CitUaGVyZSBhcmUgZGlmZmVyZW50IHdheXMgdG8gYWNjZXNzIGFuZCBpbnRlcmFjdCB3aXRoIFhNTCBkYXRhLiBUaW55WG1sIHVzZXMgYSBEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSksIG1lYW5pbmcgdGhlIFhNTCBkYXRhIGlzIHBhcnNlZCBpbnRvIGEgQysrIG9iamVjdHMgdGhhdCBjYW4gYmUgYnJvd3NlZCBhbmQgbWFuaXB1bGF0ZWQsIGFuZCB0aGVuIHdyaXR0ZW4gdG8gZGlzayBvciBhbm90aGVyIG91dHB1dCBzdHJlYW0uIFlvdSBjYW4gYWxzbyBjb25zdHJ1Y3QgYW4gWE1MIGRvY3VtZW50IGZyb20gc2NyYXRjaCB3aXRoIEMrKyBvYmplY3RzIGFuZCB3cml0ZSB0aGlzIHRvIGRpc2sgb3IgYW5vdGhlciBvdXRwdXQgc3RyZWFtLjxwPgorVGlueVhtbCBpcyBkZXNpZ25lZCB0byBiZSBlYXN5IGFuZCBmYXN0IHRvIGxlYXJuLiBJdCBpcyB0d28gaGVhZGVycyBhbmQgZm91ciBjcHAgZmlsZXMuIFNpbXBseSBhZGQgdGhlc2UgdG8geW91ciBwcm9qZWN0IGFuZCBvZmYgeW91IGdvLiBUaGVyZSBpcyBhbiBleGFtcGxlIGZpbGUgLSB4bWx0ZXN0LmNwcCAtIHRvIGdldCB5b3Ugc3RhcnRlZC48cD4KK1RpbnlYbWwgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFpMaWIgbGljZW5zZSwgc28geW91IGNhbiB1c2UgaXQgaW4gb3BlbiBzb3VyY2Ugb3IgY29tbWVyY2lhbCBjb2RlLiBUaGUgZGV0YWlscyBvZiB0aGUgbGljZW5zZSBhcmUgYXQgdGhlIHRvcCBvZiBldmVyeSBzb3VyY2UgZmlsZS48cD4KK1RpbnlYbWwgYXR0ZW1wdHMgdG8gYmUgYSBmbGV4aWJsZSBwYXJzZXIsIGJ1dCB3aXRoIHRydWx5IGNvcnJlY3QgYW5kIGNvbXBsaWFudCBYTUwgb3V0cHV0LiBUaW55WG1sIHNob3VsZCBjb21waWxlIG9uIGFueSByZWFzb25hYmx5IEMrKyBjb21wbGlhbnQgc3lzdGVtLiBJdCBkb2VzIG5vdCByZWx5IG9uIGV4Y2VwdGlvbnMgb3IgUlRUSS4gSXQgY2FuIGJlIGNvbXBpbGVkIHdpdGggb3Igd2l0aG91dCBTVEwgc3VwcG9ydC4gVGlueVhtbCBmdWxseSBzdXBwb3J0cyB0aGUgVVRGLTggZW5jb2RpbmcsIGFuZCB0aGUgZmlyc3QgNjRrIGNoYXJhY3RlciBlbnRpdGllcy48cD4KKzxoMj5XaGF0IGl0IGRvZXNuJ3QgZG8uIDwvaDI+Cis8cD4KK0l0IGRvZXNudCBwYXJzZSBvciB1c2UgRFREcyAoRG9jdW1lbnQgVHlwZSBEZWZpbml0aW9ucykgb3IgWFNMcyAoZVh0ZW5zaWJsZSBTdHlsZXNoZWV0IExhbmd1YWdlLikgVGhlcmUgYXJlIG90aGVyIHBhcnNlcnMgb3V0IHRoZXJlIChjaGVjayBvdXQgd3d3LnNvdXJjZWZvcmdlLm9yZywgc2VhcmNoIGZvciBYTUwpIHRoYXQgYXJlIG11Y2ggbW9yZSBmdWxseSBmZWF0dXJlZC4gQnV0IHRoZXkgYXJlIGFsc28gbXVjaCBiaWdnZXIsIHRha2UgbG9uZ2VyIHRvIHNldCB1cCBpbiB5b3VyIHByb2plY3QsIGhhdmUgYSBoaWdoZXIgbGVhcm5pbmcgY3VydmUsIGFuZCBvZnRlbiBoYXZlIGEgbW9yZSByZXN0cmljdGl2ZSBsaWNlbnNlLiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBicm93c2VycyBvciBoYXZlIG1vcmUgY29tcGxldGUgWE1MIG5lZWRzLCBUaW55WG1sIGlzIG5vdCB0aGUgcGFyc2VyIGZvciB5b3UuPHA+CitUaGUgZm9sbG93aW5nIERURCBzeW50YXggd2lsbCBub3QgcGFyc2UgYXQgdGhpcyB0aW1lIGluIFRpbnlYbWw6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7IURPQ1RZUEUgQXJjaGl2IFsKKwkgJmx0OyFFTEVNRU5UIENvbW1lbnQgKCNQQ0RBVEEpJmd0OworCV0mZ3Q7Cis8L3ByZT48L2Rpdj48cD4KK2JlY2F1c2UgVGlueVhtbCBzZWVzIHRoaXMgYXMgYSAhRE9DVFlQRSBub2RlIHdpdGggYW4gaWxsZWdhbGx5IGVtYmVkZGVkICFFTEVNRU5UIG5vZGUuIFRoaXMgbWF5IGJlIGFkZHJlc3NlZCBpbiB0aGUgZnV0dXJlLjxwPgorPGgyPlR1dG9yaWFscy4gPC9oMj4KKzxwPgorRm9yIHRoZSBpbXBhdGllbnQsIGhlcmUgaXMgYSB0dXRvcmlhbCB0byBnZXQgeW91IGdvaW5nLiBBIGdyZWF0IHdheSB0byBnZXQgc3RhcnRlZCwgYnV0IGl0IGlzIHdvcnRoIHlvdXIgdGltZSB0byByZWFkIHRoaXMgKHZlcnkgc2hvcnQpIG1hbnVhbCBjb21wbGV0ZWx5LjxwPgorPHVsPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idHV0b3JpYWwwLmh0bWwiPlRpbnlYTUwgVHV0b3JpYWw8L2E+PC9saT48L3VsPgorPHA+Cis8aDI+Q29kZSBTdGF0dXMuIDwvaDI+Cis8cD4KK1RpbnlYbWwgaXMgbWF0dXJlLCB0ZXN0ZWQgY29kZS4gSXQgaXMgdmVyeSBzdGFibGUuIElmIHlvdSBmaW5kIGJ1Z3MsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydCBvbiB0aGUgc291cmNlZm9yZ2Ugd2ViIHNpdGUgKHd3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbCkuIFdlJ2xsIGdldCB0aGVtIHN0cmFpZ2h0ZW5lZCBvdXQgYXMgc29vbiBhcyBwb3NzaWJsZS48cD4KK1RoZXJlIGFyZSBzb21lIGFyZWFzIG9mIGltcHJvdmVtZW50OyBwbGVhc2UgY2hlY2sgc291cmNlZm9yZ2UgaWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHdvcmtpbmcgb24gVGlueVhtbC48cD4KKzxoMj5GZWF0dXJlcyA8L2gyPgorPHA+Cis8aDM+VXNpbmcgU1RMIDwvaDM+Cis8cD4KK1RpbnlYbWwgY2FuIGJlIGNvbXBpbGVkIHRvIHVzZSBvciBub3QgdXNlIFNUTC4gV2hlbiB1c2luZyBTVEwsIFRpbnlYbWwgdXNlcyB0aGUgc3RkOjpzdHJpbmcgY2xhc3MsIGFuZCBmdWxseSBzdXBwb3J0cyBzdGQ6OmlzdHJlYW0sIHN0ZDo6b3N0cmVhbSwgb3BlcmF0b3ImbHQ7Jmx0OywgYW5kIG9wZXJhdG9yJmd0OyZndDsuIE1hbnkgQVBJIG1ldGhvZHMgaGF2ZSBib3RoICdjb25zdCBjaGFyKicgYW5kICdjb25zdCBzdGQ6OnN0cmluZyZhbXA7JyBmb3Jtcy48cD4KK1doZW4gU1RMIHN1cHBvcnQgaXMgY29tcGlsZWQgb3V0LCBubyBTVEwgZmlsZXMgYXJlIGluY2x1ZGVkIHdoYXRzb3Zlci4gQWxsIHRoZSBzdHJpbmcgY2xhc3NlcyBhcmUgaW1wbGVtZW50ZWQgYnkgVGlueVhtbCBpdHNlbGYuIEFQSSBtZXRob2RzIGFsbCB1c2UgdGhlICdjb25zdCBjaGFyKicgZm9ybSBmb3IgaW5wdXQuPHA+CitVc2UgdGhlIGNvbXBpbGUgdGltZSBkZWZpbmU6PHA+CitUSVhNTF9VU0VfU1RMPHA+Cit0byBjb21waWxlIG9uZSB2ZXJzaW9uIG9yIHRoZSBvdGhlci4gVGhpcyBjYW4gYmUgcGFzc2VkIGJ5IHRoZSBjb21waWxlciwgb3Igc2V0IGFzIHRoZSBmaXJzdCBsaW5lIG9mICJ0aW55eG1sLmgiLjxwPgorTm90ZTogSWYgY29tcGlsaW5nIHRoZSB0ZXN0IGNvZGUgaW4gTGludXgsIHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFRJTllYTUxfVVNFX1NUTD1ZRVMvTk8gd2lsbCBjb250cm9sIFNUTCBjb21waWxhdGlvbi4gSW4gdGhlIFdpbmRvd3MgcHJvamVjdCBmaWxlLCBTVEwgYW5kIG5vbiBTVEwgdGFyZ2V0cyBhcmUgcHJvdmlkZWQuIEluIHlvdXIgcHJvamVjdCwgaXRzIHByb2JhYmx5IGVhc2llc3QgdG8gYWRkIHRoZSBsaW5lICIjZGVmaW5lIFRJWE1MX1VTRV9TVEwiIGFzIHRoZSBmaXJzdCBsaW5lIG9mIDxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPi48cD4KKzxoMz5VVEYtOCA8L2gzPgorPHA+CitUaW55WG1sIHN1cHBvcnRzIFVURi04IGFsbG93aW5nIHRvIG1hbmlwdWxhdGUgWE1MIGZpbGVzIGluIGFueSBsYW5ndWFnZS4gVGlueVhtbCBhbHNvIHN1cHBvcnRzICJsZWdhY3kgbW9kZSIgLSB0aGUgZW5jb2RpbmcgdXNlZCBiZWZvcmUgVVRGLTggc3VwcG9ydCBhbmQgcHJvYmFibHkgYmVzdCBkZXNjcmliZWQgYXMgImV4dGVuZGVkIGFzY2lpIi48cD4KK05vcm1hbGx5LCBUaW55WG1sIHdpbGwgdHJ5IHRvIGRldGVjdCB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgdXNlIGl0LiBIb3dldmVyLCBieSBzZXR0aW5nIHRoZSB2YWx1ZSBvZiBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HIGluIHRoZSBoZWFkZXIgZmlsZSwgVGlueVhtbCBjYW4gYmUgZm9yY2VkIHRvIGFsd2F5cyB1c2Ugb25lIGVuY29kaW5nLjxwPgorVGlueVhtbCB3aWxsIGFzc3VtZSBMZWdhY3kgTW9kZSB1bnRpbCBvbmUgb2YgdGhlIGZvbGxvd2luZyBvY2N1cnM6IDxvbD4KKzxsaT4KK0lmIHRoZSBub24tc3RhbmRhcmQgYnV0IGNvbW1vbiAiVVRGLTggbGVhZCBieXRlcyIgKDB4ZWYgMHhiYiAweGJmKSBiZWdpbiB0aGUgZmlsZSBvciBkYXRhIHN0cmVhbSwgVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgVVRGLTguICA8L2xpPgorPGxpPgorSWYgdGhlIGRlY2xhcmF0aW9uIHRhZyBpcyByZWFkLCBhbmQgaXQgaGFzIGFuIGVuY29kaW5nPSJVVEYtOCIsIHRoZW4gVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgVVRGLTguICA8L2xpPgorPGxpPgorSWYgdGhlIGRlY2xhcmF0aW9uIHRhZyBpcyByZWFkLCBhbmQgaXQgaGFzIG5vIGVuY29kaW5nIHNwZWNpZmllZCwgdGhlbiBUaW55WG1sIHdpbGwgcmVhZCBpdCBhcyBVVEYtOC4gIDwvbGk+Cis8bGk+CitJZiB0aGUgZGVjbGFyYXRpb24gdGFnIGlzIHJlYWQsIGFuZCBpdCBoYXMgYW4gZW5jb2Rpbmc9InNvbWV0aGluZyBlbHNlIiwgdGhlbiBUaW55WG1sIHdpbGwgcmVhZCBpdCBhcyBMZWdhY3kgTW9kZS4gSW4gbGVnYWN5IG1vZGUsIFRpbnlYbWwgd2lsbCB3b3JrIGFzIGl0IGRpZCBiZWZvcmUuIEl0J3Mgbm90IGNsZWFyIHdoYXQgdGhhdCBtb2RlIGRvZXMgZXhhY3RseSwgYnV0IG9sZCBjb250ZW50IHNob3VsZCBrZWVwIHdvcmtpbmcuIDwvbGk+Cis8bGk+CitVbnRpbCBvbmUgb2YgdGhlIGFib3ZlIGNyaXRlcmlhIGlzIG1ldCwgVGlueVhtbCBydW5zIGluIExlZ2FjeSBNb2RlLiA8L2xpPgorPC9vbD4KKzxwPgorV2hhdCBoYXBwZW5zIGlmIHRoZSBlbmNvZGluZyBpcyBpbmNvcnJlY3RseSBzZXQgb3IgZGV0ZWN0ZWQ/IFRpbnlYbWwgd2lsbCB0cnkgdG8gcmVhZCBhbmQgcGFzcyB0aHJvdWdoIHRleHQgc2VlbiBhcyBpbXByb3Blcmx5IGVuY29kZWQuIFlvdSBtYXkgZ2V0IHNvbWUgc3RyYW5nZSByZXN1bHRzIG9yIG1hbmdsZWQgY2hhcmFjdGVycy4gWW91IG1heSB3YW50IHRvIGZvcmNlIFRpbnlYbWwgdG8gdGhlIGNvcnJlY3QgbW9kZS48cD4KKzxiPiBZb3UgbWF5IGZvcmNlIFRpbnlYbWwgdG8gTGVnYWN5IE1vZGUgYnkgdXNpbmcgTG9hZEZpbGUoIFRJWE1MX0VOQ09ESU5HX0xFR0FDWSApIG9yIExvYWRGaWxlKCBmaWxlbmFtZSwgVElYTUxfRU5DT0RJTkdfTEVHQUNZICkuIFlvdSBtYXkgZm9yY2UgaXQgdG8gdXNlIGxlZ2FjeSBtb2RlIGFsbCB0aGUgdGltZSBieSBzZXR0aW5nIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgPSBUSVhNTF9FTkNPRElOR19MRUdBQ1kuIExpa2V3aXNlLCB5b3UgbWF5IGZvcmNlIGl0IHRvIFRJWE1MX0VOQ09ESU5HX1VURjggd2l0aCB0aGUgc2FtZSB0ZWNobmlxdWUuPC9iPjxwPgorRm9yIEVuZ2xpc2ggdXNlcnMsIHVzaW5nIEVuZ2xpc2ggWE1MLCBVVEYtOCBpcyB0aGUgc2FtZSBhcyBsb3ctQVNDSUkuIFlvdSBkb24ndCBuZWVkIHRvIGJlIGF3YXJlIG9mIFVURi04IG9yIGNoYW5nZSB5b3VyIGNvZGUgaW4gYW55IHdheS4gWW91IGNhbiB0aGluayBvZiBVVEYtOCBhcyBhICJzdXBlcnNldCIgb2YgQVNDSUkuPHA+CitVVEYtOCBpcyBub3QgYSBkb3VibGUgYnl0ZSBmb3JtYXQgLSBidXQgaXQgaXMgYSBzdGFuZGFyZCBlbmNvZGluZyBvZiBVbmljb2RlISBUaW55WG1sIGRvZXMgbm90IHVzZSBvciBkaXJlY3RseSBzdXBwb3J0IHdjaGFyLCBUQ0hBUiwgb3IgTWljcm9zb2Z0cyBfVU5JQ09ERSBhdCB0aGlzIHRpbWUuIEl0IGlzIGNvbW1vbiB0byBzZWUgdGhlIHRlcm0gIlVuaWNvZGUiIGltcHJvcGVybHkgcmVmZXIgdG8gVVRGLTE2LCBhIHdpZGUgYnl0ZSBlbmNvZGluZyBvZiB1bmljb2RlLiBUaGlzIGlzIGEgc291cmNlIG9mIGNvbmZ1c2lvbi48cD4KK0ZvciAiaGlnaC1hc2NpaSIgbGFuZ3VhZ2VzIC0gZXZlcnl0aGluZyBub3QgRW5nbGlzaCwgcHJldHR5IG11Y2ggLSBUaW55WG1sIGNhbiBoYW5kbGUgYWxsIGxhbmd1YWdlcywgYXQgdGhlIHNhbWUgdGltZSwgYXMgbG9uZyBhcyB0aGUgWE1MIGlzIGVuY29kZWQgaW4gVVRGLTguIFRoYXQgY2FuIGJlIGEgbGl0dGxlIHRyaWNreSwgb2xkZXIgcHJvZ3JhbXMgYW5kIG9wZXJhdGluZyBzeXN0ZW1zIHRlbmQgdG8gdXNlIHRoZSAiZGVmYXVsdCIgb3IgInRyYWRpdGlvbmFsIiBjb2RlIHBhZ2UuIE1hbnkgYXBwcyAoYW5kIGFsbW9zdCBhbGwgbW9kZXJuIG9uZXMpIGNhbiBvdXRwdXQgVVRGLTgsIGJ1dCBvbGRlciBvciBzdHViYm9ybiAob3IganVzdCBicm9rZW4pIG9uZXMgc3RpbGwgb3V0cHV0IHRleHQgaW4gdGhlIGRlZmF1bHQgY29kZSBwYWdlLjxwPgorRm9yIGV4YW1wbGUsIEphcGFuZXNlIHN5c3RlbXMgdHJhZGl0aW9uYWxseSB1c2UgU0hJRlQtSklTIGVuY29kaW5nLiBUZXh0IGVuY29kZWQgYXMgU0hJRlQtSklTIGNhbiBub3QgYmUgcmVhZCBieSB0aW55eG1sLiBBIGdvb2QgdGV4dCBlZGl0b3IgY2FuIGltcG9ydCBTSElGVC1KSVMgYW5kIHRoZW4gc2F2ZSBhcyBVVEYtOC48cD4KK1RoZSA8YSBocmVmPSJodHRwOi8vc2tldy5vcmcveG1sL3R1dG9yaWFsLyI+U2tldy5vcmcgbGluazwvYT4gZG9lcyBhIGdyZWF0IGpvYiBjb3ZlcmluZyB0aGUgZW5jb2RpbmcgaXNzdWUuPHA+CitUaGUgdGVzdCBmaWxlICJ1dGY4dGVzdC54bWwiIGlzIGFuIFhNTCBjb250YWluaW5nIEVuZ2xpc2gsIFNwYW5pc2gsIFJ1c3NpYW4sIGFuZCBTaW1wbGlmaWVkIENoaW5lc2UuIChIb3BlZnVsbHkgdGhleSBhcmUgdHJhbnNsYXRlZCBjb3JyZWN0bHkpLiBUaGUgZmlsZSAidXRmOHRlc3QuZ2lmIiBpcyBhIHNjcmVlbiBjYXB0dXJlIG9mIHRoZSBYTUwgZmlsZSwgcmVuZGVyZWQgaW4gSUUuIE5vdGUgdGhhdCBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGUgY29ycmVjdCBmb250cyAoU2ltcGxpZmllZCBDaGluZXNlIG9yIFJ1c3NpYW4pIG9uIHlvdXIgc3lzdGVtLCB5b3Ugd29uJ3Qgc2VlIG91dHB1dCB0aGF0IG1hdGNoZXMgdGhlIEdJRiBmaWxlIGV2ZW4gaWYgeW91IGNhbiBwYXJzZSBpdCBjb3JyZWN0bHkuIEFsc28gbm90ZSB0aGF0IChhdCBsZWFzdCBvbiBteSBXaW5kb3dzIG1hY2hpbmUpIGNvbnNvbGUgb3V0cHV0IGlzIGluIGEgV2VzdGVybiBjb2RlIHBhZ2UsIHNvIHRoYXQgUHJpbnQoKSBvciBwcmludGYoKSBjYW5ub3QgY29ycmVjdGx5IGRpc3BsYXkgdGhlIGZpbGUuIFRoaXMgaXMgbm90IGEgYnVnIGluIFRpbnlYbWwgLSBqdXN0IGFuIE9TIGlzc3VlLiBObyBkYXRhIGlzIGxvc3Qgb3IgZGVzdHJveWVkIGJ5IFRpbnlYbWwuIFRoZSBjb25zb2xlIGp1c3QgZG9lc24ndCByZW5kZXIgVVRGLTguPHA+Cis8aDM+RW50aXRpZXMgPC9oMz4KKzxwPgorVGlueVhtbCByZWNvZ25pemVzIHRoZSBwcmUtZGVmaW5lZCAiY2hhcmFjdGVyIGVudGl0aWVzIiwgbWVhbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMuIE5hbWVseTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZhbXA7YW1wOwkmYW1wOworCSZhbXA7bHQ7CSZsdDsKKwkmYW1wO2d0OwkmZ3Q7CisJJmFtcDtxdW90OwkiCisJJmFtcDthcG9zOwknCis8L3ByZT48L2Rpdj48cD4KK1RoZXNlIGFyZSByZWNvZ25pemVkIHdoZW4gdGhlIFhNTCBkb2N1bWVudCBpcyByZWFkLCBhbmQgdHJhbnNsYXRlZCB0byB0aGVyZSBVVEYtOCBlcXVpdmFsZW50cy4gRm9yIGluc3RhbmNlLCB0ZXh0IHdpdGggdGhlIFhNTCBvZjo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CUZhciAmYW1wO2FtcDsgQXdheQorPC9wcmU+PC9kaXY+PHA+Cit3aWxsIGhhdmUgdGhlIFZhbHVlKCkgb2YgIkZhciAmYW1wOyBBd2F5IiB3aGVuIHF1ZXJpZWQgZnJvbSB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+IG9iamVjdCwgYW5kIHdpbGwgYmUgd3JpdHRlbiBiYWNrIHRvIHRoZSBYTUwgc3RyZWFtL2ZpbGUgYXMgYW4gYW1wZXJzYW5kLiBPbGRlciB2ZXJzaW9ucyBvZiBUaW55WG1sICJwcmVzZXJ2ZWQiIGNoYXJhY3RlciBlbnRpdGllcywgYnV0IHRoZSBuZXdlciB2ZXJzaW9ucyB3aWxsIHRyYW5zbGF0ZSB0aGVtIGludG8gY2hhcmFjdGVycy48cD4KK0FkZGl0aW9uYWxseSwgYW55IGNoYXJhY3RlciBjYW4gYmUgc3BlY2lmaWVkIGJ5IGl0cyBVbmljb2RlIGNvZGUgcG9pbnQ6IFRoZSBzeW50YXggIiZhbXA7I3hBMDsiIG9yICImYW1wOyMxNjA7IiBhcmUgYm90aCB0byB0aGUgbm9uLWJyZWFraW5nIHNwYWNlIGNoYXJhY2hlci48cD4KKzxoMz5TdHJlYW1zIDwvaDM+Cis8cD4KK1dpdGggVElYTUxfVVNFX1NUTCBvbiwgVGlYbWwgaGFzIGJlZW4gbW9kaWZpZWQgdG8gc3VwcG9ydCBib3RoIEMgKEZJTEUpIGFuZCBDKysgKG9wZXJhdG9yICZsdDsmbHQ7LCZndDsmZ3Q7KSBzdHJlYW1zLiBUaGVyZSBhcmUgc29tZSBkaWZmZXJlbmNlcyB0aGF0IHlvdSBtYXkgbmVlZCB0byBiZSBhd2FyZSBvZi48cD4KK0Mgc3R5bGUgb3V0cHV0Ojx1bD4KKzxsaT5iYXNlZCBvbiBGSUxFKjwvbGk+PGxpPnRoZSBQcmludCgpIGFuZCBTYXZlRmlsZSgpIG1ldGhvZHM8L2xpPjwvdWw+Cis8cD4KK0dlbmVyYXRlcyBmb3JtYXR0ZWQgb3V0cHV0LCB3aXRoIHBsZW50eSBvZiB3aGl0ZSBzcGFjZSwgaW50ZW5kZWQgdG8gYmUgYXMgaHVtYW4tcmVhZGFibGUgYXMgcG9zc2libGUuIFRoZXkgYXJlIHZlcnkgZmFzdCwgYW5kIHRvbGVyYW50IG9mIGlsbCBmb3JtZWQgWE1MIGRvY3VtZW50cy4gRm9yIGV4YW1wbGUsIGFuIFhNTCBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIDIgcm9vdCBlbGVtZW50cyBhbmQgMiBkZWNsYXJhdGlvbnMsIHdpbGwgc3RpbGwgcHJpbnQuPHA+CitDIHN0eWxlIGlucHV0Ojx1bD4KKzxsaT5iYXNlZCBvbiBGSUxFKjwvbGk+PGxpPnRoZSBQYXJzZSgpIGFuZCBMb2FkRmlsZSgpIG1ldGhvZHM8L2xpPjwvdWw+Cis8cD4KK0EgZmFzdCwgdG9sZXJhbnQgcmVhZC4gVXNlIHdoZW5ldmVyIHlvdSBkb24ndCBuZWVkIHRoZSBDKysgc3RyZWFtcy48cD4KK0MrKyBzdHlsZSBvdXB1dDo8dWw+Cis8bGk+YmFzZWQgb24gc3RkOjpvc3RyZWFtPC9saT48bGk+b3BlcmF0b3ImbHQ7Jmx0OzwvbGk+PC91bD4KKzxwPgorR2VuZXJhdGVzIGNvbmRlbnNlZCBvdXRwdXQsIGludGVuZGVkIGZvciBuZXR3b3JrIHRyYW5zbWlzc2lvbiByYXRoZXIgdGhhbiByZWFkYWJpbGl0eS4gRGVwZW5kaW5nIG9uIHlvdXIgc3lzdGVtJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIG9zdHJlYW0gY2xhc3MsIHRoZXNlIG1heSBiZSBzb21ld2hhdCBzbG93ZXIuIChPciBtYXkgbm90LikgTm90IHRvbGVyYW50IG9mIGlsbCBmb3JtZWQgWE1MOiBhIGRvY3VtZW50IHNob3VsZCBjb250YWluIHRoZSBjb3JyZWN0IG9uZSByb290IGVsZW1lbnQuIEFkZGl0aW9uYWwgcm9vdCBsZXZlbCBlbGVtZW50cyB3aWxsIG5vdCBiZSBzdHJlYW1lZCBvdXQuPHA+CitDKysgc3R5bGUgaW5wdXQ6PHVsPgorPGxpPmJhc2VkIG9uIHN0ZDo6aXN0cmVhbTwvbGk+PGxpPm9wZXJhdG9yJmd0OyZndDs8L2xpPjwvdWw+Cis8cD4KK1JlYWRzIFhNTCBmcm9tIGEgc3RyZWFtLCBtYWtpbmcgaXQgdXNlZnVsIGZvciBuZXR3b3JrIHRyYW5zbWlzc2lvbi4gVGhlIHRyaWNreSBwYXJ0IGlzIGtub3dpbmcgd2hlbiB0aGUgWE1MIGRvY3VtZW50IGlzIGNvbXBsZXRlLCBzaW5jZSB0aGVyZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgb3RoZXIgZGF0YSBpbiB0aGUgc3RyZWFtLiBUaW55WG1sIHdpbGwgYXNzdW1lIHRoZSBYTUwgZGF0YSBpcyBjb21wbGV0ZSBhZnRlciBpdCByZWFkcyB0aGUgcm9vdCBlbGVtZW50LiBQdXQgYW5vdGhlciB3YXksIGRvY3VtZW50cyB0aGF0IGFyZSBpbGwtY29uc3RydWN0ZWQgd2l0aCBtb3JlIHRoYW4gb25lIHJvb3QgZWxlbWVudCB3aWxsIG5vdCByZWFkIGNvcnJlY3RseS4gQWxzbyBub3RlIHRoYXQgb3BlcmF0b3ImZ3Q7Jmd0OyBpcyBzb21ld2hhdCBzbG93ZXIgdGhhbiBQYXJzZSwgZHVlIHRvIGJvdGggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCBhbmQgbGltaXRhdGlvbnMgb2YgVGlueVhtbC48cD4KKzxoMz5XaGl0ZSBzcGFjZSA8L2gzPgorPHA+CitUaGUgd29ybGQgc2ltcGx5IGRvZXMgbm90IGFncmVlIG9uIHdoZXRoZXIgd2hpdGUgc3BhY2Ugc2hvdWxkIGJlIGtlcHQsIG9yIGNvbmRlbnNlZC4gRm9yIGV4YW1wbGUsIHByZXRlbmQgdGhlICdfJyBpcyBhIHNwYWNlLCBhbmQgbG9vayBhdCAiSGVsbG9fX19fd29ybGQiLiBIVE1MLCBhbmQgYXQgbGVhc3Qgc29tZSBYTUwgcGFyc2Vycywgd2lsbCBpbnRlcnByZXQgdGhpcyBhcyAiSGVsbG9fd29ybGQiLiBUaGV5IGNvbmRlbnNlIHdoaXRlIHNwYWNlLiBTb21lIFhNTCBwYXJzZXJzIGRvIG5vdCwgYW5kIHdpbGwgbGVhdmUgaXQgYXMgIkhlbGxvX19fX3dvcmxkIi4gKFJlbWVtYmVyIHRvIGtlZXAgcHJldGVuZGluZyB0aGUgXyBpcyBhIHNwYWNlLikgT3RoZXJzIHN1Z2dlc3QgdGhhdCBfX0hlbGxvX19fd29ybGRfXyBzaG91bGQgYmVjb21lIEhlbGxvX19fd29ybGQuPHA+CitJdCdzIGFuIGlzc3VlIHRoYXQgaGFzbid0IGJlZW4gcmVzb2x2ZWQgdG8gbXkgc2F0aXNmYWN0aW9uLiBUaW55WG1sIHN1cHBvcnRzIHRoZSBmaXJzdCAyIGFwcHJvYWNoZXMuIENhbGwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5UaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggYm9vbCApPC9hPiB0byBzZXQgdGhlIGRlc2lyZWQgYmVoYXZpb3IuIFRoZSBkZWZhdWx0IGlzIHRvIGNvbmRlbnNlIHdoaXRlIHNwYWNlLjxwPgorSWYgeW91IGNoYW5nZSB0aGUgZGVmYXVsdCwgeW91IHNob3VsZCBjYWxsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+VGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGJvb2wgKTwvYT4gYmVmb3JlIG1ha2luZyBhbnkgY2FsbHMgdG8gUGFyc2UgWE1MIGRhdGEsIGFuZCBJIGRvbid0IHJlY29tbWVuZCBjaGFuZ2luZyBpdCBhZnRlciBpdCBoYXMgYmVlbiBzZXQuPHA+Cis8aDM+SGFuZGxlcyA8L2gzPgorPHA+CitXaGVyZSBicm93c2luZyBhbiBYTUwgZG9jdW1lbnQgaW4gYSByb2J1c3Qgd2F5LCBpdCBpcyBpbXBvcnRhbnQgdG8gY2hlY2sgZm9yIG51bGwgcmV0dXJucyBmcm9tIG1ldGhvZCBjYWxscy4gQW4gZXJyb3Igc2FmZSBpbXBsZW1lbnRhdGlvbiBjYW4gZ2VuZXJhdGUgYSBsb3Qgb2YgY29kZSBsaWtlOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij5UaVhtbEVsZW1lbnQqIHJvb3QgPSBkb2N1bWVudC5GaXJzdENoaWxkRWxlbWVudCggIkRvY3VtZW50IiApOworaWYgKCByb290ICkKK3sKKwlUaVhtbEVsZW1lbnQqIGVsZW1lbnQgPSByb290LSZndDtGaXJzdENoaWxkRWxlbWVudCggIkVsZW1lbnQiICk7CisJaWYgKCBlbGVtZW50ICkKKwl7CisJCVRpWG1sRWxlbWVudCogY2hpbGQgPSBlbGVtZW50LSZndDtGaXJzdENoaWxkRWxlbWVudCggIkNoaWxkIiApOworCQlpZiAoIGNoaWxkICkKKwkJeworCQkJVGlYbWxFbGVtZW50KiBjaGlsZDIgPSBjaGlsZC0mZ3Q7TmV4dFNpYmxpbmdFbGVtZW50KCAiQ2hpbGQiICk7CisJCQlpZiAoIGNoaWxkMiApCisJCQl7CisJCQkJLy8gRmluYWxseSBkbyBzb21ldGhpbmcgdXNlZnVsLgorPC9wcmU+PC9kaXY+PHA+CitIYW5kbGVzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRvIGNsZWFuIHRoaXMgdXAuIFVzaW5nIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IGNsYXNzLCB0aGUgcHJldmlvdXMgY29kZSByZWR1Y2VzIHRvOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij5UaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZhbXA7ZG9jdW1lbnQgKTsKK1RpWG1sRWxlbWVudCogY2hpbGQyID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5DaGlsZCggIkNoaWxkIiwgMSApLkVsZW1lbnQoKTsKK2lmICggY2hpbGQyICkKK3sKKwkvLyBkbyBzb21ldGhpbmcgdXNlZnVsCis8L3ByZT48L2Rpdj48cD4KK1doaWNoIGlzIG11Y2ggZWFzaWVyIHRvIGRlYWwgd2l0aC4gU2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uPHA+Cis8aDM+Um93IGFuZCBDb2x1bW4gdHJhY2tpbmcgPC9oMz4KKzxwPgorQmVpbmcgYWJsZSB0byB0cmFjayBub2RlcyBhbmQgYXR0cmlidXRlcyBiYWNrIHRvIHRoZWlyIG9yaWdpbiBsb2NhdGlvbiBpbiBzb3VyY2UgZmlsZXMgY2FuIGJlIHZlcnkgaW1wb3J0YW50IGZvciBzb21lIGFwcGxpY2F0aW9ucy4gQWRkaXRpb25hbGx5LCBrbm93aW5nIHdoZXJlIHBhcnNpbmcgZXJyb3JzIG9jY3VyZWQgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBjYW4gYmUgdmVyeSB0aW1lIHNhdmluZy48cD4KK1RpbnlYbWwgY2FuIHRyYWNrcyB0aGUgcm93IGFuZCBjb2x1bW4gb3JpZ2luIG9mIGFsbCBub2RlcyBhbmQgYXR0cmlidXRlcyBpbiBhIHRleHQgZmlsZS4gVGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+VGlYbWxCYXNlOjpSb3coKTwvYT4gYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+VGlYbWxCYXNlOjpDb2x1bW4oKTwvYT4gbWV0aG9kcyByZXR1cm4gdGhlIG9yaWdpbiBvZiB0aGUgbm9kZSBpbiB0aGUgc291cmNlIHRleHQuIFRoZSBjb3JyZWN0IHRhYnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlRpWG1sRG9jdW1lbnQ6OlNldFRhYlNpemUoKTwvYT4uPHA+Cis8aDI+VXNpbmcgYW5kIEluc3RhbGxpbmcgPC9oMj4KKzxwPgorVG8gQ29tcGlsZSBhbmQgUnVuIHhtbHRlc3Q6PHA+CitBIExpbnV4IE1ha2VmaWxlIGFuZCBhIFdpbmRvd3MgVmlzdWFsIEMrKyAuZHN3IGZpbGUgaXMgcHJvdmlkZWQuIFNpbXBseSBjb21waWxlIGFuZCBydW4uIEl0IHdpbGwgd3JpdGUgdGhlIGZpbGUgZGVtb3Rlc3QueG1sIHRvIHlvdXIgZGlzayBhbmQgZ2VuZXJhdGUgb3V0cHV0IG9uIHRoZSBzY3JlZW4uIEl0IGFsc28gdGVzdHMgd2Fsa2luZyB0aGUgRE9NIGJ5IHByaW50aW5nIG91dCB0aGUgbnVtYmVyIG9mIG5vZGVzIGZvdW5kIHVzaW5nIGRpZmZlcmVudCB0ZWNobmlxdWVzLjxwPgorVGhlIExpbnV4IG1ha2VmaWxlIGlzIHZlcnkgZ2VuZXJpYyBhbmQgd2lsbCBwcm9iYWJseSBydW4gb24gb3RoZXIgc3lzdGVtcywgYnV0IGlzIG9ubHkgdGVzdGVkIG9uIExpbnV4LiBZb3Ugbm8gbG9uZ2VyIG5lZWQgdG8gcnVuICdtYWtlIGRlcGVuZCcuIFRoZSBkZXBlbmRlY2llcyBoYXZlIGJlZW4gaGFyZCBjb2RlZC48cD4KKzxoMz5XaW5kb3dzIHByb2plY3QgZmlsZSBmb3IgVkM2PC9oMz4KKzxwPgorPHVsPgorPGxpPgordGlueXhtbDogdGlueXhtbCBsaWJyYXJ5LCBub24tU1RMICA8L2xpPgorPGxpPgordGlueXhtbFNUTDogdGlueXhtbCBsaWJyYXJ5LCBTVEwgIDwvbGk+Cis8bGk+Cit0aW55WG1sVGVzdDogdGVzdCBhcHAsIG5vbi1TVEwgIDwvbGk+Cis8bGk+Cit0aW55WG1sVGVzdFNUTDogdGVzdCBhcHAsIFNUTCAgPC9saT4KKzwvdWw+Cis8cD4KKzxoMz5MaW51eCBNYWtlIGZpbGU8L2gzPgorPHA+CitBdCB0aGUgdG9wIG9mIHRoZSBtYWtlZmlsZSB5b3UgY2FuIHNldDo8cD4KK1BST0ZJTEUsIERFQlVHLCBhbmQgVElOWVhNTF9VU0VfU1RMLiBEZXRhaWxzIChzdWNoIHRoYXQgdGhleSBhcmUpIGFyZSBpbiB0aGUgbWFrZWZpbGUuPHA+CitJbiB0aGUgdGlueXhtbCBkaXJlY3RvcnksIHR5cGUgIm1ha2UgY2xlYW4iIHRoZW4gIm1ha2UiLiBUaGUgZXhlY3V0YWJsZSBmaWxlICd4bWx0ZXN0JyB3aWxsIGJlIGNyZWF0ZWQuPHA+Cis8aDM+VG8gVXNlIGluIGFuIEFwcGxpY2F0aW9uOjwvaDM+Cis8cD4KK0FkZCB0aW55eG1sLmNwcCwgPGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+LCB0aW55eG1sZXJyb3IuY3BwLCB0aW55eG1scGFyc2VyLmNwcCwgdGlueXN0ci5jcHAsIGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnlzdHJfOGgtc291cmNlLmh0bWwiPnRpbnlzdHIuaDwvYT4gdG8geW91ciBwcm9qZWN0IG9yIG1ha2UgZmlsZS4gVGhhdCdzIGl0ISBJdCBzaG91bGQgY29tcGlsZSBvbiBhbnkgcmVhc29uYWJseSBjb21wbGlhbnQgQysrIHN5c3RlbS4gWW91IGRvIG5vdCBuZWVkIHRvIGVuYWJsZSBleGNlcHRpb25zIG9yIFJUVEkgZm9yIFRpbnlYbWwuPHA+Cis8aDI+SG93IFRpbnlYbWwgd29ya3MuIDwvaDI+Cis8cD4KK0FuIGV4YW1wbGUgaXMgcHJvYmFibHkgdGhlIGJlc3Qgd2F5IHRvIGdvLiBUYWtlOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9bm8mZ3Q7CisJJmx0OyEtLSBPdXIgdG8gZG8gbGlzdCBkYXRhIC0tJmd0OworCSZsdDtUb0RvJmd0OworCQkmbHQ7SXRlbSBwcmlvcml0eT0iMSImZ3Q7IEdvIHRvIHRoZSAmbHQ7Ym9sZCZndDtUb3kgc3RvcmUhJmx0Oy9ib2xkJmd0OyZsdDsvSXRlbSZndDsKKwkJJmx0O0l0ZW0gcHJpb3JpdHk9IjIiJmd0OyBEbyBiaWxscyZsdDsvSXRlbSZndDsKKwkmbHQ7L1RvRG8mZ3Q7Cis8L3ByZT48L2Rpdj48cD4KK0l0cyBub3QgbXVjaCBvZiBhIFRvIERvIGxpc3QsIGJ1dCBpdCB3aWxsIGRvLiBUbyByZWFkIHRoaXMgZmlsZSAoc2F5ICJkZW1vLnhtbCIpIHlvdSB3b3VsZCBjcmVhdGUgYSBkb2N1bWVudCwgYW5kIHBhcnNlIGl0IGluOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglUaVhtbERvY3VtZW50IGRvYyggImRlbW8ueG1sIiApOworCWRvYy5Mb2FkRmlsZSgpOworPC9wcmU+PC9kaXY+PHA+CitBbmQgaXRzIHJlYWR5IHRvIGdvLiBOb3cgbGV0cyBsb29rIGF0IHNvbWUgbGluZXMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgRE9NLjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4mbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9bm8mZ3Q7Cis8L3ByZT48L2Rpdj48cD4KK1RoZSBmaXJzdCBsaW5lIGlzIGEgZGVjbGFyYXRpb24sIGFuZCBnZXRzIHR1cm5lZCBpbnRvIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiBjbGFzcy4gSXQgd2lsbCBiZSB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIGRvY3VtZW50IG5vZGUuPHA+CitUaGlzIGlzIHRoZSBvbmx5IGRpcmVjdGl2ZS9zcGVjaWFsIHRhZyBwYXJzZWQgYnkgYnkgVGlueVhtbC4gR2VuZXJhbGx5IGRpcmVjdGl2ZSB0YXJncyBhcmUgc3RvcmVkIGluIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiBzbyB0aGUgY29tbWFuZHMgd29udCBiZSBsb3N0IHdoZW4gaXQgaXMgc2F2ZWQgYmFjayB0byBkaXNrLjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4mbHQ7IS0tIE91ciB0byBkbyBsaXN0IGRhdGEgLS0mZ3Q7Cis8L3ByZT48L2Rpdj48cD4KK0EgY29tbWVudC4gV2lsbCBiZWNvbWUgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4gb2JqZWN0LjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4mbHQ7VG9EbyZndDsKKzwvcHJlPjwvZGl2PjxwPgorVGhlICJUb0RvIiB0YWcgZGVmaW5lcyBhIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiBvYmplY3QuIFRoaXMgb25lIGRvZXMgbm90IGhhdmUgYW55IGF0dHJpYnV0ZXMsIGJ1dCBkb2VzIGNvbnRhaW4gMiBvdGhlciBlbGVtZW50cy48cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+Jmx0O0l0ZW0gcHJpb3JpdHk9IjEiJmd0OyAKKzwvcHJlPjwvZGl2PjxwPgorQ3JlYXRlcyBhbm90aGVyIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiB3aGljaCBpcyBhIGNoaWxkIG9mIHRoZSAiVG9EbyIgZWxlbWVudC4gVGhpcyBlbGVtZW50IGhhcyAxIGF0dHJpYnV0ZSwgd2l0aCB0aGUgbmFtZSAicHJpb3JpdHkiIGFuZCB0aGUgdmFsdWUgIjEiLjxwPgorR28gdG8gdGhlPHA+CitBIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPi4gVGhpcyBpcyBhIGxlYWYgbm9kZSBhbmQgY2Fubm90IGNvbnRhaW4gb3RoZXIgbm9kZXMuIEl0IGlzIGEgY2hpbGQgb2YgdGhlICJJdGVtIiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4uPHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPiZsdDtib2xkJmd0OworPC9wcmU+PC9kaXY+PHA+CitBbm90aGVyIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiwgdGhpcyBvbmUgYSBjaGlsZCBvZiB0aGUgIkl0ZW0iIGVsZW1lbnQuPHA+CitFdGMuPHA+CitMb29raW5nIGF0IHRoZSBlbnRpcmUgb2JqZWN0IHRyZWUsIHlvdSBlbmQgdXAgd2l0aDogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij5UaVhtbERvY3VtZW50CQkJCSJkZW1vLnhtbCIKKwlUaVhtbERlY2xhcmF0aW9uCQkidmVyc2lvbj0nMS4wJyIgInN0YW5kYWxvbmU9bm8iCisJVGlYbWxDb21tZW50CQkJIiBPdXIgdG8gZG8gbGlzdCBkYXRhIgorCVRpWG1sRWxlbWVudAkJCSJUb0RvIgorCQlUaVhtbEVsZW1lbnQJCSJJdGVtIgkJQXR0cmlidHV0ZXM6IHByaW9yaXR5ID0gMQorCQkJVGlYbWxUZXh0CQkiR28gdG8gdGhlICIKKwkJCVRpWG1sRWxlbWVudCAgICAiYm9sZCIKKwkJCQlUaVhtbFRleHQJIlRveSBzdG9yZSEiCisJCVRpWG1sRWxlbWVudAkJCSJJdGVtIgkJQXR0cmlidXRlczogcHJpb3JpdHk9MgorCQkJVGlYbWxUZXh0CQkJIkRvIGJpbGxzIgorPC9wcmU+PC9kaXY+PHA+Cis8aDI+RG9jdW1lbnRhdGlvbiA8L2gyPgorPHA+CitUaGUgZG9jdW1lbnRhdGlvbiBpcyBidWlsZCB3aXRoIERveHlnZW4sIHVzaW5nIHRoZSAnZG94JyBjb25maWd1cmF0aW9uIGZpbGUuPHA+Cis8aDI+TGljZW5zZSA8L2gyPgorPHA+CitUaW55WG1sIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB6bGliIGxpY2Vuc2U6PHA+CitUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS48cD4KK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczo8cD4KKzEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLjxwPgorMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLjxwPgorMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi48cD4KKzxoMj5SZWZlcmVuY2VzIDwvaDI+Cis8cD4KK1RoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIGlzIHRoZSBkZWZpbml0aXZlIHN0YW5kYXJkIGJvZHkgZm9yIFhNTCwgYW5kIHRoZXJlIHdlYiBwYWdlcyBjb250YWluIGh1Z2UgYW1vdW50cyBvZiBpbmZvcm1hdGlvbi48cD4KK1RoZSBkZWZpbml0aXZlIHNwZWM6IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNC8iPmh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNC88L2E+PHA+CitJIGFsc28gcmVjb21tZW5kICJYTUwgUG9ja2V0IFJlZmVyZW5jZSIgYnkgUm9iZXJ0IEVja3N0ZWluIGFuZCBwdWJsaXNoZWQgYnkgT1JlaWxseS4uLnRoZSBib29rIHRoYXQgZ290IHRoZSB3aG9sZSB0aGluZyBzdGFydGVkLjxwPgorPGgyPkNvbnRyaWJ1dG9ycywgQ29udGFjdHMsIGFuZCBhIEJyaWVmIEhpc3RvcnkgPC9oMj4KKzxwPgorVGhhbmtzIHZlcnkgbXVjaCB0byBldmVyeW9uZSB3aG8gc2VuZHMgc3VnZ2VzdGlvbnMsIGJ1Z3MsIGlkZWFzLCBhbmQgZW5jb3VyYWdlbWVudC4gSXQgYWxsIGhlbHBzLCBhbmQgbWFrZXMgdGhpcyBwcm9qZWN0IGZ1bi4gQSBzcGVjaWFsIHRoYW5rcyB0byB0aGUgY29udHJpYnV0b3JzIG9uIHRoZSB3ZWIgcGFnZXMgdGhhdCBrZWVwIGl0IGxpdmVseS48cD4KK1NvIG1hbnkgcGVvcGxlIGhhdmUgc2VudCBpbiBidWdzIGFuZCBpZGVhcywgdGhhdCByYXRoZXIgdGhhbiBsaXN0IGhlcmUgd2UgdHJ5IHRvIGdpdmUgY3JlZGl0IGR1ZSBpbiB0aGUgImNoYW5nZXMudHh0IiBmaWxlLjxwPgorVGlueVhtbCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJlIExlZSBUaG9tYXNvbi4gKE9mdGVuIHRoZSAiSSIgc3RpbGwgaW4gdGhlIGRvY3VtZW5hdGlvbi4pIExlZSByZXZpZXdzIGNoYW5nZXMgYW5kIHJlbGVhc2VzIG5ldyB2ZXJzaW9ucywgd2l0aCB0aGUgaGVscCBvZiBZdmVzIEJlcnF1aW4gYW5kIHRoZSB0aW55WG1sIGNvbW11bml0eS48cD4KK1dlIGFwcHJlY2lhdGUgeW91ciBzdWdnZXN0aW9ucywgYW5kIHdvdWxkIGxvdmUgdG8ga25vdyBpZiB5b3UgdXNlIFRpbnlYbWwuIEhvcGVmdWxseSB5b3Ugd2lsbCBlbmpveSBpdCBhbmQgZmluZCBpdCB1c2VmdWwuIFBsZWFzZSBwb3N0IHF1ZXN0aW9ucywgY29tbWVudHMsIGZpbGUgYnVncywgb3IgY29udGFjdCB1cyBhdDo8cD4KK3d3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbDxwPgorTGVlIFRob21hc29uLCBZdmVzIEJlcnF1aW4gPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvdGlueXN0cl84aC1zb3VyY2UuaHRtbCBiL2RvY3MvdGlueXN0cl84aC1zb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDBhM2M1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy90aW55c3RyXzhoLXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsMzA2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogdGlueXN0ci5oIFNvdXJjZSBGaWxlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+dGlueXN0ci5oPC9oMT48ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPjxhIG5hbWU9ImwwMDAwMSI+PC9hPjAwMDAxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwMiI+PC9hPjAwMDAyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij53d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWw8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDMiPjwvYT4wMDAwMyA8c3BhbiBjbGFzcz0iY29tbWVudCI+T3JpZ2luYWwgZmlsZSBieSBZdmVzIEJlcnF1aW4uPC9zcGFuPgorPGEgbmFtZT0ibDAwMDA0Ij48L2E+MDAwMDQgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwNSI+PC9hPjAwMDA1IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwNiI+PC9hPjAwMDA2IDxzcGFuIGNsYXNzPSJjb21tZW50Ij53YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55PC9zcGFuPgorPGEgbmFtZT0ibDAwMDA3Ij48L2E+MDAwMDcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPmRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDgiPjwvYT4wMDAwOCA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDA5Ij48L2E+MDAwMDkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPlBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxMCI+PC9hPjAwMDEwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij5wdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTEiPjwvYT4wMDAxMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+cmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczo8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTIiPjwvYT4wMDAxMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDEzIj48L2E+MDAwMTMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Q8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTQiPjwvYT4wMDAxNCA8c3BhbiBjbGFzcz0iY29tbWVudCI+bm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzPC9zcGFuPgorPGEgbmFtZT0ibDAwMDE1Ij48L2E+MDAwMTUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPnNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxNiI+PC9hPjAwMDE2IDxzcGFuIGNsYXNzPSJjb21tZW50Ij53b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxNyI+PC9hPjAwMDE3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTgiPjwvYT4wMDAxOCA8c3BhbiBjbGFzcz0iY29tbWVudCI+Mi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTkiPjwvYT4wMDAxOSA8c3BhbiBjbGFzcz0iY29tbWVudCI+bXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyMCI+PC9hPjAwMDIwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjEiPjwvYT4wMDAyMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+My4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlPC9zcGFuPgorPGEgbmFtZT0ibDAwMDIyIj48L2E+MDAwMjIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPmRpc3RyaWJ1dGlvbi48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjMiPjwvYT4wMDAyMyA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ki88L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjQiPjwvYT4wMDAyNCAKKzxhIG5hbWU9ImwwMDAyNSI+PC9hPjAwMDI1IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyNiI+PC9hPjAwMDI2IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKiBUSElTIEZJTEUgV0FTIEFMVEVSRUQgQlkgVHlnZSBMb3ZzZXQsIDcuIEFwcmlsIDIwMDUuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDI3Ij48L2E+MDAwMjcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAqPC9zcGFuPgorPGEgbmFtZT0ibDAwMDI4Ij48L2E+MDAwMjggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAqIC0gY29tcGxldGVseSByZXdyaXR0ZW4uIGNvbXBhY3QsIGNsZWFuLCBhbmQgZmFzdCBpbXBsZW1lbnRhdGlvbi48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjkiPjwvYT4wMDAyOSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBzaXplb2YoVGlYbWxTdHJpbmcpID0gcG9pbnRlciBzaXplICg0IGJ5dGVzIG9uIDMyLWJpdCBzeXN0ZW1zKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzMCI+PC9hPjAwMDMwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKiAtIGZpeGVkIHJlc2VydmUoKSB0byB3b3JrIGFzIHBlciBzcGVjaWZpY2F0aW9uLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzMSI+PC9hPjAwMDMxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKiAtIGZpeGVkIGJ1Z2d5IGNvbXBhcmVzIG9wZXJhdG9yPT0oKSwgb3BlcmF0b3ImbHQ7KCksIGFuZCBvcGVyYXRvciZndDsoKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzMiI+PC9hPjAwMDMyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKiAtIGZpeGVkIG9wZXJhdG9yKz0oKSB0byB0YWtlIGEgY29uc3QgcmVmIGFyZ3VtZW50LCBmb2xsb3dpbmcgc3BlYy48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzMiPjwvYT4wMDAzMyA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBhZGRlZCAiY29weSIgY29uc3RydWN0b3Igd2l0aCBsZW5ndGgsIGFuZCBtb3N0IGNvbXBhcmUgb3BlcmF0b3JzLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzNCI+PC9hPjAwMDM0IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKiAtIGFkZGVkIHN3YXAoKSwgY2xlYXIoKSwgc2l6ZSgpLCBjYXBhY2l0eSgpLCBvcGVyYXRvcisoKS48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzUiPjwvYT4wMDAzNSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICovPC9zcGFuPgorPGEgbmFtZT0ibDAwMDM2Ij48L2E+MDAwMzYgCis8YSBuYW1lPSJsMDAwMzciPjwvYT4wMDAzNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWZuZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzgiPjwvYT4wMDAzOCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzkiPjwvYT4wMDAzOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWZuZGVmIFRJWE1MX1NUUklOR19JTkNMVURFRDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA0MCI+PC9hPjAwMDQwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZGVmaW5lIFRJWE1MX1NUUklOR19JTkNMVURFRDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA0MSI+PC9hPjAwMDQxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA0MiI+PC9hPjAwMDQyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpbmNsdWRlICZsdDthc3NlcnQuaCZndDs8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDMiPjwvYT4wMDA0MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7c3RyaW5nLmgmZ3Q7PC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ0Ij48L2E+MDAwNDQgCis8YSBuYW1lPSJsMDAwNDUiPjwvYT4wMDA0NSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Lyo8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDYiPjwvYT4wMDA0NiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgVGlYbWxTdHJpbmcgaXMgYW4gZW11bGF0aW9uIG9mIGEgc3Vic2V0IG9mIHRoZSBzdGQ6OnN0cmluZyB0ZW1wbGF0ZS48L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDciPjwvYT4wMDA0NyA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgSXRzIHB1cnBvc2UgaXMgdG8gYWxsb3cgY29tcGlsaW5nIFRpbnlYTUwgb24gY29tcGlsZXJzIHdpdGggbm8gb3IgcG9vciBTVEwgc3VwcG9ydC48L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDgiPjwvYT4wMDA0OCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgT25seSB0aGUgbWVtYmVyIGZ1bmN0aW9ucyByZWxldmFudCB0byB0aGUgVGlueVhNTCBwcm9qZWN0IGhhdmUgYmVlbiBpbXBsZW1lbnRlZC48L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDkiPjwvYT4wMDA0OSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgVGhlIGJ1ZmZlciBhbGxvY2F0aW9uIGlzIG1hZGUgYnkgYSBzaW1wbGlzdGljIHBvd2VyIG9mIDIgbGlrZSBtZWNoYW5pc20gOiBpZiB3ZSBpbmNyZWFzZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1MCI+PC9hPjAwMDUwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICBhIHN0cmluZyBhbmQgdGhlcmUncyBubyBtb3JlIHJvb20sIHdlIGFsbG9jYXRlIGEgYnVmZmVyIHR3aWNlIGFzIGJpZyBhcyB3ZSBuZWVkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1MSI+PC9hPjAwMDUxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4qLzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1MiI+PC9hPjAwMDUyIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+VGlYbWxTdHJpbmcKKzxhIG5hbWU9ImwwMDA1MyI+PC9hPjAwMDUzIHsKKzxhIG5hbWU9ImwwMDA1NCI+PC9hPjAwMDU0ICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gOgorPGEgbmFtZT0ibDAwMDU1Ij48L2E+MDAwNTUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaGUgc2l6ZSB0eXBlIHVzZWQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTYiPjwvYT4wMDA1NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnR5cGVkZWY8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dW5zaWduZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBzaXplX3R5cGU7Cis8YSBuYW1lPSJsMDAwNTciPjwvYT4wMDA1NyAKKzxhIG5hbWU9ImwwMDA1OCI+PC9hPjAwMDU4ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gRXJyb3IgdmFsdWUgZm9yIGZpbmQgcHJpbWl0aXZlPC9zcGFuPgorPGEgbmFtZT0ibDAwMDU5Ij48L2E+MDAwNTkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc2l6ZV90eXBlIG5wb3M7IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyA9IC0xOzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2MCI+PC9hPjAwMDYwIAorPGEgbmFtZT0ibDAwMDYxIj48L2E+MDAwNjEgCis8YSBuYW1lPSJsMDAwNjIiPjwvYT4wMDA2MiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sU3RyaW5nIGVtcHR5IGNvbnN0cnVjdG9yPC9zcGFuPgorPGEgbmFtZT0ibDAwMDYzIj48L2E+MDAwNjMgICAgIFRpWG1sU3RyaW5nICgpIDogcmVwXygmYW1wO251bGxyZXBfKQorPGEgbmFtZT0ibDAwMDY0Ij48L2E+MDAwNjQgICAgIHsKKzxhIG5hbWU9ImwwMDA2NSI+PC9hPjAwMDY1ICAgICB9Cis8YSBuYW1lPSJsMDAwNjYiPjwvYT4wMDA2NiAKKzxhIG5hbWU9ImwwMDA2NyI+PC9hPjAwMDY3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVGlYbWxTdHJpbmcgY29weSBjb25zdHJ1Y3Rvcjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2OCI+PC9hPjAwMDY4ICAgICBUaVhtbFN0cmluZyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBjb3B5KQorPGEgbmFtZT0ibDAwMDY5Ij48L2E+MDAwNjkgICAgIHsKKzxhIG5hbWU9ImwwMDA3MCI+PC9hPjAwMDcwICAgICAgICAgaW5pdChjb3B5Lmxlbmd0aCgpKTsKKzxhIG5hbWU9ImwwMDA3MSI+PC9hPjAwMDcxICAgICAgICAgbWVtY3B5KHN0YXJ0KCksIGNvcHkuZGF0YSgpLCBsZW5ndGgoKSk7Cis8YSBuYW1lPSJsMDAwNzIiPjwvYT4wMDA3MiAgICAgfQorPGEgbmFtZT0ibDAwMDczIj48L2E+MDAwNzMgCis8YSBuYW1lPSJsMDAwNzQiPjwvYT4wMDA3NCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sU3RyaW5nIGNvbnN0cnVjdG9yLCBiYXNlZCBvbiBhIHN0cmluZzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA3NSI+PC9hPjAwMDc1ICAgICBUaVhtbFN0cmluZyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogY29weSkKKzxhIG5hbWU9ImwwMDA3NiI+PC9hPjAwMDc2ICAgICB7Cis8YSBuYW1lPSJsMDAwNzciPjwvYT4wMDA3NyAgICAgICAgIGluaXQoIHN0YXRpY19jYXN0Jmx0O3NpemVfdHlwZSZndDsoIHN0cmxlbihjb3B5KSApKTsKKzxhIG5hbWU9ImwwMDA3OCI+PC9hPjAwMDc4ICAgICAgICAgbWVtY3B5KHN0YXJ0KCksIGNvcHksIGxlbmd0aCgpKTsKKzxhIG5hbWU9ImwwMDA3OSI+PC9hPjAwMDc5ICAgICB9Cis8YSBuYW1lPSJsMDAwODAiPjwvYT4wMDA4MCAKKzxhIG5hbWU9ImwwMDA4MSI+PC9hPjAwMDgxICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVGlYbWxTdHJpbmcgY29uc3RydWN0b3IsIGJhc2VkIG9uIGEgc3RyaW5nPC9zcGFuPgorPGEgbmFtZT0ibDAwMDgyIj48L2E+MDAwODIgICAgIFRpWG1sU3RyaW5nICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBzdHIsIHNpemVfdHlwZSBsZW4pCis8YSBuYW1lPSJsMDAwODMiPjwvYT4wMDA4MyAgICAgeworPGEgbmFtZT0ibDAwMDg0Ij48L2E+MDAwODQgICAgICAgICBpbml0KGxlbik7Cis8YSBuYW1lPSJsMDAwODUiPjwvYT4wMDA4NSAgICAgICAgIG1lbWNweShzdGFydCgpLCBzdHIsIGxlbik7Cis8YSBuYW1lPSJsMDAwODYiPjwvYT4wMDA4NiAgICAgfQorPGEgbmFtZT0ibDAwMDg3Ij48L2E+MDAwODcgCis8YSBuYW1lPSJsMDAwODgiPjwvYT4wMDA4OCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sU3RyaW5nIGRlc3RydWN0b3I8L3NwYW4+Cis8YSBuYW1lPSJsMDAwODkiPjwvYT4wMDA4OSAgICAgflRpWG1sU3RyaW5nICgpCis8YSBuYW1lPSJsMDAwOTAiPjwvYT4wMDA5MCAgICAgeworPGEgbmFtZT0ibDAwMDkxIj48L2E+MDAwOTEgICAgICAgICBxdWl0KCk7Cis8YSBuYW1lPSJsMDAwOTIiPjwvYT4wMDA5MiAgICAgfQorPGEgbmFtZT0ibDAwMDkzIj48L2E+MDAwOTMgCis8YSBuYW1lPSJsMDAwOTQiPjwvYT4wMDA5NCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vID0gb3BlcmF0b3I8L3NwYW4+Cis8YSBuYW1lPSJsMDAwOTUiPjwvYT4wMDA5NSAgICAgVGlYbWxTdHJpbmcmYW1wOyBvcGVyYXRvciA9ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBjb3B5KQorPGEgbmFtZT0ibDAwMDk2Ij48L2E+MDAwOTYgICAgIHsKKzxhIG5hbWU9ImwwMDA5NyI+PC9hPjAwMDk3ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGFzc2lnbiggY29weSwgKHNpemVfdHlwZSlzdHJsZW4oY29weSkpOworPGEgbmFtZT0ibDAwMDk4Ij48L2E+MDAwOTggICAgIH0KKzxhIG5hbWU9ImwwMDA5OSI+PC9hPjAwMDk5IAorPGEgbmFtZT0ibDAwMTAwIj48L2E+MDAxMDAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyA9IG9wZXJhdG9yPC9zcGFuPgorPGEgbmFtZT0ibDAwMTAxIj48L2E+MDAxMDEgICAgIFRpWG1sU3RyaW5nJmFtcDsgb3BlcmF0b3IgPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBjb3B5KQorPGEgbmFtZT0ibDAwMTAyIj48L2E+MDAxMDIgICAgIHsKKzxhIG5hbWU9ImwwMDEwMyI+PC9hPjAwMTAzICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGFzc2lnbihjb3B5LnN0YXJ0KCksIGNvcHkubGVuZ3RoKCkpOworPGEgbmFtZT0ibDAwMTA0Ij48L2E+MDAxMDQgICAgIH0KKzxhIG5hbWU9ImwwMDEwNSI+PC9hPjAwMTA1IAorPGEgbmFtZT0ibDAwMTA2Ij48L2E+MDAxMDYgCis8YSBuYW1lPSJsMDAxMDciPjwvYT4wMDEwNyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vICs9IG9wZXJhdG9yLiBNYXBzIHRvIGFwcGVuZDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEwOCI+PC9hPjAwMTA4ICAgICBUaVhtbFN0cmluZyZhbXA7IG9wZXJhdG9yICs9ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBzdWZmaXgpCis8YSBuYW1lPSJsMDAxMDkiPjwvYT4wMDEwOSAgICAgeworPGEgbmFtZT0ibDAwMTEwIj48L2E+MDAxMTAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYXBwZW5kKHN1ZmZpeCwgc3RhdGljX2Nhc3QmbHQ7c2l6ZV90eXBlJmd0Oyggc3RybGVuKHN1ZmZpeCkgKSk7Cis8YSBuYW1lPSJsMDAxMTEiPjwvYT4wMDExMSAgICAgfQorPGEgbmFtZT0ibDAwMTEyIj48L2E+MDAxMTIgCis8YSBuYW1lPSJsMDAxMTMiPjwvYT4wMDExMyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vICs9IG9wZXJhdG9yLiBNYXBzIHRvIGFwcGVuZDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDExNCI+PC9hPjAwMTE0ICAgICBUaVhtbFN0cmluZyZhbXA7IG9wZXJhdG9yICs9ICg8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+IHNpbmdsZSkKKzxhIG5hbWU9ImwwMDExNSI+PC9hPjAwMTE1ICAgICB7Cis8YSBuYW1lPSJsMDAxMTYiPjwvYT4wMDExNiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhcHBlbmQoJmFtcDtzaW5nbGUsIDEpOworPGEgbmFtZT0ibDAwMTE3Ij48L2E+MDAxMTcgICAgIH0KKzxhIG5hbWU9ImwwMDExOCI+PC9hPjAwMTE4IAorPGEgbmFtZT0ibDAwMTE5Ij48L2E+MDAxMTkgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyArPSBvcGVyYXRvci4gTWFwcyB0byBhcHBlbmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAxMjAiPjwvYT4wMDEyMCAgICAgVGlYbWxTdHJpbmcmYW1wOyBvcGVyYXRvciArPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBzdWZmaXgpCis8YSBuYW1lPSJsMDAxMjEiPjwvYT4wMDEyMSAgICAgeworPGEgbmFtZT0ibDAwMTIyIj48L2E+MDAxMjIgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYXBwZW5kKHN1ZmZpeC5kYXRhKCksIHN1ZmZpeC5sZW5ndGgoKSk7Cis8YSBuYW1lPSJsMDAxMjMiPjwvYT4wMDEyMyAgICAgfQorPGEgbmFtZT0ibDAwMTI0Ij48L2E+MDAxMjQgCis8YSBuYW1lPSJsMDAxMjUiPjwvYT4wMDEyNSAKKzxhIG5hbWU9ImwwMDEyNiI+PC9hPjAwMTI2ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gQ29udmVydCBhIFRpWG1sU3RyaW5nIGludG8gYSBudWxsLXRlcm1pbmF0ZWQgY2hhciAqPC9zcGFuPgorPGEgbmFtZT0ibDAwMTI3Ij48L2E+MDAxMjcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGNfc3RyICgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c3RyOyB9Cis8YSBuYW1lPSJsMDAxMjgiPjwvYT4wMDEyOCAKKzxhIG5hbWU9ImwwMDEyOSI+PC9hPjAwMTI5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gQ29udmVydCBhIFRpWG1sU3RyaW5nIGludG8gYSBjaGFyICogKG5lZWQgbm90IGJlIG51bGwgdGVybWluYXRlZCkuPC9zcGFuPgorPGEgbmFtZT0ibDAwMTMwIj48L2E+MDAxMzAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGRhdGEgKCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXBfLSZndDtzdHI7IH0KKzxhIG5hbWU9ImwwMDEzMSI+PC9hPjAwMTMxIAorPGEgbmFtZT0ibDAwMTMyIj48L2E+MDAxMzIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiBhIFRpWG1sU3RyaW5nPC9zcGFuPgorPGEgbmFtZT0ibDAwMTMzIj48L2E+MDAxMzMgICAgIHNpemVfdHlwZSBsZW5ndGggKCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXBfLSZndDtzaXplOyB9Cis8YSBuYW1lPSJsMDAxMzQiPjwvYT4wMDEzNCAKKzxhIG5hbWU9ImwwMDEzNSI+PC9hPjAwMTM1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gQWxpYXMgZm9yIGxlbmd0aCgpPC9zcGFuPgorPGEgbmFtZT0ibDAwMTM2Ij48L2E+MDAxMzYgICAgIHNpemVfdHlwZSBzaXplICgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c2l6ZTsgfQorPGEgbmFtZT0ibDAwMTM3Ij48L2E+MDAxMzcgCis8YSBuYW1lPSJsMDAxMzgiPjwvYT4wMDEzOCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIENoZWNrcyBpZiBhIFRpWG1sU3RyaW5nIGlzIGVtcHR5PC9zcGFuPgorPGEgbmFtZT0ibDAwMTM5Ij48L2E+MDAxMzkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gZW1wdHkgKCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXBfLSZndDtzaXplID09IDA7IH0KKzxhIG5hbWU9ImwwMDE0MCI+PC9hPjAwMTQwIAorPGEgbmFtZT0ibDAwMTQxIj48L2E+MDAxNDEgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBSZXR1cm4gY2FwYWNpdHkgb2Ygc3RyaW5nPC9zcGFuPgorPGEgbmFtZT0ibDAwMTQyIj48L2E+MDAxNDIgICAgIHNpemVfdHlwZSBjYXBhY2l0eSAoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O2NhcGFjaXR5OyB9Cis8YSBuYW1lPSJsMDAxNDMiPjwvYT4wMDE0MyAKKzxhIG5hbWU9ImwwMDE0NCI+PC9hPjAwMTQ0IAorPGEgbmFtZT0ibDAwMTQ1Ij48L2E+MDAxNDUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBzaW5nbGUgY2hhciBleHRyYWN0aW9uPC9zcGFuPgorPGEgbmFtZT0ibDAwMTQ2Ij48L2E+MDAxNDYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiZhbXA7IGF0IChzaXplX3R5cGUgaW5kZXgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE0NyI+PC9hPjAwMTQ3IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gICAgPC9zcGFuPnsKKzxhIG5hbWU9ImwwMDE0OCI+PC9hPjAwMTQ4ICAgICAgICAgYXNzZXJ0KCBpbmRleCAmbHQ7IGxlbmd0aCgpICk7Cis8YSBuYW1lPSJsMDAxNDkiPjwvYT4wMDE0OSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXBfLSZndDtzdHJbIGluZGV4IF07Cis8YSBuYW1lPSJsMDAxNTAiPjwvYT4wMDE1MCAgICAgfQorPGEgbmFtZT0ibDAwMTUxIj48L2E+MDAxNTEgCis8YSBuYW1lPSJsMDAxNTIiPjwvYT4wMDE1MiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFtdIG9wZXJhdG9yPC9zcGFuPgorPGEgbmFtZT0ibDAwMTUzIj48L2E+MDAxNTMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4mYW1wOyBvcGVyYXRvciBbXSAoc2l6ZV90eXBlIGluZGV4KTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3Q8L3NwYW4+Cis8YSBuYW1lPSJsMDAxNTQiPjwvYT4wMDE1NCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgIDwvc3Bhbj57Cis8YSBuYW1lPSJsMDAxNTUiPjwvYT4wMDE1NSAgICAgICAgIGFzc2VydCggaW5kZXggJmx0OyBsZW5ndGgoKSApOworPGEgbmFtZT0ibDAwMTU2Ij48L2E+MDAxNTYgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c3RyWyBpbmRleCBdOworPGEgbmFtZT0ibDAwMTU3Ij48L2E+MDAxNTcgICAgIH0KKzxhIG5hbWU9ImwwMDE1OCI+PC9hPjAwMTU4IAorPGEgbmFtZT0ibDAwMTU5Ij48L2E+MDAxNTkgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBmaW5kIGEgY2hhciBpbiBhIHN0cmluZy4gUmV0dXJuIFRpWG1sU3RyaW5nOjpucG9zIGlmIG5vdCBmb3VuZDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE2MCI+PC9hPjAwMTYwICAgICBzaXplX3R5cGUgZmluZCAoPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiBsb29rdXApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE2MSI+PC9hPjAwMTYxIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gICAgPC9zcGFuPnsKKzxhIG5hbWU9ImwwMDE2MiI+PC9hPjAwMTYyICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGZpbmQobG9va3VwLCAwKTsKKzxhIG5hbWU9ImwwMDE2MyI+PC9hPjAwMTYzICAgICB9Cis8YSBuYW1lPSJsMDAxNjQiPjwvYT4wMDE2NCAKKzxhIG5hbWU9ImwwMDE2NSI+PC9hPjAwMTY1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gZmluZCBhIGNoYXIgaW4gYSBzdHJpbmcgZnJvbSBhbiBvZmZzZXQuIFJldHVybiBUaVhtbFN0cmluZzo6bnBvcyBpZiBub3QgZm91bmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAxNjYiPjwvYT4wMDE2NiAgICAgc2l6ZV90eXBlIGZpbmQgKDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gdG9maW5kLCBzaXplX3R5cGUgb2Zmc2V0KTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3Q8L3NwYW4+Cis8YSBuYW1lPSJsMDAxNjciPjwvYT4wMDE2NyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgIDwvc3Bhbj57Cis8YSBuYW1lPSJsMDAxNjgiPjwvYT4wMDE2OCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+IChvZmZzZXQgJmd0Oz0gbGVuZ3RoKCkpIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBucG9zOworPGEgbmFtZT0ibDAwMTY5Ij48L2E+MDAxNjkgCis8YSBuYW1lPSJsMDAxNzAiPjwvYT4wMDE3MCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+Zm9yPC9zcGFuPiAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwID0gY19zdHIoKSArIG9mZnNldDsgKnAgIT0gPHNwYW4gY2xhc3M9ImNoYXJsaXRlcmFsIj4nXDAnPC9zcGFuPjsgKytwKQorPGEgbmFtZT0ibDAwMTcxIj48L2E+MDAxNzEgICAgICAgICB7Cis8YSBuYW1lPSJsMDAxNzIiPjwvYT4wMDE3MiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICgqcCA9PSB0b2ZpbmQpIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBzdGF0aWNfY2FzdCZsdDsgc2l6ZV90eXBlICZndDsoIHAgLSBjX3N0cigpICk7Cis8YSBuYW1lPSJsMDAxNzMiPjwvYT4wMDE3MyAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDE3NCI+PC9hPjAwMTc0ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IG5wb3M7Cis8YSBuYW1lPSJsMDAxNzUiPjwvYT4wMDE3NSAgICAgfQorPGEgbmFtZT0ibDAwMTc2Ij48L2E+MDAxNzYgCis8YSBuYW1lPSJsMDAxNzciPjwvYT4wMDE3NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBjbGVhciAoKQorPGEgbmFtZT0ibDAwMTc4Ij48L2E+MDAxNzggICAgIHsKKzxhIG5hbWU9ImwwMDE3OSI+PC9hPjAwMTc5ICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vTGVlOjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE4MCI+PC9hPjAwMTgwICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vVGhlIG9yaWdpbmFsIHdhcyBqdXN0IHRvbyBzdHJhbmdlLCB0aG91Z2ggY29ycmVjdDo8L3NwYW4+Cis8YSBuYW1lPSJsMDAxODEiPjwvYT4wMDE4MSAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyAgVGlYbWxTdHJpbmcoKS5zd2FwKCp0aGlzKTs8L3NwYW4+Cis8YSBuYW1lPSJsMDAxODIiPjwvYT4wMDE4MiAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vL0luc3RlYWQgdXNlIHRoZSBxdWl0ICZhbXA7IHJlLWluaXQ6PC9zcGFuPgorPGEgbmFtZT0ibDAwMTgzIj48L2E+MDAxODMgICAgICAgICBxdWl0KCk7Cis8YSBuYW1lPSJsMDAxODQiPjwvYT4wMDE4NCAgICAgICAgIGluaXQoMCwwKTsKKzxhIG5hbWU9ImwwMDE4NSI+PC9hPjAwMTg1ICAgICB9Cis8YSBuYW1lPSJsMDAxODYiPjwvYT4wMDE4NiAKKzxhIG5hbWU9ImwwMDE4NyI+PC9hPjAwMTg3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIEZ1bmN0aW9uIHRvIHJlc2VydmUgYSBiaWcgYW1vdW50IG9mIGRhdGEgd2hlbiB3ZSBrbm93IHdlJ2xsIG5lZWQgaXQuIEJlIGF3YXJlIHRoYXQgdGhpczwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE4OCI+PC9hPjAwMTg4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgIGZ1bmN0aW9uIERPRVMgTk9UIGNsZWFyIHRoZSBjb250ZW50IG9mIHRoZSBUaVhtbFN0cmluZyBpZiBhbnkgZXhpc3RzLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE4OSI+PC9hPjAwMTg5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgKi88L3NwYW4+Cis8YSBuYW1lPSJsMDAxOTAiPjwvYT4wMDE5MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiByZXNlcnZlIChzaXplX3R5cGUgY2FwKTsKKzxhIG5hbWU9ImwwMDE5MSI+PC9hPjAwMTkxIAorPGEgbmFtZT0ibDAwMTkyIj48L2E+MDAxOTIgICAgIFRpWG1sU3RyaW5nJmFtcDsgYXNzaWduICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHN0ciwgc2l6ZV90eXBlIGxlbik7Cis8YSBuYW1lPSJsMDAxOTMiPjwvYT4wMDE5MyAKKzxhIG5hbWU9ImwwMDE5NCI+PC9hPjAwMTk0ICAgICBUaVhtbFN0cmluZyZhbXA7IGFwcGVuZCAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBzdHIsIHNpemVfdHlwZSBsZW4pOworPGEgbmFtZT0ibDAwMTk1Ij48L2E+MDAxOTUgCis8YSBuYW1lPSJsMDAxOTYiPjwvYT4wMDE5NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBzd2FwIChUaVhtbFN0cmluZyZhbXA7IG90aGVyKQorPGEgbmFtZT0ibDAwMTk3Ij48L2E+MDAxOTcgICAgIHsKKzxhIG5hbWU9ImwwMDE5OCI+PC9hPjAwMTk4ICAgICAgICAgUmVwKiByID0gcmVwXzsKKzxhIG5hbWU9ImwwMDE5OSI+PC9hPjAwMTk5ICAgICAgICAgcmVwXyA9IG90aGVyLnJlcF87Cis8YSBuYW1lPSJsMDAyMDAiPjwvYT4wMDIwMCAgICAgICAgIG90aGVyLnJlcF8gPSByOworPGEgbmFtZT0ibDAwMjAxIj48L2E+MDAyMDEgICAgIH0KKzxhIG5hbWU9ImwwMDIwMiI+PC9hPjAwMjAyIAorPGEgbmFtZT0ibDAwMjAzIj48L2E+MDAyMDMgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Cis8YSBuYW1lPSJsMDAyMDQiPjwvYT4wMDIwNCAKKzxhIG5hbWU9ImwwMDIwNSI+PC9hPjAwMjA1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IGluaXQoc2l6ZV90eXBlIHN6KSB7IGluaXQoc3osIHN6KTsgfQorPGEgbmFtZT0ibDAwMjA2Ij48L2E+MDAyMDYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gc2V0X3NpemUoc2l6ZV90eXBlIHN6KSB7IHJlcF8tJmd0O3N0clsgcmVwXy0mZ3Q7c2l6ZSA9IHN6IF0gPSA8c3BhbiBjbGFzcz0iY2hhcmxpdGVyYWwiPidcMCc8L3NwYW4+OyB9Cis8YSBuYW1lPSJsMDAyMDciPjwvYT4wMDIwNyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogc3RhcnQoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3N0cjsgfQorPGEgbmFtZT0ibDAwMjA4Ij48L2E+MDAyMDggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGZpbmlzaCgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c3RyICsgcmVwXy0mZ3Q7c2l6ZTsgfQorPGEgbmFtZT0ibDAwMjA5Ij48L2E+MDAyMDkgCis8YSBuYW1lPSJsMDAyMTAiPjwvYT4wMDIxMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0cnVjdCA8L3NwYW4+UmVwCis8YSBuYW1lPSJsMDAyMTEiPjwvYT4wMDIxMSAgICAgeworPGEgbmFtZT0ibDAwMjEyIj48L2E+MDAyMTIgICAgICAgICBzaXplX3R5cGUgc2l6ZSwgY2FwYWNpdHk7Cis8YSBuYW1lPSJsMDAyMTMiPjwvYT4wMDIxMyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gc3RyWzFdOworPGEgbmFtZT0ibDAwMjE0Ij48L2E+MDAyMTQgICAgIH07Cis8YSBuYW1lPSJsMDAyMTUiPjwvYT4wMDIxNSAKKzxhIG5hbWU9ImwwMDIxNiI+PC9hPjAwMjE2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IGluaXQoc2l6ZV90eXBlIHN6LCBzaXplX3R5cGUgY2FwKQorPGEgbmFtZT0ibDAwMjE3Ij48L2E+MDAyMTcgICAgIHsKKzxhIG5hbWU9ImwwMDIxOCI+PC9hPjAwMjE4ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKGNhcCkKKzxhIG5hbWU9ImwwMDIxOSI+PC9hPjAwMjE5ICAgICAgICAgeworPGEgbmFtZT0ibDAwMjIwIj48L2E+MDAyMjAgICAgICAgICAgICAgcmVwXyA9IHN0YXRpY19jYXN0Jmx0O1JlcComZ3Q7KG9wZXJhdG9yIG5ldyg8c3BhbiBjbGFzcz0ia2V5d29yZCI+c2l6ZW9mPC9zcGFuPihSZXApICsgY2FwKSk7Cis8YSBuYW1lPSJsMDAyMjEiPjwvYT4wMDIyMSAgICAgICAgICAgICByZXBfLSZndDtzdHJbIHJlcF8tJmd0O3NpemUgPSBzeiBdID0gPHNwYW4gY2xhc3M9ImNoYXJsaXRlcmFsIj4nXDAnPC9zcGFuPjsKKzxhIG5hbWU9ImwwMDIyMiI+PC9hPjAwMjIyICAgICAgICAgICAgIHJlcF8tJmd0O2NhcGFjaXR5ID0gY2FwOworPGEgbmFtZT0ibDAwMjIzIj48L2E+MDAyMjMgICAgICAgICB9Cis8YSBuYW1lPSJsMDAyMjQiPjwvYT4wMDIyNCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+ZWxzZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDIyNSI+PC9hPjAwMjI1ICAgICAgICAgeworPGEgbmFtZT0ibDAwMjI2Ij48L2E+MDAyMjYgICAgICAgICAgICAgcmVwXyA9ICZhbXA7bnVsbHJlcF87Cis8YSBuYW1lPSJsMDAyMjciPjwvYT4wMDIyNyAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDIyOCI+PC9hPjAwMjI4ICAgICB9Cis8YSBuYW1lPSJsMDAyMjkiPjwvYT4wMDIyOSAKKzxhIG5hbWU9ImwwMDIzMCI+PC9hPjAwMjMwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IHF1aXQoKQorPGEgbmFtZT0ibDAwMjMxIj48L2E+MDAyMzEgICAgIHsKKzxhIG5hbWU9ImwwMDIzMiI+PC9hPjAwMjMyICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKHJlcF8gIT0gJmFtcDtudWxscmVwXykKKzxhIG5hbWU9ImwwMDIzMyI+PC9hPjAwMjMzICAgICAgICAgeworPGEgbmFtZT0ibDAwMjM0Ij48L2E+MDAyMzQgICAgICAgICAgICAgb3BlcmF0b3IgZGVsZXRlKHJlcF8pOworPGEgbmFtZT0ibDAwMjM1Ij48L2E+MDAyMzUgICAgICAgICB9Cis8YSBuYW1lPSJsMDAyMzYiPjwvYT4wMDIzNiAgICAgfQorPGEgbmFtZT0ibDAwMjM3Ij48L2E+MDAyMzcgCis8YSBuYW1lPSJsMDAyMzgiPjwvYT4wMDIzOCAgICAgUmVwICogcmVwXzsKKzxhIG5hbWU9ImwwMDIzOSI+PC9hPjAwMjM5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiBSZXAgbnVsbHJlcF87Cis8YSBuYW1lPSJsMDAyNDAiPjwvYT4wMDI0MCAKKzxhIG5hbWU9ImwwMDI0MSI+PC9hPjAwMjQxIH0gOworPGEgbmFtZT0ibDAwMjQyIj48L2E+MDAyNDIgCis8YSBuYW1lPSJsMDAyNDMiPjwvYT4wMDI0MyAKKzxhIG5hbWU9ImwwMDI0NCI+PC9hPjAwMjQ0IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3IgPT0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBiKQorPGEgbmFtZT0ibDAwMjQ1Ij48L2E+MDAyNDUgeworPGEgbmFtZT0ibDAwMjQ2Ij48L2E+MDAyNDYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAgICAoIGEubGVuZ3RoKCkgPT0gYi5sZW5ndGgoKSApICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gb3B0aW1pemF0aW9uIG9uIHNvbWUgcGxhdGZvcm1zPC9zcGFuPgorPGEgbmFtZT0ibDAwMjQ3Ij48L2E+MDAyNDcgICAgICAgICAgICAmYW1wOyZhbXA7ICggc3RyY21wKGEuY19zdHIoKSwgYi5jX3N0cigpKSA9PSAwICk7ICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBhY3R1YWwgY29tcGFyZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI0OCI+PC9hPjAwMjQ4IH0KKzxhIG5hbWU9ImwwMDI0OSI+PC9hPjAwMjQ5IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3IgJmx0OyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpCis8YSBuYW1lPSJsMDAyNTAiPjwvYT4wMDI1MCB7Cis8YSBuYW1lPSJsMDAyNTEiPjwvYT4wMDI1MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHN0cmNtcChhLmNfc3RyKCksIGIuY19zdHIoKSkgJmx0OyAwOworPGEgbmFtZT0ibDAwMjUyIj48L2E+MDAyNTIgfQorPGEgbmFtZT0ibDAwMjUzIj48L2E+MDAyNTMgCis8YSBuYW1lPSJsMDAyNTQiPjwvYT4wMDI1NCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yICE9ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gIShhID09IGIpOyB9Cis8YSBuYW1lPSJsMDAyNTUiPjwvYT4wMDI1NSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yICZndDsgICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYiAmbHQ7IGE7IH0KKzxhIG5hbWU9ImwwMDI1NiI+PC9hPjAwMjU2IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3IgJmx0Oz0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBiKSB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAhKGIgJmx0OyBhKTsgfQorPGEgbmFtZT0ibDAwMjU3Ij48L2E+MDAyNTcgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAmZ3Q7PSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICEoYSAmbHQ7IGIpOyB9Cis8YSBuYW1lPSJsMDAyNTgiPjwvYT4wMDI1OCAKKzxhIG5hbWU9ImwwMDI1OSI+PC9hPjAwMjU5IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3IgPT0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBiKSB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBzdHJjbXAoYS5jX3N0cigpLCBiKSA9PSAwOyB9Cis8YSBuYW1lPSJsMDAyNjAiPjwvYT4wMDI2MCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yID09ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYiA9PSBhOyB9Cis8YSBuYW1lPSJsMDAyNjEiPjwvYT4wMDI2MSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yICE9ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gIShhID09IGIpOyB9Cis8YSBuYW1lPSJsMDAyNjIiPjwvYT4wMDI2MiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yICE9ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gIShiID09IGEpOyB9Cis8YSBuYW1lPSJsMDAyNjMiPjwvYT4wMDI2MyAKKzxhIG5hbWU9ImwwMDI2NCI+PC9hPjAwMjY0IFRpWG1sU3RyaW5nIG9wZXJhdG9yICsgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBiKTsKKzxhIG5hbWU9ImwwMDI2NSI+PC9hPjAwMjY1IFRpWG1sU3RyaW5nIG9wZXJhdG9yICsgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBiKTsKKzxhIG5hbWU9ImwwMDI2NiI+PC9hPjAwMjY2IFRpWG1sU3RyaW5nIG9wZXJhdG9yICsgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBiKTsKKzxhIG5hbWU9ImwwMDI2NyI+PC9hPjAwMjY3IAorPGEgbmFtZT0ibDAwMjY4Ij48L2E+MDAyNjggCis8YSBuYW1lPSJsMDAyNjkiPjwvYT4wMDI2OSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Lyo8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNzAiPjwvYT4wMDI3MCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgVGlYbWxPdXRTdHJlYW0gaXMgYW4gZW11bGF0aW9uIG9mIHN0ZDo6b3N0cmVhbS4gSXQgaXMgYmFzZWQgb24gVGlYbWxTdHJpbmcuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjcxIj48L2E+MDAyNzEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIE9ubHkgdGhlIG9wZXJhdG9ycyB0aGF0IHdlIG5lZWQgZm9yIFRpbnlYTUwgaGF2ZSBiZWVuIGRldmVsb3BwZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjcyIj48L2E+MDAyNzIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiovPC9zcGFuPgorPGEgbmFtZT0ibDAwMjczIj48L2E+MDAyNzMgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj5UaVhtbE91dFN0cmVhbSA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IFRpWG1sU3RyaW5nCis8YSBuYW1lPSJsMDAyNzQiPjwvYT4wMDI3NCB7Cis8YSBuYW1lPSJsMDAyNzUiPjwvYT4wMDI3NSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA6Cis8YSBuYW1lPSJsMDAyNzYiPjwvYT4wMDI3NiAKKzxhIG5hbWU9ImwwMDI3NyI+PC9hPjAwMjc3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVGlYbWxPdXRTdHJlYW0gJmx0OyZsdDsgb3BlcmF0b3IuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjc4Ij48L2E+MDAyNzggICAgIFRpWG1sT3V0U3RyZWFtICZhbXA7IG9wZXJhdG9yICZsdDsmbHQ7ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGluKQorPGEgbmFtZT0ibDAwMjc5Ij48L2E+MDAyNzkgICAgIHsKKzxhIG5hbWU9ImwwMDI4MCI+PC9hPjAwMjgwICAgICAgICAgKjxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiArPSBpbjsKKzxhIG5hbWU9ImwwMDI4MSI+PC9hPjAwMjgxICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICo8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj47Cis8YSBuYW1lPSJsMDAyODIiPjwvYT4wMDI4MiAgICAgfQorPGEgbmFtZT0ibDAwMjgzIj48L2E+MDAyODMgCis8YSBuYW1lPSJsMDAyODQiPjwvYT4wMDI4NCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sT3V0U3RyZWFtICZsdDsmbHQ7IG9wZXJhdG9yLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI4NSI+PC9hPjAwMjg1ICAgICBUaVhtbE91dFN0cmVhbSAmYW1wOyBvcGVyYXRvciAmbHQ7Jmx0OyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogaW4pCis8YSBuYW1lPSJsMDAyODYiPjwvYT4wMDI4NiAgICAgeworPGEgbmFtZT0ibDAwMjg3Ij48L2E+MDAyODcgICAgICAgICAqPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICs9IGluOworPGEgbmFtZT0ibDAwMjg4Ij48L2E+MDAyODggICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKjxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPjsKKzxhIG5hbWU9ImwwMDI4OSI+PC9hPjAwMjg5ICAgICB9Cis8YSBuYW1lPSJsMDAyOTAiPjwvYT4wMDI5MCAKKzxhIG5hbWU9ImwwMDI5MSI+PC9hPjAwMjkxIH0gOworPGEgbmFtZT0ibDAwMjkyIj48L2E+MDAyOTIgCis8YSBuYW1lPSJsMDAyOTMiPjwvYT4wMDI5MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWYgIC8vIFRJWE1MX1NUUklOR19JTkNMVURFRDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI5NCI+PC9hPjAwMjk0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWYgIC8vIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8L3ByZT48L2Rpdj48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy90aW55eG1sXzhoLXNvdXJjZS5odG1sIGIvZG9jcy90aW55eG1sXzhoLXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MzY4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3Rpbnl4bWxfOGgtc291cmNlLmh0bWwKQEAgLTAsMCArMSwxMDM3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogdGlueXhtbC5oIFNvdXJjZSBGaWxlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+dGlueXhtbC5oPC9oMT48ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPjxhIG5hbWU9ImwwMDAwMSI+PC9hPjAwMDAxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwMiI+PC9hPjAwMDAyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij53d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWw8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDMiPjwvYT4wMDAwMyA8c3BhbiBjbGFzcz0iY29tbWVudCI+T3JpZ2luYWwgY29kZSAoMi4wIGFuZCBlYXJsaWVyICljb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBMZWUgVGhvbWFzb24gKHd3dy5ncmlubmluZ2xpemFyZC5jb20pPC9zcGFuPgorPGEgbmFtZT0ibDAwMDA0Ij48L2E+MDAwMDQgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwNSI+PC9hPjAwMDA1IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwNiI+PC9hPjAwMDA2IDxzcGFuIGNsYXNzPSJjb21tZW50Ij53YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55PC9zcGFuPgorPGEgbmFtZT0ibDAwMDA3Ij48L2E+MDAwMDcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPmRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDgiPjwvYT4wMDAwOCA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDA5Ij48L2E+MDAwMDkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPlBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxMCI+PC9hPjAwMDEwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij5wdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTEiPjwvYT4wMDAxMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+cmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczo8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTIiPjwvYT4wMDAxMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDEzIj48L2E+MDAwMTMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Q8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTQiPjwvYT4wMDAxNCA8c3BhbiBjbGFzcz0iY29tbWVudCI+bm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzPC9zcGFuPgorPGEgbmFtZT0ibDAwMDE1Ij48L2E+MDAwMTUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPnNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxNiI+PC9hPjAwMDE2IDxzcGFuIGNsYXNzPSJjb21tZW50Ij53b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxNyI+PC9hPjAwMDE3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTgiPjwvYT4wMDAxOCA8c3BhbiBjbGFzcz0iY29tbWVudCI+Mi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTkiPjwvYT4wMDAxOSA8c3BhbiBjbGFzcz0iY29tbWVudCI+bXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyMCI+PC9hPjAwMDIwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjEiPjwvYT4wMDAyMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+My4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlPC9zcGFuPgorPGEgbmFtZT0ibDAwMDIyIj48L2E+MDAwMjIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPmRpc3RyaWJ1dGlvbi48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjMiPjwvYT4wMDAyMyA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ki88L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjQiPjwvYT4wMDAyNCAKKzxhIG5hbWU9ImwwMDAyNSI+PC9hPjAwMDI1IAorPGEgbmFtZT0ibDAwMDI2Ij48L2E+MDAwMjYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmbmRlZiBUSU5ZWE1MX0lOQ0xVREVEPC9zcGFuPgorPGEgbmFtZT0ibDAwMDI3Ij48L2E+MDAwMjcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNkZWZpbmUgVElOWVhNTF9JTkNMVURFRDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyOCI+PC9hPjAwMDI4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyOSI+PC9hPjAwMDI5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpZmRlZiBfTVNDX1ZFUjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzMCI+PC9hPjAwMDMwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jcHJhZ21hIHdhcm5pbmcoIHB1c2ggKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzMSI+PC9hPjAwMDMxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0NTMwICk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzIiPjwvYT4wMDAzMiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDc4NiApPC9zcGFuPgorPGEgbmFtZT0ibDAwMDMzIj48L2E+MDAwMzMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzNCI+PC9hPjAwMDM0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzNSI+PC9hPjAwMDM1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpbmNsdWRlICZsdDtjdHlwZS5oJmd0Ozwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzNiI+PC9hPjAwMDM2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpbmNsdWRlICZsdDtzdGRpby5oJmd0Ozwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzNyI+PC9hPjAwMDM3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDs8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzgiPjwvYT4wMDAzOCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7c3RyaW5nLmgmZ3Q7PC9zcGFuPgorPGEgbmFtZT0ibDAwMDM5Ij48L2E+MDAwMzkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGUgJmx0O2Fzc2VydC5oJmd0Ozwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA0MCI+PC9hPjAwMDQwIAorPGEgbmFtZT0ibDAwMDQxIj48L2E+MDAwNDEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEhlbHAgb3V0IHdpbmRvd3M6PC9zcGFuPgorPGEgbmFtZT0ibDAwMDQyIj48L2E+MDAwNDIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmIGRlZmluZWQoIF9ERUJVRyApICZhbXA7JmFtcDsgIWRlZmluZWQoIERFQlVHICk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDMiPjwvYT4wMDA0MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2RlZmluZSBERUJVRzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA0NCI+PC9hPjAwMDQ0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDUiPjwvYT4wMDA0NSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDYiPjwvYT4wMDA0NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWYgZGVmaW5lZCggREVCVUcgKSAmYW1wOyZhbXA7IGRlZmluZWQoIF9NU0NfVkVSICk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDciPjwvYT4wMDA0NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGUgJmx0O3dpbmRvd3MuaCZndDs8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDgiPjwvYT4wMDA0OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZGVmaW5lIFRJWE1MX0xPRyBPdXRwdXREZWJ1Z1N0cmluZzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA0OSI+PC9hPjAwMDQ5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZWxzZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1MCI+PC9hPjAwMDUwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZGVmaW5lIFRJWE1MX0xPRyBwcmludGY8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTEiPjwvYT4wMDA1MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwMDUyIj48L2E+MDAwNTIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDUzIj48L2E+MDAwNTMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTQiPjwvYT4wMDA1NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpbmNsdWRlICZsdDtzdHJpbmcmZ3Q7PC9zcGFuPgorPGEgbmFtZT0ibDAwMDU1Ij48L2E+MDAwNTUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpbmNsdWRlICZsdDtpb3N0cmVhbSZndDs8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTYiPjwvYT4wMDA1NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2RlZmluZSBUSVhNTF9TVFJJTkcgICAgc3RkOjpzdHJpbmc8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTciPjwvYT4wMDA1NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNkZWZpbmUgVElYTUxfSVNUUkVBTSAgIHN0ZDo6aXN0cmVhbTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1OCI+PC9hPjAwMDU4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2RlZmluZSBUSVhNTF9PU1RSRUFNICAgc3RkOjpvc3RyZWFtPC9zcGFuPgorPGEgbmFtZT0ibDAwMDU5Ij48L2E+MDAwNTkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbHNlPC9zcGFuPgorPGEgbmFtZT0ibDAwMDYwIj48L2E+MDAwNjAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaW5jbHVkZSAidGlueXN0ci5oIjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2MSI+PC9hPjAwMDYxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZGVmaW5lIFRJWE1MX1NUUklORyAgICBUaVhtbFN0cmluZzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2MiI+PC9hPjAwMDYyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2RlZmluZSBUSVhNTF9PU1RSRUFNICAgVGlYbWxPdXRTdHJlYW08L3NwYW4+Cis8YSBuYW1lPSJsMDAwNjMiPjwvYT4wMDA2MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwMDY0Ij48L2E+MDAwNjQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDY1Ij48L2E+MDAwNjUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIERlcHJlY2F0ZWQgbGlicmFyeSBmdW5jdGlvbiBoZWxsLiBDb21waWxlcnMgd2FudCB0byB1c2UgdGhlPC9zcGFuPgorPGEgbmFtZT0ibDAwMDY2Ij48L2E+MDAwNjYgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5ldyBzYWZlIHZlcnNpb25zLiBUaGlzIHByb2JhYmx5IGRvZXNuJ3QgZnVsbHkgYWRkcmVzcyB0aGUgcHJvYmxlbSw8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNjciPjwvYT4wMDA2NyA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gYnV0IGl0IGdldHMgY2xvc2VyLiBUaGVyZSBhcmUgdG9vIG1hbnkgY29tcGlsZXJzIGZvciBtZSB0byBmdWxseTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2OCI+PC9hPjAwMDY4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB0ZXN0LiBJZiB5b3UgZ2V0IGNvbXBpbGF0aW9uIHRyb3VibGVzLCB1bmRlZmluZSBUSVhNTF9TQUZFPC9zcGFuPgorPGEgbmFtZT0ibDAwMDY5Ij48L2E+MDAwNjkgCis8YSBuYW1lPSJsMDAwNzAiPjwvYT4wMDA3MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZGVmaW5lIFRJWE1MX1NBRkUgICAgICAvLyBUaW55WG1sIGlzbid0IGZ1bGx5IGJ1ZmZlciBvdmVycnVuIHByb3RlY3RlZCwgc2FmZSBjb2RlLiBUaGlzIGlzIHdvcmsgaW4gcHJvZ3Jlc3MuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDcxIj48L2E+MDAwNzEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpZmRlZiBUSVhNTF9TQUZFPC9zcGFuPgorPGEgbmFtZT0ibDAwMDcyIj48L2E+MDAwNzIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWYgZGVmaW5lZChfTVNDX1ZFUikgJmFtcDsmYW1wOyAoX01TQ19WRVIgJmd0Oz0gMTIwMCApPC9zcGFuPgorPGEgbmFtZT0ibDAwMDczIj48L2E+MDAwNzMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIE1pY3Jvc29mdCB2aXN1YWwgc3R1ZGlvLCB2ZXJzaW9uIDYgYW5kIGhpZ2hlci48L3NwYW4+Cis8YSBuYW1lPSJsMDAwNzQiPjwvYT4wMDA3NCAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyNwcmFnbWEgbWVzc2FnZSggIlVzaW5nIF9zbiogZnVuY3Rpb25zLiIgKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA3NSI+PC9hPjAwMDc1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAgICAgI2RlZmluZSBUSVhNTF9TTlBSSU5URiBfc25wcmludGY8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNzYiPjwvYT4wMDA3NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICAgICAjZGVmaW5lIFRJWE1MX1NOU0NBTkYgIF9zbnNjYW5mPC9zcGFuPgorPGEgbmFtZT0ibDAwMDc3Ij48L2E+MDAwNzcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmYW1wOyZhbXA7IChfX0dOVUNfXyAmZ3Q7PSAzICk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNzgiPjwvYT4wMDA3OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gR0NDIHZlcnNpb24gMyBhbmQgaGlnaGVyLnM8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNzkiPjwvYT4wMDA3OSAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyN3YXJuaW5nKCAiVXNpbmcgc24qIGZ1bmN0aW9ucy4iICk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwODAiPjwvYT4wMDA4MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgICAgICNkZWZpbmUgVElYTUxfU05QUklOVEYgc25wcmludGY8L3NwYW4+Cis8YSBuYW1lPSJsMDAwODEiPjwvYT4wMDA4MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICAgICAjZGVmaW5lIFRJWE1MX1NOU0NBTkYgIHNuc2NhbmY8L3NwYW4+Cis8YSBuYW1lPSJsMDAwODIiPjwvYT4wMDA4MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA4MyI+PC9hPjAwMDgzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWYgIDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA4NCI+PC9hPjAwMDg0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA4NSI+PC9hPjAwMDg1IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjsKKzxhIG5hbWU9ImwwMDA4NiI+PC9hPjAwMDg2IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT47Cis8YSBuYW1lPSJsMDAwODciPjwvYT4wMDA4NyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+OworPGEgbmFtZT0ibDAwMDg4Ij48L2E+MDAwODggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPjsKKzxhIG5hbWU9ImwwMDA4OSI+PC9hPjAwMDg5IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+OworPGEgbmFtZT0ibDAwMDkwIj48L2E+MDAwOTAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPjsKKzxhIG5hbWU9ImwwMDA5MSI+PC9hPjAwMDkxIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjsKKzxhIG5hbWU9ImwwMDA5MiI+PC9hPjAwMDkyIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+VGlYbWxQYXJzaW5nRGF0YTsKKzxhIG5hbWU9ImwwMDA5MyI+PC9hPjAwMDkzIAorPGEgbmFtZT0ibDAwMDk0Ij48L2E+MDAwOTQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gVElYTUxfTUFKT1JfVkVSU0lPTiA9IDI7Cis8YSBuYW1lPSJsMDAwOTUiPjwvYT4wMDA5NSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBUSVhNTF9NSU5PUl9WRVJTSU9OID0gNDsKKzxhIG5hbWU9ImwwMDA5NiI+PC9hPjAwMDk2IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IFRJWE1MX1BBVENIX1ZFUlNJT04gPSAwOworPGEgbmFtZT0ibDAwMDk3Ij48L2E+MDAwOTcgCis8YSBuYW1lPSJsMDAwOTgiPjwvYT4wMDA5OCA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIEludGVybmFsIHN0cnVjdHVyZSBmb3IgdHJhY2tpbmcgbG9jYXRpb24gb2YgaXRlbXMgPC9zcGFuPgorPGEgbmFtZT0ibDAwMDk5Ij48L2E+MDAwOTkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICBpbiB0aGUgWE1MIGZpbGUuPC9zcGFuPgorPGEgbmFtZT0ibDAwMTAwIj48L2E+MDAxMDAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiovPC9zcGFuPgorPGEgbmFtZT0ibDAwMTAxIj48L2E+MDAxMDEgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0cnVjdCA8L3NwYW4+VGlYbWxDdXJzb3IKKzxhIG5hbWU9ImwwMDEwMiI+PC9hPjAwMTAyIHsKKzxhIG5hbWU9ImwwMDEwMyI+PC9hPjAwMTAzICAgICBUaVhtbEN1cnNvcigpICAgICAgIHsgQ2xlYXIoKTsgfQorPGEgbmFtZT0ibDAwMTA0Ij48L2E+MDAxMDQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ2xlYXIoKSAgICAgICAgeyByb3cgPSBjb2wgPSAtMTsgfQorPGEgbmFtZT0ibDAwMTA1Ij48L2E+MDAxMDUgCis8YSBuYW1lPSJsMDAxMDYiPjwvYT4wMDEwNiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IHJvdzsgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIDAgYmFzZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwMTA3Ij48L2E+MDAxMDcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBjb2w7ICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyAwIGJhc2VkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEwOCI+PC9hPjAwMTA4IH07Cis8YSBuYW1lPSJsMDAxMDkiPjwvYT4wMDEwOSAKKzxhIG5hbWU9ImwwMDExMCI+PC9hPjAwMTEwIAorPGEgbmFtZT0ibDAwMTExIj48L2E+MDAxMTEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIE9ubHkgdXNlZCBieSBBdHRyaWJ1dGU6OlF1ZXJ5IGZ1bmN0aW9uczwvc3Bhbj4KKzxhIG5hbWU9ImwwMDExMiI+PC9hPjAwMTEyIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5lbnVtPC9zcGFuPiAKKzxhIG5hbWU9ImwwMDExMyI+PC9hPjAwMTEzIHsgCis8YSBuYW1lPSJsMDAxMTQiPjwvYT4wMDExNCAgICAgVElYTUxfU1VDQ0VTUywKKzxhIG5hbWU9ImwwMDExNSI+PC9hPjAwMTE1ICAgICBUSVhNTF9OT19BVFRSSUJVVEUsCis8YSBuYW1lPSJsMDAxMTYiPjwvYT4wMDExNiAgICAgVElYTUxfV1JPTkdfVFlQRQorPGEgbmFtZT0ibDAwMTE3Ij48L2E+MDAxMTcgfTsKKzxhIG5hbWU9ImwwMDExOCI+PC9hPjAwMTE4IAorPGEgbmFtZT0ibDAwMTE5Ij48L2E+MDAxMTkgCis8YSBuYW1lPSJsMDAxMjAiPjwvYT4wMDEyMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVXNlZCBieSB0aGUgcGFyc2luZyByb3V0aW5lcy48L3NwYW4+Cis8YSBuYW1lPSJsMDAxMjEiPjwvYT4wMDEyMSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZW51bTwvc3Bhbj4gVGlYbWxFbmNvZGluZworPGEgbmFtZT0ibDAwMTIyIj48L2E+MDAxMjIgeworPGEgbmFtZT0ibDAwMTIzIj48L2E+MDAxMjMgICAgIFRJWE1MX0VOQ09ESU5HX1VOS05PV04sCis8YSBuYW1lPSJsMDAxMjQiPjwvYT4wMDEyNCAgICAgVElYTUxfRU5DT0RJTkdfVVRGOCwKKzxhIG5hbWU9ImwwMDEyNSI+PC9hPjAwMTI1ICAgICBUSVhNTF9FTkNPRElOR19MRUdBQ1kKKzxhIG5hbWU9ImwwMDEyNiI+PC9hPjAwMTI2IH07Cis8YSBuYW1lPSJsMDAxMjciPjwvYT4wMDEyNyAKKzxhIG5hbWU9ImwwMDEyOCI+PC9hPjAwMTI4IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxFbmNvZGluZyBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HID0gVElYTUxfRU5DT0RJTkdfVU5LTk9XTjsKKzxhIG5hbWU9ImwwMDEyOSI+PC9hPjAwMTI5IAorPGEgbmFtZT0ibDAwMTUyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPjAwMTUyPC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+Cis8YSBuYW1lPSJsMDAxNTMiPjwvYT4wMDE1MyB7Cis8YSBuYW1lPSJsMDAxNTQiPjwvYT4wMDE1NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjsKKzxhIG5hbWU9ImwwMDE1NSI+PC9hPjAwMTU1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+OworPGEgbmFtZT0ibDAwMTU2Ij48L2E+MDAxNTYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjsKKzxhIG5hbWU9ImwwMDE1NyI+PC9hPjAwMTU3IAorPGEgbmFtZT0ibDAwMTU4Ij48L2E+MDAxNTggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Cis8YSBuYW1lPSJsMDAxNTkiPjwvYT4wMDE1OSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4oKSA6ICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPigwKSB7fQorPGEgbmFtZT0ibDAwMTYwIj48L2E+MDAxNjAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiB+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4oKSAgICAgICAgICAgICAgICAgICAge30KKzxhIG5hbWU9ImwwMDE2MSI+PC9hPjAwMTYxIAorPGEgbmFtZT0ibDAwMTY3Ij48L2E+MDAxNjcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5QcmludDwvYT4oIEZJTEUqIGNmaWxlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZGVwdGggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3QgPC9zcGFuPj0gMDsKKzxhIG5hbWU9ImwwMDE2OCI+PC9hPjAwMTY4IAorPGEgbmFtZT0ibDAwMTc1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPjAwMTc1PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBjb25kZW5zZSApICAgICAgeyBjb25kZW5zZVdoaXRlU3BhY2UgPSBjb25kZW5zZTsgfQorPGEgbmFtZT0ibDAwMTc2Ij48L2E+MDAxNzYgCis8YSBuYW1lPSJsMDAxNzgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+MDAxNzg8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+KCkgICAgICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBjb25kZW5zZVdoaXRlU3BhY2U7IH0KKzxhIG5hbWU9ImwwMDE3OSI+PC9hPjAwMTc5IAorPGEgbmFtZT0ibDAwMTk4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPjAwMTk4PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGxvY2F0aW9uLnJvdyArIDE7IH0KKzxhIG5hbWU9ImwwMDE5OSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij4wMDE5OTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBsb2NhdGlvbi5jb2wgKyAxOyB9ICAgIAorPGEgbmFtZT0ibDAwMjAwIj48L2E+MDAyMDAgCis8YSBuYW1lPSJsMDAyMDEiPjwvYT4wMDIwMSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiAgU2V0VXNlckRhdGEoIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4qIHVzZXIgKSAgICAgICAgIHsgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPiA9IHVzZXI7IH0KKzxhIG5hbWU9ImwwMDIwMiI+PC9hPjAwMjAyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+KiBHZXRVc2VyRGF0YSgpICAgICAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjsgfQorPGEgbmFtZT0ibDAwMjAzIj48L2E+MDAyMDMgCis8YSBuYW1lPSJsMDAyMDQiPjwvYT4wMDIwNCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRhYmxlIHRoYXQgcmV0dXJzLCBmb3IgYSBnaXZlbiBsZWFkIGJ5dGUsIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXM8L3NwYW4+Cis8YSBuYW1lPSJsMDAyMDUiPjwvYT4wMDIwNSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGluIHRoZSBVVEYtOCBzZXF1ZW5jZS48L3NwYW4+Cis8YSBuYW1lPSJsMDAyMDYiPjwvYT4wMDIwNiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gdXRmOEJ5dGVUYWJsZVsyNTZdOworPGEgbmFtZT0ibDAwMjA3Ij48L2E+MDAyMDcgCis8YSBuYW1lPSJsMDAyMDgiPjwvYT4wMDIwOCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMiI+UGFyc2U8L2E+KCAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCAKKzxhIG5hbWU9ImwwMDIwOSI+PC9hPjAwMjA5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgCis8YSBuYW1lPSJsMDAyMTAiPjwvYT4wMDIxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qPSBUSVhNTF9FTkNPRElOR19VTktOT1dOICovPC9zcGFuPiApID0gMDsKKzxhIG5hbWU9ImwwMDIxMSI+PC9hPjAwMjExIAorPGEgbmFtZT0ibDAwMjEyIj48L2E+MDAyMTIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5lbnVtPC9zcGFuPgorPGEgbmFtZT0ibDAwMjEzIj48L2E+MDAyMTMgICAgIHsKKzxhIG5hbWU9ImwwMDIxNCI+PC9hPjAwMjE0ICAgICAgICAgVElYTUxfTk9fRVJST1IgPSAwLAorPGEgbmFtZT0ibDAwMjE1Ij48L2E+MDAyMTUgICAgICAgICBUSVhNTF9FUlJPUiwKKzxhIG5hbWU9ImwwMDIxNiI+PC9hPjAwMjE2ICAgICAgICAgVElYTUxfRVJST1JfT1BFTklOR19GSUxFLAorPGEgbmFtZT0ibDAwMjE3Ij48L2E+MDAyMTcgICAgICAgICBUSVhNTF9FUlJPUl9PVVRfT0ZfTUVNT1JZLAorPGEgbmFtZT0ibDAwMjE4Ij48L2E+MDAyMTggICAgICAgICBUSVhNTF9FUlJPUl9QQVJTSU5HX0VMRU1FTlQsCis8YSBuYW1lPSJsMDAyMTkiPjwvYT4wMDIxOSAgICAgICAgIFRJWE1MX0VSUk9SX0ZBSUxFRF9UT19SRUFEX0VMRU1FTlRfTkFNRSwKKzxhIG5hbWU9ImwwMDIyMCI+PC9hPjAwMjIwICAgICAgICAgVElYTUxfRVJST1JfUkVBRElOR19FTEVNRU5UX1ZBTFVFLAorPGEgbmFtZT0ibDAwMjIxIj48L2E+MDAyMjEgICAgICAgICBUSVhNTF9FUlJPUl9SRUFESU5HX0FUVFJJQlVURVMsCis8YSBuYW1lPSJsMDAyMjIiPjwvYT4wMDIyMiAgICAgICAgIFRJWE1MX0VSUk9SX1BBUlNJTkdfRU1QVFksCis8YSBuYW1lPSJsMDAyMjMiPjwvYT4wMDIyMyAgICAgICAgIFRJWE1MX0VSUk9SX1JFQURJTkdfRU5EX1RBRywKKzxhIG5hbWU9ImwwMDIyNCI+PC9hPjAwMjI0ICAgICAgICAgVElYTUxfRVJST1JfUEFSU0lOR19VTktOT1dOLAorPGEgbmFtZT0ibDAwMjI1Ij48L2E+MDAyMjUgICAgICAgICBUSVhNTF9FUlJPUl9QQVJTSU5HX0NPTU1FTlQsCis8YSBuYW1lPSJsMDAyMjYiPjwvYT4wMDIyNiAgICAgICAgIFRJWE1MX0VSUk9SX1BBUlNJTkdfREVDTEFSQVRJT04sCis8YSBuYW1lPSJsMDAyMjciPjwvYT4wMDIyNyAgICAgICAgIFRJWE1MX0VSUk9SX0RPQ1VNRU5UX0VNUFRZLAorPGEgbmFtZT0ibDAwMjI4Ij48L2E+MDAyMjggICAgICAgICBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLAorPGEgbmFtZT0ibDAwMjI5Ij48L2E+MDAyMjkgICAgICAgICBUSVhNTF9FUlJPUl9QQVJTSU5HX0NEQVRBLAorPGEgbmFtZT0ibDAwMjMwIj48L2E+MDAyMzAgCis8YSBuYW1lPSJsMDAyMzEiPjwvYT4wMDIzMSAgICAgICAgIFRJWE1MX0VSUk9SX1NUUklOR19DT1VOVAorPGEgbmFtZT0ibDAwMjMyIj48L2E+MDAyMzIgICAgIH07Cis8YSBuYW1lPSJsMDAyMzMiPjwvYT4wMDIzMyAKKzxhIG5hbWU9ImwwMDIzNCI+PC9hPjAwMjM0IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcm90ZWN0ZWQ8L3NwYW4+OgorPGEgbmFtZT0ibDAwMjM1Ij48L2E+MDAyMzUgCis8YSBuYW1lPSJsMDAyMzYiPjwvYT4wMDIzNiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFNlZSBTVExfU1RSSU5HX0JVRzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDIzNyI+PC9hPjAwMjM3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVXRpbGl0eSBjbGFzcyB0byBvdmVyY29tZSBhIGJ1Zy48L3NwYW4+Cis8YSBuYW1lPSJsMDAyMzgiPjwvYT4wMDIzOCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj5TdHJpbmdUb0J1ZmZlcgorPGEgbmFtZT0ibDAwMjM5Ij48L2E+MDAyMzkgICAgIHsKKzxhIG5hbWU9ImwwMDI0MCI+PC9hPjAwMjQwICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgorPGEgbmFtZT0ibDAwMjQxIj48L2E+MDAyNDEgICAgICAgICBTdHJpbmdUb0J1ZmZlciggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUSVhNTF9TVFJJTkcmYW1wOyBzdHIgKTsKKzxhIG5hbWU9ImwwMDI0MiI+PC9hPjAwMjQyICAgICAgICAgflN0cmluZ1RvQnVmZmVyKCk7Cis8YSBuYW1lPSJsMDAyNDMiPjwvYT4wMDI0MyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGJ1ZmZlcjsKKzxhIG5hbWU9ImwwMDI0NCI+PC9hPjAwMjQ0ICAgICB9OworPGEgbmFtZT0ibDAwMjQ1Ij48L2E+MDAyNDUgCis8YSBuYW1lPSJsMDAyNDYiPjwvYT4wMDI0NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiAgU2tpcFdoaXRlU3BhY2UoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiosIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKzxhIG5hbWU9ImwwMDI0NyI+PC9hPjAwMjQ3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+ICBJc1doaXRlU3BhY2UoIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gYyApICAgICAgCis8YSBuYW1lPSJsMDAyNDgiPjwvYT4wMDI0OCAgICAgeyAKKzxhIG5hbWU9ImwwMDI0OSI+PC9hPjAwMjQ5ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggaXNzcGFjZSggKDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dW5zaWduZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4pIGMgKSB8fCBjID09IDxzcGFuIGNsYXNzPSJjaGFybGl0ZXJhbCI+J1xuJzwvc3Bhbj4gfHwgYyA9PSA8c3BhbiBjbGFzcz0iY2hhcmxpdGVyYWwiPidccic8L3NwYW4+ICk7IAorPGEgbmFtZT0ibDAwMjUwIj48L2E+MDAyNTAgICAgIH0KKzxhIG5hbWU9ImwwMDI1MSI+PC9hPjAwMjUxIAorPGEgbmFtZT0ibDAwMjUyIj48L2E+MDAyNTIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbU91dCAoVElYTUxfT1NUUkVBTSAqKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3QgPC9zcGFuPj0gMDsKKzxhIG5hbWU9ImwwMDI1MyI+PC9hPjAwMjUzIAorPGEgbmFtZT0ibDAwMjU0Ij48L2E+MDAyNTQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwMjU1Ij48L2E+MDAyNTUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBTdHJlYW1XaGl0ZVNwYWNlKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworPGEgbmFtZT0ibDAwMjU2Ij48L2E+MDAyNTYgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IFN0cmVhbVRvKCBUSVhNTF9JU1RSRUFNICogaW4sIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBjaGFyYWN0ZXIsIFRJWE1MX1NUUklORyAqIHRhZyApOworPGEgbmFtZT0ibDAwMjU3Ij48L2E+MDAyNTcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI1OCI+PC9hPjAwMjU4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI1OSI+PC9hPjAwMjU5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIFJlYWRzIGFuIFhNTCBuYW1lIGludG8gdGhlIHN0cmluZyBwcm92aWRlZC4gUmV0dXJuczwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI2MCI+PC9hPjAwMjYwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgIGEgcG9pbnRlciBqdXN0IHBhc3QgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBuYW1lLDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI2MSI+PC9hPjAwMjYxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgIG9yIDAgaWYgdGhlIGZ1bmN0aW9uIGhhcyBhbiBlcnJvci48L3NwYW4+Cis8YSBuYW1lPSJsMDAyNjIiPjwvYT4wMDI2MiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICovPC9zcGFuPgorPGEgbmFtZT0ibDAwMjYzIj48L2E+MDAyNjMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUmVhZE5hbWUoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgVElYTUxfU1RSSU5HKiBuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDAyNjQiPjwvYT4wMDI2NCAKKzxhIG5hbWU9ImwwMDI2NSI+PC9hPjAwMjY1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIFJlYWRzIHRleHQuIFJldHVybnMgYSBwb2ludGVyIHBhc3QgdGhlIGdpdmVuIGVuZCB0YWcuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjY2Ij48L2E+MDAyNjYgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgV2lja2VkbHkgY29tcGxleCBvcHRpb25zLCBidXQgaXQga2VlcHMgdGhlIChzZW5zaXRpdmUpIGNvZGUgaW4gb25lIHBsYWNlLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI2NyI+PC9hPjAwMjY3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgKi88L3NwYW4+Cis8YSBuYW1lPSJsMDAyNjgiPjwvYT4wMDI2OCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBSZWFkVGV4dCggICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBpbiwgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHdoZXJlIHRvIHN0YXJ0PC9zcGFuPgorPGEgbmFtZT0ibDAwMjY5Ij48L2E+MDAyNjkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElYTUxfU1RSSU5HKiB0ZXh0LCAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB0aGUgc3RyaW5nIHJlYWQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNzAiPjwvYT4wMDI3MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGlnbm9yZVdoaXRlU3BhY2UsICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHdoZXRoZXIgdG8ga2VlcCB0aGUgd2hpdGUgc3BhY2U8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNzEiPjwvYT4wMDI3MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGVuZFRhZywgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gd2hhdCBlbmRzIHRoaXMgdGV4dDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI3MiI+PC9hPjAwMjcyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gaWdub3JlQ2FzZSwgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gd2hldGhlciB0byBpZ25vcmUgY2FzZSBpbiB0aGUgZW5kIHRhZzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI3MyI+PC9hPjAwMjczICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gdGhlIGN1cnJlbnQgZW5jb2Rpbmc8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNzQiPjwvYT4wMDI3NCAKKzxhIG5hbWU9ImwwMDI3NSI+PC9hPjAwMjc1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gSWYgYW4gZW50aXR5IGhhcyBiZWVuIGZvdW5kLCB0cmFuc2Zvcm0gaXQgaW50byBhIGNoYXJhY3Rlci48L3NwYW4+Cis8YSBuYW1lPSJsMDAyNzYiPjwvYT4wMDI3NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBHZXRFbnRpdHkoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogaW4sIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHZhbHVlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4qIGxlbmd0aCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAwMjc3Ij48L2E+MDAyNzcgCis8YSBuYW1lPSJsMDAyNzgiPjwvYT4wMDI3OCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEdldCBhIGNoYXJhY3Rlciwgd2hpbGUgaW50ZXJwcmV0aW5nIGVudGl0aWVzLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI3OSI+PC9hPjAwMjc5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVGhlIGxlbmd0aCBjYW4gYmUgZnJvbSAwIHRvIDQgYnl0ZXMuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjgwIj48L2E+MDAyODAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogR2V0Q2hhciggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBfdmFsdWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiogbGVuZ3RoLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKKzxhIG5hbWU9ImwwMDI4MSI+PC9hPjAwMjgxICAgICB7Cis8YSBuYW1lPSJsMDAyODIiPjwvYT4wMDI4MiAgICAgICAgIGFzc2VydCggcCApOworPGEgbmFtZT0ibDAwMjgzIj48L2E+MDAyODMgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQorPGEgbmFtZT0ibDAwMjg0Ij48L2E+MDAyODQgICAgICAgICB7Cis8YSBuYW1lPSJsMDAyODUiPjwvYT4wMDI4NSAgICAgICAgICAgICAqbGVuZ3RoID0gdXRmOEJ5dGVUYWJsZVsgKigoPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj51bnNpZ25lZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiopcCkgXTsKKzxhIG5hbWU9ImwwMDI4NiI+PC9hPjAwMjg2ICAgICAgICAgICAgIGFzc2VydCggKmxlbmd0aCAmZ3Q7PSAwICZhbXA7JmFtcDsgKmxlbmd0aCAmbHQ7IDUgKTsKKzxhIG5hbWU9ImwwMDI4NyI+PC9hPjAwMjg3ICAgICAgICAgfQorPGEgbmFtZT0ibDAwMjg4Ij48L2E+MDAyODggICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmVsc2U8L3NwYW4+Cis8YSBuYW1lPSJsMDAyODkiPjwvYT4wMDI4OSAgICAgICAgIHsKKzxhIG5hbWU9ImwwMDI5MCI+PC9hPjAwMjkwICAgICAgICAgICAgICpsZW5ndGggPSAxOworPGEgbmFtZT0ibDAwMjkxIj48L2E+MDAyOTEgICAgICAgICB9Cis8YSBuYW1lPSJsMDAyOTIiPjwvYT4wMDI5MiAKKzxhIG5hbWU9ImwwMDI5MyI+PC9hPjAwMjkzICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCAqbGVuZ3RoID09IDEgKQorPGEgbmFtZT0ibDAwMjk0Ij48L2E+MDAyOTQgICAgICAgICB7Cis8YSBuYW1lPSJsMDAyOTUiPjwvYT4wMDI5NSAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoICpwID09IDxzcGFuIGNsYXNzPSJjaGFybGl0ZXJhbCI+JyZhbXA7Jzwvc3Bhbj4gKQorPGEgbmFtZT0ibDAwMjk2Ij48L2E+MDAyOTYgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBHZXRFbnRpdHkoIHAsIF92YWx1ZSwgbGVuZ3RoLCBlbmNvZGluZyApOworPGEgbmFtZT0ibDAwMjk3Ij48L2E+MDAyOTcgICAgICAgICAgICAgKl92YWx1ZSA9ICpwOworPGEgbmFtZT0ibDAwMjk4Ij48L2E+MDAyOTggICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHArMTsKKzxhIG5hbWU9ImwwMDI5OSI+PC9hPjAwMjk5ICAgICAgICAgfQorPGEgbmFtZT0ibDAwMzAwIj48L2E+MDAzMDAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmVsc2U8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggKmxlbmd0aCApCis8YSBuYW1lPSJsMDAzMDEiPjwvYT4wMDMwMSAgICAgICAgIHsKKzxhIG5hbWU9ImwwMDMwMiI+PC9hPjAwMzAyICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vL3N0cm5jcHkoIF92YWx1ZSwgcCwgKmxlbmd0aCApOyAgICAvLyBsb3RzIG9mIGNvbXBpbGVycyBkb24ndCBsaWtlIHRoaXMgZnVuY3Rpb24gKHVuc2FmZSksPC9zcGFuPgorPGEgbmFtZT0ibDAwMzAzIj48L2E+MDAzMDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGFuZCB0aGUgbnVsbCB0ZXJtaW5hdG9yIGlzbid0IG5lZWRlZDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDMwNCI+PC9hPjAwMzA0ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+Zm9yPC9zcGFuPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGk9MDsgcFtpXSAmYW1wOyZhbXA7IGkmbHQ7Kmxlbmd0aDsgKytpICkgeworPGEgbmFtZT0ibDAwMzA1Ij48L2E+MDAzMDUgICAgICAgICAgICAgICAgIF92YWx1ZVtpXSA9IHBbaV07Cis8YSBuYW1lPSJsMDAzMDYiPjwvYT4wMDMwNiAgICAgICAgICAgICB9Cis8YSBuYW1lPSJsMDAzMDciPjwvYT4wMDMwNyAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcCArICgqbGVuZ3RoKTsKKzxhIG5hbWU9ImwwMDMwOCI+PC9hPjAwMzA4ICAgICAgICAgfQorPGEgbmFtZT0ibDAwMzA5Ij48L2E+MDAzMDkgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmVsc2U8L3NwYW4+Cis8YSBuYW1lPSJsMDAzMTAiPjwvYT4wMDMxMCAgICAgICAgIHsKKzxhIG5hbWU9ImwwMDMxMSI+PC9hPjAwMzExICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBOb3QgdmFsaWQgdGV4dC48L3NwYW4+Cis8YSBuYW1lPSJsMDAzMTIiPjwvYT4wMDMxMiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gMDsKKzxhIG5hbWU9ImwwMDMxMyI+PC9hPjAwMzEzICAgICAgICAgfQorPGEgbmFtZT0ibDAwMzE0Ij48L2E+MDAzMTQgICAgIH0KKzxhIG5hbWU9ImwwMDMxNSI+PC9hPjAwMzE1IAorPGEgbmFtZT0ibDAwMzE2Ij48L2E+MDAzMTYgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBQdXRzIGEgc3RyaW5nIHRvIGEgc3RyZWFtLCBleHBhbmRpbmcgZW50aXRpZXMgYXMgaXQgZ29lcy48L3NwYW4+Cis8YSBuYW1lPSJsMDAzMTciPjwvYT4wMDMxNyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIE5vdGUgdGhpcyBzaG91bGQgbm90IGNvbnRpYW4gdGhlICcmbHQ7JywgJyZndDsnLCBldGMsIG9yIHRoZXkgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGVudGl0aWVzITwvc3Bhbj4KKzxhIG5hbWU9ImwwMDMxOCI+PC9hPjAwMzE4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFB1dFN0cmluZyggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUSVhNTF9TVFJJTkcmYW1wOyBzdHIsIFRJWE1MX09TVFJFQU0qIG91dCApOworPGEgbmFtZT0ibDAwMzE5Ij48L2E+MDAzMTkgCis8YSBuYW1lPSJsMDAzMjAiPjwvYT4wMDMyMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBQdXRTdHJpbmcoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVElYTUxfU1RSSU5HJmFtcDsgc3RyLCBUSVhNTF9TVFJJTkcqIG91dCApOworPGEgbmFtZT0ibDAwMzIxIj48L2E+MDAzMjEgCis8YSBuYW1lPSJsMDAzMjIiPjwvYT4wMDMyMiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IGNoYXJhY3RlcnMgaW4gdGhlIHN0cmVhbSBhcmUgYW55IG9mIHRoZSBlbmRUYWcgc2VxdWVuY2VzLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDMyMyI+PC9hPjAwMzIzICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gSWdub3JlIGNhc2Ugb25seSB3b3JrcyBmb3IgZW5nbGlzaCwgYW5kIHNob3VsZCBvbmx5IGJlIHJlbGllZCBvbiB3aGVuIGNvbXBhcmluZzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDMyNCI+PC9hPjAwMzI0ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gdG8gRW5nbGlzaCB3b3JkczogU3RyaW5nRXF1YWwoIHAsICJ2ZXJzaW9uIiwgdHJ1ZSApIGlzIGZpbmUuPC9zcGFuPgorPGEgbmFtZT0ibDAwMzI1Ij48L2E+MDAzMjUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gU3RyaW5nRXF1YWwoICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwKKzxhIG5hbWU9ImwwMDMyNiI+PC9hPjAwMzI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBlbmRUYWcsCis8YSBuYW1lPSJsMDAzMjciPjwvYT4wMDMyNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gaWdub3JlQ2FzZSwKKzxhIG5hbWU9ImwwMDMyOCI+PC9hPjAwMzI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAwMzI5Ij48L2E+MDAzMjkgCis8YSBuYW1lPSJsMDAzMzAiPjwvYT4wMDMzMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBlcnJvclN0cmluZ1sgVElYTUxfRVJST1JfU1RSSU5HX0NPVU5UIF07Cis8YSBuYW1lPSJsMDAzMzEiPjwvYT4wMDMzMSAKKzxhIG5hbWU9ImwwMDMzMiI+PC9hPjAwMzMyICAgICBUaVhtbEN1cnNvciBsb2NhdGlvbjsKKzxhIG5hbWU9ImwwMDMzMyI+PC9hPjAwMzMzIAorPGEgbmFtZT0ibDAwMzM1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPjAwMzM1PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiogICAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT47Cis8YSBuYW1lPSJsMDAzMzYiPjwvYT4wMDMzNiAgICAgCis8YSBuYW1lPSJsMDAzMzciPjwvYT4wMDMzNyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIE5vbmUgb2YgdGhlc2UgbWV0aG9kcyBhcmUgcmVsaWFibGUgZm9yIGFueSBsYW5ndWFnZSBleGNlcHQgRW5nbGlzaC48L3NwYW4+Cis8YSBuYW1lPSJsMDAzMzgiPjwvYT4wMDMzOCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEdvb2QgZm9yIGFwcHJveGltYXRpb24sIG5vdCBncmVhdCBmb3IgYWNjdXJhY3kuPC9zcGFuPgorPGEgbmFtZT0ibDAwMzM5Ij48L2E+MDAzMzkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBJc0FscGhhKCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnVuc2lnbmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+IGFueUJ5dGUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKzxhIG5hbWU9ImwwMDM0MCI+PC9hPjAwMzQwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gSXNBbHBoYU51bSggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj51bnNpZ25lZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiBhbnlCeXRlLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDAzNDEiPjwvYT4wMDM0MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IFRvTG93ZXIoIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiB2LCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKKzxhIG5hbWU9ImwwMDM0MiI+PC9hPjAwMzQyICAgICB7Cis8YSBuYW1lPSJsMDAzNDMiPjwvYT4wMDM0MyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCis8YSBuYW1lPSJsMDAzNDQiPjwvYT4wMDM0NCAgICAgICAgIHsKKzxhIG5hbWU9ImwwMDM0NSI+PC9hPjAwMzQ1ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggdiAmbHQ7IDEyOCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB0b2xvd2VyKCB2ICk7Cis8YSBuYW1lPSJsMDAzNDYiPjwvYT4wMDM0NiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdjsKKzxhIG5hbWU9ImwwMDM0NyI+PC9hPjAwMzQ3ICAgICAgICAgfQorPGEgbmFtZT0ibDAwMzQ4Ij48L2E+MDAzNDggICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmVsc2U8L3NwYW4+Cis8YSBuYW1lPSJsMDAzNDkiPjwvYT4wMDM0OSAgICAgICAgIHsKKzxhIG5hbWU9ImwwMDM1MCI+PC9hPjAwMzUwICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB0b2xvd2VyKCB2ICk7Cis8YSBuYW1lPSJsMDAzNTEiPjwvYT4wMDM1MSAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDM1MiI+PC9hPjAwMzUyICAgICB9Cis8YSBuYW1lPSJsMDAzNTMiPjwvYT4wMDM1MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDb252ZXJ0VVRGMzJUb1VURjgoIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dW5zaWduZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+bG9uZzwvc3Bhbj4gaW5wdXQsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIG91dHB1dCwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+KiBsZW5ndGggKTsKKzxhIG5hbWU9ImwwMDM1NCI+PC9hPjAwMzU0IAorPGEgbmFtZT0ibDAwMzU1Ij48L2E+MDAzNTUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgorPGEgbmFtZT0ibDAwMzU2Ij48L2E+MDAzNTYgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+JmFtcDsgKTsgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBub3QgaW1wbGVtZW50ZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwMzU3Ij48L2E+MDAzNTcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+JmFtcDsgYmFzZSApOyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbm90IGFsbG93ZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwMzU4Ij48L2E+MDAzNTggCis8YSBuYW1lPSJsMDAzNTkiPjwvYT4wMDM1OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0cnVjdCA8L3NwYW4+RW50aXR5Cis8YSBuYW1lPSJsMDAzNjAiPjwvYT4wMDM2MCAgICAgeworPGEgbmFtZT0ibDAwMzYxIj48L2E+MDAzNjEgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qICAgICBzdHI7Cis8YSBuYW1lPSJsMDAzNjIiPjwvYT4wMDM2MiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dW5zaWduZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiAgICBzdHJMZW5ndGg7Cis8YSBuYW1lPSJsMDAzNjMiPjwvYT4wMDM2MyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gICAgICAgICAgICBjaHI7Cis8YSBuYW1lPSJsMDAzNjQiPjwvYT4wMDM2NCAgICAgfTsKKzxhIG5hbWU9ImwwMDM2NSI+PC9hPjAwMzY1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZW51bTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDM2NiI+PC9hPjAwMzY2ICAgICB7Cis8YSBuYW1lPSJsMDAzNjciPjwvYT4wMDM2NyAgICAgICAgIE5VTV9FTlRJVFkgPSA1LAorPGEgbmFtZT0ibDAwMzY4Ij48L2E+MDAzNjggICAgICAgICBNQVhfRU5USVRZX0xFTkdUSCA9IDYKKzxhIG5hbWU9ImwwMDM2OSI+PC9hPjAwMzY5IAorPGEgbmFtZT0ibDAwMzcwIj48L2E+MDAzNzAgICAgIH07Cis8YSBuYW1lPSJsMDAzNzEiPjwvYT4wMDM3MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gRW50aXR5IGVudGl0eVsgTlVNX0VOVElUWSBdOworPGEgbmFtZT0ibDAwMzcyIj48L2E+MDAzNzIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gY29uZGVuc2VXaGl0ZVNwYWNlOworPGEgbmFtZT0ibDAwMzczIj48L2E+MDAzNzMgfTsKKzxhIG5hbWU9ImwwMDM3NCI+PC9hPjAwMzc0IAorPGEgbmFtZT0ibDAwMzc1Ij48L2E+MDAzNzUgCis8YSBuYW1lPSJsMDAzODIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+MDAzODI8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPgorPGEgbmFtZT0ibDAwMzgzIj48L2E+MDAzODMgeworPGEgbmFtZT0ibDAwMzg0Ij48L2E+MDAzODQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjsKKzxhIG5hbWU9ImwwMDM4NSI+PC9hPjAwMzg1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+OworPGEgbmFtZT0ibDAwMzg2Ij48L2E+MDAzODYgCis8YSBuYW1lPSJsMDAzODciPjwvYT4wMDM4NyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMDM4OCI+PC9hPjAwMzg4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTCAgICA8L3NwYW4+Cis8YSBuYW1lPSJsMDAzODkiPjwvYT4wMDM4OSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDAzOTMiPjwvYT4wMDM5MyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IHN0ZDo6aXN0cmVhbSZhbXA7IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24yIj5vcGVyYXRvciAmZ3Q7Jmd0OyA8L2E+KHN0ZDo6aXN0cmVhbSZhbXA7IGluLCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IGJhc2UpOworPGEgbmFtZT0ibDAwMzk0Ij48L2E+MDAzOTQgCis8YSBuYW1lPSJsMDA0MTEiPjwvYT4wMDQxMSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IHN0ZDo6b3N0cmVhbSZhbXA7IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7IDwvYT4oc3RkOjpvc3RyZWFtJmFtcDsgb3V0LCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgYmFzZSk7Cis8YSBuYW1lPSJsMDA0MTIiPjwvYT4wMDQxMiAKKzxhIG5hbWU9ImwwMDQxNCI+PC9hPjAwNDE0ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMyI+b3BlcmF0b3ImbHQ7Jmx0OyA8L2E+KHN0ZDo6c3RyaW5nJmFtcDsgb3V0LCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgYmFzZSApOworPGEgbmFtZT0ibDAwNDE1Ij48L2E+MDA0MTUgCis8YSBuYW1lPSJsMDA0MTYiPjwvYT4wMDQxNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2Vsc2U8L3NwYW4+Cis8YSBuYW1lPSJsMDA0MTciPjwvYT4wMDQxNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVXNlZCBpbnRlcm5hbGx5LCBub3QgcGFydCBvZiB0aGUgcHVibGljIEFQSS48L3NwYW4+Cis8YSBuYW1lPSJsMDA0MTgiPjwvYT4wMDQxOCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IFRJWE1MX09TVFJFQU0mYW1wOyA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMyI+b3BlcmF0b3ImbHQ7Jmx0OyA8L2E+KFRJWE1MX09TVFJFQU0mYW1wOyBvdXQsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyBiYXNlKTsKKzxhIG5hbWU9ImwwMDQxOSI+PC9hPjAwNDE5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA0MjAiPjwvYT4wMDQyMCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA0MjQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+MDA0MjQ8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZW51bTwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPk5vZGVUeXBlPC9hPgorPGEgbmFtZT0ibDAwNDI1Ij48L2E+MDA0MjUgICAgIHsKKzxhIG5hbWU9ImwwMDQyNiI+PC9hPjAwNDI2ICAgICAgICAgRE9DVU1FTlQsCis8YSBuYW1lPSJsMDA0MjciPjwvYT4wMDQyNyAgICAgICAgIEVMRU1FTlQsCis8YSBuYW1lPSJsMDA0MjgiPjwvYT4wMDQyOCAgICAgICAgIENPTU1FTlQsCis8YSBuYW1lPSJsMDA0MjkiPjwvYT4wMDQyOSAgICAgICAgIFVOS05PV04sCis8YSBuYW1lPSJsMDA0MzAiPjwvYT4wMDQzMCAgICAgICAgIFRFWFQsCis8YSBuYW1lPSJsMDA0MzEiPjwvYT4wMDQzMSAgICAgICAgIERFQ0xBUkFUSU9OLAorPGEgbmFtZT0ibDAwNDMyIj48L2E+MDA0MzIgICAgICAgICBUWVBFQ09VTlQKKzxhIG5hbWU9ImwwMDQzMyI+PC9hPjAwNDMzICAgICB9OworPGEgbmFtZT0ibDAwNDM0Ij48L2E+MDA0MzQgCis8YSBuYW1lPSJsMDA0MzUiPjwvYT4wMDQzNSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IH48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPigpOworPGEgbmFtZT0ibDAwNDM2Ij48L2E+MDA0MzYgCis8YSBuYW1lPSJsMDA0NDkiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+MDA0NDk8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZTwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHZhbHVlLmNfc3RyICgpOyB9Cis8YSBuYW1lPSJsMDA0NTAiPjwvYT4wMDQ1MCAKKzxhIG5hbWU9ImwwMDQ1MSI+PC9hPjAwNDUxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDQ1MiI+PC9hPjAwNDUyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDQ1NiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj4wMDQ1NjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB2YWx1ZTsgfQorPGEgbmFtZT0ibDAwNDU3Ij48L2E+MDA0NTcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDQ1OCI+PC9hPjAwNDU4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDQ2OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj4wMDQ2ODwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPig8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBfdmFsdWUpIHsgdmFsdWUgPSBfdmFsdWU7fQorPGEgbmFtZT0ibDAwNDY5Ij48L2E+MDA0NjkgCis8YSBuYW1lPSJsMDA0NzAiPjwvYT4wMDQ3MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA0NzEiPjwvYT4wMDQ3MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA0NzIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNCI+MDA0NzI8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKSAgICAKKzxhIG5hbWU9ImwwMDQ3MyI+PC9hPjAwNDczICAgICB7ICAgICAKKzxhIG5hbWU9ImwwMDQ3NCI+PC9hPjAwNDc0ICAgICAgICAgU3RyaW5nVG9CdWZmZXIgYnVmKCBfdmFsdWUgKTsKKzxhIG5hbWU9ImwwMDQ3NSI+PC9hPjAwNDc1ICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPiggYnVmLmJ1ZmZlciA/IGJ1Zi5idWZmZXIgOiA8c3BhbiBjbGFzcz0ic3RyaW5nbGl0ZXJhbCI+IiI8L3NwYW4+ICk7ICAgICAgIAorPGEgbmFtZT0ibDAwNDc2Ij48L2E+MDA0NzYgICAgIH0gICAKKzxhIG5hbWU9ImwwMDQ3NyI+PC9hPjAwNDc3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA0NzgiPjwvYT4wMDQ3OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA0ODAiPjwvYT4wMDQ4MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNSI+Q2xlYXI8L2E+KCk7Cis8YSBuYW1lPSJsMDA0ODEiPjwvYT4wMDQ4MSAKKzxhIG5hbWU9ImwwMDQ4MyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij4wMDQ4MzwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpICAgICAgICAgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHBhcmVudDsgfQorPGEgbmFtZT0ibDAwNDg0Ij48L2E+MDA0ODQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBwYXJlbnQ7IH0KKzxhIG5hbWU9ImwwMDQ4NSI+PC9hPjAwNDg1IAorPGEgbmFtZT0ibDAwNDg2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPjAwNDg2PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgY29uc3QgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gZmlyc3RDaGlsZDsgfSAgICAgIAorPGEgbmFtZT0ibDAwNDg3Ij48L2E+MDA0ODcgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oKSAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gZmlyc3RDaGlsZDsgfQorPGEgbmFtZT0ibDAwNDg4Ij48L2E+MDA0ODggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OyAgICAgICAgICAgIAorPGEgbmFtZT0ibDAwNDg5Ij48L2E+MDA0ODkgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlICk7ICAgICAgICAgICAgICAgICAgICAgICAgCis8YSBuYW1lPSJsMDA0OTAiPjwvYT4wMDQ5MCAKKzxhIG5hbWU9ImwwMDQ5MSI+PC9hPjAwNDkxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBMYXN0Q2hpbGQoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBsYXN0Q2hpbGQ7IH0gICAgICAgCis8YSBuYW1lPSJsMDA0OTIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPjAwNDkyPC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIExhc3RDaGlsZCgpICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBsYXN0Q2hpbGQ7IH0KKzxhIG5hbWU9ImwwMDQ5MyI+PC9hPjAwNDkzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBMYXN0Q2hpbGQoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsgICAgICAgICAKKzxhIG5hbWU9ImwwMDQ5NCI+PC9hPjAwNDk0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogTGFzdENoaWxkKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSApOyAKKzxhIG5hbWU9ImwwMDQ5NSI+PC9hPjAwNDk1IAorPGEgbmFtZT0ibDAwNDk2Ij48L2E+MDA0OTYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwNDk3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij4wMDQ5NzwvYT4gPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgIDwvc3Bhbj57ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgICAgfSAgIAorPGEgbmFtZT0ibDAwNDk4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE3Ij4wMDQ5ODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKSAgICAgICAgICAgICAgeyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7ICAgIH0gICAKKzxhIG5hbWU9ImwwMDQ5OSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+MDA0OTk8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBMYXN0Q2hpbGQoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICA8L3NwYW4+eyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBMYXN0Q2hpbGQgKF92YWx1ZS5jX3N0ciAoKSk7IH0gICAKKzxhIG5hbWU9ImwwMDUwMCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+MDA1MDA8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogTGFzdENoaWxkKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICkgICAgICAgICAgICAgICB7ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IExhc3RDaGlsZCAoX3ZhbHVlLmNfc3RyICgpKTsgfSAgIAorPGEgbmFtZT0ibDAwNTAxIj48L2E+MDA1MDEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDUwMiI+PC9hPjAwNTAyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDUxOSI+PC9hPjAwNTE5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHByZXZpb3VzICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDUyMCI+PC9hPjAwNTIwICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogcHJldmlvdXMgKTsKKzxhIG5hbWU9ImwwMDUyMSI+PC9hPjAwNTIxIAorPGEgbmFtZT0ibDAwNTIzIj48L2E+MDA1MjMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHByZXZpb3VzICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDUyNCI+PC9hPjAwNTI0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSwgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHByZXZpb3VzICk7Cis8YSBuYW1lPSJsMDA1MjUiPjwvYT4wMDUyNSAKKzxhIG5hbWU9ImwwMDUyNiI+PC9hPjAwNTI2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDUyNyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+MDA1Mjc8L2E+IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBwcmV2aW91cyApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgPC9zcGFuPnsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+IChfdmFsdWUuY19zdHIgKCksIHByZXZpb3VzKTsgfSAgIAorPGEgbmFtZT0ibDAwNTI4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij4wMDUyODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUsIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBwcmV2aW91cyApIHsgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4gKF92YWx1ZS5jX3N0ciAoKSwgcHJldmlvdXMpOyB9ICAgCis8YSBuYW1lPSJsMDA1MjkiPjwvYT4wMDUyOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwNTMwIj48L2E+MDA1MzAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNTM0Ij48L2E+MDA1MzQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPkluc2VydEVuZENoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IGFkZFRoaXMgKTsKKzxhIG5hbWU9ImwwMDUzNSI+PC9hPjAwNTM1IAorPGEgbmFtZT0ibDAwNTM2Ij48L2E+MDA1MzYgCis8YSBuYW1lPSJsMDA1NDYiPjwvYT4wMDU0NiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNyI+TGlua0VuZENoaWxkPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIGFkZFRoaXMgKTsKKzxhIG5hbWU9ImwwMDU0NyI+PC9hPjAwNTQ3IAorPGEgbmFtZT0ibDAwNTUxIj48L2E+MDA1NTEgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIGJlZm9yZVRoaXMsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyBhZGRUaGlzICk7Cis8YSBuYW1lPSJsMDA1NTIiPjwvYT4wMDU1MiAKKzxhIG5hbWU9ImwwMDU1NiI+PC9hPjAwNTU2ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPiggIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBhZnRlclRoaXMsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyBhZGRUaGlzICk7Cis8YSBuYW1lPSJsMDA1NTciPjwvYT4wMDU1NyAKKzxhIG5hbWU9ImwwMDU2MSI+PC9hPjAwNTYxICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogcmVwbGFjZVRoaXMsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyB3aXRoVGhpcyApOworPGEgbmFtZT0ibDAwNTYyIj48L2E+MDA1NjIgCis8YSBuYW1lPSJsMDA1NjQiPjwvYT4wMDU2NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHJlbW92ZVRoaXMgKTsKKzxhIG5hbWU9ImwwMDU2NSI+PC9hPjAwNTY1IAorPGEgbmFtZT0ibDAwNTY3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj4wMDU2NzwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBwcmV2OyB9Cis8YSBuYW1lPSJsMDA1NjgiPjwvYT4wMDU2OCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPigpICAgICAgICAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcHJldjsgfQorPGEgbmFtZT0ibDAwNTY5Ij48L2E+MDA1NjkgCis8YSBuYW1lPSJsMDA1NzEiPjwvYT4wMDU3MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA1NzIiPjwvYT4wMDU3MiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogKTsKKzxhIG5hbWU9ImwwMDU3MyI+PC9hPjAwNTczIAorPGEgbmFtZT0ibDAwNTc0Ij48L2E+MDA1NzQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwNTc1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM2Ij4wMDU3NTwvYT4gPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+IChfdmFsdWUuY19zdHIgKCkpOyAgIH0gICAKKzxhIG5hbWU9ImwwMDU3NiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+MDA1NzY8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICkgICAgICAgICAgICAgeyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7ICAgfSAgIAorPGEgbmFtZT0ibDAwNTc3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM4Ij4wMDU3NzwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICA8L3NwYW4+eyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgICB9ICAgCis8YSBuYW1lPSJsMDA1NzgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzkiPjAwNTc4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlKSAgICAgICAgICAgICAgICAgIHsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7ICAgfSAgIAorPGEgbmFtZT0ibDAwNTc5Ij48L2E+MDA1NzkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDU4MCI+PC9hPjAwNTgwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDU4MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+MDA1ODI8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbmV4dDsgfQorPGEgbmFtZT0ibDAwNTgzIj48L2E+MDA1ODMgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IG5leHQ7IH0KKzxhIG5hbWU9ImwwMDU4NCI+PC9hPjAwNTg0IAorPGEgbmFtZT0ibDAwNTg2Ij48L2E+MDA1ODYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA1ODciPjwvYT4wMDU4NyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiApOworPGEgbmFtZT0ibDAwNTg4Ij48L2E+MDA1ODggCis8YSBuYW1lPSJsMDA1OTMiPjwvYT4wMDU5MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDU5NCI+PC9hPjAwNTk0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCk7Cis8YSBuYW1lPSJsMDA1OTUiPjwvYT4wMDU5NSAKKzxhIG5hbWU9ImwwMDYwMCI+PC9hPjAwNjAwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDYwMSI+PC9hPjAwNjAxICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiApOworPGEgbmFtZT0ibDAwNjAyIj48L2E+MDA2MDIgCis8YSBuYW1lPSJsMDA2MDMiPjwvYT4wMDYwMyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA2MDQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDgiPjAwNjA0PC9hPiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgIDwvc3Bhbj57ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgICAgfSAgIAorPGEgbmFtZT0ibDAwNjA1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij4wMDYwNTwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUpICAgICAgICAgICAgICAgIHsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+IChfdmFsdWUuY19zdHIgKCkpOyAgICB9ICAgCis8YSBuYW1lPSJsMDA2MDYiPjwvYT4wMDYwNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwNjA3Ij48L2E+MDA2MDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNjA5Ij48L2E+MDA2MDkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDYxMCI+PC9hPjAwNjEwICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oKTsKKzxhIG5hbWU9ImwwMDYxMSI+PC9hPjAwNjExIAorPGEgbmFtZT0ibDAwNjEzIj48L2E+MDA2MTMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA2MTQiPjwvYT4wMDYxNCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSApOworPGEgbmFtZT0ibDAwNjE1Ij48L2E+MDA2MTUgCis8YSBuYW1lPSJsMDA2MTYiPjwvYT4wMDYxNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA2MTciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPjAwNjE3PC9hPiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgIDwvc3Bhbj57ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+IChfdmFsdWUuY19zdHIgKCkpOyB9ICAgCis8YSBuYW1lPSJsMDA2MTgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTUiPjAwNjE4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICkgICAgICAgICAgICAgICAgeyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgfSAgIAorPGEgbmFtZT0ibDAwNjE5Ij48L2E+MDA2MTkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDYyMCI+PC9hPjAwNjIwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDYyNSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+MDA2MjU8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHR5cGU7IH0KKzxhIG5hbWU9ImwwMDYyNiI+PC9hPjAwNjI2IAorPGEgbmFtZT0ibDAwNjMwIj48L2E+MDA2MzAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU3Ij5HZXREb2N1bWVudDwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNjMxIj48L2E+MDA2MzEgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCk7Cis8YSBuYW1lPSJsMDA2MzIiPjwvYT4wMDYzMiAKKzxhIG5hbWU9ImwwMDYzNCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1OSI+MDA2MzQ8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1OSI+Tm9DaGlsZHJlbjwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gIWZpcnN0Q2hpbGQ7IH0KKzxhIG5hbWU9ImwwMDYzNSI+PC9hPjAwNjM1IAorPGEgbmFtZT0ibDAwNjM2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYwIj4wMDYzNjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYwIj5Ub0RvY3VtZW50PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgIGNvbnN0ICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gRE9DVU1FTlQgKSA/ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAorPGEgbmFtZT0ibDAwNjM3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj4wMDYzNzwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBFTEVNRU5UICApID8gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qKSAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDYzOCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+MDA2Mzg8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+KiAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gQ09NTUVOVCAgKSA/ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+KikgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCis8YSBuYW1lPSJsMDA2MzkiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPjAwNjM5PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiogIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IFVOS05PV04gICkgPyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiopICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAorPGEgbmFtZT0ibDAwNjQwIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij4wMDY0MDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4qICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgICBjb25zdCAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBURVhUICAgICApID8gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4qKSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDY0MSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+MDA2NDE8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IERFQ0xBUkFUSU9OICkgPyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+KikgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDY0MiI+PC9hPjAwNjQyIAorPGEgbmFtZT0ibDAwNjQzIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij4wMDY0MzwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBET0NVTUVOVCApID8gKDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAorPGEgbmFtZT0ibDAwNjQ0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij4wMDY0NDwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj5Ub0VsZW1lbnQ8L2E+KCkgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IEVMRU1FTlQgICkgPyAoPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qKSAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDY0NSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+MDA2NDU8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiogIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPigpICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBDT01NRU5UICApID8gKDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+KikgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCis8YSBuYW1lPSJsMDA2NDYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPjAwNjQ2PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4qICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4oKSAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gVU5LTk9XTiAgKSA/ICg8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiopICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAorPGEgbmFtZT0ibDAwNjQ3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj4wMDY0NzwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+KiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IFRFWFQgICAgICkgPyAoPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4qKSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDY0OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+MDA2NDg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+KCkgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gREVDTEFSQVRJT04gKSA/ICg8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+KikgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDY0OSI+PC9hPjAwNjQ5IAorPGEgbmFtZT0ibDAwNjUzIj48L2E+MDA2NTMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcyIj5DbG9uZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3QgPC9zcGFuPj0gMDsKKzxhIG5hbWU9ImwwMDY1NCI+PC9hPjAwNjU0IAorPGEgbmFtZT0ibDAwNjU1Ij48L2E+MDA2NTUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByb3RlY3RlZDwvc3Bhbj46Cis8YSBuYW1lPSJsMDA2NTYiPjwvYT4wMDY1NiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gX3R5cGUgKTsKKzxhIG5hbWU9ImwwMDY1NyI+PC9hPjAwNjU3IAorPGEgbmFtZT0ibDAwNjU4Ij48L2E+MDA2NTggICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBDb3B5IHRvIHRoZSBhbGxvY2F0ZWQgb2JqZWN0LiBTaGFyZWQgZnVuY3Rpb25hbGl0eSBiZXR3ZWVuIENsb25lLCBDb3B5IGNvbnN0cnVjdG9yLDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDY1OSI+PC9hPjAwNjU5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gYW5kIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDY2MCI+PC9hPjAwNjYwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENvcHlUbyggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHRhcmdldCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA2NjEiPjwvYT4wMDY2MSAKKzxhIG5hbWU9ImwwMDY2MiI+PC9hPjAwNjYyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDY2MyI+PC9hPjAwNjYzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaGUgcmVhbCB3b3JrIG9mIHRoZSBpbnB1dCBvcGVyYXRvci48L3NwYW4+Cis8YSBuYW1lPSJsMDA2NjQiPjwvYT4wMDY2NCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNKiBpbiwgVElYTUxfU1RSSU5HKiB0YWcgKSA9IDA7Cis8YSBuYW1lPSJsMDA2NjUiPjwvYT4wMDY2NSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwNjY2Ij48L2E+MDA2NjYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNjY3Ij48L2E+MDA2NjcgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBGaWd1cmUgb3V0IHdoYXQgaXMgYXQgKnAsIGFuZCBwYXJzZSBpdC4gUmV0dXJucyBudWxsIGlmIGl0IGlzIG5vdCBhbiB4bWwgbm9kZS48L3NwYW4+Cis8YSBuYW1lPSJsMDA2NjgiPjwvYT4wMDY2OCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIElkZW50aWZ5KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHN0YXJ0LCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDA2NjkiPjwvYT4wMDY2OSAKKzxhIG5hbWU9ImwwMDY3MCI+PC9hPjAwNjcwICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogICAgICBwYXJlbnQ7Cis8YSBuYW1lPSJsMDA2NzEiPjwvYT4wMDY3MSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPk5vZGVUeXBlPC9hPiAgICAgICAgdHlwZTsKKzxhIG5hbWU9ImwwMDY3MiI+PC9hPjAwNjcyIAorPGEgbmFtZT0ibDAwNjczIj48L2E+MDA2NzMgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiAgICAgIGZpcnN0Q2hpbGQ7Cis8YSBuYW1lPSJsMDA2NzQiPjwvYT4wMDY3NCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qICAgICAgbGFzdENoaWxkOworPGEgbmFtZT0ibDAwNjc1Ij48L2E+MDA2NzUgCis8YSBuYW1lPSJsMDA2NzYiPjwvYT4wMDY3NiAgICAgVElYTUxfU1RSSU5HICAgIHZhbHVlOworPGEgbmFtZT0ibDAwNjc3Ij48L2E+MDA2NzcgCis8YSBuYW1lPSJsMDA2NzgiPjwvYT4wMDY3OCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qICAgICAgcHJldjsKKzxhIG5hbWU9ImwwMDY3OSI+PC9hPjAwNjc5ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogICAgICBuZXh0OworPGEgbmFtZT0ibDAwNjgwIj48L2E+MDA2ODAgCis8YSBuYW1lPSJsMDA2ODEiPjwvYT4wMDY4MSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Cis8YSBuYW1lPSJsMDA2ODIiPjwvYT4wMDY4MiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyApOyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5vdCBpbXBsZW1lbnRlZC48L3NwYW4+Cis8YSBuYW1lPSJsMDA2ODMiPjwvYT4wMDY4MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyBiYXNlICk7ICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBub3QgYWxsb3dlZC48L3NwYW4+Cis8YSBuYW1lPSJsMDA2ODQiPjwvYT4wMDY4NCB9OworPGEgbmFtZT0ibDAwNjg1Ij48L2E+MDA2ODUgCis8YSBuYW1lPSJsMDA2ODYiPjwvYT4wMDY4NiAKKzxhIG5hbWU9ImwwMDY5NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPjAwNjk0PC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+Cis8YSBuYW1lPSJsMDA2OTUiPjwvYT4wMDY5NSB7Cis8YSBuYW1lPSJsMDA2OTYiPjwvYT4wMDY5NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj5UaVhtbEF0dHJpYnV0ZVNldDsKKzxhIG5hbWU9ImwwMDY5NyI+PC9hPjAwNjk3IAorPGEgbmFtZT0ibDAwNjk4Ij48L2E+MDA2OTggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Cis8YSBuYW1lPSJsMDA3MDAiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EwIj4wMDcwMDwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTAiPlRpWG1sQXR0cmlidXRlPC9hPigpIDogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4oKQorPGEgbmFtZT0ibDAwNzAxIj48L2E+MDA3MDEgICAgIHsKKzxhIG5hbWU9ImwwMDcwMiI+PC9hPjAwNzAyICAgICAgICAgZG9jdW1lbnQgPSAwOworPGEgbmFtZT0ibDAwNzAzIj48L2E+MDA3MDMgICAgICAgICBwcmV2ID0gbmV4dCA9IDA7Cis8YSBuYW1lPSJsMDA3MDQiPjwvYT4wMDcwNCAgICAgfQorPGEgbmFtZT0ibDAwNzA1Ij48L2E+MDA3MDUgCis8YSBuYW1lPSJsMDA3MDYiPjwvYT4wMDcwNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA3MDciPjwvYT4wMDcwNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA3MDgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExIj4wMDcwODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTAiPlRpWG1sQXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF9uYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICkKKzxhIG5hbWU9ImwwMDcwOSI+PC9hPjAwNzA5ICAgICB7Cis8YSBuYW1lPSJsMDA3MTAiPjwvYT4wMDcxMCAgICAgICAgIG5hbWUgPSBfbmFtZTsKKzxhIG5hbWU9ImwwMDcxMSI+PC9hPjAwNzExICAgICAgICAgdmFsdWUgPSBfdmFsdWU7Cis8YSBuYW1lPSJsMDA3MTIiPjwvYT4wMDcxMiAgICAgICAgIGRvY3VtZW50ID0gMDsKKzxhIG5hbWU9ImwwMDcxMyI+PC9hPjAwNzEzICAgICAgICAgcHJldiA9IG5leHQgPSAwOworPGEgbmFtZT0ibDAwNzE0Ij48L2E+MDA3MTQgICAgIH0KKzxhIG5hbWU9ImwwMDcxNSI+PC9hPjAwNzE1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA3MTYiPjwvYT4wMDcxNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA3MTgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyIj4wMDcxODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTAiPlRpWG1sQXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogX25hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIF92YWx1ZSApCis8YSBuYW1lPSJsMDA3MTkiPjwvYT4wMDcxOSAgICAgeworPGEgbmFtZT0ibDAwNzIwIj48L2E+MDA3MjAgICAgICAgICBuYW1lID0gX25hbWU7Cis8YSBuYW1lPSJsMDA3MjEiPjwvYT4wMDcyMSAgICAgICAgIHZhbHVlID0gX3ZhbHVlOworPGEgbmFtZT0ibDAwNzIyIj48L2E+MDA3MjIgICAgICAgICBkb2N1bWVudCA9IDA7Cis8YSBuYW1lPSJsMDA3MjMiPjwvYT4wMDcyMyAgICAgICAgIHByZXYgPSBuZXh0ID0gMDsKKzxhIG5hbWU9ImwwMDcyNCI+PC9hPjAwNzI0ICAgICB9Cis8YSBuYW1lPSJsMDA3MjUiPjwvYT4wMDcyNSAKKzxhIG5hbWU9ImwwMDcyNiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTMiPjAwNzI2PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMyI+TmFtZTwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gIGNvbnN0ICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBuYW1lLmNfc3RyICgpOyB9ICAgICAgIAorPGEgbmFtZT0ibDAwNzI3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNCI+MDA3Mjc8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E0Ij5WYWx1ZTwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHZhbHVlLmNfc3RyICgpOyB9ICAgICAgCis8YSBuYW1lPSJsMDA3MjgiPjwvYT4wMDcyOCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+ICAgICAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTUiPkludFZhbHVlPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKzxhIG5hbWU9ImwwMDcyOSI+PC9hPjAwNzI5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4gICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNiI+RG91YmxlVmFsdWU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorPGEgbmFtZT0ibDAwNzMwIj48L2E+MDA3MzAgCis8YSBuYW1lPSJsMDA3NDAiPjwvYT4wMDc0MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTciPlF1ZXJ5SW50VmFsdWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4qIF92YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA3NDIiPjwvYT4wMDc0MiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTgiPlF1ZXJ5RG91YmxlVmFsdWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4qIF92YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA3NDMiPjwvYT4wMDc0MyAKKzxhIG5hbWU9ImwwMDc0NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTkiPjAwNzQ0PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E5Ij5TZXROYW1lPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBfbmFtZSApICAgeyBuYW1lID0gX25hbWU7IH0gICAgICAgICAgICAgICAKKzxhIG5hbWU9ImwwMDc0NSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEwIj4wMDc0NTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTAiPlNldFZhbHVlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBfdmFsdWUgKSB7IHZhbHVlID0gX3ZhbHVlOyB9ICAgICAgICAgICAgIAorPGEgbmFtZT0ibDAwNzQ2Ij48L2E+MDA3NDYgCis8YSBuYW1lPSJsMDA3NDciPjwvYT4wMDc0NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMSI+U2V0SW50VmFsdWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gX3ZhbHVlICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorPGEgbmFtZT0ibDAwNzQ4Ij48L2E+MDA3NDggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTIiPlNldERvdWJsZVZhbHVlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+IF92YWx1ZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKzxhIG5hbWU9ImwwMDc0OSI+PC9hPjAwNzQ5IAorPGEgbmFtZT0ibDAwNzUwIj48L2E+MDA3NTAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwNzUxIj48L2E+MDA3NTEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNzUyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTMiPjAwNzUyPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E5Ij5TZXROYW1lPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF9uYW1lICkgICAgCis8YSBuYW1lPSJsMDA3NTMiPjwvYT4wMDc1MyAgICAgeyAgIAorPGEgbmFtZT0ibDAwNzU0Ij48L2E+MDA3NTQgICAgICAgICBTdHJpbmdUb0J1ZmZlciBidWYoIF9uYW1lICk7Cis8YSBuYW1lPSJsMDA3NTUiPjwvYT4wMDc1NSAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTkiPlNldE5hbWU8L2E+ICggYnVmLmJ1ZmZlciA/IGJ1Zi5idWZmZXIgOiA8c3BhbiBjbGFzcz0ic3RyaW5nbGl0ZXJhbCI+ImVycm9yIjwvc3Bhbj4gKTsgIAorPGEgbmFtZT0ibDAwNzU2Ij48L2E+MDA3NTYgICAgIH0KKzxhIG5hbWU9ImwwMDc1OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE0Ij4wMDc1ODwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTAiPlNldFZhbHVlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApICAKKzxhIG5hbWU9ImwwMDc1OSI+PC9hPjAwNzU5ICAgICB7ICAgCis8YSBuYW1lPSJsMDA3NjAiPjwvYT4wMDc2MCAgICAgICAgIFN0cmluZ1RvQnVmZmVyIGJ1ZiggX3ZhbHVlICk7Cis8YSBuYW1lPSJsMDA3NjEiPjwvYT4wMDc2MSAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEwIj5TZXRWYWx1ZTwvYT4oIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogPHNwYW4gY2xhc3M9InN0cmluZ2xpdGVyYWwiPiJlcnJvciI8L3NwYW4+ICk7ICAKKzxhIG5hbWU9ImwwMDc2MiI+PC9hPjAwNzYyICAgICB9Cis8YSBuYW1lPSJsMDA3NjMiPjwvYT4wMDc2MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwNzY0Ij48L2E+MDA3NjQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNzY2Ij48L2E+MDA3NjYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNSI+TmV4dDwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNzY3Ij48L2E+MDA3NjcgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTUiPk5leHQ8L2E+KCk7Cis8YSBuYW1lPSJsMDA3NjkiPjwvYT4wMDc2OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE3Ij5QcmV2aW91czwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNzcwIj48L2E+MDA3NzAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTciPlByZXZpb3VzPC9hPigpOworPGEgbmFtZT0ibDAwNzcxIj48L2E+MDA3NzEgCis8YSBuYW1lPSJsMDA3NzIiPjwvYT4wMDc3MiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvcj09KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiZhbXA7IHJocyApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmhzLjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjcjEiPm5hbWU8L2E+ID09IG5hbWU7IH0KKzxhIG5hbWU9ImwwMDc3MyI+PC9hPjAwNzczICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yJmx0OyggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4mYW1wOyByaHMgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gIGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBuYW1lICZsdDsgcmhzLjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjcjEiPm5hbWU8L2E+OyB9Cis8YSBuYW1lPSJsMDA3NzQiPjwvYT4wMDc3NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciZndDsoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+JmFtcDsgcmhzICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbmFtZSAmZ3Q7IHJocy48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI3IxIj5uYW1lPC9hPjsgfQorPGEgbmFtZT0ibDAwNzc1Ij48L2E+MDA3NzUgCis8YSBuYW1lPSJsMDA3NzYiPjwvYT4wMDc3NiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBBdHRyaWJ1dGUgcGFyc2luZyBzdGFydHM6IGZpcnN0IGxldHRlciBvZiB0aGUgbmFtZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc3NyI+PC9hPjAwNzc3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuczogdGhlIG5leHQgY2hhciBhZnRlciB0aGUgdmFsdWUgZW5kIHF1b3RlPC9zcGFuPgorPGEgbmFtZT0ibDAwNzc4Ij48L2E+MDA3NzggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAqLzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc3OSI+PC9hPjAwNzc5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBQYXJzZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDA3ODAiPjwvYT4wMDc4MCAKKzxhIG5hbWU9ImwwMDc4MSI+PC9hPjAwNzgxICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gUHJpbnRzIHRoaXMgQXR0cmlidXRlIHRvIGEgRklMRSBzdHJlYW0uPC9zcGFuPgorPGEgbmFtZT0ibDAwNzgyIj48L2E+MDA3ODIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIzIj5QcmludDwvYT4oIEZJTEUqIGNmaWxlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZGVwdGggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNzgzIj48L2E+MDA3ODMgCis8YSBuYW1lPSJsMDA3ODQiPjwvYT4wMDc4NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogb3V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDc4NSI+PC9hPjAwNzg1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gW2ludGVybmFsIHVzZV08L3NwYW4+Cis8YSBuYW1lPSJsMDA3ODYiPjwvYT4wMDc4NiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFNldCB0aGUgZG9jdW1lbnQgcG9pbnRlciBzbyB0aGUgYXR0cmlidXRlIGNhbiByZXBvcnQgZXJyb3JzLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc4NyI+PC9hPjAwNzg3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFNldERvY3VtZW50KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KiBkb2MgKSAgeyBkb2N1bWVudCA9IGRvYzsgfQorPGEgbmFtZT0ibDAwNzg4Ij48L2E+MDA3ODggCis8YSBuYW1lPSJsMDA3ODkiPjwvYT4wMDc4OSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Cis8YSBuYW1lPSJsMDA3OTAiPjwvYT4wMDc5MCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMCI+VGlYbWxBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiZhbXA7ICk7ICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBub3QgaW1wbGVtZW50ZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwNzkxIj48L2E+MDA3OTEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiZhbXA7IGJhc2UgKTsgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbm90IGFsbG93ZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwNzkyIj48L2E+MDA3OTIgCis8YSBuYW1lPSJsMDA3OTMiPjwvYT4wMDc5MyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiogIGRvY3VtZW50OyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBBIHBvaW50ZXIgYmFjayB0byBhIGRvY3VtZW50LCBmb3IgZXJyb3IgcmVwb3J0aW5nLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc5NCI+PC9hPjAwNzk0ICAgICBUSVhNTF9TVFJJTkcgbmFtZTsKKzxhIG5hbWU9ImwwMDc5NSI+PC9hPjAwNzk1ICAgICBUSVhNTF9TVFJJTkcgdmFsdWU7Cis8YSBuYW1lPSJsMDA3OTYiPjwvYT4wMDc5NiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBwcmV2OworPGEgbmFtZT0ibDAwNzk3Ij48L2E+MDA3OTcgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogbmV4dDsKKzxhIG5hbWU9ImwwMDc5OCI+PC9hPjAwNzk4IH07Cis8YSBuYW1lPSJsMDA3OTkiPjwvYT4wMDc5OSAKKzxhIG5hbWU9ImwwMDgwMCI+PC9hPjAwODAwIAorPGEgbmFtZT0ibDAwODAxIj48L2E+MDA4MDEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBBIGNsYXNzIHVzZWQgdG8gbWFuYWdlIGEgZ3JvdXAgb2YgYXR0cmlidXRlcy48L3NwYW4+Cis8YSBuYW1lPSJsMDA4MDIiPjwvYT4wMDgwMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgIEl0IGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LCBib3RoIGJ5IHRoZSBFTEVNRU5UIGFuZCB0aGUgREVDTEFSQVRJT04uPC9zcGFuPgorPGEgbmFtZT0ibDAwODAzIj48L2E+MDA4MDMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICA8L3NwYW4+Cis8YSBuYW1lPSJsMDA4MDQiPjwvYT4wMDgwNCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgIFRoZSBzZXQgY2FuIGJlIGNoYW5nZWQgdHJhbnNwYXJlbnQgdG8gdGhlIEVsZW1lbnQgYW5kIERlY2xhcmF0aW9uPC9zcGFuPgorPGEgbmFtZT0ibDAwODA1Ij48L2E+MDA4MDUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICBjbGFzc2VzIHRoYXQgdXNlIGl0LCBidXQgTk9UIHRyYW5zcGFyZW50IHRvIHRoZSBBdHRyaWJ1dGU8L3NwYW4+Cis8YSBuYW1lPSJsMDA4MDYiPjwvYT4wMDgwNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgIHdoaWNoIGhhcyB0byBpbXBsZW1lbnQgYSBuZXh0KCkgYW5kIHByZXZpb3VzKCkgbWV0aG9kLiBXaGljaCBtYWtlczwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgwNyI+PC9hPjAwODA3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgaXQgYSBiaXQgcHJvYmxlbWF0aWMgYW5kIHByZXZlbnRzIHRoZSB1c2Ugb2YgU1RMLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgwOCI+PC9hPjAwODA4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Cis8YSBuYW1lPSJsMDA4MDkiPjwvYT4wMDgwOSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgIFRoaXMgdmVyc2lvbiBpcyBpbXBsZW1lbnRlZCB3aXRoIGNpcmN1bGFyIGxpc3RzIGJlY2F1c2U6PC9zcGFuPgorPGEgbmFtZT0ibDAwODEwIj48L2E+MDA4MTAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgLSBJIGxpa2UgY2lyY3VsYXIgbGlzdHM8L3NwYW4+Cis8YSBuYW1lPSJsMDA4MTEiPjwvYT4wMDgxMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICAtIGl0IGRlbW9uc3RyYXRlcyBzb21lIGluZGVwZW5kZW5jZSBmcm9tIHRoZSAodHlwaWNhbCkgZG91Ymx5IGxpbmtlZCBsaXN0Ljwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgxMiI+PC9hPjAwODEyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4qLzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgxMyI+PC9hPjAwODEzIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+VGlYbWxBdHRyaWJ1dGVTZXQKKzxhIG5hbWU9ImwwMDgxNCI+PC9hPjAwODE0IHsKKzxhIG5hbWU9ImwwMDgxNSI+PC9hPjAwODE1IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgorPGEgbmFtZT0ibDAwODE2Ij48L2E+MDA4MTYgICAgIFRpWG1sQXR0cmlidXRlU2V0KCk7Cis8YSBuYW1lPSJsMDA4MTciPjwvYT4wMDgxNyAgICAgflRpWG1sQXR0cmlidXRlU2V0KCk7Cis8YSBuYW1lPSJsMDA4MTgiPjwvYT4wMDgxOCAKKzxhIG5hbWU9ImwwMDgxOSI+PC9hPjAwODE5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IEFkZCggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBhdHRyaWJ1dGUgKTsKKzxhIG5hbWU9ImwwMDgyMCI+PC9hPjAwODIwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFJlbW92ZSggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBhdHRyaWJ1dGUgKTsKKzxhIG5hbWU9ImwwMDgyMSI+PC9hPjAwODIxIAorPGEgbmFtZT0ibDAwODIyIj48L2E+MDA4MjIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBGaXJzdCgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgIGNvbnN0ICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggc2VudGluZWwubmV4dCA9PSAmYW1wO3NlbnRpbmVsICkgPyAwIDogc2VudGluZWwubmV4dDsgfQorPGEgbmFtZT0ibDAwODIzIj48L2E+MDA4MjMgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogRmlyc3QoKSAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCBzZW50aW5lbC5uZXh0ID09ICZhbXA7c2VudGluZWwgKSA/IDAgOiBzZW50aW5lbC5uZXh0OyB9Cis8YSBuYW1lPSJsMDA4MjQiPjwvYT4wMDgyNCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIExhc3QoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCBzZW50aW5lbC5wcmV2ID09ICZhbXA7c2VudGluZWwgKSA/IDAgOiBzZW50aW5lbC5wcmV2OyB9Cis8YSBuYW1lPSJsMDA4MjUiPjwvYT4wMDgyNSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBMYXN0KCkgICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIHNlbnRpbmVsLnByZXYgPT0gJmFtcDtzZW50aW5lbCApID8gMCA6IHNlbnRpbmVsLnByZXY7IH0KKzxhIG5hbWU9ImwwMDgyNiI+PC9hPjAwODI2IAorPGEgbmFtZT0ibDAwODI3Ij48L2E+MDA4MjcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiAgIEZpbmQoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIG5hbWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwODI4Ij48L2E+MDA4MjggICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogRmluZCggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogbmFtZSApOworPGEgbmFtZT0ibDAwODI5Ij48L2E+MDA4MjkgCis8YSBuYW1lPSJsMDA4MzAiPjwvYT4wMDgzMCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Cis8YSBuYW1lPSJsMDA4MzEiPjwvYT4wMDgzMSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vKk1FOiAgQmVjYXVzZSBvZiBoaWRkZW4vZGlzYWJsZWQgY29weS1jb25zdHJ1a3RvciBpbiBUaVhtbEF0dHJpYnV0ZSAoc2VudGluZWwtZWxlbWVudCksPC9zcGFuPgorPGEgbmFtZT0ibDAwODMyIj48L2E+MDA4MzIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLypNRTogIHRoaXMgY2xhc3MgbXVzdCBiZSBhbHNvIHVzZSBhIGhpZGRlbi9kaXNhYmxlZCBjb3B5LWNvbnN0cnVjdG9yICEhITwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgzMyI+PC9hPjAwODMzICAgICBUaVhtbEF0dHJpYnV0ZVNldCggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbEF0dHJpYnV0ZVNldCZhbXA7ICk7ICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbm90IGFsbG93ZWQ8L3NwYW4+Cis8YSBuYW1lPSJsMDA4MzQiPjwvYT4wMDgzNCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxBdHRyaWJ1dGVTZXQmYW1wOyApOyA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbm90IGFsbG93ZWQgKGFzIFRpWG1sQXR0cmlidXRlKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgzNSI+PC9hPjAwODM1IAorPGEgbmFtZT0ibDAwODM2Ij48L2E+MDA4MzYgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiBzZW50aW5lbDsKKzxhIG5hbWU9ImwwMDgzNyI+PC9hPjAwODM3IH07Cis8YSBuYW1lPSJsMDA4MzgiPjwvYT4wMDgzOCAKKzxhIG5hbWU9ImwwMDgzOSI+PC9hPjAwODM5IAorPGEgbmFtZT0ibDAwODQ0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPjAwODQ0PC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+IDogPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4KKzxhIG5hbWU9ImwwMDg0NSI+PC9hPjAwODQ1IHsKKzxhIG5hbWU9ImwwMDg0NiI+PC9hPjAwODQ2IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgorPGEgbmFtZT0ibDAwODQ4Ij48L2E+MDA4NDggICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EwIj5UaVhtbEVsZW1lbnQ8L2E+ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBpbl92YWx1ZSk7Cis8YSBuYW1lPSJsMDA4NDkiPjwvYT4wMDg0OSAKKzxhIG5hbWU9ImwwMDg1MCI+PC9hPjAwODUwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDg1MSI+PC9hPjAwODUxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDg1MiI+PC9hPjAwODUyICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMCI+VGlYbWxFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApOworPGEgbmFtZT0ibDAwODUzIj48L2E+MDA4NTMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDg1NCI+PC9hPjAwODU0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDg1NSI+PC9hPjAwODU1ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMCI+VGlYbWxFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiZhbXA7ICk7Cis8YSBuYW1lPSJsMDA4NTYiPjwvYT4wMDg1NiAKKzxhIG5hbWU9ImwwMDg1NyI+PC9hPjAwODU3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiZhbXA7IGJhc2UgKTsKKzxhIG5hbWU9ImwwMDg1OCI+PC9hPjAwODU4IAorPGEgbmFtZT0ibDAwODU5Ij48L2E+MDA4NTkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiB+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4oKTsKKzxhIG5hbWU9ImwwMDg2MCI+PC9hPjAwODYwIAorPGEgbmFtZT0ibDAwODY0Ij48L2E+MDA4NjQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogbmFtZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA4NjUiPjwvYT4wMDg2NSAKKzxhIG5hbWU9ImwwMDg3MiI+PC9hPjAwODcyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiogaSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA4NzMiPjwvYT4wMDg3MyAKKzxhIG5hbWU9ImwwMDg4MCI+PC9hPjAwODgwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiogZCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA4ODEiPjwvYT4wMDg4MSAKKzxhIG5hbWU9ImwwMDg4OSI+PC9hPjAwODg5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlF1ZXJ5SW50QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4qIF92YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA4OTEiPjwvYT4wMDg5MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E5Ij5RdWVyeURvdWJsZUF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+KiBfdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwODkzIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEwIj4wMDg5MzwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTAiPlF1ZXJ5RmxvYXRBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZmxvYXQ8L3NwYW4+KiBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsKKzxhIG5hbWU9ImwwMDg5NCI+PC9hPjAwODk0ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+IGQ7Cis8YSBuYW1lPSJsMDA4OTUiPjwvYT4wMDg5NSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiByZXN1bHQgPSA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+UXVlcnlEb3VibGVBdHRyaWJ1dGU8L2E+KCBuYW1lLCAmYW1wO2QgKTsKKzxhIG5hbWU9ImwwMDg5NiI+PC9hPjAwODk2ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCByZXN1bHQgPT0gVElYTUxfU1VDQ0VTUyApIHsKKzxhIG5hbWU9ImwwMDg5NyI+PC9hPjAwODk3ICAgICAgICAgICAgICpfdmFsdWUgPSAoZmxvYXQpZDsKKzxhIG5hbWU9ImwwMDg5OCI+PC9hPjAwODk4ICAgICAgICAgfQorPGEgbmFtZT0ibDAwODk5Ij48L2E+MDA4OTkgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVzdWx0OworPGEgbmFtZT0ibDAwOTAwIj48L2E+MDA5MDAgICAgIH0KKzxhIG5hbWU9ImwwMDkwMSI+PC9hPjAwOTAxIAorPGEgbmFtZT0ibDAwOTA1Ij48L2E+MDA5MDUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTExIj5TZXRBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIF92YWx1ZSApOworPGEgbmFtZT0ibDAwOTA2Ij48L2E+MDA5MDYgCis8YSBuYW1lPSJsMDA5MDciPjwvYT4wMDkwNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA5MDgiPjwvYT4wMDkwOCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBuYW1lICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIG5hbWUuY19zdHIoKSApOyB9Cis8YSBuYW1lPSJsMDA5MDkiPjwvYT4wMDkwOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiogaSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggbmFtZS5jX3N0cigpLCBpICk7IH0KKzxhIG5hbWU9ImwwMDkxMCI+PC9hPjAwOTEwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+KiBkICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCBuYW1lLmNfc3RyKCksIGQgKTsgfQorPGEgbmFtZT0ibDAwOTExIj48L2E+MDA5MTEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+UXVlcnlJbnRBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+KiBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E4Ij5RdWVyeUludEF0dHJpYnV0ZTwvYT4oIG5hbWUuY19zdHIoKSwgX3ZhbHVlICk7IH0KKzxhIG5hbWU9ImwwMDkxMiI+PC9hPjAwOTEyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlF1ZXJ5RG91YmxlQXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiogX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+UXVlcnlEb3VibGVBdHRyaWJ1dGU8L2E+KCBuYW1lLmNfc3RyKCksIF92YWx1ZSApOyB9Cis8YSBuYW1lPSJsMDA5MTMiPjwvYT4wMDkxMyAKKzxhIG5hbWU9ImwwMDkxNSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExNyI+MDA5MTU8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMSI+U2V0QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKSAKKzxhIG5hbWU9ImwwMDkxNiI+PC9hPjAwOTE2ICAgICB7ICAgCis8YSBuYW1lPSJsMDA5MTciPjwvYT4wMDkxNyAgICAgICAgIFN0cmluZ1RvQnVmZmVyIG4oIG5hbWUgKTsKKzxhIG5hbWU9ImwwMDkxOCI+PC9hPjAwOTE4ICAgICAgICAgU3RyaW5nVG9CdWZmZXIgdiggX3ZhbHVlICk7Cis8YSBuYW1lPSJsMDA5MTkiPjwvYT4wMDkxOSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggbi5idWZmZXIgJmFtcDsmYW1wOyB2LmJ1ZmZlciApCis8YSBuYW1lPSJsMDA5MjAiPjwvYT4wMDkyMCAgICAgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4gKG4uYnVmZmVyLCB2LmJ1ZmZlciApOyAKKzxhIG5hbWU9ImwwMDkyMSI+PC9hPjAwOTIxICAgICB9ICAgCis8YSBuYW1lPSJsMDA5MjMiPjwvYT4wMDkyMyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gX3ZhbHVlICkgICAgCis8YSBuYW1lPSJsMDA5MjQiPjwvYT4wMDkyNCAgICAgeyAgIAorPGEgbmFtZT0ibDAwOTI1Ij48L2E+MDA5MjUgICAgICAgICBTdHJpbmdUb0J1ZmZlciBuKCBuYW1lICk7Cis8YSBuYW1lPSJsMDA5MjYiPjwvYT4wMDkyNiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggbi5idWZmZXIgKQorPGEgbmFtZT0ibDAwOTI3Ij48L2E+MDA5MjcgICAgICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTExIj5TZXRBdHRyaWJ1dGU8L2E+IChuLmJ1ZmZlciwgX3ZhbHVlKTsgICAgCis8YSBuYW1lPSJsMDA5MjgiPjwvYT4wMDkyOCAgICAgfSAgIAorPGEgbmFtZT0ibDAwOTI5Ij48L2E+MDA5MjkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDkzMCI+PC9hPjAwOTMwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDkzNCI+PC9hPjAwOTM0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMSI+U2V0QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IHZhbHVlICk7Cis8YSBuYW1lPSJsMDA5MzUiPjwvYT4wMDkzNSAKKzxhIG5hbWU9ImwwMDkzOSI+PC9hPjAwOTM5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMCI+U2V0RG91YmxlQXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+IHZhbHVlICk7Cis8YSBuYW1lPSJsMDA5NDAiPjwvYT4wMDk0MCAKKzxhIG5hbWU9ImwwMDk0MyI+PC9hPjAwOTQzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMSI+UmVtb3ZlQXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogbmFtZSApOworPGEgbmFtZT0ibDAwOTQ0Ij48L2E+MDA5NDQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwOTQ1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIyIj4wMDk0NTwvYT4gPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMSI+UmVtb3ZlQXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IG5hbWUgKSB7ICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIxIj5SZW1vdmVBdHRyaWJ1dGU8L2E+IChuYW1lLmNfc3RyICgpKTsgICAgfSAgIAorPGEgbmFtZT0ibDAwOTQ2Ij48L2E+MDA5NDYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDk0NyI+PC9hPjAwOTQ3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDk0OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMyI+MDA5NDg8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIzIj5GaXJzdEF0dHJpYnV0ZTwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGF0dHJpYnV0ZVNldC5GaXJzdCgpOyB9ICAgICAgICAKKzxhIG5hbWU9ImwwMDk0OSI+PC9hPjAwOTQ5ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMyI+Rmlyc3RBdHRyaWJ1dGU8L2E+KCkgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYXR0cmlidXRlU2V0LkZpcnN0KCk7IH0KKzxhIG5hbWU9ImwwMDk1MCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+MDA5NTA8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI1Ij5MYXN0QXR0cmlidXRlPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgIGNvbnN0ICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGF0dHJpYnV0ZVNldC5MYXN0KCk7IH0gICAgIAorPGEgbmFtZT0ibDAwOTUxIj48L2E+MDA5NTEgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI1Ij5MYXN0QXR0cmlidXRlPC9hPigpICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhdHRyaWJ1dGVTZXQuTGFzdCgpOyB9Cis8YSBuYW1lPSJsMDA5NTIiPjwvYT4wMDk1MiAKKzxhIG5hbWU9ImwwMDk4NSI+PC9hPjAwOTg1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+R2V0VGV4dDwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwOTg2Ij48L2E+MDA5ODYgCis8YSBuYW1lPSJsMDA5ODgiPjwvYT4wMDk4OCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjgiPkNsb25lPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA5ODkiPjwvYT4wMDk4OSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFByaW50IHRoZSBFbGVtZW50IHRvIGEgRklMRSBzdHJlYW0uPC9zcGFuPgorPGEgbmFtZT0ibDAwOTkwIj48L2E+MDA5OTAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOSI+UHJpbnQ8L2E+KCBGSUxFKiBjZmlsZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGRlcHRoICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDk5MSI+PC9hPjAwOTkxIAorPGEgbmFtZT0ibDAwOTkyIj48L2E+MDA5OTIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKiAgQXR0cmlidHVlIHBhcnNpbmcgc3RhcnRzOiBuZXh0IGNoYXIgcGFzdCAnJmx0Oyc8L3NwYW4+Cis8YSBuYW1lPSJsMDA5OTMiPjwvYT4wMDk5MyA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybnM6IG5leHQgY2hhciBwYXN0ICcmZ3Q7Jzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDk5NCI+PC9hPjAwOTk0IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgKi88L3NwYW4+Cis8YSBuYW1lPSJsMDA5OTUiPjwvYT4wMDk5NSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUGFyc2UoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAwOTk2Ij48L2E+MDA5OTYgCis8YSBuYW1lPSJsMDA5OTciPjwvYT4wMDk5NyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJvdGVjdGVkPC9zcGFuPjoKKzxhIG5hbWU9ImwwMDk5OCI+PC9hPjAwOTk4IAorPGEgbmFtZT0ibDAwOTk5Ij48L2E+MDA5OTkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ29weVRvKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogdGFyZ2V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTAwMCI+PC9hPjAxMDAwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENsZWFyVGhpcygpOyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBsaWtlIGNsZWFyLCBidXQgaW5pdGlhbGl6ZXMgJ3RoaXMnIG9iamVjdCBhcyB3ZWxsPC9zcGFuPgorPGEgbmFtZT0ibDAxMDAxIj48L2E+MDEwMDEgCis8YSBuYW1lPSJsMDEwMDIiPjwvYT4wMTAwMiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFVzZWQgdG8gYmUgcHVibGljIFtpbnRlcm5hbCB1c2VdPC9zcGFuPgorPGEgbmFtZT0ibDAxMDAzIj48L2E+MDEwMDMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAxMDA0Ij48L2E+MDEwMDQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Cis8YSBuYW1lPSJsMDEwMDUiPjwvYT4wMTAwNSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAxMDA2Ij48L2E+MDEwMDYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMDA3Ij48L2E+MDEwMDcgCis8YSBuYW1lPSJsMDEwMDgiPjwvYT4wMTAwOCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBbaW50ZXJuYWwgdXNlXTwvc3Bhbj4KKzxhIG5hbWU9ImwwMTAwOSI+PC9hPjAxMDA5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgIFJlYWRzIHRoZSAidmFsdWUiIG9mIHRoZSBlbGVtZW50IC0tIGFub3RoZXIgZWxlbWVudCwgb3IgdGV4dC48L3NwYW4+Cis8YSBuYW1lPSJsMDEwMTAiPjwvYT4wMTAxMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICBUaGlzIHNob3VsZCB0ZXJtaW5hdGUgd2l0aCB0aGUgY3VycmVudCBlbmQgdGFnLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTAxMSI+PC9hPjAxMDExIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgKi88L3NwYW4+Cis8YSBuYW1lPSJsMDEwMTIiPjwvYT4wMTAxMiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBSZWFkVmFsdWUoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogaW4sIFRpWG1sUGFyc2luZ0RhdGEqIHByZXZEYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDEwMTMiPjwvYT4wMTAxMyAKKzxhIG5hbWU9ImwwMTAxNCI+PC9hPjAxMDE0IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTAxNSI+PC9hPjAxMDE1IAorPGEgbmFtZT0ibDAxMDE2Ij48L2E+MDEwMTYgICAgIFRpWG1sQXR0cmlidXRlU2V0IGF0dHJpYnV0ZVNldDsKKzxhIG5hbWU9ImwwMTAxNyI+PC9hPjAxMDE3IH07Cis8YSBuYW1lPSJsMDEwMTgiPjwvYT4wMTAxOCAKKzxhIG5hbWU9ImwwMTAxOSI+PC9hPjAxMDE5IAorPGEgbmFtZT0ibDAxMDIyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPjAxMDIyPC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+IDogPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4KKzxhIG5hbWU9ImwwMTAyMyI+PC9hPjAxMDIzIHsKKzxhIG5hbWU9ImwwMTAyNCI+PC9hPjAxMDI0IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgorPGEgbmFtZT0ibDAxMDI2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTAiPjAxMDI2PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTAiPlRpWG1sQ29tbWVudDwvYT4oKSA6IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjo6Q09NTUVOVCApIHt9Cis8YSBuYW1lPSJsMDEwMjciPjwvYT4wMTAyNyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTAiPlRpWG1sQ29tbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4mYW1wOyApOworPGEgbmFtZT0ibDAxMDI4Ij48L2E+MDEwMjggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+JmFtcDsgYmFzZSApOworPGEgbmFtZT0ibDAxMDI5Ij48L2E+MDEwMjkgCis8YSBuYW1lPSJsMDEwMzAiPjwvYT4wMTAzMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IH48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPigpIHt9Cis8YSBuYW1lPSJsMDEwMzEiPjwvYT4wMTAzMSAKKzxhIG5hbWU9ImwwMTAzMyI+PC9hPjAxMDMzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E0Ij5DbG9uZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMDM1Ij48L2E+MDEwMzUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E1Ij5QcmludDwvYT4oIEZJTEUqIGNmaWxlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZGVwdGggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMDM2Ij48L2E+MDEwMzYgCis8YSBuYW1lPSJsMDEwMzciPjwvYT4wMTAzNyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBBdHRyaWJ0dWUgcGFyc2luZyBzdGFydHM6IGF0IHRoZSAhIG9mIHRoZSAhLS08L3NwYW4+Cis8YSBuYW1lPSJsMDEwMzgiPjwvYT4wMTAzOCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybnM6IG5leHQgY2hhciBwYXN0ICcmZ3Q7Jzwvc3Bhbj4KKzxhIG5hbWU9ImwwMTAzOSI+PC9hPjAxMDM5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgKi88L3NwYW4+Cis8YSBuYW1lPSJsMDEwNDAiPjwvYT4wMTA0MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUGFyc2UoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAxMDQxIj48L2E+MDEwNDEgCis8YSBuYW1lPSJsMDEwNDIiPjwvYT4wMTA0MiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJvdGVjdGVkPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTA0MyI+PC9hPjAxMDQzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENvcHlUbyggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4qIHRhcmdldCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEwNDQiPjwvYT4wMTA0NCAKKzxhIG5hbWU9ImwwMTA0NSI+PC9hPjAxMDQ1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gdXNlZCB0byBiZSBwdWJsaWM8L3NwYW4+Cis8YSBuYW1lPSJsMDEwNDYiPjwvYT4wMTA0NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDEwNDciPjwvYT4wMTA0NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKzxhIG5hbWU9ImwwMTA0OCI+PC9hPjAxMDQ4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDEwNDkiPjwvYT4wMTA0OSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIG91dCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEwNTAiPjwvYT4wMTA1MCAKKzxhIG5hbWU9ImwwMTA1MSI+PC9hPjAxMDUxIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTA1MiI+PC9hPjAxMDUyIAorPGEgbmFtZT0ibDAxMDUzIj48L2E+MDEwNTMgfTsKKzxhIG5hbWU9ImwwMTA1NCI+PC9hPjAxMDU0IAorPGEgbmFtZT0ibDAxMDU1Ij48L2E+MDEwNTUgCis8YSBuYW1lPSJsMDEwNjEiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+MDEwNjE8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPgorPGEgbmFtZT0ibDAxMDYyIj48L2E+MDEwNjIgeworPGEgbmFtZT0ibDAxMDYzIj48L2E+MDEwNjMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT47Cis8YSBuYW1lPSJsMDEwNjQiPjwvYT4wMTA2NCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTA2OSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EwIj4wMTA2OTwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EwIj5UaVhtbFRleHQ8L2E+ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBpbml0VmFsdWUgKSA6IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICg8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjo6VEVYVCkKKzxhIG5hbWU9ImwwMTA3MCI+PC9hPjAxMDcwICAgICB7Cis8YSBuYW1lPSJsMDEwNzEiPjwvYT4wMTA3MSAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4oIGluaXRWYWx1ZSApOworPGEgbmFtZT0ibDAxMDcyIj48L2E+MDEwNzIgICAgICAgICBjZGF0YSA9IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mYWxzZTwvc3Bhbj47Cis8YSBuYW1lPSJsMDEwNzMiPjwvYT4wMTA3MyAgICAgfQorPGEgbmFtZT0ibDAxMDc0Ij48L2E+MDEwNzQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiB+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4oKSB7fQorPGEgbmFtZT0ibDAxMDc1Ij48L2E+MDEwNzUgCis8YSBuYW1lPSJsMDEwNzYiPjwvYT4wMTA3NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDEwNzciPjwvYT4wMTA3NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDEwNzgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMiI+MDEwNzg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMCI+VGlYbWxUZXh0PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IGluaXRWYWx1ZSApIDogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+OjpURVhUKQorPGEgbmFtZT0ibDAxMDc5Ij48L2E+MDEwNzkgICAgIHsKKzxhIG5hbWU9ImwwMTA4MCI+PC9hPjAxMDgwICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPiggaW5pdFZhbHVlICk7Cis8YSBuYW1lPSJsMDEwODEiPjwvYT4wMTA4MSAgICAgICAgIGNkYXRhID0gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZhbHNlPC9zcGFuPjsKKzxhIG5hbWU9ImwwMTA4MiI+PC9hPjAxMDgyICAgICB9Cis8YSBuYW1lPSJsMDEwODMiPjwvYT4wMTA4MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAxMDg0Ij48L2E+MDEwODQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAxMDg1Ij48L2E+MDEwODUgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EwIj5UaVhtbFRleHQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+JmFtcDsgY29weSApIDogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+OjpURVhUICkgICB7IGNvcHkuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYjEiPkNvcHlUbzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiApOyB9Cis8YSBuYW1lPSJsMDEwODYiPjwvYT4wMTA4NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4mYW1wOyBiYXNlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYmFzZS48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMSI+Q29weVRvPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICk7IH0KKzxhIG5hbWU9ImwwMTA4NyI+PC9hPjAxMDg3IAorPGEgbmFtZT0ibDAxMDg5Ij48L2E+MDEwODkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E1Ij5QcmludDwvYT4oIEZJTEUqIGNmaWxlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZGVwdGggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMDkwIj48L2E+MDEwOTAgCis8YSBuYW1lPSJsMDEwOTIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNiI+MDEwOTI8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E2Ij5DREFUQTwvYT4oKSAgICAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gY2RhdGE7IH0KKzxhIG5hbWU9ImwwMTA5NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E3Ij4wMTA5NDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTciPlNldENEQVRBPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBfY2RhdGEgKSAgICB7IGNkYXRhID0gX2NkYXRhOyB9Cis8YSBuYW1lPSJsMDEwOTUiPjwvYT4wMTA5NSAKKzxhIG5hbWU9ImwwMTA5NiI+PC9hPjAxMDk2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBQYXJzZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDEwOTciPjwvYT4wMTA5NyAKKzxhIG5hbWU9ImwwMTA5OCI+PC9hPjAxMDk4IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcm90ZWN0ZWQ8L3NwYW4+IDoKKzxhIG5hbWU9ImwwMTEwMCI+PC9hPjAxMTAwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IwIj5DbG9uZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMTAxIj48L2E+MDExMDEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ29weVRvKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiogdGFyZ2V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTEwMiI+PC9hPjAxMTAyIAorPGEgbmFtZT0ibDAxMTAzIj48L2E+MDExMDMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMTA0Ij48L2E+MDExMDQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gQmxhbmsoKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OyA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gcmV0dXJucyB0cnVlIGlmIGFsbCB3aGl0ZSBzcGFjZSBhbmQgbmV3IGxpbmVzPC9zcGFuPgorPGEgbmFtZT0ibDAxMTA1Ij48L2E+MDExMDUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbaW50ZXJuYWwgdXNlXTwvc3Bhbj4KKzxhIG5hbWU9ImwwMTEwNiI+PC9hPjAxMTA2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTEwNyI+PC9hPjAxMTA3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworPGEgbmFtZT0ibDAxMTA4Ij48L2E+MDExMDggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTEwOSI+PC9hPjAxMTA5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTExMCI+PC9hPjAxMTEwIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTExMSI+PC9hPjAxMTExICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGNkYXRhOyAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB0cnVlIGlmIHRoaXMgc2hvdWxkIGJlIGlucHV0IGFuZCBvdXRwdXQgYXMgYSBDREFUQSBzdHlsZSB0ZXh0IGVsZW1lbnQ8L3NwYW4+Cis8YSBuYW1lPSJsMDExMTIiPjwvYT4wMTExMiB9OworPGEgbmFtZT0ibDAxMTEzIj48L2E+MDExMTMgCis8YSBuYW1lPSJsMDExMTQiPjwvYT4wMTExNCAKKzxhIG5hbWU9ImwwMTEyOCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+MDExMjg8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+Cis8YSBuYW1lPSJsMDExMjkiPjwvYT4wMTEyOSB7Cis8YSBuYW1lPSJsMDExMzAiPjwvYT4wMTEzMCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTEzMiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMCI+MDExMzI8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTAiPlRpWG1sRGVjbGFyYXRpb248L2E+KCkgICA6IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjo6REVDTEFSQVRJT04gKSB7fQorPGEgbmFtZT0ibDAxMTMzIj48L2E+MDExMzMgCis8YSBuYW1lPSJsMDExMzQiPjwvYT4wMTEzNCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTEzNSI+PC9hPjAxMTM1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTEzNiI+PC9hPjAxMTM2ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTAiPlRpWG1sRGVjbGFyYXRpb248L2E+KCAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmVyc2lvbiwKKzxhIG5hbWU9ImwwMTEzNyI+PC9hPjAxMTM3ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfZW5jb2RpbmcsCis8YSBuYW1lPSJsMDExMzgiPjwvYT4wMTEzOCAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3N0YW5kYWxvbmUgKTsKKzxhIG5hbWU9ImwwMTEzOSI+PC9hPjAxMTM5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTE0MCI+PC9hPjAxMTQwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTE0MiI+PC9hPjAxMTQyICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTAiPlRpWG1sRGVjbGFyYXRpb248L2E+KCAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogX3ZlcnNpb24sCis8YSBuYW1lPSJsMDExNDMiPjwvYT4wMTE0MyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIF9lbmNvZGluZywKKzxhIG5hbWU9ImwwMTE0NCI+PC9hPjAxMTQ0ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogX3N0YW5kYWxvbmUgKTsKKzxhIG5hbWU9ImwwMTE0NSI+PC9hPjAxMTQ1IAorPGEgbmFtZT0ibDAxMTQ2Ij48L2E+MDExNDYgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiZhbXA7IGNvcHkgKTsKKzxhIG5hbWU9ImwwMTE0NyI+PC9hPjAxMTQ3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+JmFtcDsgY29weSApOworPGEgbmFtZT0ibDAxMTQ4Ij48L2E+MDExNDggCis8YSBuYW1lPSJsMDExNDkiPjwvYT4wMTE0OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IH48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+KCkge30KKzxhIG5hbWU9ImwwMTE1MCI+PC9hPjAxMTUwIAorPGEgbmFtZT0ibDAxMTUyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E2Ij4wMTE1MjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E2Ij5WZXJzaW9uPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB2ZXJzaW9uLmNfc3RyICgpOyB9Cis8YSBuYW1lPSJsMDExNTQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTciPjAxMTU0PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICo8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTciPkVuY29kaW5nPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGVuY29kaW5nLmNfc3RyICgpOyB9Cis8YSBuYW1lPSJsMDExNTYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTgiPjAxMTU2PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICo8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTgiPlN0YW5kYWxvbmU8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHN0YW5kYWxvbmUuY19zdHIgKCk7IH0KKzxhIG5hbWU9ImwwMTE1NyI+PC9hPjAxMTU3IAorPGEgbmFtZT0ibDAxMTU5Ij48L2E+MDExNTkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E5Ij5DbG9uZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMTYxIj48L2E+MDExNjEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMTAiPlByaW50PC9hPiggRklMRSogY2ZpbGUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBkZXB0aCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDExNjIiPjwvYT4wMTE2MiAKKzxhIG5hbWU9ImwwMTE2MyI+PC9hPjAxMTYzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBQYXJzZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDExNjQiPjwvYT4wMTE2NCAKKzxhIG5hbWU9ImwwMTE2NSI+PC9hPjAxMTY1IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcm90ZWN0ZWQ8L3NwYW4+OgorPGEgbmFtZT0ibDAxMTY2Ij48L2E+MDExNjYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ29weVRvKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+KiB0YXJnZXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMTY3Ij48L2E+MDExNjcgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB1c2VkIHRvIGJlIHB1YmxpYzwvc3Bhbj4KKzxhIG5hbWU9ImwwMTE2OCI+PC9hPjAxMTY4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTE2OSI+PC9hPjAxMTY5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworPGEgbmFtZT0ibDAxMTcwIj48L2E+MDExNzAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTE3MSI+PC9hPjAxMTcxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTE3MiI+PC9hPjAxMTcyIAorPGEgbmFtZT0ibDAxMTczIj48L2E+MDExNzMgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgorPGEgbmFtZT0ibDAxMTc0Ij48L2E+MDExNzQgCis8YSBuYW1lPSJsMDExNzUiPjwvYT4wMTE3NSAgICAgVElYTUxfU1RSSU5HIHZlcnNpb247Cis8YSBuYW1lPSJsMDExNzYiPjwvYT4wMTE3NiAgICAgVElYTUxfU1RSSU5HIGVuY29kaW5nOworPGEgbmFtZT0ibDAxMTc3Ij48L2E+MDExNzcgICAgIFRJWE1MX1NUUklORyBzdGFuZGFsb25lOworPGEgbmFtZT0ibDAxMTc4Ij48L2E+MDExNzggfTsKKzxhIG5hbWU9ImwwMTE3OSI+PC9hPjAxMTc5IAorPGEgbmFtZT0ibDAxMTgwIj48L2E+MDExODAgCis8YSBuYW1lPSJsMDExODgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+MDExODg8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPgorPGEgbmFtZT0ibDAxMTg5Ij48L2E+MDExODkgeworPGEgbmFtZT0ibDAxMTkwIj48L2E+MDExOTAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Cis8YSBuYW1lPSJsMDExOTEiPjwvYT4wMTE5MSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4oKSA6IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KCBUaVhtbE5vZGU6OlVOS05PV04gKSAgICB7fQorPGEgbmFtZT0ibDAxMTkyIj48L2E+MDExOTIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiB+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4oKSB7fQorPGEgbmFtZT0ibDAxMTkzIj48L2E+MDExOTMgCis8YSBuYW1lPSJsMDExOTQiPjwvYT4wMTE5NCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4mYW1wOyBjb3B5ICkgOiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiggVGlYbWxOb2RlOjpVTktOT1dOICkgICAgICB7IGNvcHkuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYjAiPkNvcHlUbzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiApOyB9Cis8YSBuYW1lPSJsMDExOTUiPjwvYT4wMTE5NSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4mYW1wOyBjb3B5ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY29weS48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNiMCI+Q29weVRvPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICk7IH0KKzxhIG5hbWU9ImwwMTE5NiI+PC9hPjAxMTk2IAorPGEgbmFtZT0ibDAxMTk4Ij48L2E+MDExOTggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTQiPkNsb25lPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEyMDAiPjwvYT4wMTIwMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTUiPlByaW50PC9hPiggRklMRSogY2ZpbGUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBkZXB0aCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEyMDEiPjwvYT4wMTIwMSAKKzxhIG5hbWU9ImwwMTIwMiI+PC9hPjAxMjAyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBQYXJzZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDEyMDMiPjwvYT4wMTIwMyAKKzxhIG5hbWU9ImwwMTIwNCI+PC9hPjAxMjA0IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcm90ZWN0ZWQ8L3NwYW4+OgorPGEgbmFtZT0ibDAxMjA1Ij48L2E+MDEyMDUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ29weVRvKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiogdGFyZ2V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTIwNiI+PC9hPjAxMjA2IAorPGEgbmFtZT0ibDAxMjA3Ij48L2E+MDEyMDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAxMjA4Ij48L2E+MDEyMDggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Cis8YSBuYW1lPSJsMDEyMDkiPjwvYT4wMTIwOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAxMjEwIj48L2E+MDEyMTAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1PdXQgKCBUSVhNTF9PU1RSRUFNICogb3V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTIxMSI+PC9hPjAxMjExIAorPGEgbmFtZT0ibDAxMjEyIj48L2E+MDEyMTIgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgorPGEgbmFtZT0ibDAxMjEzIj48L2E+MDEyMTMgCis8YSBuYW1lPSJsMDEyMTQiPjwvYT4wMTIxNCB9OworPGEgbmFtZT0ibDAxMjE1Ij48L2E+MDEyMTUgCis8YSBuYW1lPSJsMDEyMTYiPjwvYT4wMTIxNiAKKzxhIG5hbWU9ImwwMTIyMSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+MDEyMjE8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+Cis8YSBuYW1lPSJsMDEyMjIiPjwvYT4wMTIyMiB7Cis8YSBuYW1lPSJsMDEyMjMiPjwvYT4wMTIyMyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTIyNSI+PC9hPjAxMjI1ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTAiPlRpWG1sRG9jdW1lbnQ8L2E+KCk7Cis8YSBuYW1lPSJsMDEyMjciPjwvYT4wMTIyNyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EwIj5UaVhtbERvY3VtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogZG9jdW1lbnROYW1lICk7Cis8YSBuYW1lPSJsMDEyMjgiPjwvYT4wMTIyOCAKKzxhIG5hbWU9ImwwMTIyOSI+PC9hPjAxMjI5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTIzMCI+PC9hPjAxMjMwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTIzMSI+PC9hPjAxMjMxICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTAiPlRpWG1sRG9jdW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgZG9jdW1lbnROYW1lICk7Cis8YSBuYW1lPSJsMDEyMzIiPjwvYT4wMTIzMiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAxMjMzIj48L2E+MDEyMzMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAxMjM0Ij48L2E+MDEyMzQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMCI+VGlYbWxEb2N1bWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiZhbXA7IGNvcHkgKTsKKzxhIG5hbWU9ImwwMTIzNSI+PC9hPjAxMjM1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+JmFtcDsgY29weSApOworPGEgbmFtZT0ibDAxMjM2Ij48L2E+MDEyMzYgCis8YSBuYW1lPSJsMDEyMzciPjwvYT4wMTIzNyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IH48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KCkge30KKzxhIG5hbWU9ImwwMTIzOCI+PC9hPjAxMjM4IAorPGEgbmFtZT0ibDAxMjQzIj48L2E+MDEyNDMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E2Ij5Mb2FkRmlsZTwvYT4oIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICk7Cis8YSBuYW1lPSJsMDEyNDUiPjwvYT4wMTI0NSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTciPlNhdmVGaWxlPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEyNDciPjwvYT4wMTI0NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTYiPkxvYWRGaWxlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICk7Cis8YSBuYW1lPSJsMDEyNDkiPjwvYT4wMTI0OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTciPlNhdmVGaWxlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogZmlsZW5hbWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMjUwIj48L2E+MDEyNTAgCis8YSBuYW1lPSJsMDEyNTEiPjwvYT4wMTI1MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDEyNTIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEwIj4wMTI1MjwvYT4gPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNiI+TG9hZEZpbGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICkgICAgICAgICAgIAorPGEgbmFtZT0ibDAxMjUzIj48L2E+MDEyNTMgICAgIHsKKzxhIG5hbWU9ImwwMTI1NCI+PC9hPjAxMjU0ICAgICAgICAgU3RyaW5nVG9CdWZmZXIgZiggZmlsZW5hbWUgKTsKKzxhIG5hbWU9ImwwMTI1NSI+PC9hPjAxMjU1ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggZi5idWZmZXIgJmFtcDsmYW1wOyBMb2FkRmlsZSggZi5idWZmZXIsIGVuY29kaW5nICkpOworPGEgbmFtZT0ibDAxMjU2Ij48L2E+MDEyNTYgICAgIH0KKzxhIG5hbWU9ImwwMTI1NyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTEiPjAxMjU3PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTciPlNhdmVGaWxlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IGZpbGVuYW1lICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiAgICAgIAorPGEgbmFtZT0ibDAxMjU4Ij48L2E+MDEyNTggICAgIHsKKzxhIG5hbWU9ImwwMTI1OSI+PC9hPjAxMjU5ICAgICAgICAgU3RyaW5nVG9CdWZmZXIgZiggZmlsZW5hbWUgKTsKKzxhIG5hbWU9ImwwMTI2MCI+PC9hPjAxMjYwICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggZi5idWZmZXIgJmFtcDsmYW1wOyBTYXZlRmlsZSggZi5idWZmZXIgKSk7Cis8YSBuYW1lPSJsMDEyNjEiPjwvYT4wMTI2MSAgICAgfQorPGEgbmFtZT0ibDAxMjYyIj48L2E+MDEyNjIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTI2MyI+PC9hPjAxMjYzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTI2OCI+PC9hPjAxMjY4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEyIj5QYXJzZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSA9IDAsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICk7Cis8YSBuYW1lPSJsMDEyNjkiPjwvYT4wMTI2OSAKKzxhIG5hbWU9ImwwMTI3NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTMiPjAxMjc0PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMyI+Um9vdEVsZW1lbnQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oKTsgfQorPGEgbmFtZT0ibDAxMjc1Ij48L2E+MDEyNzUgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEzIj5Sb290RWxlbWVudDwvYT4oKSAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oKTsgfQorPGEgbmFtZT0ibDAxMjc2Ij48L2E+MDEyNzYgCis8YSBuYW1lPSJsMDEyODIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE1Ij4wMTI4MjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNSI+RXJyb3I8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBlcnJvcjsgfQorPGEgbmFtZT0ibDAxMjgzIj48L2E+MDEyODMgCis8YSBuYW1lPSJsMDEyODUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij4wMTI4NTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTYiPkVycm9yRGVzYzwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBlcnJvckRlc2MuY19zdHIgKCk7IH0KKzxhIG5hbWU9ImwwMTI4NiI+PC9hPjAxMjg2IAorPGEgbmFtZT0ibDAxMjkwIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNyI+MDEyOTA8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNyI+RXJyb3JJZDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gICBjb25zdCAgICAgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBlcnJvcklkOyB9Cis8YSBuYW1lPSJsMDEyOTEiPjwvYT4wMTI5MSAKKzxhIG5hbWU9ImwwMTI5OSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPjAxMjk5PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPkVycm9yUm93PC9hPigpICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBlcnJvckxvY2F0aW9uLnJvdysxOyB9Cis8YSBuYW1lPSJsMDEzMDAiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij4wMTMwMDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij5FcnJvckNvbDwvYT4oKSAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gZXJyb3JMb2NhdGlvbi5jb2wrMTsgfSAKKzxhIG5hbWU9ImwwMTMwMSI+PC9hPjAxMzAxIAorPGEgbmFtZT0ibDAxMzI2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+MDEzMjY8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlNldFRhYlNpemU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gX3RhYnNpemUgKSAgICAgeyB0YWJzaXplID0gX3RhYnNpemU7IH0KKzxhIG5hbWU9ImwwMTMyNyI+PC9hPjAxMzI3IAorPGEgbmFtZT0ibDAxMzI4Ij48L2E+MDEzMjggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBUYWJTaXplKCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB0YWJzaXplOyB9Cis8YSBuYW1lPSJsMDEzMjkiPjwvYT4wMTMyOSAKKzxhIG5hbWU9ImwwMTMzMyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjIiPjAxMzMzPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIyIj5DbGVhckVycm9yPC9hPigpICAgICAgICAgICAgICAgICAgICAgICB7ICAgZXJyb3IgPSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZmFsc2U8L3NwYW4+OyAKKzxhIG5hbWU9ImwwMTMzNCI+PC9hPjAxMzM0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ySWQgPSAwOyAKKzxhIG5hbWU9ImwwMTMzNSI+PC9hPjAxMzM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGVzYyA9IDxzcGFuIGNsYXNzPSJzdHJpbmdsaXRlcmFsIj4iIjwvc3Bhbj47IAorPGEgbmFtZT0ibDAxMzM2Ij48L2E+MDEzMzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JMb2NhdGlvbi5yb3cgPSBlcnJvckxvY2F0aW9uLmNvbCA9IDA7IAorPGEgbmFtZT0ibDAxMzM3Ij48L2E+MDEzMzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vZXJyb3JMb2NhdGlvbi5sYXN0ID0gMDsgPC9zcGFuPgorPGEgbmFtZT0ibDAxMzM4Ij48L2E+MDEzMzggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cis8YSBuYW1lPSJsMDEzMzkiPjwvYT4wMTMzOSAKKzxhIG5hbWU9ImwwMTM0MSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjMiPjAxMzQxPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIzIj5QcmludDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPnsgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMyI+UHJpbnQ8L2E+KCBzdGRvdXQsIDAgKTsgfQorPGEgbmFtZT0ibDAxMzQyIj48L2E+MDEzNDIgCis8YSBuYW1lPSJsMDEzNDQiPjwvYT4wMTM0NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMyI+UHJpbnQ8L2E+KCBGSUxFKiBjZmlsZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGRlcHRoID0gMCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEzNDUiPjwvYT4wMTM0NSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFtpbnRlcm5hbCB1c2VdPC9zcGFuPgorPGEgbmFtZT0ibDAxMzQ2Ij48L2E+MDEzNDYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU2V0RXJyb3IoIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBlcnIsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogZXJyb3JMb2NhdGlvbiwgVGlYbWxQYXJzaW5nRGF0YSogcHJldkRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKzxhIG5hbWU9ImwwMTM0NyI+PC9hPjAxMzQ3IAorPGEgbmFtZT0ibDAxMzQ4Ij48L2E+MDEzNDggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByb3RlY3RlZDwvc3Bhbj4gOgorPGEgbmFtZT0ibDAxMzQ5Ij48L2E+MDEzNDkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEzNTAiPjwvYT4wMTM1MCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFtpbnRlcm5hbCB1c2VdPC9zcGFuPgorPGEgbmFtZT0ibDAxMzUxIj48L2E+MDEzNTEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2IxIj5DbG9uZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMzUyIj48L2E+MDEzNTIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAxMzUzIj48L2E+MDEzNTMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Cis8YSBuYW1lPSJsMDEzNTQiPjwvYT4wMTM1NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAxMzU1Ij48L2E+MDEzNTUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAxMzU2Ij48L2E+MDEzNTYgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgorPGEgbmFtZT0ibDAxMzU3Ij48L2E+MDEzNTcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ29weVRvKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KiB0YXJnZXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMzU4Ij48L2E+MDEzNTggCis8YSBuYW1lPSJsMDEzNTkiPjwvYT4wMTM1OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBlcnJvcjsKKzxhIG5hbWU9ImwwMTM2MCI+PC9hPjAxMzYwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gIGVycm9ySWQ7Cis8YSBuYW1lPSJsMDEzNjEiPjwvYT4wMTM2MSAgICAgVElYTUxfU1RSSU5HIGVycm9yRGVzYzsKKzxhIG5hbWU9ImwwMTM2MiI+PC9hPjAxMzYyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gdGFic2l6ZTsKKzxhIG5hbWU9ImwwMTM2MyI+PC9hPjAxMzYzICAgICBUaVhtbEN1cnNvciBlcnJvckxvY2F0aW9uOworPGEgbmFtZT0ibDAxMzY0Ij48L2E+MDEzNjQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gdXNlTWljcm9zb2Z0Qk9NOyAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gdGhlIFVURi04IEJPTSB3ZXJlIGZvdW5kIHdoZW4gcmVhZC4gTm90ZSB0aGlzLCBhbmQgdHJ5IHRvIHdyaXRlLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTM2NSI+PC9hPjAxMzY1IH07Cis8YSBuYW1lPSJsMDEzNjYiPjwvYT4wMTM2NiAKKzxhIG5hbWU9ImwwMTM2NyI+PC9hPjAxMzY3IAorPGEgbmFtZT0ibDAxNDQ4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+MDE0NDg8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Cis8YSBuYW1lPSJsMDE0NDkiPjwvYT4wMTQ0OSB7Cis8YSBuYW1lPSJsMDE0NTAiPjwvYT4wMTQ1MCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTQ1MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTAiPjAxNDUyPC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMCI+VGlYbWxIYW5kbGU8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogX25vZGUgKSAgICAgICAgICAgICAgICAgeyB0aGlzLSZndDtub2RlID0gX25vZGU7IH0KKzxhIG5hbWU9ImwwMTQ1NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEiPjAxNDU0PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMCI+VGlYbWxIYW5kbGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZhbXA7IHJlZiApICAgICAgICAgICB7IHRoaXMtJmd0O25vZGUgPSByZWYuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNyMCI+bm9kZTwvYT47IH0KKzxhIG5hbWU9ImwwMTQ1NSI+PC9hPjAxNDU1ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZhbXA7IHJlZiApIHsgdGhpcy0mZ3Q7bm9kZSA9IHJlZi48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI3IwIj5ub2RlPC9hPjsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICo8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj47IH0KKzxhIG5hbWU9ImwwMTQ1NiI+PC9hPjAxNDU2IAorPGEgbmFtZT0ibDAxNDU4Ij48L2E+MDE0NTggICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EzIj5GaXJzdENoaWxkPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDE0NjAiPjwvYT4wMTQ2MCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTMiPkZpcnN0Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDE0NjIiPjwvYT4wMTQ2MiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDE0NjQiPjwvYT4wMTQ2NCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxNDY1Ij48L2E+MDE0NjUgCis8YSBuYW1lPSJsMDE0NjkiPjwvYT4wMTQ2OSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTciPkNoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiB2YWx1ZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGluZGV4ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTQ3MyI+PC9hPjAxNDczICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNyI+Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gaW5kZXggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxNDc4Ij48L2E+MDE0NzggICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E5Ij5DaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHZhbHVlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gaW5kZXggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxNDgzIj48L2E+MDE0ODMgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E5Ij5DaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gaW5kZXggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxNDg0Ij48L2E+MDE0ODQgCis8YSBuYW1lPSJsMDE0ODUiPjwvYT4wMTQ4NSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDE0ODYiPjwvYT4wMTQ4NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EzIj5GaXJzdENoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EzIj5GaXJzdENoaWxkPC9hPiggX3ZhbHVlLmNfc3RyKCkgKTsgfQorPGEgbmFtZT0ibDAxNDg3Ij48L2E+MDE0ODcgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oIF92YWx1ZS5jX3N0cigpICk7IH0KKzxhIG5hbWU9ImwwMTQ4OCI+PC9hPjAxNDg4IAorPGEgbmFtZT0ibDAxNDg5Ij48L2E+MDE0ODkgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E3Ij5DaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBpbmRleCApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E3Ij5DaGlsZDwvYT4oIF92YWx1ZS5jX3N0cigpLCBpbmRleCApOyB9Cis8YSBuYW1lPSJsMDE0OTAiPjwvYT4wMTQ5MCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTkiPkNoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBpbmRleCApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTkiPkNoaWxkRWxlbWVudDwvYT4oIF92YWx1ZS5jX3N0cigpLCBpbmRleCApOyB9Cis8YSBuYW1lPSJsMDE0OTEiPjwvYT4wMTQ5MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAxNDkyIj48L2E+MDE0OTIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAxNDk0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTUiPjAxNDk0PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE1Ij5Ob2RlPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBub2RlOyB9IAorPGEgbmFtZT0ibDAxNDk2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTYiPjAxNDk2PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE2Ij5FbGVtZW50PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoICggbm9kZSAmYW1wOyZhbXA7IG5vZGUtJmd0OzxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpICkgPyBub2RlLSZndDs8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSA6IDAgKTsgfQorPGEgbmFtZT0ibDAxNDk4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTciPjAxNDk4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE3Ij5UZXh0PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoICggbm9kZSAmYW1wOyZhbXA7IG5vZGUtJmd0OzxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPigpICkgPyBub2RlLSZndDs8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSA6IDAgKTsgfQorPGEgbmFtZT0ibDAxNTAwIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTgiPjAxNTAwPC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE4Ij5Vbmtub3duPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggKCBub2RlICZhbXA7JmFtcDsgbm9kZS0mZ3Q7PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgKSA/IG5vZGUtJmd0OzxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpIDogMCApOyB9Cis8YSBuYW1lPSJsMDE1MDEiPjwvYT4wMTUwMSAKKzxhIG5hbWU9ImwwMTUwMiI+PC9hPjAxNTAyIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTUwMyI+PC9hPjAxNTAzICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogbm9kZTsKKzxhIG5hbWU9ImwwMTUwNCI+PC9hPjAxNTA0IH07Cis8YSBuYW1lPSJsMDE1MDUiPjwvYT4wMTUwNSAKKzxhIG5hbWU9ImwwMTUwNiI+PC9hPjAxNTA2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpZmRlZiBfTVNDX1ZFUjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTUwNyI+PC9hPjAxNTA3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jcHJhZ21hIHdhcm5pbmcoIHBvcCApPC9zcGFuPgorPGEgbmFtZT0ibDAxNTA4Ij48L2E+MDE1MDggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTUwOSI+PC9hPjAxNTA5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTUxMCI+PC9hPjAxNTEwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTUxMSI+PC9hPjAxNTExIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzwvcHJlPjwvZGl2PjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL3R1dG9yaWFsMC5odG1sIGIvZG9jcy90dXRvcmlhbDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjI1ZDM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy90dXRvcmlhbDAuaHRtbApAQCAtMCwwICsxLDMyMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IFRpbnlYTUwgVHV0b3JpYWw8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImluZGV4Lmh0bWwiPmluZGV4PC9hPjwvZGl2PgorPGgxPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9InR1dG9yaWFsMCI+VGlueVhNTCBUdXRvcmlhbDwvYT48L2gxPjxoMT5UdXRvcmlhbCBQcmVsaW1pbmFyeSA8L2gxPgorPHA+CitUaGVzZSBwYWdlcyBjb250YWlucyBhIGJ1bmNoIG9mIGV4YW1wbGVzIG9mIHVzaW5nIFRpbnlYbWwuPHA+CitFYWNoIGRlbW8gaXMgd3JpdHRlbiBpbiBhIHN0YW5kYWxvbmUgZnVuY3Rpb24uIElmIHlvdSB3YW50IHRvIHRyeSB0aGUgY29kZSwgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIGNvcHkvcGFzdGUgdGhlIGNvZGUgaW50byBhIGZpbGUsIHRoZW4gaGF2ZSBhIG1haW4gdG8gY2FsbCBpdC48cD4KK1NvIGlmIHRoZSBleGFtcGxlIGhhcyBhIGZ1bmN0aW9uOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4Jdm9pZCB3cml0ZV9zaW1wbGVfZG9jKCkKKwl7CisJCS4uLgorCX0KKwk8L3ByZT48L2Rpdj48cD4KK3RoZW4gdGhlICpjb21wbGV0ZSogcHJvZ3JhbSB5b3UgbmVlZCB0byB0cnkgaXQgaXM6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkjaW5jbHVkZSAic3RkYWZ4LmgiIC8vICZsdDstLSB5b3UgTUlHSFQgbmVlZCB0aGlzCisJI2luY2x1ZGUgInRpbnl4bWwuaCIgLy8gJmx0Oy0tIHlvdSBkZWZpbml0ZWx5IG5lZWQgdGhpcyA7KQorCisJdm9pZCB3cml0ZV9zaW1wbGVfZG9jKCkKKwl7CisJCS4uLgorCX0KKworCXZvaWQgbWFpbiggdm9pZCApCisJeworCQl3cml0ZV9zaW1wbGVfZG9jKCk7CisJfQorCTwvcHJlPjwvZGl2PjxwPgorVHdvIGV4YW1wbGUgWE1MIGRhdGFzZXRzL2ZpbGVzIHdpbGwgYmUgdXNlZC4gVGhlIGZpcnN0IGxvb2tzIGxpa2UgdGhpczo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZsdDs/eG1sIHZlcnNpb249IjEuMCIgPyZndDsKKwkmbHQ7SGVsbG8mZ3Q7V29ybGQmbHQ7L0hlbGxvJmd0OworCTwvcHJlPjwvZGl2PjxwPgorVGhlIG90aGVyOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiA/Jmd0OworCSZsdDtwb2V0cnkmZ3Q7CisJCSZsdDt2ZXJzZSZndDsKKwkJCUFsYXMKKwkJCSAgR3JlYXQgV2hhdGV2ZXIKKwkJCQlBbGFzIChhZ2FpbikKKwkJJmx0Oy92ZXJzZSZndDsKKwkmbHQ7L3BvZXRyeSZndDsKKwk8L3ByZT48L2Rpdj48cD4KKzxoMT5HZXR0aW5nIFN0YXJ0ZWQgPC9oMT4KKzxwPgorPGgyPkxvYWQgWE1MIGZyb20gYSBmaWxlIDwvaDI+Cis8cD4KK0xvYWRpbmcgYSBmaWxlIGlzIGFzIHNpbXBsZSBhczo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CXZvaWQgbG9hZF9maWxlKCApCisJeworCQlUaVhtbERvY3VtZW50IGRvYyggImRlbW8ueG1sIiApOworCQlib29sIGxvYWRPa2F5ID0gZG9jLkxvYWRGaWxlKCk7CisKKwkJaWYgKCBsb2FkT2theSApCisJCXsKKwkJCS8vIFlvdXIgZG9jdW1lbnQgaXMgbG9hZGVkIC0gZG8gd2hhdCB5b3UgbGlrZQorCQkJLy8gd2l0aCBpdC4KKwkJCS8vCisJCQkvLyBIZXJlIHdlJ2xsIGR1bXAgdGhlIHN0cnVjdHVyZSB0byBTVERPVVQsCisJCQkvLyBqdXN0IGZvciBleGFtcGxlCisJCQlkdW1wX3RvX3N0ZG91dCggJmFtcDtkb2MgKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8vIGxvYWQgZmFpbGVkCisJCX0KKwl9CisJPC9wcmU+PC9kaXY+PHA+CitUaGUgYGBkdW1wX3RvX3N0ZG91dGBgIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhlIHNlY3Rpb24gYER1bXAgc3RydWN0dXJlIG9mIGEgRG9jdW1lbnQgdG8gU1RET1VUYCBiZWxvdy4gSWYgeW91IHJ1biB0aGlzIHByb2dyYW0gd2l0aCB0aGlzIFhNTDo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZsdDs/eG1sIHZlcnNpb249IjEuMCIgPyZndDsKKwkmbHQ7SGVsbG8mZ3Q7V29ybGQmbHQ7L0hlbGxvJmd0OworCTwvcHJlPjwvZGl2PjxwPgorWW91J2xsIHNlZSB0aGlzOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRE9DVU1FTlQKKwkrIERFQ0xBUkFUSU9OCisJKyBFTEVNRU5UIEhlbGxvCisJICArIFRFWFRbV29ybGRdCisJPC9wcmU+PC9kaXY+PHA+Cis8aDI+QnVpbGRpbmcgRG9jdW1lbnRzIFByb2dyYW1hdGljYWxseSA8L2gyPgorPHA+CitFeGFtcGxlOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4Jdm9pZCB3cml0ZV9zaW1wbGVfZG9jKCApCisJeworCQkvLyBNYWtlIHhtbDogJmx0Oz94bWwgLi4mZ3Q7Jmx0O0hlbGxvJmd0O1dvcmxkJmx0Oy9IZWxsbyZndDsKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCVRpWG1sRGVjbGFyYXRpb24gKiBkZWNsID0gbmV3IFRpWG1sRGVjbGFyYXRpb24oICIxLjAiLCAiIiwgIiIgKTsKKwkJVGlYbWxFbGVtZW50ICogZWxlbWVudCA9IG5ldyBUaVhtbEVsZW1lbnQoICJIZWxsbyIgKTsKKwkJVGlYbWxUZXh0ICogdGV4dCA9IG5ldyBUaVhtbFRleHQoICJXb3JsZCIgKTsKKwkJZWxlbWVudC0mZ3Q7TGlua0VuZENoaWxkKCB0ZXh0ICk7CisJCWRvYy5MaW5rRW5kQ2hpbGQoIGRlY2wgKTsKKwkJZG9jLkxpbmtFbmRDaGlsZCggZWxlbWVudCApOworCQkKKwkJZHVtcF90b19zdGRvdXQoICZhbXA7ZG9jICk7CisJCWRvYy5TYXZlRmlsZSggIm1hZGVCeUhhbmQueG1sIiApOworCX0KKwk8L3ByZT48L2Rpdj48cD4KK0FsdGVybmF0aXZlbHk6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgl2b2lkIHdyaXRlX3NpbXBsZV9kb2MyKCApCisJeworCQkvLyBzYW1lIGFzIHdyaXRlX3NpbXBsZV9kb2MxIGJ1dCBhZGQgZWFjaCBub2RlCisJCS8vIGFzIGVhcmx5IGFzIHBvc3NpYmxlIGludG8gdGhlIHRyZWUuCisJCisJCVRpWG1sRG9jdW1lbnQgZG9jOworCQlUaVhtbERlY2xhcmF0aW9uICogZGVjbCA9IG5ldyBUaVhtbERlY2xhcmF0aW9uKCAiMS4wIiwgIiIsICIiICk7CisJCWRvYy5MaW5rRW5kQ2hpbGQoIGRlY2wgKTsKKwkJCisJCVRpWG1sRWxlbWVudCAqIGVsZW1lbnQgPSBuZXcgVGlYbWxFbGVtZW50KCAiSGVsbG8iICk7CisJCWRvYy5MaW5rRW5kQ2hpbGQoIGVsZW1lbnQgKTsKKwkJCisJCVRpWG1sVGV4dCAqIHRleHQgPSBuZXcgVGlYbWxUZXh0KCAiV29ybGQiICk7CisJCWVsZW1lbnQtJmd0O0xpbmtFbmRDaGlsZCggdGV4dCApOworCQkKKwkJZHVtcF90b19zdGRvdXQoICZhbXA7ZG9jICk7CisJCWRvYy5TYXZlRmlsZSggIm1hZGVCeUhhbmQyLnhtbCIgKTsKKwl9CisJPC9wcmU+PC9kaXY+PHA+CitCb3RoIG9mIHRoZXNlIHByb2R1Y2UgdGhlIHNhbWUgWE1MLCBuYW1lbHk6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiID8mZ3Q7CisJJmx0O0hlbGxvJmd0O1dvcmxkJmx0Oy9IZWxsbyZndDsKKwk8L3ByZT48L2Rpdj48cD4KK09yIGluIHN0cnVjdHVyZSBmb3JtOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRE9DVU1FTlQKKwkrIERFQ0xBUkFUSU9OCisJKyBFTEVNRU5UIEhlbGxvCisJICArIFRFWFRbV29ybGRdCisJPC9wcmU+PC9kaXY+PHA+Cis8aDI+U2F2aW5nIERvY3VtZW50cyB0byBGaWxlIDwvaDI+Cis8cD4KK1RoaXMgZnVuY3Rpb246PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgl2b2lkIHdyaXRlX3NpbXBsZV9kb2MzKCApICAKKwl7ICAKKwkJLy8gVGhpcyBleGFtcGxlIGNvdXJ0ZXN5IG9mIHBvbG9jb2xlZ2UKKwkgCisJCVRpWG1sRG9jdW1lbnQgZG9jOyAgCisJCVRpWG1sRGVjbGFyYXRpb24gKiBkZWNsID0gbmV3IFRpWG1sRGVjbGFyYXRpb24oICIxLjAiLCAiIiwgIiIgKTsgIAorCQlkb2MuTGlua0VuZENoaWxkKCBkZWNsICk7ICAKKwkgCisJCVRpWG1sRWxlbWVudCAqIGVsZW1lbnQgPSBuZXcgVGlYbWxFbGVtZW50KCAiSGVsbG8iICk7ICAKKwkJZG9jLkxpbmtFbmRDaGlsZCggZWxlbWVudCApOyAgCisJIAorCQlUaVhtbFRleHQgKiB0ZXh0ID0gbmV3IFRpWG1sVGV4dCggIk9wZW5pbmcgYSBuZXcgc2FsdXRhdGlvbiIgKTsgIAorCQllbGVtZW50LSZndDtMaW5rRW5kQ2hpbGQoIHRleHQgKTsgIAorCSAKKwkJVGlYbWxFbGVtZW50ICogZWxlbWVudDIgPSBuZXcgVGlYbWxFbGVtZW50KCAiR3JlZXRpbmciICk7ICAKKwkJZWxlbWVudC0mZ3Q7TGlua0VuZENoaWxkKCBlbGVtZW50MiApOyAgCisJIAorCQlUaVhtbFRleHQgKiB0ZXh0MiA9IG5ldyBUaVhtbFRleHQoICJIb3cgYXJlIHlvdT8iICk7ICAKKwkJZWxlbWVudDItJmd0O0xpbmtFbmRDaGlsZCggdGV4dDIgKTsgIAorCSAKKwkJVGlYbWxFbGVtZW50ICogZWxlbWVudDMgPSBuZXcgVGlYbWxFbGVtZW50KCAiTGFuZ3VhZ2UiICk7ICAKKwkJZWxlbWVudDItJmd0O0xpbmtFbmRDaGlsZCggZWxlbWVudDMgKTsgIAorCSAKKwkJVGlYbWxUZXh0ICogdGV4dDMgPSBuZXcgVGlYbWxUZXh0KCAiRW5nbGlzaCIgKTsgIAorCQllbGVtZW50My0mZ3Q7TGlua0VuZENoaWxkKCB0ZXh0MyApOyAgCisJIAorCQlUaVhtbEVsZW1lbnQgKiBlbGVtZW50NCA9IG5ldyBUaVhtbEVsZW1lbnQoICJFeGNsYW1hdGlvbiIgKTsgIAorCQllbGVtZW50LSZndDtMaW5rRW5kQ2hpbGQoIGVsZW1lbnQ0ICk7ICAKKwkgCisJCVRpWG1sVGV4dCAqIHRleHQ0ID0gbmV3IFRpWG1sVGV4dCggIllvdSBoYXZlIGNoaWxkcmVuISIgKTsgIAorCQllbGVtZW50NC0mZ3Q7TGlua0VuZENoaWxkKCB0ZXh0NCApOyAgCisJIAorCQlkdW1wX3RvX3N0ZG91dCggJmFtcDtkb2MgKTsKKwkJZG9jLlNhdmVGaWxlKCAibWFkZUJ5SGFuZDMueG1sIiApOyAgCisJfSAgCisJPC9wcmU+PC9kaXY+PHA+CitQcm9kdWNlcyB0aGlzIHN0cnVjdHVyZTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CURvY3VtZW50CisJKyBEZWNsYXJhdGlvbgorCSsgRWxlbWVudCAiSGVsbG8iCisJICArIFRleHQ6IFtPcGVuaW5nIGEgbmV3IHNhbHV0YXRpb25dCisJICArIEVsZW1lbnQgIkdyZWV0aW5nIgorCQkrIFRleHQ6IFtIb3cgYXJlIHlvdT9dCisJCSsgRWxlbWVudCAiTGFuZ3VhZ2UiCisJCSAgKyBUZXh0OiBbRW5nbGlzaF0KKwkgICsgRWxlbWVudCAiRXhjbGFtYXRpb24iCisJCSsgVGV4dDogW1lvdSBoYXZlIGNoaWxkcmVuIV0KKwk8L3ByZT48L2Rpdj48cD4KK1RoZSBmaWxlIGBgbWFkZUJ5SGFuZDMueG1sYGAgbG9va3MgZXhhY3RseSBsaWtlIHRoaXMgKGluY2x1ZGluZyBpbmRlbnRzKTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZsdDs/eG1sIHZlcnNpb249IjEuMCIgPyZndDsKKwkmbHQ7SGVsbG8mZ3Q7T3BlbmluZyBhIG5ldyBzYWx1dGF0aW9uCisJICAgICZsdDtHcmVldGluZyZndDtIb3cgYXJlIHlvdT8KKwkgICAgICAgICZsdDtMYW5ndWFnZSZndDtFbmdsaXNoJmx0Oy9MYW5ndWFnZSZndDsKKwkgICAgJmx0Oy9HcmVldGluZyZndDsKKwkgICAgJmx0O0V4Y2xhbWF0aW9uJmd0O1lvdSBoYXZlIGNoaWxkcmVuISZsdDsvRXhjbGFtYXRpb24mZ3Q7CisJJmx0Oy9IZWxsbyZndDsKKwk8L3ByZT48L2Rpdj48cD4KK0kgd2FzIHN1cnByaXNlZCB0aGF0IFRpbnlYbWwsIGJ5IGRlZmF1bHQsIHdyaXRlcyB0aGUgWE1MIGluIHdoYXQgb3RoZXIgQVBJcyBjYWxsIGEgInByZXR0eSIgZm9ybWF0IC0gaXQgbW9kaWZpZXMgdGhlIHdoaXRlc3BhY2Ugb2YgdGV4dCBvZiBlbGVtZW50cyB0aGF0IGNvbnRhaW4gb3RoZXIgbm9kZXMgc28gdGhhdCB3cml0aW5nIHRoZSB0cmVlIGluY2x1ZGVzIGFuIGluZGljYXRpb24gb2YgbmVzdGluZyBsZXZlbC48cD4KK0kgaGF2ZW4ndCBsb29rZWQgeWV0IHRvIHNlZSBpZiB0aGVyZSBpcyBhIHdheSB0byB0dXJuIG9mZiBpbmRlbnRpbmcgd2hlbiB3cml0aW5nIGEgZmlsZSAtIGl0cyBib3VuZCB0byBiZSBlYXN5LjxwPgorW0xlZTogSXQncyBlYXN5IGluIFNUTCBtb2RlLCBqdXN0IHVzZSBjb3V0ICZsdDsmbHQ7IG15RG9jLiBOb24tU1RMIG1vZGUgaXMgYWx3YXlzIGluICJwcmV0dHkiIGZvcm1hdC4gQWRkaW5nIGEgc3dpdGNoIHdvdWxkIGJlIGEgbmljZSBmZWF0dXJlIGFuZCBoYXMgYmVlbiByZXF1ZXN0ZWQuXTxwPgorPGgxPkl0ZXJhdGluZyBPdmVyIERvY3VtZW50cyA8L2gxPgorPHA+Cis8aDI+RHVtcCBzdHJ1Y3R1cmUgb2YgYSBEb2N1bWVudCB0byBTVERPVVQgPC9oMj4KKzxwPgorT2Z0ZW4gd2hlbiB5b3UncmUgc3RhcnRpbmcgaXRzIGhlbHBmdWwgYW5kIHJlYXNzdXJpbmcgdG8ga25vdyB0aGF0IHlvdSdyZSBkb2N1bWVudCBnb3QgbG9hZGVkIGFzIHlvdSBleHBlY3QgaXQgdG8uPHA+CitCZWxvdyBJJ3ZlIGRlZmluZWQgYSBmdW5jdGlvbiB0byB3YWxrIGEgZG9jdW1lbnQgYW5kIHdyaXRlIGNvbnRlbnRzIHRvIFNURE9VVDo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CS8vIGEgdXRpbGl0eSBmdW5jdGlvbiBkZWZpbmluZyBhIHZlcnkgc2ltcGxlIG1ldGhvZCB0byBpbmRlbnQgYSBsaW5lIG9mIHRleHQKKwljb25zdCBjaGFyICogZ2V0SW5kZW50KCB1bnNpZ25lZCBpbnQgbnVtSW5kZW50cyApCisJeworCQlzdGF0aWMgY29uc3QgY2hhciAqIHBJTkRFTlQgPSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI7CisJCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgTEVOR1RIID0gc3RybGVuKCBwSU5ERU5UICk7CisJCisJCWlmICggbnVtSW5kZW50cyAmZ3Q7IExFTkdUSCApIG51bUluZGVudHMgPSBMRU5HVEg7CisJCisJCXJldHVybiAmYW1wO3BJTkRFTlRbIExFTkdUSC1udW1JbmRlbnRzIF07CisJfQorCQorCXZvaWQgZHVtcF90b19zdGRvdXQoIFRpWG1sTm9kZSAqIHBQYXJlbnQsIHVuc2lnbmVkIGludCBpbmRlbnQgPSAwICkKKwl7CisJCWlmICggIXBQYXJlbnQgKSByZXR1cm47CisJCisJCVRpWG1sVGV4dCAqcFRleHQ7CisJCWludCB0ID0gcFBhcmVudC0mZ3Q7VHlwZSgpOworCQlwcmludGYoICIlcyIsIGdldEluZGVudCggaW5kZW50KSk7CisJCisJCXN3aXRjaCAoIHQgKQorCQl7CisJCWNhc2UgVGlYbWxOb2RlOjpET0NVTUVOVDoKKwkJCXByaW50ZiggIkRvY3VtZW50IiApOworCQkJYnJlYWs7CisJCisJCWNhc2UgVGlYbWxOb2RlOjpFTEVNRU5UOgorCQkJcHJpbnRmKCAiRWxlbWVudCBcIiVzXCIiLCBwUGFyZW50LSZndDtWYWx1ZSgpICk7CisJCQlicmVhazsKKwkKKwkJY2FzZSBUaVhtbE5vZGU6OkNPTU1FTlQ6CisJCQlwcmludGYoICJDb21tZW50OiBcIiVzXCIiLCBwUGFyZW50LSZndDtWYWx1ZSgpKTsKKwkJCWJyZWFrOworCQorCQljYXNlIFRpWG1sTm9kZTo6VU5LTk9XTjoKKwkJCXByaW50ZiggIlVua25vd24iICk7CisJCQlicmVhazsKKwkKKwkJY2FzZSBUaVhtbE5vZGU6OlRFWFQ6CisJCQlwVGV4dCA9IHBQYXJlbnQtJmd0O1RvVGV4dCgpOworCQkJcHJpbnRmKCAiVGV4dDogWyVzXSIsIHBUZXh0LSZndDtWYWx1ZSgpICk7CisJCQlicmVhazsKKwkKKwkJY2FzZSBUaVhtbE5vZGU6OkRFQ0xBUkFUSU9OOgorCQkJcHJpbnRmKCAiRGVjbGFyYXRpb24iICk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCQl9CisJCXByaW50ZiggIlxuIiApOworCQorCQlUaVhtbE5vZGUgKiBwQ2hpbGQ7CisJCisJCWZvciAoIHBDaGlsZCA9IHBQYXJlbnQtJmd0O0ZpcnN0Q2hpbGQoKTsgcENoaWxkICE9IDA7IHBDaGlsZCA9IHBDaGlsZC0mZ3Q7TmV4dFNpYmxpbmcoKSkgCisJCXsKKwkJCWR1bXBfdG9fc3Rkb3V0KCBwQ2hpbGQsIGluZGVudCsyICk7CisJCX0KKwl9CisJPC9wcmU+PC9kaXY+PHA+CitUbyBsb2FkIGEgZmlsZSBhbmQgZHVtcCBpdHMgc3RydWN0dXJlOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4Jdm9pZCBsb2FkX2FuZF9kaXNwbGF5KCApCisJeworCQkvLyBpbXBvcnRhbnQgZm9yIHRoZSBwb2V0cnkgZGVtbywgYnV0IHlvdSBtYXkgbm90IG5lZWQgdGhpcyAKKwkJLy8gaW4geW91ciBvd24gcHJvamVjdHMKKwkJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGZhbHNlICk7CisJCisJCVRpWG1sRG9jdW1lbnQgZG9jKCAiZGVtby54bWwiICk7CisJCWJvb2wgbG9hZE9rYXkgPSBkb2MuTG9hZEZpbGUoKTsKKwkKKwkJaWYgKCBsb2FkT2theSApCisJCXsKKwkJCWR1bXBfdG9fc3Rkb3V0KCAmYW1wO2RvYyApOworCQl9CisJCWVsc2UKKwkJeworCQkJcHJpbnRmKCAiU29tZXRoaW5nIHdlbnQgd3JvbmdcbiIgKTsKKwkJfQorCX0KKwk8L3ByZT48L2Rpdj48cD4KK0lmIHlvdSBydW4gdGhpcyB3aXRoIHRoZSBmaXJzdCBYTUwgZmlsZSB5b3UnbGwgc2VlIHRoaXMgb24gU1RET1VUOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRE9DVU1FTlQKKwkrIERFQ0xBUkFUSU9OCisJKyBFTEVNRU5UIEhlbGxvCisJICArIFRFWFRbV29ybGRdCisJPC9wcmU+PC9kaXY+PHA+CithbmQgb24gdGhlIHNlY29uZCBYTUwgZmlsZTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CURPQ1VNRU5UCisJKyBERUNMQVJBVElPTgorCSsgRUxFTUVOVCBwb2V0cnkKKwkgICsgQ09NTUVOVDogIG15IGdyZWF0IHdvcmsgb2YgYXJ0CisJICArIEVMRU1FTlQgdmVyc2UKKwkgICAgKyBURVhUWworCUFsYXMKKwkgIEdyZWF0IFdoYXRldmVyCisJICAgIEFsYXMgKGFnYWluKQorCV0KKwk8L3ByZT48L2Rpdj48cD4KK05vdGUgdGhhdCBpZiB5b3UgY2FsbCBkdW1wX3RvX3N0ZG91dCBsaWtlIHRoaXM6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglkdW1wX3RvX3N0ZG91dCggZG9jLlJvb3RFbGVtZW50KCkpOworCTwvcHJlPjwvZGl2PjxwPgorWW91J2xsIHNlZSB0aGlzIGluc3RlYWQ6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglFTEVNRU5UIEhlbGxvCisJKyBURVhUW1dvcmxkXQorCTwvcHJlPjwvZGl2PjxwPgorYW5kOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRUxFTUVOVCBwb2V0cnkKKwkrIENPTU1FTlQ6ICBteSBncmVhdCB3b3JrIG9mIGFydAorCSsgRUxFTUVOVCB2ZXJzZQorICAJKyBURVhUWworCUFsYXMKKwkgIEdyZWF0IFdoYXRldmVyCisJICAgIEFsYXMgKGFnYWluKQorCV0gCisJPC9wcmU+PC9kaXY+PHA+Cis8ZW0+IEF1dGhvcnMgYW5kIENoYW5nZXMgPHVsPgorPGxpPgorV3JpdHRlbiBieSBFbGxlcnMsIEFwcmlsIDIwMDUgIDwvbGk+Cis8bGk+CitNaW5vciBlZGl0cyBhbmQgaW50ZWdyYXRpb24gaW50byBkb2Mgc3lzdGVtLCBMZWUgVGhvbWFzb24gU2VwdGVtYmVyIDIwMDUgIDwvbGk+Cis8L3VsPgorPC9lbT4gPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2VjaG8uZHNwIGIvZWNoby5kc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFlYjg5NgotLS0gL2Rldi9udWxsCisrKyBiL2VjaG8uZHNwCkBAIC0wLDAgKzEsMTEzIEBACisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9ImVjaG8iIC0gUGFja2FnZSBPd25lcj08ND4NCisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQorIyAqKiBETyBOT1QgRURJVCAqKg0KKw0KKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMw0KKw0KK0NGRz1lY2hvIC0gV2luMzIgRGVidWcNCishTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgTk1BS0UgL2YgImVjaG8ubWFrIi4NCishTUVTU0FHRSANCishTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KKyFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQorIU1FU1NBR0UgDQorIU1FU1NBR0UgTk1BS0UgL2YgImVjaG8ubWFrIiBDRkc9ImVjaG8gLSBXaW4zMiBEZWJ1ZyINCishTUVTU0FHRSANCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCishTUVTU0FHRSANCishTUVTU0FHRSAiZWNobyAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgImVjaG8gLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSANCisNCisjIEJlZ2luIFByb2plY3QNCisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KKyMgUFJPUCBTY2NfUHJvak5hbWUgIiINCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KK0NQUD1jbC5leGUNCitSU0M9cmMuZXhlDQorDQorIUlGICAiJChDRkcpIiA9PSAiZWNobyAtIFdpbjMyIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICJlY2hvUmVsZWFzZSINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiZWNob1JlbGVhc2UiDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiVElYTUxfVVNFX1NUTCIgL1lYIC9GRCAvYw0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KKyMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImVjaG8gLSBXaW4zMiBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJlY2hvX19fV2luMzJfRGVidWciDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiZWNob19fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICJlY2hvRGVidWciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgImVjaG9EZWJ1ZyINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiVElYTUxfVVNFX1NUTCIgL0ZSIC9ZWCAvRkQgL0daIC9jDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQorIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCisNCishRU5ESUYgDQorDQorIyBCZWdpbiBUYXJnZXQNCisNCisjIE5hbWUgImVjaG8gLSBXaW4zMiBSZWxlYXNlIg0KKyMgTmFtZSAiZWNobyAtIFdpbjMyIERlYnVnIg0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx4bWx0ZXN0ZXJcYnVndGVzdC5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55c3RyLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnlzdHIuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWwuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXhtbC5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXhtbGVycm9yLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWxwYXJzZXIuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBUYXJnZXQNCisjIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvcmVhZG1lLnR4dCBiL3JlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI4MDg0YgotLS0gL2Rldi9udWxsCisrKyBiL3JlYWRtZS50eHQKQEAgLTAsMCArMSw1MDIgQEAKKy8qKiBAbWFpbnBhZ2UKKworPGgxPiBUaW55WG1sIDwvaDE+CisKK1RpbnlYbWwgaXMgYSBzaW1wbGUsIHNtYWxsLCBDKysgWE1MIHBhcnNlciB0aGF0IGNhbiBiZSBlYXNpbHkgCitpbnRlZ3JhdGluZyBpbnRvIG90aGVyIHByb2dyYW1zLgorCis8aDI+IFdoYXQgaXQgZG9lcy4gPC9oMj4KKwkKK0luIGJyaWVmLCBUaW55WG1sIHBhcnNlcyBhbiBYTUwgZG9jdW1lbnQsIGFuZCBidWlsZHMgZnJvbSB0aGF0IGEgCitEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSkgdGhhdCBjYW4gYmUgcmVhZCwgbW9kaWZpZWQsIGFuZCBzYXZlZC4KKworWE1MIHN0YW5kcyBmb3IgImVYdGVuc2libGUgTWFya3VwIExhbmd1YWdlLiIgSXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgCit5b3VyIG93biBkb2N1bWVudCBtYXJrdXBzLiBXaGVyZSBIVE1MIGRvZXMgYSB2ZXJ5IGdvb2Qgam9iIG9mIG1hcmtpbmcgCitkb2N1bWVudHMgZm9yIGJyb3dzZXJzLCBYTUwgYWxsb3dzIHlvdSB0byBkZWZpbmUgYW55IGtpbmQgb2YgZG9jdW1lbnQgCittYXJrdXAsIGZvciBleGFtcGxlIGEgZG9jdW1lbnQgdGhhdCBkZXNjcmliZXMgYSAidG8gZG8iIGxpc3QgZm9yIGFuIAorb3JnYW5pemVyIGFwcGxpY2F0aW9uLiBYTUwgaXMgYSB2ZXJ5IHN0cnVjdHVyZWQgYW5kIGNvbnZlbmllbnQgZm9ybWF0LgorQWxsIHRob3NlIHJhbmRvbSBmaWxlIGZvcm1hdHMgY3JlYXRlZCB0byBzdG9yZSBhcHBsaWNhdGlvbiBkYXRhIGNhbiAKK2FsbCBiZSByZXBsYWNlZCB3aXRoIFhNTC4gT25lIHBhcnNlciBmb3IgZXZlcnl0aGluZy4KKworVGhlIGJlc3QgcGxhY2UgZm9yIHRoZSBjb21wbGV0ZSwgY29ycmVjdCwgYW5kIHF1aXRlIGZyYW5rbHkgaGFyZCB0bworcmVhZCBzcGVjIGlzIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNC8iPgoraHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sLTIwMDQwMjA0LzwvYT4uIEFuIGludHJvIHRvIFhNTAorKHRoYXQgSSByZWFsbHkgbGlrZSkgY2FuIGJlIGZvdW5kIGF0IAorPGEgaHJlZj0iaHR0cDovL3NrZXcub3JnL3htbC90dXRvcmlhbC8iPmh0dHA6Ly9za2V3Lm9yZy94bWwvdHV0b3JpYWw8L2E+LgorCitUaGVyZSBhcmUgZGlmZmVyZW50IHdheXMgdG8gYWNjZXNzIGFuZCBpbnRlcmFjdCB3aXRoIFhNTCBkYXRhLgorVGlueVhtbCB1c2VzIGEgRG9jdW1lbnQgT2JqZWN0IE1vZGVsIChET00pLCBtZWFuaW5nIHRoZSBYTUwgZGF0YSBpcyBwYXJzZWQKK2ludG8gYSBDKysgb2JqZWN0cyB0aGF0IGNhbiBiZSBicm93c2VkIGFuZCBtYW5pcHVsYXRlZCwgYW5kIHRoZW4gCit3cml0dGVuIHRvIGRpc2sgb3IgYW5vdGhlciBvdXRwdXQgc3RyZWFtLiBZb3UgY2FuIGFsc28gY29uc3RydWN0IGFuIFhNTCBkb2N1bWVudCBmcm9tCitzY3JhdGNoIHdpdGggQysrIG9iamVjdHMgYW5kIHdyaXRlIHRoaXMgdG8gZGlzayBvciBhbm90aGVyIG91dHB1dAorc3RyZWFtLgorCitUaW55WG1sIGlzIGRlc2lnbmVkIHRvIGJlIGVhc3kgYW5kIGZhc3QgdG8gbGVhcm4uIEl0IGlzIHR3byBoZWFkZXJzIAorYW5kIGZvdXIgY3BwIGZpbGVzLiBTaW1wbHkgYWRkIHRoZXNlIHRvIHlvdXIgcHJvamVjdCBhbmQgb2ZmIHlvdSBnby4gCitUaGVyZSBpcyBhbiBleGFtcGxlIGZpbGUgLSB4bWx0ZXN0LmNwcCAtIHRvIGdldCB5b3Ugc3RhcnRlZC4gCisKK1RpbnlYbWwgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFpMaWIgbGljZW5zZSwgCitzbyB5b3UgY2FuIHVzZSBpdCBpbiBvcGVuIHNvdXJjZSBvciBjb21tZXJjaWFsIGNvZGUuIFRoZSBkZXRhaWxzCitvZiB0aGUgbGljZW5zZSBhcmUgYXQgdGhlIHRvcCBvZiBldmVyeSBzb3VyY2UgZmlsZS4KKworVGlueVhtbCBhdHRlbXB0cyB0byBiZSBhIGZsZXhpYmxlIHBhcnNlciwgYnV0IHdpdGggdHJ1bHkgY29ycmVjdCBhbmQKK2NvbXBsaWFudCBYTUwgb3V0cHV0LiBUaW55WG1sIHNob3VsZCBjb21waWxlIG9uIGFueSByZWFzb25hYmx5IEMrKworY29tcGxpYW50IHN5c3RlbS4gSXQgZG9lcyBub3QgcmVseSBvbiBleGNlcHRpb25zIG9yIFJUVEkuIEl0IGNhbiBiZSAKK2NvbXBpbGVkIHdpdGggb3Igd2l0aG91dCBTVEwgc3VwcG9ydC4gVGlueVhtbCBmdWxseSBzdXBwb3J0cwordGhlIFVURi04IGVuY29kaW5nLCBhbmQgdGhlIGZpcnN0IDY0ayBjaGFyYWN0ZXIgZW50aXRpZXMuCisKKworPGgyPiBXaGF0IGl0IGRvZXNuJ3QgZG8uIDwvaDI+CisKK0l0IGRvZXNudCBwYXJzZSBvciB1c2UgRFREcyAoRG9jdW1lbnQgVHlwZSBEZWZpbml0aW9ucykgb3IgWFNMcworKGVYdGVuc2libGUgU3R5bGVzaGVldCBMYW5ndWFnZS4pIFRoZXJlIGFyZSBvdGhlciBwYXJzZXJzIG91dCB0aGVyZSAKKyhjaGVjayBvdXQgd3d3LnNvdXJjZWZvcmdlLm9yZywgc2VhcmNoIGZvciBYTUwpIHRoYXQgYXJlIG11Y2ggbW9yZSBmdWxseQorZmVhdHVyZWQuIEJ1dCB0aGV5IGFyZSBhbHNvIG11Y2ggYmlnZ2VyLCB0YWtlIGxvbmdlciB0byBzZXQgdXAgaW4KK3lvdXIgcHJvamVjdCwgaGF2ZSBhIGhpZ2hlciBsZWFybmluZyBjdXJ2ZSwgYW5kIG9mdGVuIGhhdmUgYSBtb3JlCityZXN0cmljdGl2ZSBsaWNlbnNlLiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBicm93c2VycyBvciBoYXZlIG1vcmUKK2NvbXBsZXRlIFhNTCBuZWVkcywgVGlueVhtbCBpcyBub3QgdGhlIHBhcnNlciBmb3IgeW91LgorCitUaGUgZm9sbG93aW5nIERURCBzeW50YXggd2lsbCBub3QgcGFyc2UgYXQgdGhpcyB0aW1lIGluIFRpbnlYbWw6CisKK0B2ZXJiYXRpbQorCTwhRE9DVFlQRSBBcmNoaXYgWworCSA8IUVMRU1FTlQgQ29tbWVudCAoI1BDREFUQSk+CisJXT4KK0BlbmR2ZXJiYXRpbQorCitiZWNhdXNlIFRpbnlYbWwgc2VlcyB0aGlzIGFzIGEgIURPQ1RZUEUgbm9kZSB3aXRoIGFuIGlsbGVnYWxseSAKK2VtYmVkZGVkICFFTEVNRU5UIG5vZGUuIFRoaXMgbWF5IGJlIGFkZHJlc3NlZCBpbiB0aGUgZnV0dXJlLgorCis8aDI+IFR1dG9yaWFscy4gPC9oMj4KKworRm9yIHRoZSBpbXBhdGllbnQsIGhlcmUgaXMgYSB0dXRvcmlhbCB0byBnZXQgeW91IGdvaW5nLiBBIGdyZWF0IHdheSB0byBnZXQgc3RhcnRlZCwgCitidXQgaXQgaXMgd29ydGggeW91ciB0aW1lIHRvIHJlYWQgdGhpcyAodmVyeSBzaG9ydCkgbWFudWFsIGNvbXBsZXRlbHkuCisKKy0gQHN1YnBhZ2UgdHV0b3JpYWwwCisKKzxoMj4gQ29kZSBTdGF0dXMuICA8L2gyPgorCitUaW55WG1sIGlzIG1hdHVyZSwgdGVzdGVkIGNvZGUuIEl0IGlzIHZlcnkgc3RhYmxlLiBJZiB5b3UgZmluZAorYnVncywgcGxlYXNlIGZpbGUgYSBidWcgcmVwb3J0IG9uIHRoZSBzb3VyY2Vmb3JnZSB3ZWIgc2l0ZQorKHd3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbCkuCitXZSdsbCBnZXQgdGhlbSBzdHJhaWdodGVuZWQgb3V0IGFzIHNvb24gYXMgcG9zc2libGUuCisKK1RoZXJlIGFyZSBzb21lIGFyZWFzIG9mIGltcHJvdmVtZW50OyBwbGVhc2UgY2hlY2sgc291cmNlZm9yZ2UgaWYgeW91IGFyZQoraW50ZXJlc3RlZCBpbiB3b3JraW5nIG9uIFRpbnlYbWwuCisKKworPGgyPiBGZWF0dXJlcyA8L2gyPgorCis8aDM+IFVzaW5nIFNUTCA8L2gzPgorCitUaW55WG1sIGNhbiBiZSBjb21waWxlZCB0byB1c2Ugb3Igbm90IHVzZSBTVEwuIFdoZW4gdXNpbmcgU1RMLCBUaW55WG1sCit1c2VzIHRoZSBzdGQ6OnN0cmluZyBjbGFzcywgYW5kIGZ1bGx5IHN1cHBvcnRzIHN0ZDo6aXN0cmVhbSwgc3RkOjpvc3RyZWFtLAorb3BlcmF0b3I8PCwgYW5kIG9wZXJhdG9yPj4uIE1hbnkgQVBJIG1ldGhvZHMgaGF2ZSBib3RoICdjb25zdCBjaGFyKicgYW5kCisnY29uc3Qgc3RkOjpzdHJpbmcmJyBmb3Jtcy4KKworV2hlbiBTVEwgc3VwcG9ydCBpcyBjb21waWxlZCBvdXQsIG5vIFNUTCBmaWxlcyBhcmUgaW5jbHVkZWQgd2hhdHNvdmVyLiBBbGwKK3RoZSBzdHJpbmcgY2xhc3NlcyBhcmUgaW1wbGVtZW50ZWQgYnkgVGlueVhtbCBpdHNlbGYuIEFQSSBtZXRob2RzCithbGwgdXNlIHRoZSAnY29uc3QgY2hhcionIGZvcm0gZm9yIGlucHV0LgorCitVc2UgdGhlIGNvbXBpbGUgdGltZSAjZGVmaW5lOgorCisJVElYTUxfVVNFX1NUTAorCit0byBjb21waWxlIG9uZSB2ZXJzaW9uIG9yIHRoZSBvdGhlci4gVGhpcyBjYW4gYmUgcGFzc2VkIGJ5IHRoZSBjb21waWxlciwKK29yIHNldCBhcyB0aGUgZmlyc3QgbGluZSBvZiAidGlueXhtbC5oIi4KKworTm90ZTogSWYgY29tcGlsaW5nIHRoZSB0ZXN0IGNvZGUgaW4gTGludXgsIHNldHRpbmcgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZSBUSU5ZWE1MX1VTRV9TVEw9WUVTL05PIHdpbGwgY29udHJvbCBTVEwgY29tcGlsYXRpb24uIEluIHRoZQorV2luZG93cyBwcm9qZWN0IGZpbGUsIFNUTCBhbmQgbm9uIFNUTCB0YXJnZXRzIGFyZSBwcm92aWRlZC4gSW4geW91ciBwcm9qZWN0LAoraXRzIHByb2JhYmx5IGVhc2llc3QgdG8gYWRkIHRoZSBsaW5lICIjZGVmaW5lIFRJWE1MX1VTRV9TVEwiIGFzIHRoZSBmaXJzdAorbGluZSBvZiB0aW55eG1sLmguCisKKzxoMz4gVVRGLTggPC9oMz4KKworVGlueVhtbCBzdXBwb3J0cyBVVEYtOCBhbGxvd2luZyB0byBtYW5pcHVsYXRlIFhNTCBmaWxlcyBpbiBhbnkgbGFuZ3VhZ2UuIFRpbnlYbWwKK2Fsc28gc3VwcG9ydHMgImxlZ2FjeSBtb2RlIiAtIHRoZSBlbmNvZGluZyB1c2VkIGJlZm9yZSBVVEYtOCBzdXBwb3J0IGFuZAorcHJvYmFibHkgYmVzdCBkZXNjcmliZWQgYXMgImV4dGVuZGVkIGFzY2lpIi4KKworTm9ybWFsbHksIFRpbnlYbWwgd2lsbCB0cnkgdG8gZGV0ZWN0IHRoZSBjb3JyZWN0IGVuY29kaW5nIGFuZCB1c2UgaXQuIEhvd2V2ZXIsCitieSBzZXR0aW5nIHRoZSB2YWx1ZSBvZiBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HIGluIHRoZSBoZWFkZXIgZmlsZSwgVGlueVhtbAorY2FuIGJlIGZvcmNlZCB0byBhbHdheXMgdXNlIG9uZSBlbmNvZGluZy4KKworVGlueVhtbCB3aWxsIGFzc3VtZSBMZWdhY3kgTW9kZSB1bnRpbCBvbmUgb2YgdGhlIGZvbGxvd2luZyBvY2N1cnM6Cis8b2w+CisJPGxpPiBJZiB0aGUgbm9uLXN0YW5kYXJkIGJ1dCBjb21tb24gIlVURi04IGxlYWQgYnl0ZXMiICgweGVmIDB4YmIgMHhiZikKKwkJIGJlZ2luIHRoZSBmaWxlIG9yIGRhdGEgc3RyZWFtLCBUaW55WG1sIHdpbGwgcmVhZCBpdCBhcyBVVEYtOC4gPC9saT4KKwk8bGk+IElmIHRoZSBkZWNsYXJhdGlvbiB0YWcgaXMgcmVhZCwgYW5kIGl0IGhhcyBhbiBlbmNvZGluZz0iVVRGLTgiLCB0aGVuCisJCSBUaW55WG1sIHdpbGwgcmVhZCBpdCBhcyBVVEYtOC4gPC9saT4KKwk8bGk+IElmIHRoZSBkZWNsYXJhdGlvbiB0YWcgaXMgcmVhZCwgYW5kIGl0IGhhcyBubyBlbmNvZGluZyBzcGVjaWZpZWQsIHRoZW4KKwkJIFRpbnlYbWwgd2lsbCByZWFkIGl0IGFzIFVURi04LiA8L2xpPgorCTxsaT4gSWYgdGhlIGRlY2xhcmF0aW9uIHRhZyBpcyByZWFkLCBhbmQgaXQgaGFzIGFuIGVuY29kaW5nPSJzb21ldGhpbmcgZWxzZSIsIHRoZW4KKwkJIFRpbnlYbWwgd2lsbCByZWFkIGl0IGFzIExlZ2FjeSBNb2RlLiBJbiBsZWdhY3kgbW9kZSwgVGlueVhtbCB3aWxsIAorCQkgd29yayBhcyBpdCBkaWQgYmVmb3JlLiBJdCdzIG5vdCBjbGVhciB3aGF0IHRoYXQgbW9kZSBkb2VzIGV4YWN0bHksIGJ1dCAKKwkJIG9sZCBjb250ZW50IHNob3VsZCBrZWVwIHdvcmtpbmcuPC9saT4KKwk8bGk+IFVudGlsIG9uZSBvZiB0aGUgYWJvdmUgY3JpdGVyaWEgaXMgbWV0LCBUaW55WG1sIHJ1bnMgaW4gTGVnYWN5IE1vZGUuPC9saT4KKzwvb2w+CisKK1doYXQgaGFwcGVucyBpZiB0aGUgZW5jb2RpbmcgaXMgaW5jb3JyZWN0bHkgc2V0IG9yIGRldGVjdGVkPyBUaW55WG1sIHdpbGwgdHJ5Cit0byByZWFkIGFuZCBwYXNzIHRocm91Z2ggdGV4dCBzZWVuIGFzIGltcHJvcGVybHkgZW5jb2RlZC4gWW91IG1heSBnZXQgc29tZSBzdHJhbmdlCityZXN1bHRzIG9yIG1hbmdsZWQgY2hhcmFjdGVycy4gWW91IG1heSB3YW50IHRvIGZvcmNlIFRpbnlYbWwgdG8gdGhlIGNvcnJlY3QgbW9kZS4KKworPGI+IFlvdSBtYXkgZm9yY2UgVGlueVhtbCB0byBMZWdhY3kgTW9kZSBieSB1c2luZyBMb2FkRmlsZSggVElYTUxfRU5DT0RJTkdfTEVHQUNZICkgb3IKK0xvYWRGaWxlKCBmaWxlbmFtZSwgVElYTUxfRU5DT0RJTkdfTEVHQUNZICkuIFlvdSBtYXkgZm9yY2UgaXQgdG8gdXNlIGxlZ2FjeSBtb2RlIGFsbAordGhlIHRpbWUgYnkgc2V0dGluZyBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HID0gVElYTUxfRU5DT0RJTkdfTEVHQUNZLiBMaWtld2lzZSwgeW91IG1heSAKK2ZvcmNlIGl0IHRvIFRJWE1MX0VOQ09ESU5HX1VURjggd2l0aCB0aGUgc2FtZSB0ZWNobmlxdWUuPC9iPgorCitGb3IgRW5nbGlzaCB1c2VycywgdXNpbmcgRW5nbGlzaCBYTUwsIFVURi04IGlzIHRoZSBzYW1lIGFzIGxvdy1BU0NJSS4gWW91Citkb24ndCBuZWVkIHRvIGJlIGF3YXJlIG9mIFVURi04IG9yIGNoYW5nZSB5b3VyIGNvZGUgaW4gYW55IHdheS4gWW91IGNhbiB0aGluaworb2YgVVRGLTggYXMgYSAic3VwZXJzZXQiIG9mIEFTQ0lJLgorCitVVEYtOCBpcyBub3QgYSBkb3VibGUgYnl0ZSBmb3JtYXQgLSBidXQgaXQgaXMgYSBzdGFuZGFyZCBlbmNvZGluZyBvZiBVbmljb2RlIQorVGlueVhtbCBkb2VzIG5vdCB1c2Ugb3IgZGlyZWN0bHkgc3VwcG9ydCB3Y2hhciwgVENIQVIsIG9yIE1pY3Jvc29mdHMgX1VOSUNPREUgYXQgdGhpcyB0aW1lLiAKK0l0IGlzIGNvbW1vbiB0byBzZWUgdGhlIHRlcm0gIlVuaWNvZGUiIGltcHJvcGVybHkgcmVmZXIgdG8gVVRGLTE2LCBhIHdpZGUgYnl0ZSBlbmNvZGluZworb2YgdW5pY29kZS4gVGhpcyBpcyBhIHNvdXJjZSBvZiBjb25mdXNpb24uCisKK0ZvciAiaGlnaC1hc2NpaSIgbGFuZ3VhZ2VzIC0gZXZlcnl0aGluZyBub3QgRW5nbGlzaCwgcHJldHR5IG11Y2ggLSBUaW55WG1sIGNhbgoraGFuZGxlIGFsbCBsYW5ndWFnZXMsIGF0IHRoZSBzYW1lIHRpbWUsIGFzIGxvbmcgYXMgdGhlIFhNTCBpcyBlbmNvZGVkCitpbiBVVEYtOC4gVGhhdCBjYW4gYmUgYSBsaXR0bGUgdHJpY2t5LCBvbGRlciBwcm9ncmFtcyBhbmQgb3BlcmF0aW5nIHN5c3RlbXMKK3RlbmQgdG8gdXNlIHRoZSAiZGVmYXVsdCIgb3IgInRyYWRpdGlvbmFsIiBjb2RlIHBhZ2UuIE1hbnkgYXBwcyAoYW5kIGFsbW9zdCBhbGwKK21vZGVybiBvbmVzKSBjYW4gb3V0cHV0IFVURi04LCBidXQgb2xkZXIgb3Igc3R1YmJvcm4gKG9yIGp1c3QgYnJva2VuKSBvbmVzCitzdGlsbCBvdXRwdXQgdGV4dCBpbiB0aGUgZGVmYXVsdCBjb2RlIHBhZ2UuIAorCitGb3IgZXhhbXBsZSwgSmFwYW5lc2Ugc3lzdGVtcyB0cmFkaXRpb25hbGx5IHVzZSBTSElGVC1KSVMgZW5jb2RpbmcuIAorVGV4dCBlbmNvZGVkIGFzIFNISUZULUpJUyBjYW4gbm90IGJlIHJlYWQgYnkgdGlueXhtbC4gCitBIGdvb2QgdGV4dCBlZGl0b3IgY2FuIGltcG9ydCBTSElGVC1KSVMgYW5kIHRoZW4gc2F2ZSBhcyBVVEYtOC4KKworVGhlIDxhIGhyZWY9Imh0dHA6Ly9za2V3Lm9yZy94bWwvdHV0b3JpYWwvIj5Ta2V3Lm9yZyBsaW5rPC9hPiBkb2VzIGEgZ3JlYXQKK2pvYiBjb3ZlcmluZyB0aGUgZW5jb2RpbmcgaXNzdWUuCisKK1RoZSB0ZXN0IGZpbGUgInV0Zjh0ZXN0LnhtbCIgaXMgYW4gWE1MIGNvbnRhaW5pbmcgRW5nbGlzaCwgU3BhbmlzaCwgUnVzc2lhbiwKK2FuZCBTaW1wbGlmaWVkIENoaW5lc2UuIChIb3BlZnVsbHkgdGhleSBhcmUgdHJhbnNsYXRlZCBjb3JyZWN0bHkpLiBUaGUgZmlsZQorInV0Zjh0ZXN0LmdpZiIgaXMgYSBzY3JlZW4gY2FwdHVyZSBvZiB0aGUgWE1MIGZpbGUsIHJlbmRlcmVkIGluIElFLiBOb3RlIHRoYXQKK2lmIHlvdSBkb24ndCBoYXZlIHRoZSBjb3JyZWN0IGZvbnRzIChTaW1wbGlmaWVkIENoaW5lc2Ugb3IgUnVzc2lhbikgb24geW91cgorc3lzdGVtLCB5b3Ugd29uJ3Qgc2VlIG91dHB1dCB0aGF0IG1hdGNoZXMgdGhlIEdJRiBmaWxlIGV2ZW4gaWYgeW91IGNhbiBwYXJzZQoraXQgY29ycmVjdGx5LiBBbHNvIG5vdGUgdGhhdCAoYXQgbGVhc3Qgb24gbXkgV2luZG93cyBtYWNoaW5lKSBjb25zb2xlIG91dHB1dAoraXMgaW4gYSBXZXN0ZXJuIGNvZGUgcGFnZSwgc28gdGhhdCBQcmludCgpIG9yIHByaW50ZigpIGNhbm5vdCBjb3JyZWN0bHkgZGlzcGxheQordGhlIGZpbGUuIFRoaXMgaXMgbm90IGEgYnVnIGluIFRpbnlYbWwgLSBqdXN0IGFuIE9TIGlzc3VlLiBObyBkYXRhIGlzIGxvc3Qgb3IgCitkZXN0cm95ZWQgYnkgVGlueVhtbC4gVGhlIGNvbnNvbGUganVzdCBkb2Vzbid0IHJlbmRlciBVVEYtOC4KKworCis8aDM+IEVudGl0aWVzIDwvaDM+CitUaW55WG1sIHJlY29nbml6ZXMgdGhlIHByZS1kZWZpbmVkICJjaGFyYWN0ZXIgZW50aXRpZXMiLCBtZWFuaW5nIHNwZWNpYWwKK2NoYXJhY3RlcnMuIE5hbWVseToKKworQHZlcmJhdGltCisJJmFtcDsJJgorCSZsdDsJPAorCSZndDsJPgorCSZxdW90OwkiCisJJmFwb3M7CScKK0BlbmR2ZXJiYXRpbQorCitUaGVzZSBhcmUgcmVjb2duaXplZCB3aGVuIHRoZSBYTUwgZG9jdW1lbnQgaXMgcmVhZCwgYW5kIHRyYW5zbGF0ZWQgdG8gdGhlcmUKK1VURi04IGVxdWl2YWxlbnRzLiBGb3IgaW5zdGFuY2UsIHRleHQgd2l0aCB0aGUgWE1MIG9mOgorCitAdmVyYmF0aW0KKwlGYXIgJmFtcDsgQXdheQorQGVuZHZlcmJhdGltCisKK3dpbGwgaGF2ZSB0aGUgVmFsdWUoKSBvZiAiRmFyICYgQXdheSIgd2hlbiBxdWVyaWVkIGZyb20gdGhlIFRpWG1sVGV4dCBvYmplY3QsCithbmQgd2lsbCBiZSB3cml0dGVuIGJhY2sgdG8gdGhlIFhNTCBzdHJlYW0vZmlsZSBhcyBhbiBhbXBlcnNhbmQuIE9sZGVyIHZlcnNpb25zCitvZiBUaW55WG1sICJwcmVzZXJ2ZWQiIGNoYXJhY3RlciBlbnRpdGllcywgYnV0IHRoZSBuZXdlciB2ZXJzaW9ucyB3aWxsIHRyYW5zbGF0ZQordGhlbSBpbnRvIGNoYXJhY3RlcnMuCisKK0FkZGl0aW9uYWxseSwgYW55IGNoYXJhY3RlciBjYW4gYmUgc3BlY2lmaWVkIGJ5IGl0cyBVbmljb2RlIGNvZGUgcG9pbnQ6CitUaGUgc3ludGF4ICImI3hBMDsiIG9yICImIzE2MDsiIGFyZSBib3RoIHRvIHRoZSBub24tYnJlYWtpbmcgc3BhY2UgY2hhcmFjaGVyLgorCisKKzxoMz4gU3RyZWFtcyA8L2gzPgorV2l0aCBUSVhNTF9VU0VfU1RMIG9uLAorVGlYbWwgaGFzIGJlZW4gbW9kaWZpZWQgdG8gc3VwcG9ydCBib3RoIEMgKEZJTEUpIGFuZCBDKysgKG9wZXJhdG9yIDw8LD4+KSAKK3N0cmVhbXMuIFRoZXJlIGFyZSBzb21lIGRpZmZlcmVuY2VzIHRoYXQgeW91IG1heSBuZWVkIHRvIGJlIGF3YXJlIG9mLgorCitDIHN0eWxlIG91dHB1dDoKKwktIGJhc2VkIG9uIEZJTEUqCisJLSB0aGUgUHJpbnQoKSBhbmQgU2F2ZUZpbGUoKSBtZXRob2RzCisKKwlHZW5lcmF0ZXMgZm9ybWF0dGVkIG91dHB1dCwgd2l0aCBwbGVudHkgb2Ygd2hpdGUgc3BhY2UsIGludGVuZGVkIHRvIGJlIGFzIAorCWh1bWFuLXJlYWRhYmxlIGFzIHBvc3NpYmxlLiBUaGV5IGFyZSB2ZXJ5IGZhc3QsIGFuZCB0b2xlcmFudCBvZiBpbGwgZm9ybWVkIAorCVhNTCBkb2N1bWVudHMuIEZvciBleGFtcGxlLCBhbiBYTUwgZG9jdW1lbnQgdGhhdCBjb250YWlucyAyIHJvb3QgZWxlbWVudHMgCisJYW5kIDIgZGVjbGFyYXRpb25zLCB3aWxsIHN0aWxsIHByaW50LgorCitDIHN0eWxlIGlucHV0OgorCS0gYmFzZWQgb24gRklMRSoKKwktIHRoZSBQYXJzZSgpIGFuZCBMb2FkRmlsZSgpIG1ldGhvZHMKKworCUEgZmFzdCwgdG9sZXJhbnQgcmVhZC4gVXNlIHdoZW5ldmVyIHlvdSBkb24ndCBuZWVkIHRoZSBDKysgc3RyZWFtcy4KKworQysrIHN0eWxlIG91cHV0OgorCS0gYmFzZWQgb24gc3RkOjpvc3RyZWFtCisJLSBvcGVyYXRvcjw8CisKKwlHZW5lcmF0ZXMgY29uZGVuc2VkIG91dHB1dCwgaW50ZW5kZWQgZm9yIG5ldHdvcmsgdHJhbnNtaXNzaW9uIHJhdGhlciB0aGFuCisJcmVhZGFiaWxpdHkuIERlcGVuZGluZyBvbiB5b3VyIHN5c3RlbSdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvc3RyZWFtIGNsYXNzLAorCXRoZXNlIG1heSBiZSBzb21ld2hhdCBzbG93ZXIuIChPciBtYXkgbm90LikgTm90IHRvbGVyYW50IG9mIGlsbCBmb3JtZWQgWE1MOgorCWEgZG9jdW1lbnQgc2hvdWxkIGNvbnRhaW4gdGhlIGNvcnJlY3Qgb25lIHJvb3QgZWxlbWVudC4gQWRkaXRpb25hbCByb290IGxldmVsCisJZWxlbWVudHMgd2lsbCBub3QgYmUgc3RyZWFtZWQgb3V0LgorCitDKysgc3R5bGUgaW5wdXQ6CisJLSBiYXNlZCBvbiBzdGQ6OmlzdHJlYW0KKwktIG9wZXJhdG9yPj4KKworCVJlYWRzIFhNTCBmcm9tIGEgc3RyZWFtLCBtYWtpbmcgaXQgdXNlZnVsIGZvciBuZXR3b3JrIHRyYW5zbWlzc2lvbi4gVGhlIHRyaWNreQorCXBhcnQgaXMga25vd2luZyB3aGVuIHRoZSBYTUwgZG9jdW1lbnQgaXMgY29tcGxldGUsIHNpbmNlIHRoZXJlIHdpbGwgYWxtb3N0CisJY2VydGFpbmx5IGJlIG90aGVyIGRhdGEgaW4gdGhlIHN0cmVhbS4gVGlueVhtbCB3aWxsIGFzc3VtZSB0aGUgWE1MIGRhdGEgaXMKKwljb21wbGV0ZSBhZnRlciBpdCByZWFkcyB0aGUgcm9vdCBlbGVtZW50LiBQdXQgYW5vdGhlciB3YXksIGRvY3VtZW50cyB0aGF0CisJYXJlIGlsbC1jb25zdHJ1Y3RlZCB3aXRoIG1vcmUgdGhhbiBvbmUgcm9vdCBlbGVtZW50IHdpbGwgbm90IHJlYWQgY29ycmVjdGx5LgorCUFsc28gbm90ZSB0aGF0IG9wZXJhdG9yPj4gaXMgc29tZXdoYXQgc2xvd2VyIHRoYW4gUGFyc2UsIGR1ZSB0byBib3RoIAorCWltcGxlbWVudGF0aW9uIG9mIHRoZSBTVEwgYW5kIGxpbWl0YXRpb25zIG9mIFRpbnlYbWwuCisKKzxoMz4gV2hpdGUgc3BhY2UgPC9oMz4KK1RoZSB3b3JsZCBzaW1wbHkgZG9lcyBub3QgYWdyZWUgb24gd2hldGhlciB3aGl0ZSBzcGFjZSBzaG91bGQgYmUga2VwdCwgb3IgY29uZGVuc2VkLgorRm9yIGV4YW1wbGUsIHByZXRlbmQgdGhlICdfJyBpcyBhIHNwYWNlLCBhbmQgbG9vayBhdCAiSGVsbG9fX19fd29ybGQiLiBIVE1MLCBhbmQgCithdCBsZWFzdCBzb21lIFhNTCBwYXJzZXJzLCB3aWxsIGludGVycHJldCB0aGlzIGFzICJIZWxsb193b3JsZCIuIFRoZXkgY29uZGVuc2Ugd2hpdGUKK3NwYWNlLiBTb21lIFhNTCBwYXJzZXJzIGRvIG5vdCwgYW5kIHdpbGwgbGVhdmUgaXQgYXMgIkhlbGxvX19fX3dvcmxkIi4gKFJlbWVtYmVyCit0byBrZWVwIHByZXRlbmRpbmcgdGhlIF8gaXMgYSBzcGFjZS4pIE90aGVycyBzdWdnZXN0IHRoYXQgX19IZWxsb19fX3dvcmxkX18gc2hvdWxkIGJlY29tZQorSGVsbG9fX193b3JsZC4KKworSXQncyBhbiBpc3N1ZSB0aGF0IGhhc24ndCBiZWVuIHJlc29sdmVkIHRvIG15IHNhdGlzZmFjdGlvbi4gVGlueVhtbCBzdXBwb3J0cyB0aGUKK2ZpcnN0IDIgYXBwcm9hY2hlcy4gQ2FsbCBUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggYm9vbCApIHRvIHNldCB0aGUgZGVzaXJlZCBiZWhhdmlvci4KK1RoZSBkZWZhdWx0IGlzIHRvIGNvbmRlbnNlIHdoaXRlIHNwYWNlLgorCitJZiB5b3UgY2hhbmdlIHRoZSBkZWZhdWx0LCB5b3Ugc2hvdWxkIGNhbGwgVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGJvb2wgKQorYmVmb3JlIG1ha2luZyBhbnkgY2FsbHMgdG8gUGFyc2UgWE1MIGRhdGEsIGFuZCBJIGRvbid0IHJlY29tbWVuZCBjaGFuZ2luZyBpdCBhZnRlcgoraXQgaGFzIGJlZW4gc2V0LgorCisKKzxoMz4gSGFuZGxlcyA8L2gzPgorCitXaGVyZSBicm93c2luZyBhbiBYTUwgZG9jdW1lbnQgaW4gYSByb2J1c3Qgd2F5LCBpdCBpcyBpbXBvcnRhbnQgdG8gY2hlY2sKK2ZvciBudWxsIHJldHVybnMgZnJvbSBtZXRob2QgY2FsbHMuIEFuIGVycm9yIHNhZmUgaW1wbGVtZW50YXRpb24gY2FuCitnZW5lcmF0ZSBhIGxvdCBvZiBjb2RlIGxpa2U6CisKK0B2ZXJiYXRpbQorVGlYbWxFbGVtZW50KiByb290ID0gZG9jdW1lbnQuRmlyc3RDaGlsZEVsZW1lbnQoICJEb2N1bWVudCIgKTsKK2lmICggcm9vdCApCit7CisJVGlYbWxFbGVtZW50KiBlbGVtZW50ID0gcm9vdC0+Rmlyc3RDaGlsZEVsZW1lbnQoICJFbGVtZW50IiApOworCWlmICggZWxlbWVudCApCisJeworCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gZWxlbWVudC0+Rmlyc3RDaGlsZEVsZW1lbnQoICJDaGlsZCIgKTsKKwkJaWYgKCBjaGlsZCApCisJCXsKKwkJCVRpWG1sRWxlbWVudCogY2hpbGQyID0gY2hpbGQtPk5leHRTaWJsaW5nRWxlbWVudCggIkNoaWxkIiApOworCQkJaWYgKCBjaGlsZDIgKQorCQkJeworCQkJCS8vIEZpbmFsbHkgZG8gc29tZXRoaW5nIHVzZWZ1bC4KK0BlbmR2ZXJiYXRpbQorCitIYW5kbGVzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRvIGNsZWFuIHRoaXMgdXAuIFVzaW5nIHRoZSBUaVhtbEhhbmRsZSBjbGFzcywKK3RoZSBwcmV2aW91cyBjb2RlIHJlZHVjZXMgdG86CisKK0B2ZXJiYXRpbQorVGlYbWxIYW5kbGUgZG9jSGFuZGxlKCAmZG9jdW1lbnQgKTsKK1RpWG1sRWxlbWVudCogY2hpbGQyID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5DaGlsZCggIkNoaWxkIiwgMSApLkVsZW1lbnQoKTsKK2lmICggY2hpbGQyICkKK3sKKwkvLyBkbyBzb21ldGhpbmcgdXNlZnVsCitAZW5kdmVyYmF0aW0KKworV2hpY2ggaXMgbXVjaCBlYXNpZXIgdG8gZGVhbCB3aXRoLiBTZWUgVGlYbWxIYW5kbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworPGgzPiBSb3cgYW5kIENvbHVtbiB0cmFja2luZyA8L2gzPgorQmVpbmcgYWJsZSB0byB0cmFjayBub2RlcyBhbmQgYXR0cmlidXRlcyBiYWNrIHRvIHRoZWlyIG9yaWdpbiBsb2NhdGlvbgoraW4gc291cmNlIGZpbGVzIGNhbiBiZSB2ZXJ5IGltcG9ydGFudCBmb3Igc29tZSBhcHBsaWNhdGlvbnMuIEFkZGl0aW9uYWxseSwKK2tub3dpbmcgd2hlcmUgcGFyc2luZyBlcnJvcnMgb2NjdXJlZCBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGNhbiBiZSB2ZXJ5Cit0aW1lIHNhdmluZy4KKworVGlueVhtbCBjYW4gdHJhY2tzIHRoZSByb3cgYW5kIGNvbHVtbiBvcmlnaW4gb2YgYWxsIG5vZGVzIGFuZCBhdHRyaWJ1dGVzCitpbiBhIHRleHQgZmlsZS4gVGhlIFRpWG1sQmFzZTo6Um93KCkgYW5kIFRpWG1sQmFzZTo6Q29sdW1uKCkgbWV0aG9kcyByZXR1cm4KK3RoZSBvcmlnaW4gb2YgdGhlIG5vZGUgaW4gdGhlIHNvdXJjZSB0ZXh0LiBUaGUgY29ycmVjdCB0YWJzIGNhbiBiZSAKK2NvbmZpZ3VyZWQgaW4gVGlYbWxEb2N1bWVudDo6U2V0VGFiU2l6ZSgpLgorCisKKzxoMj4gVXNpbmcgYW5kIEluc3RhbGxpbmcgPC9oMj4KKworVG8gQ29tcGlsZSBhbmQgUnVuIHhtbHRlc3Q6CisKK0EgTGludXggTWFrZWZpbGUgYW5kIGEgV2luZG93cyBWaXN1YWwgQysrIC5kc3cgZmlsZSBpcyBwcm92aWRlZC4gCitTaW1wbHkgY29tcGlsZSBhbmQgcnVuLiBJdCB3aWxsIHdyaXRlIHRoZSBmaWxlIGRlbW90ZXN0LnhtbCB0byB5b3VyIAorZGlzayBhbmQgZ2VuZXJhdGUgb3V0cHV0IG9uIHRoZSBzY3JlZW4uIEl0IGFsc28gdGVzdHMgd2Fsa2luZyB0aGUKK0RPTSBieSBwcmludGluZyBvdXQgdGhlIG51bWJlciBvZiBub2RlcyBmb3VuZCB1c2luZyBkaWZmZXJlbnQgCit0ZWNobmlxdWVzLgorCitUaGUgTGludXggbWFrZWZpbGUgaXMgdmVyeSBnZW5lcmljIGFuZCB3aWxsCitwcm9iYWJseSBydW4gb24gb3RoZXIgc3lzdGVtcywgYnV0IGlzIG9ubHkgdGVzdGVkIG9uIExpbnV4LiBZb3Ugbm8KK2xvbmdlciBuZWVkIHRvIHJ1biAnbWFrZSBkZXBlbmQnLiBUaGUgZGVwZW5kZWNpZXMgaGF2ZSBiZWVuCitoYXJkIGNvZGVkLgorCis8aDM+V2luZG93cyBwcm9qZWN0IGZpbGUgZm9yIFZDNjwvaDM+Cis8dWw+Cis8bGk+dGlueXhtbDoJCXRpbnl4bWwgbGlicmFyeSwgbm9uLVNUTCA8L2xpPgorPGxpPnRpbnl4bWxTVEw6CQl0aW55eG1sIGxpYnJhcnksIFNUTCA8L2xpPgorPGxpPnRpbnlYbWxUZXN0Ogl0ZXN0IGFwcCwgbm9uLVNUTCA8L2xpPgorPGxpPnRpbnlYbWxUZXN0U1RMOiB0ZXN0IGFwcCwgU1RMIDwvbGk+Cis8L3VsPgorCis8aDM+TGludXggTWFrZSBmaWxlPC9oMz4KK0F0IHRoZSB0b3Agb2YgdGhlIG1ha2VmaWxlIHlvdSBjYW4gc2V0OgorCitQUk9GSUxFLCBERUJVRywgYW5kIFRJTllYTUxfVVNFX1NUTC4gRGV0YWlscyAoc3VjaCB0aGF0IHRoZXkgYXJlKSBhcmUgaW4KK3RoZSBtYWtlZmlsZS4KKworSW4gdGhlIHRpbnl4bWwgZGlyZWN0b3J5LCB0eXBlICJtYWtlIGNsZWFuIiB0aGVuICJtYWtlIi4gVGhlIGV4ZWN1dGFibGUKK2ZpbGUgJ3htbHRlc3QnIHdpbGwgYmUgY3JlYXRlZC4KKworCisKKzxoMz5UbyBVc2UgaW4gYW4gQXBwbGljYXRpb246PC9oMz4KKworQWRkIHRpbnl4bWwuY3BwLCB0aW55eG1sLmgsIHRpbnl4bWxlcnJvci5jcHAsIHRpbnl4bWxwYXJzZXIuY3BwLCB0aW55c3RyLmNwcCwgYW5kIHRpbnlzdHIuaCB0byB5b3VyCitwcm9qZWN0IG9yIG1ha2UgZmlsZS4gVGhhdCdzIGl0ISBJdCBzaG91bGQgY29tcGlsZSBvbiBhbnkgcmVhc29uYWJseQorY29tcGxpYW50IEMrKyBzeXN0ZW0uIFlvdSBkbyBub3QgbmVlZCB0byBlbmFibGUgZXhjZXB0aW9ucyBvcgorUlRUSSBmb3IgVGlueVhtbC4KKworCis8aDI+IEhvdyBUaW55WG1sIHdvcmtzLiAgPC9oMj4KKworQW4gZXhhbXBsZSBpcyBwcm9iYWJseSB0aGUgYmVzdCB3YXkgdG8gZ28uIFRha2U6CitAdmVyYmF0aW0KKwk8P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9bm8+CisJPCEtLSBPdXIgdG8gZG8gbGlzdCBkYXRhIC0tPgorCTxUb0RvPgorCQk8SXRlbSBwcmlvcml0eT0iMSI+IEdvIHRvIHRoZSA8Ym9sZD5Ub3kgc3RvcmUhPC9ib2xkPjwvSXRlbT4KKwkJPEl0ZW0gcHJpb3JpdHk9IjIiPiBEbyBiaWxsczwvSXRlbT4KKwk8L1RvRG8+CitAZW5kdmVyYmF0aW0KKworSXRzIG5vdCBtdWNoIG9mIGEgVG8gRG8gbGlzdCwgYnV0IGl0IHdpbGwgZG8uIFRvIHJlYWQgdGhpcyBmaWxlIAorKHNheSAiZGVtby54bWwiKSB5b3Ugd291bGQgY3JlYXRlIGEgZG9jdW1lbnQsIGFuZCBwYXJzZSBpdCBpbjoKK0B2ZXJiYXRpbQorCVRpWG1sRG9jdW1lbnQgZG9jKCAiZGVtby54bWwiICk7CisJZG9jLkxvYWRGaWxlKCk7CitAZW5kdmVyYmF0aW0KKworQW5kIGl0cyByZWFkeSB0byBnby4gTm93IGxldHMgbG9vayBhdCBzb21lIGxpbmVzIGFuZCBob3cgdGhleSAKK3JlbGF0ZSB0byB0aGUgRE9NLgorCitAdmVyYmF0aW0KKzw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT1ubz4KK0BlbmR2ZXJiYXRpbQorCisJVGhlIGZpcnN0IGxpbmUgaXMgYSBkZWNsYXJhdGlvbiwgYW5kIGdldHMgdHVybmVkIGludG8gdGhlCisJVGlYbWxEZWNsYXJhdGlvbiBjbGFzcy4gSXQgd2lsbCBiZSB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlCisJZG9jdW1lbnQgbm9kZS4KKwkKKwlUaGlzIGlzIHRoZSBvbmx5IGRpcmVjdGl2ZS9zcGVjaWFsIHRhZyBwYXJzZWQgYnkgYnkgVGlueVhtbC4KKwlHZW5lcmFsbHkgZGlyZWN0aXZlIHRhcmdzIGFyZSBzdG9yZWQgaW4gVGlYbWxVbmtub3duIHNvIHRoZSAKKwljb21tYW5kcyB3b250IGJlIGxvc3Qgd2hlbiBpdCBpcyBzYXZlZCBiYWNrIHRvIGRpc2suCisKK0B2ZXJiYXRpbQorPCEtLSBPdXIgdG8gZG8gbGlzdCBkYXRhIC0tPgorQGVuZHZlcmJhdGltCisKKwlBIGNvbW1lbnQuIFdpbGwgYmVjb21lIGEgVGlYbWxDb21tZW50IG9iamVjdC4KKworQHZlcmJhdGltCis8VG9Ebz4KK0BlbmR2ZXJiYXRpbQorCisJVGhlICJUb0RvIiB0YWcgZGVmaW5lcyBhIFRpWG1sRWxlbWVudCBvYmplY3QuIFRoaXMgb25lIGRvZXMgbm90IGhhdmUgCisJYW55IGF0dHJpYnV0ZXMsIGJ1dCBkb2VzIGNvbnRhaW4gMiBvdGhlciBlbGVtZW50cy4KKworQHZlcmJhdGltCis8SXRlbSBwcmlvcml0eT0iMSI+IAorQGVuZHZlcmJhdGltCisKKwlDcmVhdGVzIGFub3RoZXIgVGlYbWxFbGVtZW50IHdoaWNoIGlzIGEgY2hpbGQgb2YgdGhlICJUb0RvIiBlbGVtZW50LiAKKwlUaGlzIGVsZW1lbnQgaGFzIDEgYXR0cmlidXRlLCB3aXRoIHRoZSBuYW1lICJwcmlvcml0eSIgYW5kIHRoZSB2YWx1ZSAKKwkiMSIuCisKK0dvIHRvIHRoZSAKKworCUEgVGlYbWxUZXh0LiBUaGlzIGlzIGEgbGVhZiBub2RlIGFuZCBjYW5ub3QgY29udGFpbiBvdGhlciBub2Rlcy4gCisJSXQgaXMgYSBjaGlsZCBvZiB0aGUgIkl0ZW0iIFRpWG1sRWxlbWVudC4KKworQHZlcmJhdGltCis8Ym9sZD4KK0BlbmR2ZXJiYXRpbQorCisJCisJQW5vdGhlciBUaVhtbEVsZW1lbnQsIHRoaXMgb25lIGEgY2hpbGQgb2YgdGhlICJJdGVtIiBlbGVtZW50LgorCitFdGMuCisKK0xvb2tpbmcgYXQgdGhlIGVudGlyZSBvYmplY3QgdHJlZSwgeW91IGVuZCB1cCB3aXRoOgorQHZlcmJhdGltCitUaVhtbERvY3VtZW50CQkJCSJkZW1vLnhtbCIKKwlUaVhtbERlY2xhcmF0aW9uCQkidmVyc2lvbj0nMS4wJyIgInN0YW5kYWxvbmU9bm8iCisJVGlYbWxDb21tZW50CQkJIiBPdXIgdG8gZG8gbGlzdCBkYXRhIgorCVRpWG1sRWxlbWVudAkJCSJUb0RvIgorCQlUaVhtbEVsZW1lbnQJCSJJdGVtIgkJQXR0cmlidHV0ZXM6IHByaW9yaXR5ID0gMQorCQkJVGlYbWxUZXh0CQkiR28gdG8gdGhlICIKKwkJCVRpWG1sRWxlbWVudCAgICAiYm9sZCIKKwkJCQlUaVhtbFRleHQJIlRveSBzdG9yZSEiCisJCVRpWG1sRWxlbWVudAkJCSJJdGVtIgkJQXR0cmlidXRlczogcHJpb3JpdHk9MgorCQkJVGlYbWxUZXh0CQkJIkRvIGJpbGxzIgorQGVuZHZlcmJhdGltCisKKzxoMj4gRG9jdW1lbnRhdGlvbiA8L2gyPgorCitUaGUgZG9jdW1lbnRhdGlvbiBpcyBidWlsZCB3aXRoIERveHlnZW4sIHVzaW5nIHRoZSAnZG94JyAKK2NvbmZpZ3VyYXRpb24gZmlsZS4KKworPGgyPiBMaWNlbnNlIDwvaDI+CisKK1RpbnlYbWwgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHpsaWIgbGljZW5zZToKKworVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgCit3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IAorZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgorCitQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgCitwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgCityZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IAorbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIAorc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIAord291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKworMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgCittdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCisKKzMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSAKK2Rpc3RyaWJ1dGlvbi4KKworPGgyPiBSZWZlcmVuY2VzICA8L2gyPgorCitUaGUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSBpcyB0aGUgZGVmaW5pdGl2ZSBzdGFuZGFyZCBib2R5IGZvciAKK1hNTCwgYW5kIHRoZXJlIHdlYiBwYWdlcyBjb250YWluIGh1Z2UgYW1vdW50cyBvZiBpbmZvcm1hdGlvbi4gCisKK1RoZSBkZWZpbml0aXZlIHNwZWM6IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNC8iPgoraHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sLTIwMDQwMjA0LzwvYT4KKworSSBhbHNvIHJlY29tbWVuZCAiWE1MIFBvY2tldCBSZWZlcmVuY2UiIGJ5IFJvYmVydCBFY2tzdGVpbiBhbmQgcHVibGlzaGVkIGJ5IAorT1JlaWxseS4uLnRoZSBib29rIHRoYXQgZ290IHRoZSB3aG9sZSB0aGluZyBzdGFydGVkLgorCis8aDI+IENvbnRyaWJ1dG9ycywgQ29udGFjdHMsIGFuZCBhIEJyaWVmIEhpc3RvcnkgPC9oMj4KKworVGhhbmtzIHZlcnkgbXVjaCB0byBldmVyeW9uZSB3aG8gc2VuZHMgc3VnZ2VzdGlvbnMsIGJ1Z3MsIGlkZWFzLCBhbmQgCitlbmNvdXJhZ2VtZW50LiBJdCBhbGwgaGVscHMsIGFuZCBtYWtlcyB0aGlzIHByb2plY3QgZnVuLiBBIHNwZWNpYWwgdGhhbmtzCit0byB0aGUgY29udHJpYnV0b3JzIG9uIHRoZSB3ZWIgcGFnZXMgdGhhdCBrZWVwIGl0IGxpdmVseS4KKworU28gbWFueSBwZW9wbGUgaGF2ZSBzZW50IGluIGJ1Z3MgYW5kIGlkZWFzLCB0aGF0IHJhdGhlciB0aGFuIGxpc3QgaGVyZSAKK3dlIHRyeSB0byBnaXZlIGNyZWRpdCBkdWUgaW4gdGhlICJjaGFuZ2VzLnR4dCIgZmlsZS4KKworVGlueVhtbCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJlIExlZSBUaG9tYXNvbi4gKE9mdGVuIHRoZSAiSSIgc3RpbGwKK2luIHRoZSBkb2N1bWVuYXRpb24uKSBMZWUgcmV2aWV3cyBjaGFuZ2VzIGFuZCByZWxlYXNlcyBuZXcgdmVyc2lvbnMsCit3aXRoIHRoZSBoZWxwIG9mIFl2ZXMgQmVycXVpbiBhbmQgdGhlIHRpbnlYbWwgY29tbXVuaXR5LgorCitXZSBhcHByZWNpYXRlIHlvdXIgc3VnZ2VzdGlvbnMsIGFuZCB3b3VsZCBsb3ZlIHRvIGtub3cgaWYgeW91IAordXNlIFRpbnlYbWwuIEhvcGVmdWxseSB5b3Ugd2lsbCBlbmpveSBpdCBhbmQgZmluZCBpdCB1c2VmdWwuIAorUGxlYXNlIHBvc3QgcXVlc3Rpb25zLCBjb21tZW50cywgZmlsZSBidWdzLCBvciBjb250YWN0IHVzIGF0OgorCit3d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWwKKworTGVlIFRob21hc29uLAorWXZlcyBCZXJxdWluCisqLwpkaWZmIC0tZ2l0IGEvdGlueVhtbFRlc3QuZHNwIGIvdGlueVhtbFRlc3QuZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MjYyYjkKLS0tIC9kZXYvbnVsbAorKysgYi90aW55WG1sVGVzdC5kc3AKQEAgLTAsMCArMSw5MiBAQAorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ0aW55WG1sVGVzdCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCisjICoqIERPIE5PVCBFRElUICoqDQorDQorIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzDQorDQorQ0ZHPXRpbnlYbWxUZXN0IC0gV2luMzIgRGVidWcNCishTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgTk1BS0UgL2YgInRpbnlYbWxUZXN0Lm1hayIuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJ0aW55WG1sVGVzdC5tYWsiIENGRz0idGlueVhtbFRlc3QgLSBXaW4zMiBEZWJ1ZyINCishTUVTU0FHRSANCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCishTUVTU0FHRSANCishTUVTU0FHRSAidGlueVhtbFRlc3QgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJ0aW55WG1sVGVzdCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFIA0KKw0KKyMgQmVnaW4gUHJvamVjdA0KKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KKyMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQorQ1BQPWNsLmV4ZQ0KK1JTQz1yYy5leGUNCisNCishSUYgICIkKENGRykiID09ICJ0aW55WG1sVGVzdCAtIFdpbjMyIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueVhtbFRlc3RfX19XaW4zMl9SZWxlYXNlIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfUmVsZWFzZSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAidGlueVhtbFRlc3RfX19XaW4zMl9SZWxlYXNlIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdF9fX1dpbjMyX1JlbGVhc2UiDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiAvRkQgL2MNCisjIFNVQlRSQUNUIENQUCAvWVgNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCisjIEFERCBMSU5LMzIgLi9SZWxlYXNlL3Rpbnl4bWwubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCisNCishRUxTRUlGICAiJChDRkcpIiA9PSAidGlueVhtbFRlc3QgLSBXaW4zMiBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ0aW55WG1sVGVzdF9fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfRGVidWciDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIE91dHB1dF9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfRGVidWciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfRGVidWciDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZSIC9GRCAvR1ogL2MNCisjIFNVQlRSQUNUIENQUCAvWVgNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCisjIEFERCBMSU5LMzIgLi9EZWJ1Zy90aW55eG1sZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KKw0KKyFFTkRJRiANCisNCisjIEJlZ2luIFRhcmdldA0KKw0KKyMgTmFtZSAidGlueVhtbFRlc3QgLSBXaW4zMiBSZWxlYXNlIg0KKyMgTmFtZSAidGlueVhtbFRlc3QgLSBXaW4zMiBEZWJ1ZyINCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5ceG1sdGVzdC5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIFRhcmdldA0KKyMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS90aW55WG1sVGVzdFNUTC5kc3AgYi90aW55WG1sVGVzdFNUTC5kc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM0OWUwNgotLS0gL2Rldi9udWxsCisrKyBiL3RpbnlYbWxUZXN0U1RMLmRzcApAQCAtMCwwICsxLDkyIEBACisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9InRpbnlYbWxUZXN0U1RMIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KKyMgKiogRE8gTk9UIEVESVQgKioNCisNCisjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMNCisNCitDRkc9dGlueVhtbFRlc3RTVEwgLSBXaW4zMiBEZWJ1Zw0KKyFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCishTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCishTUVTU0FHRSANCishTUVTU0FHRSBOTUFLRSAvZiAidGlueVhtbFRlc3RTVEwubWFrIi4NCishTUVTU0FHRSANCishTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KKyFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQorIU1FU1NBR0UgDQorIU1FU1NBR0UgTk1BS0UgL2YgInRpbnlYbWxUZXN0U1RMLm1hayIgQ0ZHPSJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIERlYnVnIg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgInRpbnlYbWxUZXN0U1RMIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgDQorDQorIyBCZWdpbiBQcm9qZWN0DQorIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCisjIFBST1AgU2NjX1Byb2pOYW1lICIiDQorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCitDUFA9Y2wuZXhlDQorUlNDPXJjLmV4ZQ0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInRpbnlYbWxUZXN0U1RMIC0gV2luMzIgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ0aW55WG1sVGVzdFNUTF9fX1dpbjMyX1JlbGVhc2UiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9SZWxlYXNlIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBPdXRwdXRfRGlyICJ0aW55WG1sVGVzdFNUTF9fX1dpbjMyX1JlbGVhc2UiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0U1RMX19fV2luMzJfUmVsZWFzZSINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIlRJWE1MX1VTRV9TVEwiIC9GRCAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9ZWA0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KKyMgQUREIExJTkszMiAuL1JlbGVhc2VfU1RML3Rpbnl4bWxfc3RsLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInRpbnlYbWxUZXN0U1RMIC0gV2luMzIgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9EZWJ1ZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdFNUTF9fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICJ0aW55WG1sVGVzdFNUTF9fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdFNUTF9fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJUSVhNTF9VU0VfU1RMIiAvRlIgL0ZEIC9HWiAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9ZWA0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KKyMgQUREIExJTkszMiAuL0RlYnVnX1NUTC90aW55eG1sZF9zdGwubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQorDQorIUVORElGIA0KKw0KKyMgQmVnaW4gVGFyZ2V0DQorDQorIyBOYW1lICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIFJlbGVhc2UiDQorIyBOYW1lICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIERlYnVnIg0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx4bWx0ZXN0LmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBFbmQgVGFyZ2V0DQorIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3RpbnlzdHIuY3BwIGIvdGlueXN0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEyNTI0MgotLS0gL2Rldi9udWxsCisrKyBiL3RpbnlzdHIuY3BwCkBAIC0wLDAgKzEsMTE1IEBACisvKgord3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCitPcmlnaW5hbCBmaWxlIGJ5IFl2ZXMgQmVycXVpbi4KKworVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKK3dhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkKK2RhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KKworUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CitwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQKK3JlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CisKKzEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKK25vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcworc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uCit3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgorCisyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZAorbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgorCiszLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UKK2Rpc3RyaWJ1dGlvbi4KKyovCisKKy8qCisgKiBUSElTIEZJTEUgV0FTIEFMVEVSRUQgQlkgVHlnZSBM+HZzZXQsIDcuIEFwcmlsIDIwMDUuCisgKi8KKworCisjaWZuZGVmIFRJWE1MX1VTRV9TVEwKKworI2luY2x1ZGUgInRpbnlzdHIuaCIKKworLy8gRXJyb3IgdmFsdWUgZm9yIGZpbmQgcHJpbWl0aXZlCitjb25zdCBUaVhtbFN0cmluZzo6c2l6ZV90eXBlIFRpWG1sU3RyaW5nOjpucG9zID0gc3RhdGljX2Nhc3Q8IHNpemVfdHlwZSA+KC0xKTsKKworLy8gTnVsbCByZXAuCitUaVhtbFN0cmluZzo6UmVwIFRpWG1sU3RyaW5nOjpudWxscmVwXyA9IHsgMCwgMCwgJ1wwJyB9OworCisKK3ZvaWQgVGlYbWxTdHJpbmc6OnJlc2VydmUgKHNpemVfdHlwZSBjYXApCit7CisJaWYgKGNhcCA+IGNhcGFjaXR5KCkpCisJeworCQlUaVhtbFN0cmluZyB0bXA7CisJCXRtcC5pbml0KGxlbmd0aCgpLCBjYXApOworCQltZW1jcHkodG1wLnN0YXJ0KCksIGRhdGEoKSwgbGVuZ3RoKCkpOworCQlzd2FwKHRtcCk7CisJfQorfQorCisKK1RpWG1sU3RyaW5nJiBUaVhtbFN0cmluZzo6YXNzaWduKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90eXBlIGxlbikKK3sKKwlzaXplX3R5cGUgY2FwID0gY2FwYWNpdHkoKTsKKwlpZiAobGVuID4gY2FwIHx8IGNhcCA+IDMqKGxlbiArIDgpKQorCXsKKwkJVGlYbWxTdHJpbmcgdG1wOworCQl0bXAuaW5pdChsZW4pOworCQltZW1jcHkodG1wLnN0YXJ0KCksIHN0ciwgbGVuKTsKKwkJc3dhcCh0bXApOworCX0KKwllbHNlCisJeworCQltZW1tb3ZlKHN0YXJ0KCksIHN0ciwgbGVuKTsKKwkJc2V0X3NpemUobGVuKTsKKwl9CisJcmV0dXJuICp0aGlzOworfQorCisKK1RpWG1sU3RyaW5nJiBUaVhtbFN0cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90eXBlIGxlbikKK3sKKwlzaXplX3R5cGUgbmV3c2l6ZSA9IGxlbmd0aCgpICsgbGVuOworCWlmIChuZXdzaXplID4gY2FwYWNpdHkoKSkKKwl7CisJCXJlc2VydmUgKG5ld3NpemUgKyBjYXBhY2l0eSgpKTsKKwl9CisJbWVtbW92ZShmaW5pc2goKSwgc3RyLCBsZW4pOworCXNldF9zaXplKG5ld3NpemUpOworCXJldHVybiAqdGhpczsKK30KKworCitUaVhtbFN0cmluZyBvcGVyYXRvciArIChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikKK3sKKwlUaVhtbFN0cmluZyB0bXA7CisJdG1wLnJlc2VydmUoYS5sZW5ndGgoKSArIGIubGVuZ3RoKCkpOworCXRtcCArPSBhOworCXRtcCArPSBiOworCXJldHVybiB0bXA7Cit9CisKK1RpWG1sU3RyaW5nIG9wZXJhdG9yICsgKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgY2hhciogYikKK3sKKwlUaVhtbFN0cmluZyB0bXA7CisJVGlYbWxTdHJpbmc6OnNpemVfdHlwZSBiX2xlbiA9IHN0YXRpY19jYXN0PFRpWG1sU3RyaW5nOjpzaXplX3R5cGU+KCBzdHJsZW4oYikgKTsKKwl0bXAucmVzZXJ2ZShhLmxlbmd0aCgpICsgYl9sZW4pOworCXRtcCArPSBhOworCXRtcC5hcHBlbmQoYiwgYl9sZW4pOworCXJldHVybiB0bXA7Cit9CisKK1RpWG1sU3RyaW5nIG9wZXJhdG9yICsgKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikKK3sKKwlUaVhtbFN0cmluZyB0bXA7CisJVGlYbWxTdHJpbmc6OnNpemVfdHlwZSBhX2xlbiA9IHN0YXRpY19jYXN0PFRpWG1sU3RyaW5nOjpzaXplX3R5cGU+KCBzdHJsZW4oYSkgKTsKKwl0bXAucmVzZXJ2ZShhX2xlbiArIGIubGVuZ3RoKCkpOworCXRtcC5hcHBlbmQoYSwgYV9sZW4pOworCXRtcCArPSBiOworCXJldHVybiB0bXA7Cit9CisKKworI2VuZGlmCS8vIFRJWE1MX1VTRV9TVEwKZGlmZiAtLWdpdCBhL3RpbnlzdHIuaCBiL3RpbnlzdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWRkMmY5Ci0tLSAvZGV2L251bGwKKysrIGIvdGlueXN0ci5oCkBAIC0wLDAgKzEsMjk0IEBACisvKgord3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCitPcmlnaW5hbCBmaWxlIGJ5IFl2ZXMgQmVycXVpbi4KKworVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKK3dhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkKK2RhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KKworUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CitwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQKK3JlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CisKKzEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKK25vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcworc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uCit3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgorCisyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZAorbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgorCiszLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UKK2Rpc3RyaWJ1dGlvbi4KKyovCisKKy8qCisgKiBUSElTIEZJTEUgV0FTIEFMVEVSRUQgQlkgVHlnZSBMb3ZzZXQsIDcuIEFwcmlsIDIwMDUuCisgKgorICogLSBjb21wbGV0ZWx5IHJld3JpdHRlbi4gY29tcGFjdCwgY2xlYW4sIGFuZCBmYXN0IGltcGxlbWVudGF0aW9uLgorICogLSBzaXplb2YoVGlYbWxTdHJpbmcpID0gcG9pbnRlciBzaXplICg0IGJ5dGVzIG9uIDMyLWJpdCBzeXN0ZW1zKQorICogLSBmaXhlZCByZXNlcnZlKCkgdG8gd29yayBhcyBwZXIgc3BlY2lmaWNhdGlvbi4KKyAqIC0gZml4ZWQgYnVnZ3kgY29tcGFyZXMgb3BlcmF0b3I9PSgpLCBvcGVyYXRvcjwoKSwgYW5kIG9wZXJhdG9yPigpCisgKiAtIGZpeGVkIG9wZXJhdG9yKz0oKSB0byB0YWtlIGEgY29uc3QgcmVmIGFyZ3VtZW50LCBmb2xsb3dpbmcgc3BlYy4KKyAqIC0gYWRkZWQgImNvcHkiIGNvbnN0cnVjdG9yIHdpdGggbGVuZ3RoLCBhbmQgbW9zdCBjb21wYXJlIG9wZXJhdG9ycy4KKyAqIC0gYWRkZWQgc3dhcCgpLCBjbGVhcigpLCBzaXplKCksIGNhcGFjaXR5KCksIG9wZXJhdG9yKygpLgorICovCisKKyNpZm5kZWYgVElYTUxfVVNFX1NUTAorCisjaWZuZGVmIFRJWE1MX1NUUklOR19JTkNMVURFRAorI2RlZmluZSBUSVhNTF9TVFJJTkdfSU5DTFVERUQKKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisvKgorICAgVGlYbWxTdHJpbmcgaXMgYW4gZW11bGF0aW9uIG9mIGEgc3Vic2V0IG9mIHRoZSBzdGQ6OnN0cmluZyB0ZW1wbGF0ZS4KKyAgIEl0cyBwdXJwb3NlIGlzIHRvIGFsbG93IGNvbXBpbGluZyBUaW55WE1MIG9uIGNvbXBpbGVycyB3aXRoIG5vIG9yIHBvb3IgU1RMIHN1cHBvcnQuCisgICBPbmx5IHRoZSBtZW1iZXIgZnVuY3Rpb25zIHJlbGV2YW50IHRvIHRoZSBUaW55WE1MIHByb2plY3QgaGF2ZSBiZWVuIGltcGxlbWVudGVkLgorICAgVGhlIGJ1ZmZlciBhbGxvY2F0aW9uIGlzIG1hZGUgYnkgYSBzaW1wbGlzdGljIHBvd2VyIG9mIDIgbGlrZSBtZWNoYW5pc20gOiBpZiB3ZSBpbmNyZWFzZQorICAgYSBzdHJpbmcgYW5kIHRoZXJlJ3Mgbm8gbW9yZSByb29tLCB3ZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0d2ljZSBhcyBiaWcgYXMgd2UgbmVlZC4KKyovCitjbGFzcyBUaVhtbFN0cmluZworeworICBwdWJsaWMgOgorCS8vIFRoZSBzaXplIHR5cGUgdXNlZAorICAJdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90eXBlOworCisJLy8gRXJyb3IgdmFsdWUgZm9yIGZpbmQgcHJpbWl0aXZlCisJc3RhdGljIGNvbnN0IHNpemVfdHlwZSBucG9zOyAvLyA9IC0xOworCisKKwkvLyBUaVhtbFN0cmluZyBlbXB0eSBjb25zdHJ1Y3RvcgorCVRpWG1sU3RyaW5nICgpIDogcmVwXygmbnVsbHJlcF8pCisJeworCX0KKworCS8vIFRpWG1sU3RyaW5nIGNvcHkgY29uc3RydWN0b3IKKwlUaVhtbFN0cmluZyAoY29uc3QgVGlYbWxTdHJpbmcgJiBjb3B5KQorCXsKKwkJaW5pdChjb3B5Lmxlbmd0aCgpKTsKKwkJbWVtY3B5KHN0YXJ0KCksIGNvcHkuZGF0YSgpLCBsZW5ndGgoKSk7CisJfQorCisJLy8gVGlYbWxTdHJpbmcgY29uc3RydWN0b3IsIGJhc2VkIG9uIGEgc3RyaW5nCisJVGlYbWxTdHJpbmcgKGNvbnN0IGNoYXIgKiBjb3B5KQorCXsKKwkJaW5pdCggc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPiggc3RybGVuKGNvcHkpICkpOworCQltZW1jcHkoc3RhcnQoKSwgY29weSwgbGVuZ3RoKCkpOworCX0KKworCS8vIFRpWG1sU3RyaW5nIGNvbnN0cnVjdG9yLCBiYXNlZCBvbiBhIHN0cmluZworCVRpWG1sU3RyaW5nIChjb25zdCBjaGFyICogc3RyLCBzaXplX3R5cGUgbGVuKQorCXsKKwkJaW5pdChsZW4pOworCQltZW1jcHkoc3RhcnQoKSwgc3RyLCBsZW4pOworCX0KKworCS8vIFRpWG1sU3RyaW5nIGRlc3RydWN0b3IKKwl+VGlYbWxTdHJpbmcgKCkKKwl7CisJCXF1aXQoKTsKKwl9CisKKwkvLyA9IG9wZXJhdG9yCisJVGlYbWxTdHJpbmcmIG9wZXJhdG9yID0gKGNvbnN0IGNoYXIgKiBjb3B5KQorCXsKKwkJcmV0dXJuIGFzc2lnbiggY29weSwgKHNpemVfdHlwZSlzdHJsZW4oY29weSkpOworCX0KKworCS8vID0gb3BlcmF0b3IKKwlUaVhtbFN0cmluZyYgb3BlcmF0b3IgPSAoY29uc3QgVGlYbWxTdHJpbmcgJiBjb3B5KQorCXsKKwkJcmV0dXJuIGFzc2lnbihjb3B5LnN0YXJ0KCksIGNvcHkubGVuZ3RoKCkpOworCX0KKworCisJLy8gKz0gb3BlcmF0b3IuIE1hcHMgdG8gYXBwZW5kCisJVGlYbWxTdHJpbmcmIG9wZXJhdG9yICs9IChjb25zdCBjaGFyICogc3VmZml4KQorCXsKKwkJcmV0dXJuIGFwcGVuZChzdWZmaXgsIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oIHN0cmxlbihzdWZmaXgpICkpOworCX0KKworCS8vICs9IG9wZXJhdG9yLiBNYXBzIHRvIGFwcGVuZAorCVRpWG1sU3RyaW5nJiBvcGVyYXRvciArPSAoY2hhciBzaW5nbGUpCisJeworCQlyZXR1cm4gYXBwZW5kKCZzaW5nbGUsIDEpOworCX0KKworCS8vICs9IG9wZXJhdG9yLiBNYXBzIHRvIGFwcGVuZAorCVRpWG1sU3RyaW5nJiBvcGVyYXRvciArPSAoY29uc3QgVGlYbWxTdHJpbmcgJiBzdWZmaXgpCisJeworCQlyZXR1cm4gYXBwZW5kKHN1ZmZpeC5kYXRhKCksIHN1ZmZpeC5sZW5ndGgoKSk7CisJfQorCisKKwkvLyBDb252ZXJ0IGEgVGlYbWxTdHJpbmcgaW50byBhIG51bGwtdGVybWluYXRlZCBjaGFyICoKKwljb25zdCBjaGFyICogY19zdHIgKCkgY29uc3QgeyByZXR1cm4gcmVwXy0+c3RyOyB9CisKKwkvLyBDb252ZXJ0IGEgVGlYbWxTdHJpbmcgaW50byBhIGNoYXIgKiAobmVlZCBub3QgYmUgbnVsbCB0ZXJtaW5hdGVkKS4KKwljb25zdCBjaGFyICogZGF0YSAoKSBjb25zdCB7IHJldHVybiByZXBfLT5zdHI7IH0KKworCS8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIGEgVGlYbWxTdHJpbmcKKwlzaXplX3R5cGUgbGVuZ3RoICgpIGNvbnN0IHsgcmV0dXJuIHJlcF8tPnNpemU7IH0KKworCS8vIEFsaWFzIGZvciBsZW5ndGgoKQorCXNpemVfdHlwZSBzaXplICgpIGNvbnN0IHsgcmV0dXJuIHJlcF8tPnNpemU7IH0KKworCS8vIENoZWNrcyBpZiBhIFRpWG1sU3RyaW5nIGlzIGVtcHR5CisJYm9vbCBlbXB0eSAoKSBjb25zdCB7IHJldHVybiByZXBfLT5zaXplID09IDA7IH0KKworCS8vIFJldHVybiBjYXBhY2l0eSBvZiBzdHJpbmcKKwlzaXplX3R5cGUgY2FwYWNpdHkgKCkgY29uc3QgeyByZXR1cm4gcmVwXy0+Y2FwYWNpdHk7IH0KKworCisJLy8gc2luZ2xlIGNoYXIgZXh0cmFjdGlvbgorCWNvbnN0IGNoYXImIGF0IChzaXplX3R5cGUgaW5kZXgpIGNvbnN0CisJeworCQlhc3NlcnQoIGluZGV4IDwgbGVuZ3RoKCkgKTsKKwkJcmV0dXJuIHJlcF8tPnN0clsgaW5kZXggXTsKKwl9CisKKwkvLyBbXSBvcGVyYXRvcgorCWNoYXImIG9wZXJhdG9yIFtdIChzaXplX3R5cGUgaW5kZXgpIGNvbnN0CisJeworCQlhc3NlcnQoIGluZGV4IDwgbGVuZ3RoKCkgKTsKKwkJcmV0dXJuIHJlcF8tPnN0clsgaW5kZXggXTsKKwl9CisKKwkvLyBmaW5kIGEgY2hhciBpbiBhIHN0cmluZy4gUmV0dXJuIFRpWG1sU3RyaW5nOjpucG9zIGlmIG5vdCBmb3VuZAorCXNpemVfdHlwZSBmaW5kIChjaGFyIGxvb2t1cCkgY29uc3QKKwl7CisJCXJldHVybiBmaW5kKGxvb2t1cCwgMCk7CisJfQorCisJLy8gZmluZCBhIGNoYXIgaW4gYSBzdHJpbmcgZnJvbSBhbiBvZmZzZXQuIFJldHVybiBUaVhtbFN0cmluZzo6bnBvcyBpZiBub3QgZm91bmQKKwlzaXplX3R5cGUgZmluZCAoY2hhciB0b2ZpbmQsIHNpemVfdHlwZSBvZmZzZXQpIGNvbnN0CisJeworCQlpZiAob2Zmc2V0ID49IGxlbmd0aCgpKSByZXR1cm4gbnBvczsKKworCQlmb3IgKGNvbnN0IGNoYXIqIHAgPSBjX3N0cigpICsgb2Zmc2V0OyAqcCAhPSAnXDAnOyArK3ApCisJCXsKKwkJICAgaWYgKCpwID09IHRvZmluZCkgcmV0dXJuIHN0YXRpY19jYXN0PCBzaXplX3R5cGUgPiggcCAtIGNfc3RyKCkgKTsKKwkJfQorCQlyZXR1cm4gbnBvczsKKwl9CisKKwl2b2lkIGNsZWFyICgpCisJeworCQkvL0xlZToKKwkJLy9UaGUgb3JpZ2luYWwgd2FzIGp1c3QgdG9vIHN0cmFuZ2UsIHRob3VnaCBjb3JyZWN0OgorCQkvLwlUaVhtbFN0cmluZygpLnN3YXAoKnRoaXMpOworCQkvL0luc3RlYWQgdXNlIHRoZSBxdWl0ICYgcmUtaW5pdDoKKwkJcXVpdCgpOworCQlpbml0KDAsMCk7CisJfQorCisJLyoJRnVuY3Rpb24gdG8gcmVzZXJ2ZSBhIGJpZyBhbW91bnQgb2YgZGF0YSB3aGVuIHdlIGtub3cgd2UnbGwgbmVlZCBpdC4gQmUgYXdhcmUgdGhhdCB0aGlzCisJCWZ1bmN0aW9uIERPRVMgTk9UIGNsZWFyIHRoZSBjb250ZW50IG9mIHRoZSBUaVhtbFN0cmluZyBpZiBhbnkgZXhpc3RzLgorCSovCisJdm9pZCByZXNlcnZlIChzaXplX3R5cGUgY2FwKTsKKworCVRpWG1sU3RyaW5nJiBhc3NpZ24gKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90eXBlIGxlbik7CisKKwlUaVhtbFN0cmluZyYgYXBwZW5kIChjb25zdCBjaGFyKiBzdHIsIHNpemVfdHlwZSBsZW4pOworCisJdm9pZCBzd2FwIChUaVhtbFN0cmluZyYgb3RoZXIpCisJeworCQlSZXAqIHIgPSByZXBfOworCQlyZXBfID0gb3RoZXIucmVwXzsKKwkJb3RoZXIucmVwXyA9IHI7CisJfQorCisgIHByaXZhdGU6CisKKwl2b2lkIGluaXQoc2l6ZV90eXBlIHN6KSB7IGluaXQoc3osIHN6KTsgfQorCXZvaWQgc2V0X3NpemUoc2l6ZV90eXBlIHN6KSB7IHJlcF8tPnN0clsgcmVwXy0+c2l6ZSA9IHN6IF0gPSAnXDAnOyB9CisJY2hhciogc3RhcnQoKSBjb25zdCB7IHJldHVybiByZXBfLT5zdHI7IH0KKwljaGFyKiBmaW5pc2goKSBjb25zdCB7IHJldHVybiByZXBfLT5zdHIgKyByZXBfLT5zaXplOyB9CisKKwlzdHJ1Y3QgUmVwCisJeworCQlzaXplX3R5cGUgc2l6ZSwgY2FwYWNpdHk7CisJCWNoYXIgc3RyWzFdOworCX07CisKKwl2b2lkIGluaXQoc2l6ZV90eXBlIHN6LCBzaXplX3R5cGUgY2FwKQorCXsKKwkJaWYgKGNhcCkKKwkJeworCQkJcmVwXyA9IHN0YXRpY19jYXN0PFJlcCo+KG9wZXJhdG9yIG5ldyhzaXplb2YoUmVwKSArIGNhcCkpOworCQkJcmVwXy0+c3RyWyByZXBfLT5zaXplID0gc3ogXSA9ICdcMCc7CisJCQlyZXBfLT5jYXBhY2l0eSA9IGNhcDsKKwkJfQorCQllbHNlCisJCXsKKwkJCXJlcF8gPSAmbnVsbHJlcF87CisJCX0KKwl9CisKKwl2b2lkIHF1aXQoKQorCXsKKwkJaWYgKHJlcF8gIT0gJm51bGxyZXBfKQorCQl7CisJCQlvcGVyYXRvciBkZWxldGUocmVwXyk7CisJCX0KKwl9CisKKwlSZXAgKiByZXBfOworCXN0YXRpYyBSZXAgbnVsbHJlcF87CisKK30gOworCisKK2lubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikKK3sKKwlyZXR1cm4gICAgKCBhLmxlbmd0aCgpID09IGIubGVuZ3RoKCkgKQkJCQkvLyBvcHRpbWl6YXRpb24gb24gc29tZSBwbGF0Zm9ybXMKKwkgICAgICAgJiYgKCBzdHJjbXAoYS5jX3N0cigpLCBiLmNfc3RyKCkpID09IDAgKTsJLy8gYWN0dWFsIGNvbXBhcmUKK30KK2lubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKQoreworCXJldHVybiBzdHJjbXAoYS5jX3N0cigpLCBiLmNfc3RyKCkpIDwgMDsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KK2lubGluZSBib29sIG9wZXJhdG9yID4gIChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gYiA8IGE7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIDw9IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gIShiIDwgYSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yID49IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gIShhIDwgYik7IH0KKworaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gc3RyY21wKGEuY19zdHIoKSwgYikgPT0gMDsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gYiA9PSBhOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KK2lubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBjaGFyKiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpIHsgcmV0dXJuICEoYiA9PSBhKTsgfQorCitUaVhtbFN0cmluZyBvcGVyYXRvciArIChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYik7CitUaVhtbFN0cmluZyBvcGVyYXRvciArIChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IGNoYXIqIGIpOworVGlYbWxTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgY2hhciogYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKTsKKworCisvKgorICAgVGlYbWxPdXRTdHJlYW0gaXMgYW4gZW11bGF0aW9uIG9mIHN0ZDo6b3N0cmVhbS4gSXQgaXMgYmFzZWQgb24gVGlYbWxTdHJpbmcuCisgICBPbmx5IHRoZSBvcGVyYXRvcnMgdGhhdCB3ZSBuZWVkIGZvciBUaW55WE1MIGhhdmUgYmVlbiBkZXZlbG9wcGVkLgorKi8KK2NsYXNzIFRpWG1sT3V0U3RyZWFtIDogcHVibGljIFRpWG1sU3RyaW5nCit7CitwdWJsaWMgOgorCisJLy8gVGlYbWxPdXRTdHJlYW0gPDwgb3BlcmF0b3IuCisJVGlYbWxPdXRTdHJlYW0gJiBvcGVyYXRvciA8PCAoY29uc3QgVGlYbWxTdHJpbmcgJiBpbikKKwl7CisJCSp0aGlzICs9IGluOworCQlyZXR1cm4gKnRoaXM7CisJfQorCisJLy8gVGlYbWxPdXRTdHJlYW0gPDwgb3BlcmF0b3IuCisJVGlYbWxPdXRTdHJlYW0gJiBvcGVyYXRvciA8PCAoY29uc3QgY2hhciAqIGluKQorCXsKKwkJKnRoaXMgKz0gaW47CisJCXJldHVybiAqdGhpczsKKwl9CisKK30gOworCisjZW5kaWYJLy8gVElYTUxfU1RSSU5HX0lOQ0xVREVECisjZW5kaWYJLy8gVElYTUxfVVNFX1NUTApkaWZmIC0tZ2l0IGEvdGlueXhtbC5jcHAgYi90aW55eG1sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Zjg0ZGVjCi0tLSAvZGV2L251bGwKKysrIGIvdGlueXhtbC5jcHAKQEAgLTAsMCArMSwxNzM4IEBACisvKgord3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCitPcmlnaW5hbCBjb2RlICgyLjAgYW5kIGVhcmxpZXIgKWNvcHlyaWdodCAoYykgMjAwMC0yMDAyIExlZSBUaG9tYXNvbiAod3d3LmdyaW5uaW5nbGl6YXJkLmNvbSkKKworVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKK3dhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkKK2RhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KKworUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CitwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQKK3JlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CisKKzEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKK25vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcworc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uCit3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgorCisyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZAorbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgorCiszLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UKK2Rpc3RyaWJ1dGlvbi4KKyovCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgInRpbnl4bWwuaCIKKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKKyNpbmNsdWRlIDxzc3RyZWFtPgorI2VuZGlmCisKKworYm9vbCBUaVhtbEJhc2U6OmNvbmRlbnNlV2hpdGVTcGFjZSA9IHRydWU7CisKK3ZvaWQgVGlYbWxCYXNlOjpQdXRTdHJpbmcoIGNvbnN0IFRJWE1MX1NUUklORyYgc3RyLCBUSVhNTF9PU1RSRUFNKiBzdHJlYW0gKQoreworCVRJWE1MX1NUUklORyBidWZmZXI7CisJUHV0U3RyaW5nKCBzdHIsICZidWZmZXIgKTsKKwkoKnN0cmVhbSkgPDwgYnVmZmVyOworfQorCit2b2lkIFRpWG1sQmFzZTo6UHV0U3RyaW5nKCBjb25zdCBUSVhNTF9TVFJJTkcmIHN0ciwgVElYTUxfU1RSSU5HKiBvdXRTdHJpbmcgKQoreworCWludCBpPTA7CisKKwl3aGlsZSggaTwoaW50KXN0ci5sZW5ndGgoKSApCisJeworCQl1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgc3RyW2ldOworCisJCWlmICggICAgYyA9PSAnJicgCisJCSAgICAgJiYgaSA8ICggKGludClzdHIubGVuZ3RoKCkgLSAyICkKKwkJCSAmJiBzdHJbaSsxXSA9PSAnIycKKwkJCSAmJiBzdHJbaSsyXSA9PSAneCcgKQorCQl7CisJCQkvLyBIZXhhZGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlLgorCQkJLy8gUGFzcyB0aHJvdWdoIHVuY2hhbmdlZC4KKwkJCS8vICYjeEE5OwktLSBjb3B5cmlnaHQgc3ltYm9sLCBmb3IgZXhhbXBsZS4KKwkJCS8vCisJCQkvLyBUaGUgLTEgaXMgYSBidWcgZml4IGZyb20gUm9iIExhdmVhdXguIEl0IGtlZXBzCisJCQkvLyBhbiBvdmVyZmxvdyBmcm9tIGhhcHBlbmluZyBpZiB0aGVyZSBpcyBubyAnOycuCisJCQkvLyBUaGVyZSBhcmUgYWN0dWFsbHkgMiB3YXlzIHRvIGV4aXQgdGhpcyBsb29wIC0KKwkJCS8vIHdoaWxlIGZhaWxzIChlcnJvciBjYXNlKSBhbmQgYnJlYWsgKHNlbWljb2xvbiBmb3VuZCkuCisJCQkvLyBIb3dldmVyLCB0aGVyZSBpcyBubyBtZWNoYW5pc20gKGN1cnJlbnRseSkgZm9yCisJCQkvLyB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBhbiBlcnJvci4KKwkJCXdoaWxlICggaTwoaW50KXN0ci5sZW5ndGgoKS0xICkKKwkJCXsKKwkJCQlvdXRTdHJpbmctPmFwcGVuZCggc3RyLmNfc3RyKCkgKyBpLCAxICk7CisJCQkJKytpOworCQkJCWlmICggc3RyW2ldID09ICc7JyApCisJCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCBjID09ICcmJyApCisJCXsKKwkJCW91dFN0cmluZy0+YXBwZW5kKCBlbnRpdHlbMF0uc3RyLCBlbnRpdHlbMF0uc3RyTGVuZ3RoICk7CisJCQkrK2k7CisJCX0KKwkJZWxzZSBpZiAoIGMgPT0gJzwnICkKKwkJeworCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGVudGl0eVsxXS5zdHIsIGVudGl0eVsxXS5zdHJMZW5ndGggKTsKKwkJCSsraTsKKwkJfQorCQllbHNlIGlmICggYyA9PSAnPicgKQorCQl7CisJCQlvdXRTdHJpbmctPmFwcGVuZCggZW50aXR5WzJdLnN0ciwgZW50aXR5WzJdLnN0ckxlbmd0aCApOworCQkJKytpOworCQl9CisJCWVsc2UgaWYgKCBjID09ICdcIicgKQorCQl7CisJCQlvdXRTdHJpbmctPmFwcGVuZCggZW50aXR5WzNdLnN0ciwgZW50aXR5WzNdLnN0ckxlbmd0aCApOworCQkJKytpOworCQl9CisJCWVsc2UgaWYgKCBjID09ICdcJycgKQorCQl7CisJCQlvdXRTdHJpbmctPmFwcGVuZCggZW50aXR5WzRdLnN0ciwgZW50aXR5WzRdLnN0ckxlbmd0aCApOworCQkJKytpOworCQl9CisJCWVsc2UgaWYgKCBjIDwgMzIgKQorCQl7CisJCQkvLyBFYXN5IHBhc3MgYXQgbm9uLWFscGhhL251bWVyaWMvc3ltYm9sCisJCQkvLyBCZWxvdyAzMiBpcyBzeW1ib2xpYy4KKwkJCWNoYXIgYnVmWyAzMiBdOworCQkJCisJCQkjaWYgZGVmaW5lZChUSVhNTF9TTlBSSU5URikJCQorCQkJCVRJWE1MX1NOUFJJTlRGKCBidWYsIHNpemVvZihidWYpLCAiJiN4JTAyWDsiLCAodW5zaWduZWQpICggYyAmIDB4ZmYgKSApOworCQkJI2Vsc2UKKwkJCQlzcHJpbnRmKCBidWYsICImI3glMDJYOyIsICh1bnNpZ25lZCkgKCBjICYgMHhmZiApICk7CisJCQkjZW5kaWYJCQorCisJCQkvLypNRToJd2FybmluZyBDNDI2NzogY29udmVydCAnc2l6ZV90JyB0byAnaW50JworCQkJLy8qTUU6CUludC1DYXN0IHRvIG1ha2UgY29tcGlsZXIgaGFwcHkgLi4uCisJCQlvdXRTdHJpbmctPmFwcGVuZCggYnVmLCAoaW50KXN0cmxlbiggYnVmICkgKTsKKwkJCSsraTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8vY2hhciByZWFsYyA9IChjaGFyKSBjOworCQkJLy9vdXRTdHJpbmctPmFwcGVuZCggJnJlYWxjLCAxICk7CisJCQkqb3V0U3RyaW5nICs9IChjaGFyKSBjOwkvLyBzb21ld2hhdCBtb3JlIGVmZmljaWVudCBmdW5jdGlvbiBjYWxsLgorCQkJKytpOworCQl9CisJfQorfQorCisKKy8vIDwtLSBTdHJhbmdlIGNsYXNzIGZvciBhIGJ1ZyBmaXguIFNlYXJjaCBmb3IgU1RMX1NUUklOR19CVUcKK1RpWG1sQmFzZTo6U3RyaW5nVG9CdWZmZXI6OlN0cmluZ1RvQnVmZmVyKCBjb25zdCBUSVhNTF9TVFJJTkcmIHN0ciApCit7CisJYnVmZmVyID0gbmV3IGNoYXJbIHN0ci5sZW5ndGgoKSsxIF07CisJaWYgKCBidWZmZXIgKQorCXsKKwkJc3RyY3B5KCBidWZmZXIsIHN0ci5jX3N0cigpICk7CisJfQorfQorCisKK1RpWG1sQmFzZTo6U3RyaW5nVG9CdWZmZXI6On5TdHJpbmdUb0J1ZmZlcigpCit7CisJZGVsZXRlIFtdIGJ1ZmZlcjsKK30KKy8vIEVuZCBzdHJhbmdlIGJ1ZyBmaXguIC0tPgorCisKK1RpWG1sTm9kZTo6VGlYbWxOb2RlKCBOb2RlVHlwZSBfdHlwZSApIDogVGlYbWxCYXNlKCkKK3sKKwlwYXJlbnQgPSAwOworCXR5cGUgPSBfdHlwZTsKKwlmaXJzdENoaWxkID0gMDsKKwlsYXN0Q2hpbGQgPSAwOworCXByZXYgPSAwOworCW5leHQgPSAwOworfQorCisKK1RpWG1sTm9kZTo6flRpWG1sTm9kZSgpCit7CisJVGlYbWxOb2RlKiBub2RlID0gZmlyc3RDaGlsZDsKKwlUaVhtbE5vZGUqIHRlbXAgPSAwOworCisJd2hpbGUgKCBub2RlICkKKwl7CisJCXRlbXAgPSBub2RlOworCQlub2RlID0gbm9kZS0+bmV4dDsKKwkJZGVsZXRlIHRlbXA7CisJfQkKK30KKworCit2b2lkIFRpWG1sTm9kZTo6Q29weVRvKCBUaVhtbE5vZGUqIHRhcmdldCApIGNvbnN0Cit7CisJdGFyZ2V0LT5TZXRWYWx1ZSAodmFsdWUuY19zdHIoKSApOworCXRhcmdldC0+dXNlckRhdGEgPSB1c2VyRGF0YTsgCit9CisKKwordm9pZCBUaVhtbE5vZGU6OkNsZWFyKCkKK3sKKwlUaVhtbE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkOworCVRpWG1sTm9kZSogdGVtcCA9IDA7CisKKwl3aGlsZSAoIG5vZGUgKQorCXsKKwkJdGVtcCA9IG5vZGU7CisJCW5vZGUgPSBub2RlLT5uZXh0OworCQlkZWxldGUgdGVtcDsKKwl9CQorCisJZmlyc3RDaGlsZCA9IDA7CisJbGFzdENoaWxkID0gMDsKK30KKworCitUaVhtbE5vZGUqIFRpWG1sTm9kZTo6TGlua0VuZENoaWxkKCBUaVhtbE5vZGUqIG5vZGUgKQoreworCW5vZGUtPnBhcmVudCA9IHRoaXM7CisKKwlub2RlLT5wcmV2ID0gbGFzdENoaWxkOworCW5vZGUtPm5leHQgPSAwOworCisJaWYgKCBsYXN0Q2hpbGQgKQorCQlsYXN0Q2hpbGQtPm5leHQgPSBub2RlOworCWVsc2UKKwkJZmlyc3RDaGlsZCA9IG5vZGU7CQkJLy8gaXQgd2FzIGFuIGVtcHR5IGxpc3QuCisKKwlsYXN0Q2hpbGQgPSBub2RlOworCXJldHVybiBub2RlOworfQorCisKK1RpWG1sTm9kZSogVGlYbWxOb2RlOjpJbnNlcnRFbmRDaGlsZCggY29uc3QgVGlYbWxOb2RlJiBhZGRUaGlzICkKK3sKKwlUaVhtbE5vZGUqIG5vZGUgPSBhZGRUaGlzLkNsb25lKCk7CisJaWYgKCAhbm9kZSApCisJCXJldHVybiAwOworCisJcmV0dXJuIExpbmtFbmRDaGlsZCggbm9kZSApOworfQorCisKK1RpWG1sTm9kZSogVGlYbWxOb2RlOjpJbnNlcnRCZWZvcmVDaGlsZCggVGlYbWxOb2RlKiBiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUmIGFkZFRoaXMgKQorewkKKwlpZiAoICFiZWZvcmVUaGlzIHx8IGJlZm9yZVRoaXMtPnBhcmVudCAhPSB0aGlzICkKKwkJcmV0dXJuIDA7CisKKwlUaVhtbE5vZGUqIG5vZGUgPSBhZGRUaGlzLkNsb25lKCk7CisJaWYgKCAhbm9kZSApCisJCXJldHVybiAwOworCW5vZGUtPnBhcmVudCA9IHRoaXM7CisKKwlub2RlLT5uZXh0ID0gYmVmb3JlVGhpczsKKwlub2RlLT5wcmV2ID0gYmVmb3JlVGhpcy0+cHJldjsKKwlpZiAoIGJlZm9yZVRoaXMtPnByZXYgKQorCXsKKwkJYmVmb3JlVGhpcy0+cHJldi0+bmV4dCA9IG5vZGU7CisJfQorCWVsc2UKKwl7CisJCWFzc2VydCggZmlyc3RDaGlsZCA9PSBiZWZvcmVUaGlzICk7CisJCWZpcnN0Q2hpbGQgPSBub2RlOworCX0KKwliZWZvcmVUaGlzLT5wcmV2ID0gbm9kZTsKKwlyZXR1cm4gbm9kZTsKK30KKworCitUaVhtbE5vZGUqIFRpWG1sTm9kZTo6SW5zZXJ0QWZ0ZXJDaGlsZCggVGlYbWxOb2RlKiBhZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSYgYWRkVGhpcyApCit7CisJaWYgKCAhYWZ0ZXJUaGlzIHx8IGFmdGVyVGhpcy0+cGFyZW50ICE9IHRoaXMgKQorCQlyZXR1cm4gMDsKKworCVRpWG1sTm9kZSogbm9kZSA9IGFkZFRoaXMuQ2xvbmUoKTsKKwlpZiAoICFub2RlICkKKwkJcmV0dXJuIDA7CisJbm9kZS0+cGFyZW50ID0gdGhpczsKKworCW5vZGUtPnByZXYgPSBhZnRlclRoaXM7CisJbm9kZS0+bmV4dCA9IGFmdGVyVGhpcy0+bmV4dDsKKwlpZiAoIGFmdGVyVGhpcy0+bmV4dCApCisJeworCQlhZnRlclRoaXMtPm5leHQtPnByZXYgPSBub2RlOworCX0KKwllbHNlCisJeworCQlhc3NlcnQoIGxhc3RDaGlsZCA9PSBhZnRlclRoaXMgKTsKKwkJbGFzdENoaWxkID0gbm9kZTsKKwl9CisJYWZ0ZXJUaGlzLT5uZXh0ID0gbm9kZTsKKwlyZXR1cm4gbm9kZTsKK30KKworCitUaVhtbE5vZGUqIFRpWG1sTm9kZTo6UmVwbGFjZUNoaWxkKCBUaVhtbE5vZGUqIHJlcGxhY2VUaGlzLCBjb25zdCBUaVhtbE5vZGUmIHdpdGhUaGlzICkKK3sKKwlpZiAoIHJlcGxhY2VUaGlzLT5wYXJlbnQgIT0gdGhpcyApCisJCXJldHVybiAwOworCisJVGlYbWxOb2RlKiBub2RlID0gd2l0aFRoaXMuQ2xvbmUoKTsKKwlpZiAoICFub2RlICkKKwkJcmV0dXJuIDA7CisKKwlub2RlLT5uZXh0ID0gcmVwbGFjZVRoaXMtPm5leHQ7CisJbm9kZS0+cHJldiA9IHJlcGxhY2VUaGlzLT5wcmV2OworCisJaWYgKCByZXBsYWNlVGhpcy0+bmV4dCApCisJCXJlcGxhY2VUaGlzLT5uZXh0LT5wcmV2ID0gbm9kZTsKKwllbHNlCisJCWxhc3RDaGlsZCA9IG5vZGU7CisKKwlpZiAoIHJlcGxhY2VUaGlzLT5wcmV2ICkKKwkJcmVwbGFjZVRoaXMtPnByZXYtPm5leHQgPSBub2RlOworCWVsc2UKKwkJZmlyc3RDaGlsZCA9IG5vZGU7CisKKwlkZWxldGUgcmVwbGFjZVRoaXM7CisJbm9kZS0+cGFyZW50ID0gdGhpczsKKwlyZXR1cm4gbm9kZTsKK30KKworCitib29sIFRpWG1sTm9kZTo6UmVtb3ZlQ2hpbGQoIFRpWG1sTm9kZSogcmVtb3ZlVGhpcyApCit7CisJaWYgKCByZW1vdmVUaGlzLT5wYXJlbnQgIT0gdGhpcyApCisJewkKKwkJYXNzZXJ0KCAwICk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoIHJlbW92ZVRoaXMtPm5leHQgKQorCQlyZW1vdmVUaGlzLT5uZXh0LT5wcmV2ID0gcmVtb3ZlVGhpcy0+cHJldjsKKwllbHNlCisJCWxhc3RDaGlsZCA9IHJlbW92ZVRoaXMtPnByZXY7CisKKwlpZiAoIHJlbW92ZVRoaXMtPnByZXYgKQorCQlyZW1vdmVUaGlzLT5wcmV2LT5uZXh0ID0gcmVtb3ZlVGhpcy0+bmV4dDsKKwllbHNlCisJCWZpcnN0Q2hpbGQgPSByZW1vdmVUaGlzLT5uZXh0OworCisJZGVsZXRlIHJlbW92ZVRoaXM7CisJcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpGaXJzdENoaWxkKCBjb25zdCBjaGFyICogX3ZhbHVlICkgY29uc3QKK3sKKwljb25zdCBUaVhtbE5vZGUqIG5vZGU7CisJZm9yICggbm9kZSA9IGZpcnN0Q2hpbGQ7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0ICkKKwl7CisJCWlmICggc3RyY21wKCBub2RlLT5WYWx1ZSgpLCBfdmFsdWUgKSA9PSAwICkKKwkJCXJldHVybiBub2RlOworCX0KKwlyZXR1cm4gMDsKK30KKworCitUaVhtbE5vZGUqIFRpWG1sTm9kZTo6Rmlyc3RDaGlsZCggY29uc3QgY2hhciAqIF92YWx1ZSApCit7CisJVGlYbWxOb2RlKiBub2RlOworCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCApCisJeworCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCisJCQlyZXR1cm4gbm9kZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKworY29uc3QgVGlYbWxOb2RlKiBUaVhtbE5vZGU6Okxhc3RDaGlsZCggY29uc3QgY2hhciAqIF92YWx1ZSApIGNvbnN0Cit7CisJY29uc3QgVGlYbWxOb2RlKiBub2RlOworCWZvciAoIG5vZGUgPSBsYXN0Q2hpbGQ7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2ICkKKwl7CisJCWlmICggc3RyY21wKCBub2RlLT5WYWx1ZSgpLCBfdmFsdWUgKSA9PSAwICkKKwkJCXJldHVybiBub2RlOworCX0KKwlyZXR1cm4gMDsKK30KKworVGlYbWxOb2RlKiBUaVhtbE5vZGU6Okxhc3RDaGlsZCggY29uc3QgY2hhciAqIF92YWx1ZSApCit7CisJVGlYbWxOb2RlKiBub2RlOworCWZvciAoIG5vZGUgPSBsYXN0Q2hpbGQ7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2ICkKKwl7CisJCWlmICggc3RyY21wKCBub2RlLT5WYWx1ZSgpLCBfdmFsdWUgKSA9PSAwICkKKwkJCXJldHVybiBub2RlOworCX0KKwlyZXR1cm4gMDsKK30KKworY29uc3QgVGlYbWxOb2RlKiBUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiggY29uc3QgVGlYbWxOb2RlKiBwcmV2aW91cyApIGNvbnN0Cit7CisJaWYgKCAhcHJldmlvdXMgKQorCXsKKwkJcmV0dXJuIEZpcnN0Q2hpbGQoKTsKKwl9CisJZWxzZQorCXsKKwkJYXNzZXJ0KCBwcmV2aW91cy0+cGFyZW50ID09IHRoaXMgKTsKKwkJcmV0dXJuIHByZXZpb3VzLT5OZXh0U2libGluZygpOworCX0KK30KKworVGlYbWxOb2RlKiBUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiggVGlYbWxOb2RlKiBwcmV2aW91cyApCit7CisJaWYgKCAhcHJldmlvdXMgKQorCXsKKwkJcmV0dXJuIEZpcnN0Q2hpbGQoKTsKKwl9CisJZWxzZQorCXsKKwkJYXNzZXJ0KCBwcmV2aW91cy0+cGFyZW50ID09IHRoaXMgKTsKKwkJcmV0dXJuIHByZXZpb3VzLT5OZXh0U2libGluZygpOworCX0KK30KKworY29uc3QgVGlYbWxOb2RlKiBUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiggY29uc3QgY2hhciAqIHZhbCwgY29uc3QgVGlYbWxOb2RlKiBwcmV2aW91cyApIGNvbnN0Cit7CisJaWYgKCAhcHJldmlvdXMgKQorCXsKKwkJcmV0dXJuIEZpcnN0Q2hpbGQoIHZhbCApOworCX0KKwllbHNlCisJeworCQlhc3NlcnQoIHByZXZpb3VzLT5wYXJlbnQgPT0gdGhpcyApOworCQlyZXR1cm4gcHJldmlvdXMtPk5leHRTaWJsaW5nKCB2YWwgKTsKKwl9Cit9CisKK1RpWG1sTm9kZSogVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IGNoYXIgKiB2YWwsIFRpWG1sTm9kZSogcHJldmlvdXMgKQoreworCWlmICggIXByZXZpb3VzICkKKwl7CisJCXJldHVybiBGaXJzdENoaWxkKCB2YWwgKTsKKwl9CisJZWxzZQorCXsKKwkJYXNzZXJ0KCBwcmV2aW91cy0+cGFyZW50ID09IHRoaXMgKTsKKwkJcmV0dXJuIHByZXZpb3VzLT5OZXh0U2libGluZyggdmFsICk7CisJfQorfQorCitjb25zdCBUaVhtbE5vZGUqIFRpWG1sTm9kZTo6TmV4dFNpYmxpbmcoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKSBjb25zdCAKK3sKKwljb25zdCBUaVhtbE5vZGUqIG5vZGU7CisJZm9yICggbm9kZSA9IG5leHQ7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0ICkKKwl7CisJCWlmICggc3RyY21wKCBub2RlLT5WYWx1ZSgpLCBfdmFsdWUgKSA9PSAwICkKKwkJCXJldHVybiBub2RlOworCX0KKwlyZXR1cm4gMDsKK30KKworVGlYbWxOb2RlKiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nKCBjb25zdCBjaGFyICogX3ZhbHVlICkKK3sKKwlUaVhtbE5vZGUqIG5vZGU7CisJZm9yICggbm9kZSA9IG5leHQ7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0ICkKKwl7CisJCWlmICggc3RyY21wKCBub2RlLT5WYWx1ZSgpLCBfdmFsdWUgKSA9PSAwICkKKwkJCXJldHVybiBub2RlOworCX0KKwlyZXR1cm4gMDsKK30KKworY29uc3QgVGlYbWxOb2RlKiBUaVhtbE5vZGU6OlByZXZpb3VzU2libGluZyggY29uc3QgY2hhciAqIF92YWx1ZSApIGNvbnN0Cit7CisJY29uc3QgVGlYbWxOb2RlKiBub2RlOworCWZvciAoIG5vZGUgPSBwcmV2OyBub2RlOyBub2RlID0gbm9kZS0+cHJldiApCisJeworCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCisJCQlyZXR1cm4gbm9kZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sTm9kZSogVGlYbWxOb2RlOjpQcmV2aW91c1NpYmxpbmcoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQoreworCVRpWG1sTm9kZSogbm9kZTsKKwlmb3IgKCBub2RlID0gcHJldjsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXYgKQorCXsKKwkJaWYgKCBzdHJjbXAoIG5vZGUtPlZhbHVlKCksIF92YWx1ZSApID09IDAgKQorCQkJcmV0dXJuIG5vZGU7CisJfQorCXJldHVybiAwOworfQorCit2b2lkIFRpWG1sRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSApCit7CisJVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmluZCggbmFtZSApOworCWlmICggbm9kZSApCisJeworCQlhdHRyaWJ1dGVTZXQuUmVtb3ZlKCBub2RlICk7CisJCWRlbGV0ZSBub2RlOworCX0KK30KKworY29uc3QgVGlYbWxFbGVtZW50KiBUaVhtbE5vZGU6OkZpcnN0Q2hpbGRFbGVtZW50KCkgY29uc3QKK3sKKwljb25zdCBUaVhtbE5vZGUqIG5vZGU7CisKKwlmb3IgKAlub2RlID0gRmlyc3RDaGlsZCgpOworCQkJbm9kZTsKKwkJCW5vZGUgPSBub2RlLT5OZXh0U2libGluZygpICkKKwl7CisJCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQorCQkJcmV0dXJuIG5vZGUtPlRvRWxlbWVudCgpOworCX0KKwlyZXR1cm4gMDsKK30KKworVGlYbWxFbGVtZW50KiBUaVhtbE5vZGU6OkZpcnN0Q2hpbGRFbGVtZW50KCkKK3sKKwlUaVhtbE5vZGUqIG5vZGU7CisKKwlmb3IgKAlub2RlID0gRmlyc3RDaGlsZCgpOworCQkJbm9kZTsKKwkJCW5vZGUgPSBub2RlLT5OZXh0U2libGluZygpICkKKwl7CisJCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQorCQkJcmV0dXJuIG5vZGUtPlRvRWxlbWVudCgpOworCX0KKwlyZXR1cm4gMDsKK30KKworY29uc3QgVGlYbWxFbGVtZW50KiBUaVhtbE5vZGU6OkZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBjaGFyICogX3ZhbHVlICkgY29uc3QKK3sKKwljb25zdCBUaVhtbE5vZGUqIG5vZGU7CisKKwlmb3IgKAlub2RlID0gRmlyc3RDaGlsZCggX3ZhbHVlICk7CisJCQlub2RlOworCQkJbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCBfdmFsdWUgKSApCisJeworCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKKwkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCggY29uc3QgY2hhciAqIF92YWx1ZSApCit7CisJVGlYbWxOb2RlKiBub2RlOworCisJZm9yICgJbm9kZSA9IEZpcnN0Q2hpbGQoIF92YWx1ZSApOworCQkJbm9kZTsKKwkJCW5vZGUgPSBub2RlLT5OZXh0U2libGluZyggX3ZhbHVlICkgKQorCXsKKwkJaWYgKCBub2RlLT5Ub0VsZW1lbnQoKSApCisJCQlyZXR1cm4gbm9kZS0+VG9FbGVtZW50KCk7CisJfQorCXJldHVybiAwOworfQorCitjb25zdCBUaVhtbEVsZW1lbnQqIFRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50KCkgY29uc3QKK3sKKwljb25zdCBUaVhtbE5vZGUqIG5vZGU7CisKKwlmb3IgKAlub2RlID0gTmV4dFNpYmxpbmcoKTsKKwlub2RlOworCW5vZGUgPSBub2RlLT5OZXh0U2libGluZygpICkKKwl7CisJCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQorCQkJcmV0dXJuIG5vZGUtPlRvRWxlbWVudCgpOworCX0KKwlyZXR1cm4gMDsKK30KKworVGlYbWxFbGVtZW50KiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCgpCit7CisJVGlYbWxOb2RlKiBub2RlOworCisJZm9yICgJbm9kZSA9IE5leHRTaWJsaW5nKCk7CisJbm9kZTsKKwlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCisJeworCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKKwkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IFRpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpOZXh0U2libGluZ0VsZW1lbnQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKSBjb25zdAoreworCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKKworCWZvciAoCW5vZGUgPSBOZXh0U2libGluZyggX3ZhbHVlICk7CisJbm9kZTsKKwlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoIF92YWx1ZSApICkKKwl7CisJCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQorCQkJcmV0dXJuIG5vZGUtPlRvRWxlbWVudCgpOworCX0KKwlyZXR1cm4gMDsKK30KKworVGlYbWxFbGVtZW50KiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCggY29uc3QgY2hhciAqIF92YWx1ZSApCit7CisJVGlYbWxOb2RlKiBub2RlOworCisJZm9yICgJbm9kZSA9IE5leHRTaWJsaW5nKCBfdmFsdWUgKTsKKwlub2RlOworCW5vZGUgPSBub2RlLT5OZXh0U2libGluZyggX3ZhbHVlICkgKQorCXsKKwkJaWYgKCBub2RlLT5Ub0VsZW1lbnQoKSApCisJCQlyZXR1cm4gbm9kZS0+VG9FbGVtZW50KCk7CisJfQorCXJldHVybiAwOworfQorCisKK2NvbnN0IFRpWG1sRG9jdW1lbnQqIFRpWG1sTm9kZTo6R2V0RG9jdW1lbnQoKSBjb25zdAoreworCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKKworCWZvciggbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnQgKQorCXsKKwkJaWYgKCBub2RlLT5Ub0RvY3VtZW50KCkgKQorCQkJcmV0dXJuIG5vZGUtPlRvRG9jdW1lbnQoKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sRG9jdW1lbnQqIFRpWG1sTm9kZTo6R2V0RG9jdW1lbnQoKQoreworCVRpWG1sTm9kZSogbm9kZTsKKworCWZvciggbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnQgKQorCXsKKwkJaWYgKCBub2RlLT5Ub0RvY3VtZW50KCkgKQorCQkJcmV0dXJuIG5vZGUtPlRvRG9jdW1lbnQoKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sRWxlbWVudDo6VGlYbWxFbGVtZW50IChjb25zdCBjaGFyICogX3ZhbHVlKQorCTogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OkVMRU1FTlQgKQoreworCWZpcnN0Q2hpbGQgPSBsYXN0Q2hpbGQgPSAwOworCXZhbHVlID0gX3ZhbHVlOworfQorCisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCitUaVhtbEVsZW1lbnQ6OlRpWG1sRWxlbWVudCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApIAorCTogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OkVMRU1FTlQgKQoreworCWZpcnN0Q2hpbGQgPSBsYXN0Q2hpbGQgPSAwOworCXZhbHVlID0gX3ZhbHVlOworfQorI2VuZGlmCisKKworVGlYbWxFbGVtZW50OjpUaVhtbEVsZW1lbnQoIGNvbnN0IFRpWG1sRWxlbWVudCYgY29weSkKKwk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpFTEVNRU5UICkKK3sKKwlmaXJzdENoaWxkID0gbGFzdENoaWxkID0gMDsKKwljb3B5LkNvcHlUbyggdGhpcyApOwkKK30KKworCit2b2lkIFRpWG1sRWxlbWVudDo6b3BlcmF0b3I9KCBjb25zdCBUaVhtbEVsZW1lbnQmIGJhc2UgKQoreworCUNsZWFyVGhpcygpOworCWJhc2UuQ29weVRvKCB0aGlzICk7Cit9CisKKworVGlYbWxFbGVtZW50Ojp+VGlYbWxFbGVtZW50KCkKK3sKKwlDbGVhclRoaXMoKTsKK30KKworCit2b2lkIFRpWG1sRWxlbWVudDo6Q2xlYXJUaGlzKCkKK3sKKwlDbGVhcigpOworCXdoaWxlKCBhdHRyaWJ1dGVTZXQuRmlyc3QoKSApCisJeworCQlUaVhtbEF0dHJpYnV0ZSogbm9kZSA9IGF0dHJpYnV0ZVNldC5GaXJzdCgpOworCQlhdHRyaWJ1dGVTZXQuUmVtb3ZlKCBub2RlICk7CisJCWRlbGV0ZSBub2RlOworCX0KK30KKworCitjb25zdCBjaGFyICogVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lICkgY29uc3QKK3sKKwljb25zdCBUaVhtbEF0dHJpYnV0ZSogbm9kZSA9IGF0dHJpYnV0ZVNldC5GaW5kKCBuYW1lICk7CisKKwlpZiAoIG5vZGUgKQorCQlyZXR1cm4gbm9kZS0+VmFsdWUoKTsKKworCXJldHVybiAwOworfQorCisKK2NvbnN0IGNoYXIgKiBUaVhtbEVsZW1lbnQ6OkF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUsIGludCogaSApIGNvbnN0Cit7CisJY29uc3QgY2hhciAqIHMgPSBBdHRyaWJ1dGUoIG5hbWUgKTsKKwlpZiAoIGkgKQorCXsKKwkJaWYgKCBzICkKKwkJCSppID0gYXRvaSggcyApOworCQllbHNlCisJCQkqaSA9IDA7CisJfQorCXJldHVybiBzOworfQorCisKK2NvbnN0IGNoYXIgKiBUaVhtbEVsZW1lbnQ6OkF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUsIGRvdWJsZSogZCApIGNvbnN0Cit7CisJY29uc3QgY2hhciAqIHMgPSBBdHRyaWJ1dGUoIG5hbWUgKTsKKwlpZiAoIGQgKQorCXsKKwkJaWYgKCBzICkKKwkJCSpkID0gYXRvZiggcyApOworCQllbHNlCisJCQkqZCA9IDA7CisJfQorCXJldHVybiBzOworfQorCisKK2ludCBUaVhtbEVsZW1lbnQ6OlF1ZXJ5SW50QXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBpbnQqIGl2YWwgKSBjb25zdAoreworCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBub2RlID0gYXR0cmlidXRlU2V0LkZpbmQoIG5hbWUgKTsKKwlpZiAoICFub2RlICkKKwkJcmV0dXJuIFRJWE1MX05PX0FUVFJJQlVURTsKKworCXJldHVybiBub2RlLT5RdWVyeUludFZhbHVlKCBpdmFsICk7Cit9CisKKworaW50IFRpWG1sRWxlbWVudDo6UXVlcnlEb3VibGVBdHRyaWJ1dGUoIGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSogZHZhbCApIGNvbnN0Cit7CisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmluZCggbmFtZSApOworCWlmICggIW5vZGUgKQorCQlyZXR1cm4gVElYTUxfTk9fQVRUUklCVVRFOworCisJcmV0dXJuIG5vZGUtPlF1ZXJ5RG91YmxlVmFsdWUoIGR2YWwgKTsKK30KKworCit2b2lkIFRpWG1sRWxlbWVudDo6U2V0QXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSwgaW50IHZhbCApCit7CQorCWNoYXIgYnVmWzY0XTsKKwkjaWYgZGVmaW5lZChUSVhNTF9TTlBSSU5URikJCQorCQlUSVhNTF9TTlBSSU5URiggYnVmLCBzaXplb2YoYnVmKSwgIiVkIiwgdmFsICk7CisJI2Vsc2UKKwkJc3ByaW50ZiggYnVmLCAiJWQiLCB2YWwgKTsKKwkjZW5kaWYKKwlTZXRBdHRyaWJ1dGUoIG5hbWUsIGJ1ZiApOworfQorCisKK3ZvaWQgVGlYbWxFbGVtZW50OjpTZXREb3VibGVBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBkb3VibGUgdmFsICkKK3sJCisJY2hhciBidWZbMjU2XTsKKwkjaWYgZGVmaW5lZChUSVhNTF9TTlBSSU5URikJCQorCQlUSVhNTF9TTlBSSU5URiggYnVmLCBzaXplb2YoYnVmKSwgIiVmIiwgdmFsICk7CisJI2Vsc2UKKwkJc3ByaW50ZiggYnVmLCAiJWYiLCB2YWwgKTsKKwkjZW5kaWYKKwlTZXRBdHRyaWJ1dGUoIG5hbWUsIGJ1ZiApOworfQorCisKK3ZvaWQgVGlYbWxFbGVtZW50OjpTZXRBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBjb25zdCBjaGFyICogX3ZhbHVlICkKK3sKKwlUaVhtbEF0dHJpYnV0ZSogbm9kZSA9IGF0dHJpYnV0ZVNldC5GaW5kKCBuYW1lICk7CisJaWYgKCBub2RlICkKKwl7CisJCW5vZGUtPlNldFZhbHVlKCBfdmFsdWUgKTsKKwkJcmV0dXJuOworCX0KKworCVRpWG1sQXR0cmlidXRlKiBhdHRyaWIgPSBuZXcgVGlYbWxBdHRyaWJ1dGUoIG5hbWUsIF92YWx1ZSApOworCWlmICggYXR0cmliICkKKwl7CisJCWF0dHJpYnV0ZVNldC5BZGQoIGF0dHJpYiApOworCX0KKwllbHNlCisJeworCQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX09VVF9PRl9NRU1PUlksIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwl9Cit9CisKK3ZvaWQgVGlYbWxFbGVtZW50OjpQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0Cit7CisJaW50IGk7CisJZm9yICggaT0wOyBpPGRlcHRoOyBpKysgKQorCXsKKwkJZnByaW50ZiggY2ZpbGUsICIgICAgIiApOworCX0KKworCWZwcmludGYoIGNmaWxlLCAiPCVzIiwgdmFsdWUuY19zdHIoKSApOworCisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIGF0dHJpYjsKKwlmb3IgKCBhdHRyaWIgPSBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsgYXR0cmliOyBhdHRyaWIgPSBhdHRyaWItPk5leHQoKSApCisJeworCQlmcHJpbnRmKCBjZmlsZSwgIiAiICk7CisJCWF0dHJpYi0+UHJpbnQoIGNmaWxlLCBkZXB0aCApOworCX0KKworCS8vIFRoZXJlIGFyZSAzIGRpZmZlcmVudCBmb3JtYXR0aW5nIGFwcHJvYWNoZXM6CisJLy8gMSkgQW4gZWxlbWVudCB3aXRob3V0IGNoaWxkcmVuIGlzIHByaW50ZWQgYXMgYSA8Zm9vIC8+IG5vZGUKKwkvLyAyKSBBbiBlbGVtZW50IHdpdGggb25seSBhIHRleHQgY2hpbGQgaXMgcHJpbnRlZCBhcyA8Zm9vPiB0ZXh0IDwvZm9vPgorCS8vIDMpIEFuIGVsZW1lbnQgd2l0aCBjaGlsZHJlbiBpcyBwcmludGVkIG9uIG11bHRpcGxlIGxpbmVzLgorCVRpWG1sTm9kZSogbm9kZTsKKwlpZiAoICFmaXJzdENoaWxkICkKKwl7CisJCWZwcmludGYoIGNmaWxlLCAiIC8+IiApOworCX0KKwllbHNlIGlmICggZmlyc3RDaGlsZCA9PSBsYXN0Q2hpbGQgJiYgZmlyc3RDaGlsZC0+VG9UZXh0KCkgKQorCXsKKwkJZnByaW50ZiggY2ZpbGUsICI+IiApOworCQlmaXJzdENoaWxkLT5QcmludCggY2ZpbGUsIGRlcHRoICsgMSApOworCQlmcHJpbnRmKCBjZmlsZSwgIjwvJXM+IiwgdmFsdWUuY19zdHIoKSApOworCX0KKwllbHNlCisJeworCQlmcHJpbnRmKCBjZmlsZSwgIj4iICk7CisKKwkJZm9yICggbm9kZSA9IGZpcnN0Q2hpbGQ7IG5vZGU7IG5vZGU9bm9kZS0+TmV4dFNpYmxpbmcoKSApCisJCXsKKwkJCWlmICggIW5vZGUtPlRvVGV4dCgpICkKKwkJCXsKKwkJCQlmcHJpbnRmKCBjZmlsZSwgIlxuIiApOworCQkJfQorCQkJbm9kZS0+UHJpbnQoIGNmaWxlLCBkZXB0aCsxICk7CisJCX0KKwkJZnByaW50ZiggY2ZpbGUsICJcbiIgKTsKKwkJZm9yKCBpPTA7IGk8ZGVwdGg7ICsraSApCisJCWZwcmludGYoIGNmaWxlLCAiICAgICIgKTsKKwkJZnByaW50ZiggY2ZpbGUsICI8LyVzPiIsIHZhbHVlLmNfc3RyKCkgKTsKKwl9Cit9CisKK3ZvaWQgVGlYbWxFbGVtZW50OjpTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBzdHJlYW0gKSBjb25zdAoreworCSgqc3RyZWFtKSA8PCAiPCIgPDwgdmFsdWU7CisKKwljb25zdCBUaVhtbEF0dHJpYnV0ZSogYXR0cmliOworCWZvciAoIGF0dHJpYiA9IGF0dHJpYnV0ZVNldC5GaXJzdCgpOyBhdHRyaWI7IGF0dHJpYiA9IGF0dHJpYi0+TmV4dCgpICkKKwl7CQorCQkoKnN0cmVhbSkgPDwgIiAiOworCQlhdHRyaWItPlN0cmVhbU91dCggc3RyZWFtICk7CisJfQorCisJLy8gSWYgdGhpcyBub2RlIGhhcyBjaGlsZHJlbiwgZ2l2ZSBpdCBhIGNsb3NpbmcgdGFnLiBFbHNlCisJLy8gbWFrZSBpdCBhbiBlbXB0eSB0YWcuCisJVGlYbWxOb2RlKiBub2RlOworCWlmICggZmlyc3RDaGlsZCApCisJeyAJCQorCQkoKnN0cmVhbSkgPDwgIj4iOworCisJCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlPW5vZGUtPk5leHRTaWJsaW5nKCkgKQorCQl7CisJCQlub2RlLT5TdHJlYW1PdXQoIHN0cmVhbSApOworCQl9CisJCSgqc3RyZWFtKSA8PCAiPC8iIDw8IHZhbHVlIDw8ICI+IjsKKwl9CisJZWxzZQorCXsKKwkJKCpzdHJlYW0pIDw8ICIgLz4iOworCX0KK30KKworCit2b2lkIFRpWG1sRWxlbWVudDo6Q29weVRvKCBUaVhtbEVsZW1lbnQqIHRhcmdldCApIGNvbnN0Cit7CisJLy8gc3VwZXJjbGFzczoKKwlUaVhtbE5vZGU6OkNvcHlUbyggdGFyZ2V0ICk7CisKKwkvLyBFbGVtZW50IGNsYXNzOiAKKwkvLyBDbG9uZSB0aGUgYXR0cmlidXRlcywgdGhlbiBjbG9uZSB0aGUgY2hpbGRyZW4uCisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IDA7CisJZm9yKAlhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsKKwlhdHRyaWJ1dGU7CisJYXR0cmlidXRlID0gYXR0cmlidXRlLT5OZXh0KCkgKQorCXsKKwkJdGFyZ2V0LT5TZXRBdHRyaWJ1dGUoIGF0dHJpYnV0ZS0+TmFtZSgpLCBhdHRyaWJ1dGUtPlZhbHVlKCkgKTsKKwl9CisKKwlUaVhtbE5vZGUqIG5vZGUgPSAwOworCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCisJeworCQl0YXJnZXQtPkxpbmtFbmRDaGlsZCggbm9kZS0+Q2xvbmUoKSApOworCX0KK30KKworCitUaVhtbE5vZGUqIFRpWG1sRWxlbWVudDo6Q2xvbmUoKSBjb25zdAoreworCVRpWG1sRWxlbWVudCogY2xvbmUgPSBuZXcgVGlYbWxFbGVtZW50KCBWYWx1ZSgpICk7CisJaWYgKCAhY2xvbmUgKQorCQlyZXR1cm4gMDsKKworCUNvcHlUbyggY2xvbmUgKTsKKwlyZXR1cm4gY2xvbmU7Cit9CisKKworY29uc3QgY2hhciogVGlYbWxFbGVtZW50OjpHZXRUZXh0KCkgY29uc3QKK3sKKwljb25zdCBUaVhtbE5vZGUqIGNoaWxkID0gdGhpcy0+Rmlyc3RDaGlsZCgpOworCWlmICggY2hpbGQgKSB7CisJCWNvbnN0IFRpWG1sVGV4dCogY2hpbGRUZXh0ID0gY2hpbGQtPlRvVGV4dCgpOworCQlpZiAoIGNoaWxkVGV4dCApIHsKKwkJCXJldHVybiBjaGlsZFRleHQtPlZhbHVlKCk7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKKworVGlYbWxEb2N1bWVudDo6VGlYbWxEb2N1bWVudCgpIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OkRPQ1VNRU5UICkKK3sKKwl0YWJzaXplID0gNDsKKwl1c2VNaWNyb3NvZnRCT00gPSBmYWxzZTsKKwlDbGVhckVycm9yKCk7Cit9CisKK1RpWG1sRG9jdW1lbnQ6OlRpWG1sRG9jdW1lbnQoIGNvbnN0IGNoYXIgKiBkb2N1bWVudE5hbWUgKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpET0NVTUVOVCApCit7CisJdGFic2l6ZSA9IDQ7CisJdXNlTWljcm9zb2Z0Qk9NID0gZmFsc2U7CisJdmFsdWUgPSBkb2N1bWVudE5hbWU7CisJQ2xlYXJFcnJvcigpOworfQorCisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCitUaVhtbERvY3VtZW50OjpUaVhtbERvY3VtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgZG9jdW1lbnROYW1lICkgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6RE9DVU1FTlQgKQoreworCXRhYnNpemUgPSA0OworCXVzZU1pY3Jvc29mdEJPTSA9IGZhbHNlOworICAgIHZhbHVlID0gZG9jdW1lbnROYW1lOworCUNsZWFyRXJyb3IoKTsKK30KKyNlbmRpZgorCisKK1RpWG1sRG9jdW1lbnQ6OlRpWG1sRG9jdW1lbnQoIGNvbnN0IFRpWG1sRG9jdW1lbnQmIGNvcHkgKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpET0NVTUVOVCApCit7CisJY29weS5Db3B5VG8oIHRoaXMgKTsKK30KKworCit2b2lkIFRpWG1sRG9jdW1lbnQ6Om9wZXJhdG9yPSggY29uc3QgVGlYbWxEb2N1bWVudCYgY29weSApCit7CisJQ2xlYXIoKTsKKwljb3B5LkNvcHlUbyggdGhpcyApOworfQorCisKK2Jvb2wgVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUoIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCS8vIFNlZSBTVExfU1RSSU5HX0JVRyBiZWxvdy4KKwlTdHJpbmdUb0J1ZmZlciBidWYoIHZhbHVlICk7CisKKwlpZiAoIGJ1Zi5idWZmZXIgJiYgTG9hZEZpbGUoIGJ1Zi5idWZmZXIsIGVuY29kaW5nICkgKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKworCitib29sIFRpWG1sRG9jdW1lbnQ6OlNhdmVGaWxlKCkgY29uc3QKK3sKKwkvLyBTZWUgU1RMX1NUUklOR19CVUcgYmVsb3cuCisJU3RyaW5nVG9CdWZmZXIgYnVmKCB2YWx1ZSApOworCisJaWYgKCBidWYuYnVmZmVyICYmIFNhdmVGaWxlKCBidWYuYnVmZmVyICkgKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKworYm9vbCBUaVhtbERvY3VtZW50OjpMb2FkRmlsZSggY29uc3QgY2hhciogZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCS8vIERlbGV0ZSB0aGUgZXhpc3RpbmcgZGF0YToKKwlDbGVhcigpOworCWxvY2F0aW9uLkNsZWFyKCk7CisKKwkvLyBUaGVyZSB3YXMgYSByZWFsbHkgdGVycmlmeWluZyBsaXR0bGUgYnVnIGhlcmUuIFRoZSBjb2RlOgorCS8vCQl2YWx1ZSA9IGZpbGVuYW1lCisJLy8gaW4gdGhlIFNUTCBjYXNlLCBjYXVzZSB0aGUgYXNzaWdubWVudCBtZXRob2Qgb2YgdGhlIHN0ZDo6c3RyaW5nIHRvCisJLy8gYmUgY2FsbGVkLiBXaGF0IGlzIHN0cmFuZ2UsIGlzIHRoYXQgdGhlIHN0ZDo6c3RyaW5nIGhhZCB0aGUgc2FtZQorCS8vIGFkZHJlc3MgYXMgaXQncyBjX3N0cigpIG1ldGhvZCwgYW5kIHNvIGJhZCB0aGluZ3MgaGFwcGVuLiBMb29rcworCS8vIGxpa2UgYSBidWcgaW4gdGhlIE1pY3Jvc29mdCBTVEwgaW1wbGVtZW50YXRpb24uCisJLy8gU2VlIFNUTF9TVFJJTkdfQlVHIGFib3ZlLgorCS8vIEZpeGVkIHdpdGggdGhlIFN0cmluZ1RvQnVmZmVyIGNsYXNzLgorCXZhbHVlID0gZmlsZW5hbWU7CisKKwkvLyByZWFkaW5nIGluIGJpbmFyeSBtb2RlIHNvIHRoYXQgdGlueXhtbCBjYW4gbm9ybWFsaXplIHRoZSBFT0wKKwlGSUxFKiBmaWxlID0gZm9wZW4oIHZhbHVlLmNfc3RyICgpLCAicmIiICk7CQorCisJaWYgKCBmaWxlICkKKwl7CisJCS8vIEdldCB0aGUgZmlsZSBzaXplLCBzbyB3ZSBjYW4gcHJlLWFsbG9jYXRlIHRoZSBzdHJpbmcuIEhVR0Ugc3BlZWQgaW1wYWN0LgorCQlsb25nIGxlbmd0aCA9IDA7CisJCWZzZWVrKCBmaWxlLCAwLCBTRUVLX0VORCApOworCQlsZW5ndGggPSBmdGVsbCggZmlsZSApOworCQlmc2VlayggZmlsZSwgMCwgU0VFS19TRVQgKTsKKworCQkvLyBTdHJhbmdlIGNhc2UsIGJ1dCBnb29kIHRvIGhhbmRsZSB1cCBmcm9udC4KKwkJaWYgKCBsZW5ndGggPT0gMCApCisJCXsKKwkJCWZjbG9zZSggZmlsZSApOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLy8gSWYgd2UgaGF2ZSBhIGZpbGUsIGFzc3VtZSBpdCBpcyBhbGwgb25lIGJpZyBYTUwgZmlsZSwgYW5kIHJlYWQgaXQgaW4uCisJCS8vIFRoZSBkb2N1bWVudCBwYXJzZXIgbWF5IGRlY2lkZSB0aGUgZG9jdW1lbnQgZW5kcyBzb29uZXIgdGhhbiB0aGUgZW50aXJlIGZpbGUsIGhvd2V2ZXIuCisJCVRJWE1MX1NUUklORyBkYXRhOworCQlkYXRhLnJlc2VydmUoIGxlbmd0aCApOworCisJCS8vIFN1YnRsZSBidWcgaGVyZS4gVGlueVhtbCBkaWQgdXNlIGZnZXRzLiBCdXQgZnJvbSB0aGUgWE1MIHNwZWM6CisJCS8vIDIuMTEgRW5kLW9mLUxpbmUgSGFuZGxpbmcKKwkJLy8gPHNuaXA+CisJCS8vIDxxdW90ZT4KKwkJLy8gLi4udGhlIFhNTCBwcm9jZXNzb3IgTVVTVCBiZWhhdmUgYXMgaWYgaXQgbm9ybWFsaXplZCBhbGwgbGluZSBicmVha3MgaW4gZXh0ZXJuYWwgCisJCS8vIHBhcnNlZCBlbnRpdGllcyAoaW5jbHVkaW5nIHRoZSBkb2N1bWVudCBlbnRpdHkpIG9uIGlucHV0LCBiZWZvcmUgcGFyc2luZywgYnkgdHJhbnNsYXRpbmcgCisJCS8vIGJvdGggdGhlIHR3by1jaGFyYWN0ZXIgc2VxdWVuY2UgI3hEICN4QSBhbmQgYW55ICN4RCB0aGF0IGlzIG5vdCBmb2xsb3dlZCBieSAjeEEgdG8gCisJCS8vIGEgc2luZ2xlICN4QSBjaGFyYWN0ZXIuCisJCS8vIDwvcXVvdGU+CisJCS8vCisJCS8vIEl0IGlzIG5vdCBjbGVhciBmZ2V0cyBkb2VzIHRoYXQsIGFuZCBjZXJ0YWlubHkgaXNuJ3QgY2xlYXIgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm0uIAorCQkvLyBHZW5lcmFsbHksIHlvdSBleHBlY3QgZmdldHMgdG8gdHJhbnNsYXRlIGZyb20gdGhlIGNvbnZlbnRpb24gb2YgdGhlIE9TIHRvIHRoZSBjL3VuaXgKKwkJLy8gY29udmVudGlvbiwgYW5kIG5vdCB3b3JrIGdlbmVyYWxseS4KKworCQkvKgorCQl3aGlsZSggZmdldHMoIGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZpbGUgKSApCisJCXsKKwkJCWRhdGEgKz0gYnVmOworCQl9CisJCSovCisKKwkJY2hhciogYnVmID0gbmV3IGNoYXJbIGxlbmd0aCsxIF07CisJCWJ1ZlswXSA9IDA7CisKKwkJaWYgKCBmcmVhZCggYnVmLCBsZW5ndGgsIDEsIGZpbGUgKSAhPSAxICkgeworCQkvL2lmICggZnJlYWQoIGJ1ZiwgMSwgbGVuZ3RoLCBmaWxlICkgIT0gKHNpemVfdClsZW5ndGggKSB7CisJCQlTZXRFcnJvciggVElYTUxfRVJST1JfT1BFTklOR19GSUxFLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCQlmY2xvc2UoIGZpbGUgKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlmY2xvc2UoIGZpbGUgKTsKKworCQljb25zdCBjaGFyKiBsYXN0UG9zID0gYnVmOworCQljb25zdCBjaGFyKiBwID0gYnVmOworCisJCWJ1ZltsZW5ndGhdID0gMDsKKwkJd2hpbGUoICpwICkgeworCQkJYXNzZXJ0KCBwIDwgKGJ1ZitsZW5ndGgpICk7CisJCQlpZiAoICpwID09IDB4YSApIHsKKwkJCQkvLyBOZXdsaW5lIGNoYXJhY3Rlci4gTm8gc3BlY2lhbCBydWxlcyBmb3IgdGhpcy4gQXBwZW5kIGFsbCB0aGUgY2hhcmFjdGVycworCQkJCS8vIHNpbmNlIHRoZSBsYXN0IHN0cmluZywgYW5kIGluY2x1ZGUgdGhlIG5ld2xpbmUuCisJCQkJZGF0YS5hcHBlbmQoIGxhc3RQb3MsIHAtbGFzdFBvcysxICk7CS8vIGFwcGVuZCwgaW5jbHVkZSB0aGUgbmV3bGluZQorCQkJCSsrcDsJCQkJCQkJCQkvLyBtb3ZlIHBhc3QgdGhlIG5ld2xpbmUKKwkJCQlsYXN0UG9zID0gcDsJCQkJCQkJLy8gYW5kIHBvaW50IHRvIHRoZSBuZXcgYnVmZmVyIChtYXkgYmUgMCkKKwkJCQlhc3NlcnQoIHAgPD0gKGJ1ZitsZW5ndGgpICk7CisJCQl9CisJCQllbHNlIGlmICggKnAgPT0gMHhkICkgeworCQkJCS8vIENhcnJpYWdlIHJldHVybi4gQXBwZW5kIHdoYXQgd2UgaGF2ZSBzbyBmYXIsIHRoZW4KKwkJCQkvLyBoYW5kbGUgbW92aW5nIGZvcndhcmQgaW4gdGhlIGJ1ZmZlci4KKwkJCQlpZiAoIChwLWxhc3RQb3MpID4gMCApIHsKKwkJCQkJZGF0YS5hcHBlbmQoIGxhc3RQb3MsIHAtbGFzdFBvcyApOwkvLyBkbyBub3QgYWRkIHRoZSBDUgorCQkJCX0KKwkJCQlkYXRhICs9IChjaGFyKTB4YTsJCQkJCQkvLyBhIHByb3BlciBuZXdsaW5lCisKKwkJCQlpZiAoICoocCsxKSA9PSAweGEgKSB7CisJCQkJCS8vIENhcnJpYWdlIHJldHVybiAtIG5ldyBsaW5lIHNlcXVlbmNlCisJCQkJCXAgKz0gMjsKKwkJCQkJbGFzdFBvcyA9IHA7CisJCQkJCWFzc2VydCggcCA8PSAoYnVmK2xlbmd0aCkgKTsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCS8vIGl0IHdhcyBmb2xsb3dlZCBieSBzb21ldGhpbmcgZWxzZS4uLnRoYXQgaXMgcHJlc3VtYWJseSBjaGFyYWN0ZXJzIGFnYWluLgorCQkJCQkrK3A7CisJCQkJCWxhc3RQb3MgPSBwOworCQkJCQlhc3NlcnQoIHAgPD0gKGJ1ZitsZW5ndGgpICk7CisJCQkJfQorCQkJfQorCQkJZWxzZSB7CisJCQkJKytwOworCQkJfQorCQl9CisJCS8vIEhhbmRsZSBhbnkgbGVmdCBvdmVyIGNoYXJhY3RlcnMuCisJCWlmICggcC1sYXN0UG9zICkgeworCQkJZGF0YS5hcHBlbmQoIGxhc3RQb3MsIHAtbGFzdFBvcyApOworCQl9CQkKKwkJZGVsZXRlIFtdIGJ1ZjsKKwkJYnVmID0gMDsKKworCQlQYXJzZSggZGF0YS5jX3N0cigpLCAwLCBlbmNvZGluZyApOworCisJCWlmICggIEVycm9yKCkgKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBlbHNlCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX09QRU5JTkdfRklMRSwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCXJldHVybiBmYWxzZTsKK30KKworYm9vbCBUaVhtbERvY3VtZW50OjpTYXZlRmlsZSggY29uc3QgY2hhciAqIGZpbGVuYW1lICkgY29uc3QKK3sKKwkvLyBUaGUgb2xkIGMgc3R1ZmYgbGl2ZXMgb24uLi4KKwlGSUxFKiBmcCA9IGZvcGVuKCBmaWxlbmFtZSwgInciICk7CisJaWYgKCBmcCApCisJeworCQlpZiAoIHVzZU1pY3Jvc29mdEJPTSApIAorCQl7CisJCQljb25zdCB1bnNpZ25lZCBjaGFyIFRJWE1MX1VURl9MRUFEXzAgPSAweGVmVTsKKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgVElYTUxfVVRGX0xFQURfMSA9IDB4YmJVOworCQkJY29uc3QgdW5zaWduZWQgY2hhciBUSVhNTF9VVEZfTEVBRF8yID0gMHhiZlU7CisKKwkJCWZwdXRjKCBUSVhNTF9VVEZfTEVBRF8wLCBmcCApOworCQkJZnB1dGMoIFRJWE1MX1VURl9MRUFEXzEsIGZwICk7CisJCQlmcHV0YyggVElYTUxfVVRGX0xFQURfMiwgZnAgKTsKKwkJfQorCQlQcmludCggZnAsIDAgKTsKKwkJZmNsb3NlKCBmcCApOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGZhbHNlOworfQorCisKK3ZvaWQgVGlYbWxEb2N1bWVudDo6Q29weVRvKCBUaVhtbERvY3VtZW50KiB0YXJnZXQgKSBjb25zdAoreworCVRpWG1sTm9kZTo6Q29weVRvKCB0YXJnZXQgKTsKKworCXRhcmdldC0+ZXJyb3IgPSBlcnJvcjsKKwl0YXJnZXQtPmVycm9yRGVzYyA9IGVycm9yRGVzYy5jX3N0ciAoKTsKKworCVRpWG1sTm9kZSogbm9kZSA9IDA7CisJZm9yICggbm9kZSA9IGZpcnN0Q2hpbGQ7IG5vZGU7IG5vZGUgPSBub2RlLT5OZXh0U2libGluZygpICkKKwl7CisJCXRhcmdldC0+TGlua0VuZENoaWxkKCBub2RlLT5DbG9uZSgpICk7CisJfQkKK30KKworCitUaVhtbE5vZGUqIFRpWG1sRG9jdW1lbnQ6OkNsb25lKCkgY29uc3QKK3sKKwlUaVhtbERvY3VtZW50KiBjbG9uZSA9IG5ldyBUaVhtbERvY3VtZW50KCk7CisJaWYgKCAhY2xvbmUgKQorCQlyZXR1cm4gMDsKKworCUNvcHlUbyggY2xvbmUgKTsKKwlyZXR1cm4gY2xvbmU7Cit9CisKKwordm9pZCBUaVhtbERvY3VtZW50OjpQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0Cit7CisJY29uc3QgVGlYbWxOb2RlKiBub2RlOworCWZvciAoIG5vZGU9Rmlyc3RDaGlsZCgpOyBub2RlOyBub2RlPW5vZGUtPk5leHRTaWJsaW5nKCkgKQorCXsKKwkJbm9kZS0+UHJpbnQoIGNmaWxlLCBkZXB0aCApOworCQlmcHJpbnRmKCBjZmlsZSwgIlxuIiApOworCX0KK30KKwordm9pZCBUaVhtbERvY3VtZW50OjpTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSBjb25zdAoreworCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKKwlmb3IgKCBub2RlPUZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZT1ub2RlLT5OZXh0U2libGluZygpICkKKwl7CisJCW5vZGUtPlN0cmVhbU91dCggb3V0ICk7CisKKwkJLy8gU3BlY2lhbCBydWxlIGZvciBzdHJlYW1zOiBzdG9wIGFmdGVyIHRoZSByb290IGVsZW1lbnQuCisJCS8vIFRoZSBzdHJlYW0gaW4gY29kZSB3aWxsIG9ubHkgcmVhZCBvbmUgZWxlbWVudCwgc28gZG9uJ3QKKwkJLy8gd3JpdGUgbW9yZSB0aGFuIG9uZS4KKwkJaWYgKCBub2RlLT5Ub0VsZW1lbnQoKSApCisJCQlicmVhazsKKwl9Cit9CisKKworY29uc3QgVGlYbWxBdHRyaWJ1dGUqIFRpWG1sQXR0cmlidXRlOjpOZXh0KCkgY29uc3QKK3sKKwkvLyBXZSBhcmUgdXNpbmcga25vd2xlZGdlIG9mIHRoZSBzZW50aW5lbC4gVGhlIHNlbnRpbmVsCisJLy8gaGF2ZSBhIHZhbHVlIG9yIG5hbWUuCisJaWYgKCBuZXh0LT52YWx1ZS5lbXB0eSgpICYmIG5leHQtPm5hbWUuZW1wdHkoKSApCisJCXJldHVybiAwOworCXJldHVybiBuZXh0OworfQorCitUaVhtbEF0dHJpYnV0ZSogVGlYbWxBdHRyaWJ1dGU6Ok5leHQoKQoreworCS8vIFdlIGFyZSB1c2luZyBrbm93bGVkZ2Ugb2YgdGhlIHNlbnRpbmVsLiBUaGUgc2VudGluZWwKKwkvLyBoYXZlIGEgdmFsdWUgb3IgbmFtZS4KKwlpZiAoIG5leHQtPnZhbHVlLmVtcHR5KCkgJiYgbmV4dC0+bmFtZS5lbXB0eSgpICkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIG5leHQ7Cit9CisKK2NvbnN0IFRpWG1sQXR0cmlidXRlKiBUaVhtbEF0dHJpYnV0ZTo6UHJldmlvdXMoKSBjb25zdAoreworCS8vIFdlIGFyZSB1c2luZyBrbm93bGVkZ2Ugb2YgdGhlIHNlbnRpbmVsLiBUaGUgc2VudGluZWwKKwkvLyBoYXZlIGEgdmFsdWUgb3IgbmFtZS4KKwlpZiAoIHByZXYtPnZhbHVlLmVtcHR5KCkgJiYgcHJldi0+bmFtZS5lbXB0eSgpICkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIHByZXY7Cit9CisKK1RpWG1sQXR0cmlidXRlKiBUaVhtbEF0dHJpYnV0ZTo6UHJldmlvdXMoKQoreworCS8vIFdlIGFyZSB1c2luZyBrbm93bGVkZ2Ugb2YgdGhlIHNlbnRpbmVsLiBUaGUgc2VudGluZWwKKwkvLyBoYXZlIGEgdmFsdWUgb3IgbmFtZS4KKwlpZiAoIHByZXYtPnZhbHVlLmVtcHR5KCkgJiYgcHJldi0+bmFtZS5lbXB0eSgpICkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIHByZXY7Cit9CisKK3ZvaWQgVGlYbWxBdHRyaWJ1dGU6OlByaW50KCBGSUxFKiBjZmlsZSwgaW50IC8qZGVwdGgqLyApIGNvbnN0Cit7CisJVElYTUxfU1RSSU5HIG4sIHY7CisKKwlQdXRTdHJpbmcoIG5hbWUsICZuICk7CisJUHV0U3RyaW5nKCB2YWx1ZSwgJnYgKTsKKworCWlmICh2YWx1ZS5maW5kICgnXCInKSA9PSBUSVhNTF9TVFJJTkc6Om5wb3MpCisJCWZwcmludGYgKGNmaWxlLCAiJXM9XCIlc1wiIiwgbi5jX3N0cigpLCB2LmNfc3RyKCkgKTsKKwllbHNlCisJCWZwcmludGYgKGNmaWxlLCAiJXM9JyVzJyIsIG4uY19zdHIoKSwgdi5jX3N0cigpICk7Cit9CisKKwordm9pZCBUaVhtbEF0dHJpYnV0ZTo6U3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogc3RyZWFtICkgY29uc3QKK3sKKwlpZiAodmFsdWUuZmluZCggJ1wiJyApICE9IFRJWE1MX1NUUklORzo6bnBvcykKKwl7CisJCVB1dFN0cmluZyggbmFtZSwgc3RyZWFtICk7CisJCSgqc3RyZWFtKSA8PCAiPSIgPDwgIiciOworCQlQdXRTdHJpbmcoIHZhbHVlLCBzdHJlYW0gKTsKKwkJKCpzdHJlYW0pIDw8ICInIjsKKwl9CisJZWxzZQorCXsKKwkJUHV0U3RyaW5nKCBuYW1lLCBzdHJlYW0gKTsKKwkJKCpzdHJlYW0pIDw8ICI9IiA8PCAiXCIiOworCQlQdXRTdHJpbmcoIHZhbHVlLCBzdHJlYW0gKTsKKwkJKCpzdHJlYW0pIDw8ICJcIiI7CisJfQorfQorCitpbnQgVGlYbWxBdHRyaWJ1dGU6OlF1ZXJ5SW50VmFsdWUoIGludCogaXZhbCApIGNvbnN0Cit7CisJaWYgKCBzc2NhbmYoIHZhbHVlLmNfc3RyKCksICIlZCIsIGl2YWwgKSA9PSAxICkKKwkJcmV0dXJuIFRJWE1MX1NVQ0NFU1M7CisJcmV0dXJuIFRJWE1MX1dST05HX1RZUEU7Cit9CisKK2ludCBUaVhtbEF0dHJpYnV0ZTo6UXVlcnlEb3VibGVWYWx1ZSggZG91YmxlKiBkdmFsICkgY29uc3QKK3sKKwlpZiAoIHNzY2FuZiggdmFsdWUuY19zdHIoKSwgIiVsZiIsIGR2YWwgKSA9PSAxICkKKwkJcmV0dXJuIFRJWE1MX1NVQ0NFU1M7CisJcmV0dXJuIFRJWE1MX1dST05HX1RZUEU7Cit9CisKK3ZvaWQgVGlYbWxBdHRyaWJ1dGU6OlNldEludFZhbHVlKCBpbnQgX3ZhbHVlICkKK3sKKwljaGFyIGJ1ZiBbNjRdOworCSNpZiBkZWZpbmVkKFRJWE1MX1NOUFJJTlRGKQkJCisJCVRJWE1MX1NOUFJJTlRGKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCIsIF92YWx1ZSk7CisJI2Vsc2UKKwkJc3ByaW50ZiAoYnVmLCAiJWQiLCBfdmFsdWUpOworCSNlbmRpZgorCVNldFZhbHVlIChidWYpOworfQorCit2b2lkIFRpWG1sQXR0cmlidXRlOjpTZXREb3VibGVWYWx1ZSggZG91YmxlIF92YWx1ZSApCit7CisJY2hhciBidWYgWzI1Nl07CisJI2lmIGRlZmluZWQoVElYTUxfU05QUklOVEYpCQkKKwkJVElYTUxfU05QUklOVEYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlbGYiLCBfdmFsdWUpOworCSNlbHNlCisJCXNwcmludGYgKGJ1ZiwgIiVsZiIsIF92YWx1ZSk7CisJI2VuZGlmCisJU2V0VmFsdWUgKGJ1Zik7Cit9CisKK2ludCBUaVhtbEF0dHJpYnV0ZTo6SW50VmFsdWUoKSBjb25zdAoreworCXJldHVybiBhdG9pICh2YWx1ZS5jX3N0ciAoKSk7Cit9CisKK2RvdWJsZSAgVGlYbWxBdHRyaWJ1dGU6OkRvdWJsZVZhbHVlKCkgY29uc3QKK3sKKwlyZXR1cm4gYXRvZiAodmFsdWUuY19zdHIgKCkpOworfQorCisKK1RpWG1sQ29tbWVudDo6VGlYbWxDb21tZW50KCBjb25zdCBUaVhtbENvbW1lbnQmIGNvcHkgKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpDT01NRU5UICkKK3sKKwljb3B5LkNvcHlUbyggdGhpcyApOworfQorCisKK3ZvaWQgVGlYbWxDb21tZW50OjpvcGVyYXRvcj0oIGNvbnN0IFRpWG1sQ29tbWVudCYgYmFzZSApCit7CisJQ2xlYXIoKTsKKwliYXNlLkNvcHlUbyggdGhpcyApOworfQorCisKK3ZvaWQgVGlYbWxDb21tZW50OjpQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0Cit7CisJZm9yICggaW50IGk9MDsgaTxkZXB0aDsgaSsrICkKKwl7CisJCWZwdXRzKCAiICAgICIsIGNmaWxlICk7CisJfQorCWZwcmludGYoIGNmaWxlLCAiPCEtLSVzLS0+IiwgdmFsdWUuY19zdHIoKSApOworfQorCit2b2lkIFRpWG1sQ29tbWVudDo6U3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogc3RyZWFtICkgY29uc3QKK3sKKwkoKnN0cmVhbSkgPDwgIjwhLS0iOworCS8vUHV0U3RyaW5nKCB2YWx1ZSwgc3RyZWFtICk7CisJKCpzdHJlYW0pIDw8IHZhbHVlOworCSgqc3RyZWFtKSA8PCAiLS0+IjsKK30KKworCit2b2lkIFRpWG1sQ29tbWVudDo6Q29weVRvKCBUaVhtbENvbW1lbnQqIHRhcmdldCApIGNvbnN0Cit7CisJVGlYbWxOb2RlOjpDb3B5VG8oIHRhcmdldCApOworfQorCisKK1RpWG1sTm9kZSogVGlYbWxDb21tZW50OjpDbG9uZSgpIGNvbnN0Cit7CisJVGlYbWxDb21tZW50KiBjbG9uZSA9IG5ldyBUaVhtbENvbW1lbnQoKTsKKworCWlmICggIWNsb25lICkKKwkJcmV0dXJuIDA7CisKKwlDb3B5VG8oIGNsb25lICk7CisJcmV0dXJuIGNsb25lOworfQorCisKK3ZvaWQgVGlYbWxUZXh0OjpQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0Cit7CisJaWYgKCBjZGF0YSApCisJeworCQlpbnQgaTsKKwkJZnByaW50ZiggY2ZpbGUsICJcbiIgKTsKKwkJZm9yICggaT0wOyBpPGRlcHRoOyBpKysgKSB7CisJCQlmcHJpbnRmKCBjZmlsZSwgIiAgICAiICk7CisJCX0KKwkJZnByaW50ZiggY2ZpbGUsICI8IVtDREFUQVtcbiIgKTsKKworCQlmcHJpbnRmKCBjZmlsZSwgIiVzIiwgdmFsdWUuY19zdHIoKSApOwkvLyB1bmZvcm1hdHRlZCBvdXRwdXQKKworCQlmcHJpbnRmKCBjZmlsZSwgIlxuIiApOworCQlmb3IgKCBpPTA7IGk8ZGVwdGg7IGkrKyApIHsKKwkJCWZwcmludGYoIGNmaWxlLCAiICAgICIgKTsKKwkJfQorCQlmcHJpbnRmKCBjZmlsZSwgIl1dPlxuIiApOworCX0KKwllbHNlCisJeworCQlUSVhNTF9TVFJJTkcgYnVmZmVyOworCQlQdXRTdHJpbmcoIHZhbHVlLCAmYnVmZmVyICk7CisJCWZwcmludGYoIGNmaWxlLCAiJXMiLCBidWZmZXIuY19zdHIoKSApOworCX0KK30KKworCit2b2lkIFRpWG1sVGV4dDo6U3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogc3RyZWFtICkgY29uc3QKK3sKKwlpZiAoIGNkYXRhICkKKwl7CisJCSgqc3RyZWFtKSA8PCAiPCFbQ0RBVEFbIiA8PCB2YWx1ZSA8PCAiXV0+IjsKKwl9CisJZWxzZQorCXsKKwkJUHV0U3RyaW5nKCB2YWx1ZSwgc3RyZWFtICk7CisJfQorfQorCisKK3ZvaWQgVGlYbWxUZXh0OjpDb3B5VG8oIFRpWG1sVGV4dCogdGFyZ2V0ICkgY29uc3QKK3sKKwlUaVhtbE5vZGU6OkNvcHlUbyggdGFyZ2V0ICk7CisJdGFyZ2V0LT5jZGF0YSA9IGNkYXRhOworfQorCisKK1RpWG1sTm9kZSogVGlYbWxUZXh0OjpDbG9uZSgpIGNvbnN0Cit7CQorCVRpWG1sVGV4dCogY2xvbmUgPSAwOworCWNsb25lID0gbmV3IFRpWG1sVGV4dCggIiIgKTsKKworCWlmICggIWNsb25lICkKKwkJcmV0dXJuIDA7CisKKwlDb3B5VG8oIGNsb25lICk7CisJcmV0dXJuIGNsb25lOworfQorCisKK1RpWG1sRGVjbGFyYXRpb246OlRpWG1sRGVjbGFyYXRpb24oIGNvbnN0IGNoYXIgKiBfdmVyc2lvbiwKKwkJCQkJCQkJCWNvbnN0IGNoYXIgKiBfZW5jb2RpbmcsCisJCQkJCQkJCQljb25zdCBjaGFyICogX3N0YW5kYWxvbmUgKQorCTogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OkRFQ0xBUkFUSU9OICkKK3sKKwl2ZXJzaW9uID0gX3ZlcnNpb247CisJZW5jb2RpbmcgPSBfZW5jb2Rpbmc7CisJc3RhbmRhbG9uZSA9IF9zdGFuZGFsb25lOworfQorCisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCitUaVhtbERlY2xhcmF0aW9uOjpUaVhtbERlY2xhcmF0aW9uKAljb25zdCBzdGQ6OnN0cmluZyYgX3ZlcnNpb24sCisJCQkJCQkJCQljb25zdCBzdGQ6OnN0cmluZyYgX2VuY29kaW5nLAorCQkJCQkJCQkJY29uc3Qgc3RkOjpzdHJpbmcmIF9zdGFuZGFsb25lICkKKwk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpERUNMQVJBVElPTiApCit7CisJdmVyc2lvbiA9IF92ZXJzaW9uOworCWVuY29kaW5nID0gX2VuY29kaW5nOworCXN0YW5kYWxvbmUgPSBfc3RhbmRhbG9uZTsKK30KKyNlbmRpZgorCisKK1RpWG1sRGVjbGFyYXRpb246OlRpWG1sRGVjbGFyYXRpb24oIGNvbnN0IFRpWG1sRGVjbGFyYXRpb24mIGNvcHkgKQorCTogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OkRFQ0xBUkFUSU9OICkKK3sKKwljb3B5LkNvcHlUbyggdGhpcyApOwkKK30KKworCit2b2lkIFRpWG1sRGVjbGFyYXRpb246Om9wZXJhdG9yPSggY29uc3QgVGlYbWxEZWNsYXJhdGlvbiYgY29weSApCit7CisJQ2xlYXIoKTsKKwljb3B5LkNvcHlUbyggdGhpcyApOworfQorCisKK3ZvaWQgVGlYbWxEZWNsYXJhdGlvbjo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgLypkZXB0aCovICkgY29uc3QKK3sKKwlmcHJpbnRmIChjZmlsZSwgIjw/eG1sICIpOworCisJaWYgKCAhdmVyc2lvbi5lbXB0eSgpICkKKwkJZnByaW50ZiAoY2ZpbGUsICJ2ZXJzaW9uPVwiJXNcIiAiLCB2ZXJzaW9uLmNfc3RyICgpKTsKKwlpZiAoICFlbmNvZGluZy5lbXB0eSgpICkKKwkJZnByaW50ZiAoY2ZpbGUsICJlbmNvZGluZz1cIiVzXCIgIiwgZW5jb2RpbmcuY19zdHIgKCkpOworCWlmICggIXN0YW5kYWxvbmUuZW1wdHkoKSApCisJCWZwcmludGYgKGNmaWxlLCAic3RhbmRhbG9uZT1cIiVzXCIgIiwgc3RhbmRhbG9uZS5jX3N0ciAoKSk7CisJZnByaW50ZiAoY2ZpbGUsICI/PiIpOworfQorCit2b2lkIFRpWG1sRGVjbGFyYXRpb246OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Cit7CisJKCpzdHJlYW0pIDw8ICI8P3htbCAiOworCisJaWYgKCAhdmVyc2lvbi5lbXB0eSgpICkKKwl7CisJCSgqc3RyZWFtKSA8PCAidmVyc2lvbj1cIiI7CisJCVB1dFN0cmluZyggdmVyc2lvbiwgc3RyZWFtICk7CisJCSgqc3RyZWFtKSA8PCAiXCIgIjsKKwl9CisJaWYgKCAhZW5jb2RpbmcuZW1wdHkoKSApCisJeworCQkoKnN0cmVhbSkgPDwgImVuY29kaW5nPVwiIjsKKwkJUHV0U3RyaW5nKCBlbmNvZGluZywgc3RyZWFtICk7CisJCSgqc3RyZWFtICkgPDwgIlwiICI7CisJfQorCWlmICggIXN0YW5kYWxvbmUuZW1wdHkoKSApCisJeworCQkoKnN0cmVhbSkgPDwgInN0YW5kYWxvbmU9XCIiOworCQlQdXRTdHJpbmcoIHN0YW5kYWxvbmUsIHN0cmVhbSApOworCQkoKnN0cmVhbSkgPDwgIlwiICI7CisJfQorCSgqc3RyZWFtKSA8PCAiPz4iOworfQorCisKK3ZvaWQgVGlYbWxEZWNsYXJhdGlvbjo6Q29weVRvKCBUaVhtbERlY2xhcmF0aW9uKiB0YXJnZXQgKSBjb25zdAoreworCVRpWG1sTm9kZTo6Q29weVRvKCB0YXJnZXQgKTsKKworCXRhcmdldC0+dmVyc2lvbiA9IHZlcnNpb247CisJdGFyZ2V0LT5lbmNvZGluZyA9IGVuY29kaW5nOworCXRhcmdldC0+c3RhbmRhbG9uZSA9IHN0YW5kYWxvbmU7Cit9CisKKworVGlYbWxOb2RlKiBUaVhtbERlY2xhcmF0aW9uOjpDbG9uZSgpIGNvbnN0Cit7CQorCVRpWG1sRGVjbGFyYXRpb24qIGNsb25lID0gbmV3IFRpWG1sRGVjbGFyYXRpb24oKTsKKworCWlmICggIWNsb25lICkKKwkJcmV0dXJuIDA7CisKKwlDb3B5VG8oIGNsb25lICk7CisJcmV0dXJuIGNsb25lOworfQorCisKK3ZvaWQgVGlYbWxVbmtub3duOjpQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0Cit7CisJZm9yICggaW50IGk9MDsgaTxkZXB0aDsgaSsrICkKKwkJZnByaW50ZiggY2ZpbGUsICIgICAgIiApOworCWZwcmludGYoIGNmaWxlLCAiPCVzPiIsIHZhbHVlLmNfc3RyKCkgKTsKK30KKworCit2b2lkIFRpWG1sVW5rbm93bjo6U3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogc3RyZWFtICkgY29uc3QKK3sKKwkoKnN0cmVhbSkgPDwgIjwiIDw8IHZhbHVlIDw8ICI+IjsJCS8vIERvbid0IHVzZSBlbnRpdGllcyBoZXJlISBJdCBpcyB1bmtub3duLgorfQorCisKK3ZvaWQgVGlYbWxVbmtub3duOjpDb3B5VG8oIFRpWG1sVW5rbm93biogdGFyZ2V0ICkgY29uc3QKK3sKKwlUaVhtbE5vZGU6OkNvcHlUbyggdGFyZ2V0ICk7Cit9CisKKworVGlYbWxOb2RlKiBUaVhtbFVua25vd246OkNsb25lKCkgY29uc3QKK3sKKwlUaVhtbFVua25vd24qIGNsb25lID0gbmV3IFRpWG1sVW5rbm93bigpOworCisJaWYgKCAhY2xvbmUgKQorCQlyZXR1cm4gMDsKKworCUNvcHlUbyggY2xvbmUgKTsKKwlyZXR1cm4gY2xvbmU7Cit9CisKKworVGlYbWxBdHRyaWJ1dGVTZXQ6OlRpWG1sQXR0cmlidXRlU2V0KCkKK3sKKwlzZW50aW5lbC5uZXh0ID0gJnNlbnRpbmVsOworCXNlbnRpbmVsLnByZXYgPSAmc2VudGluZWw7Cit9CisKKworVGlYbWxBdHRyaWJ1dGVTZXQ6On5UaVhtbEF0dHJpYnV0ZVNldCgpCit7CisJYXNzZXJ0KCBzZW50aW5lbC5uZXh0ID09ICZzZW50aW5lbCApOworCWFzc2VydCggc2VudGluZWwucHJldiA9PSAmc2VudGluZWwgKTsKK30KKworCit2b2lkIFRpWG1sQXR0cmlidXRlU2V0OjpBZGQoIFRpWG1sQXR0cmlidXRlKiBhZGRNZSApCit7CisJYXNzZXJ0KCAhRmluZCggYWRkTWUtPk5hbWUoKSApICk7CS8vIFNob3VsZG4ndCBiZSBtdWx0aXBseSBhZGRpbmcgdG8gdGhlIHNldC4KKworCWFkZE1lLT5uZXh0ID0gJnNlbnRpbmVsOworCWFkZE1lLT5wcmV2ID0gc2VudGluZWwucHJldjsKKworCXNlbnRpbmVsLnByZXYtPm5leHQgPSBhZGRNZTsKKwlzZW50aW5lbC5wcmV2ICAgICAgPSBhZGRNZTsKK30KKwordm9pZCBUaVhtbEF0dHJpYnV0ZVNldDo6UmVtb3ZlKCBUaVhtbEF0dHJpYnV0ZSogcmVtb3ZlTWUgKQoreworCVRpWG1sQXR0cmlidXRlKiBub2RlOworCisJZm9yKCBub2RlID0gc2VudGluZWwubmV4dDsgbm9kZSAhPSAmc2VudGluZWw7IG5vZGUgPSBub2RlLT5uZXh0ICkKKwl7CisJCWlmICggbm9kZSA9PSByZW1vdmVNZSApCisJCXsKKwkJCW5vZGUtPnByZXYtPm5leHQgPSBub2RlLT5uZXh0OworCQkJbm9kZS0+bmV4dC0+cHJldiA9IG5vZGUtPnByZXY7CisJCQlub2RlLT5uZXh0ID0gMDsKKwkJCW5vZGUtPnByZXYgPSAwOworCQkJcmV0dXJuOworCQl9CisJfQorCWFzc2VydCggMCApOwkJLy8gd2UgdHJpZWQgdG8gcmVtb3ZlIGEgbm9uLWxpbmtlZCBhdHRyaWJ1dGUuCit9CisKK2NvbnN0IFRpWG1sQXR0cmlidXRlKiBUaVhtbEF0dHJpYnV0ZVNldDo6RmluZCggY29uc3QgY2hhciAqIG5hbWUgKSBjb25zdAoreworCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBub2RlOworCisJZm9yKCBub2RlID0gc2VudGluZWwubmV4dDsgbm9kZSAhPSAmc2VudGluZWw7IG5vZGUgPSBub2RlLT5uZXh0ICkKKwl7CisJCWlmICggbm9kZS0+bmFtZSA9PSBuYW1lICkKKwkJCXJldHVybiBub2RlOworCX0KKwlyZXR1cm4gMDsKK30KKworVGlYbWxBdHRyaWJ1dGUqCVRpWG1sQXR0cmlidXRlU2V0OjpGaW5kKCBjb25zdCBjaGFyICogbmFtZSApCit7CisJVGlYbWxBdHRyaWJ1dGUqIG5vZGU7CisKKwlmb3IoIG5vZGUgPSBzZW50aW5lbC5uZXh0OyBub2RlICE9ICZzZW50aW5lbDsgbm9kZSA9IG5vZGUtPm5leHQgKQorCXsKKwkJaWYgKCBub2RlLT5uYW1lID09IG5hbWUgKQorCQkJcmV0dXJuIG5vZGU7CisJfQorCXJldHVybiAwOworfQorCisjaWZkZWYgVElYTUxfVVNFX1NUTAkKK1RJWE1MX0lTVFJFQU0gJiBvcGVyYXRvciA+PiAoVElYTUxfSVNUUkVBTSAmIGluLCBUaVhtbE5vZGUgJiBiYXNlKQoreworCVRJWE1MX1NUUklORyB0YWc7CisJdGFnLnJlc2VydmUoIDggKiAxMDAwICk7CisJYmFzZS5TdHJlYW1JbiggJmluLCAmdGFnICk7CisKKwliYXNlLlBhcnNlKCB0YWcuY19zdHIoKSwgMCwgVElYTUxfREVGQVVMVF9FTkNPRElORyApOworCXJldHVybiBpbjsKK30KKyNlbmRpZgorCisKK1RJWE1MX09TVFJFQU0gJiBvcGVyYXRvcjw8IChUSVhNTF9PU1RSRUFNICYgb3V0LCBjb25zdCBUaVhtbE5vZGUgJiBiYXNlKQoreworCWJhc2UuU3RyZWFtT3V0ICgmIG91dCk7CisJcmV0dXJuIG91dDsKK30KKworCisjaWZkZWYgVElYTUxfVVNFX1NUTAkKK3N0ZDo6c3RyaW5nICYgb3BlcmF0b3I8PCAoc3RkOjpzdHJpbmcmIG91dCwgY29uc3QgVGlYbWxOb2RlJiBiYXNlICkKK3sKKyAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvc19zdHJlYW0oIHN0ZDo6b3N0cmluZ3N0cmVhbTo6b3V0ICk7CisgICBiYXNlLlN0cmVhbU91dCggJm9zX3N0cmVhbSApOworICAgCisgICBvdXQuYXBwZW5kKCBvc19zdHJlYW0uc3RyKCkgKTsKKyAgIHJldHVybiBvdXQ7Cit9CisjZW5kaWYKKworCitUaVhtbEhhbmRsZSBUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZCgpIGNvbnN0Cit7CisJaWYgKCBub2RlICkKKwl7CisJCVRpWG1sTm9kZSogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkKCk7CisJCWlmICggY2hpbGQgKQorCQkJcmV0dXJuIFRpWG1sSGFuZGxlKCBjaGlsZCApOworCX0KKwlyZXR1cm4gVGlYbWxIYW5kbGUoIDAgKTsKK30KKworCitUaVhtbEhhbmRsZSBUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZCggY29uc3QgY2hhciAqIHZhbHVlICkgY29uc3QKK3sKKwlpZiAoIG5vZGUgKQorCXsKKwkJVGlYbWxOb2RlKiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGQoIHZhbHVlICk7CisJCWlmICggY2hpbGQgKQorCQkJcmV0dXJuIFRpWG1sSGFuZGxlKCBjaGlsZCApOworCX0KKwlyZXR1cm4gVGlYbWxIYW5kbGUoIDAgKTsKK30KKworCitUaVhtbEhhbmRsZSBUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZEVsZW1lbnQoKSBjb25zdAoreworCWlmICggbm9kZSApCisJeworCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gbm9kZS0+Rmlyc3RDaGlsZEVsZW1lbnQoKTsKKwkJaWYgKCBjaGlsZCApCisJCQlyZXR1cm4gVGlYbWxIYW5kbGUoIGNoaWxkICk7CisJfQorCXJldHVybiBUaVhtbEhhbmRsZSggMCApOworfQorCisKK1RpWG1sSGFuZGxlIFRpWG1sSGFuZGxlOjpGaXJzdENoaWxkRWxlbWVudCggY29uc3QgY2hhciAqIHZhbHVlICkgY29uc3QKK3sKKwlpZiAoIG5vZGUgKQorCXsKKwkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGRFbGVtZW50KCB2YWx1ZSApOworCQlpZiAoIGNoaWxkICkKKwkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKKwl9CisJcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Cit9CisKKworVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkNoaWxkKCBpbnQgY291bnQgKSBjb25zdAoreworCWlmICggbm9kZSApCisJeworCQlpbnQgaTsKKwkJVGlYbWxOb2RlKiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGQoKTsKKwkJZm9yICgJaT0wOworCQkJCWNoaWxkICYmIGk8Y291bnQ7CisJCQkJY2hpbGQgPSBjaGlsZC0+TmV4dFNpYmxpbmcoKSwgKytpICkKKwkJeworCQkJLy8gbm90aGluZworCQl9CisJCWlmICggY2hpbGQgKQorCQkJcmV0dXJuIFRpWG1sSGFuZGxlKCBjaGlsZCApOworCX0KKwlyZXR1cm4gVGlYbWxIYW5kbGUoIDAgKTsKK30KKworCitUaVhtbEhhbmRsZSBUaVhtbEhhbmRsZTo6Q2hpbGQoIGNvbnN0IGNoYXIqIHZhbHVlLCBpbnQgY291bnQgKSBjb25zdAoreworCWlmICggbm9kZSApCisJeworCQlpbnQgaTsKKwkJVGlYbWxOb2RlKiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGQoIHZhbHVlICk7CisJCWZvciAoCWk9MDsKKwkJCQljaGlsZCAmJiBpPGNvdW50OworCQkJCWNoaWxkID0gY2hpbGQtPk5leHRTaWJsaW5nKCB2YWx1ZSApLCArK2kgKQorCQl7CisJCQkvLyBub3RoaW5nCisJCX0KKwkJaWYgKCBjaGlsZCApCisJCQlyZXR1cm4gVGlYbWxIYW5kbGUoIGNoaWxkICk7CisJfQorCXJldHVybiBUaVhtbEhhbmRsZSggMCApOworfQorCisKK1RpWG1sSGFuZGxlIFRpWG1sSGFuZGxlOjpDaGlsZEVsZW1lbnQoIGludCBjb3VudCApIGNvbnN0Cit7CisJaWYgKCBub2RlICkKKwl7CisJCWludCBpOworCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gbm9kZS0+Rmlyc3RDaGlsZEVsZW1lbnQoKTsKKwkJZm9yICgJaT0wOworCQkJCWNoaWxkICYmIGk8Y291bnQ7CisJCQkJY2hpbGQgPSBjaGlsZC0+TmV4dFNpYmxpbmdFbGVtZW50KCksICsraSApCisJCXsKKwkJCS8vIG5vdGhpbmcKKwkJfQorCQlpZiAoIGNoaWxkICkKKwkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKKwl9CisJcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Cit9CisKKworVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkNoaWxkRWxlbWVudCggY29uc3QgY2hhciogdmFsdWUsIGludCBjb3VudCApIGNvbnN0Cit7CisJaWYgKCBub2RlICkKKwl7CisJCWludCBpOworCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gbm9kZS0+Rmlyc3RDaGlsZEVsZW1lbnQoIHZhbHVlICk7CisJCWZvciAoCWk9MDsKKwkJCQljaGlsZCAmJiBpPGNvdW50OworCQkJCWNoaWxkID0gY2hpbGQtPk5leHRTaWJsaW5nRWxlbWVudCggdmFsdWUgKSwgKytpICkKKwkJeworCQkJLy8gbm90aGluZworCQl9CisJCWlmICggY2hpbGQgKQorCQkJcmV0dXJuIFRpWG1sSGFuZGxlKCBjaGlsZCApOworCX0KKwlyZXR1cm4gVGlYbWxIYW5kbGUoIDAgKTsKK30KZGlmZiAtLWdpdCBhL3Rpbnl4bWwuZHN3IGIvdGlueXhtbC5kc3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5ZDBlZQotLS0gL2Rldi9udWxsCisrKyBiL3Rpbnl4bWwuZHN3CkBAIC0wLDAgKzEsNzEgQEAKK01pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFdvcmtzcGFjZSBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQorIyBXQVJOSU5HOiBETyBOT1QgRURJVCBPUiBERUxFVEUgVEhJUyBXT1JLU1BBQ0UgRklMRSENCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorUHJvamVjdDogInRpbnlYbWxUZXN0Ij0uXHRpbnlYbWxUZXN0LmRzcCAtIFBhY2thZ2UgT3duZXI9PDQ+DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTw0Pg0KK3t7ew0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSB0aW55eG1sDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCit9fX0NCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorUHJvamVjdDogInRpbnlYbWxUZXN0U1RMIj0uXHRpbnlYbWxUZXN0U1RMLmRzcCAtIFBhY2thZ2UgT3duZXI9PDQ+DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTw0Pg0KK3t7ew0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSB0aW55eG1sU1RMDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCit9fX0NCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorUHJvamVjdDogInRpbnl4bWwiPS5cdGlueXhtbF9saWIuZHNwIC0gUGFja2FnZSBPd25lcj08ND4NCisNCitQYWNrYWdlPTw1Pg0KK3t7ew0KK319fQ0KKw0KK1BhY2thZ2U9PDQ+DQore3t7DQorfX19DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK1Byb2plY3Q6ICJ0aW55eG1sU1RMIj0uXHRpbnl4bWxTVEwuZHNwIC0gUGFja2FnZSBPd25lcj08ND4NCisNCitQYWNrYWdlPTw1Pg0KK3t7ew0KK319fQ0KKw0KK1BhY2thZ2U9PDQ+DQore3t7DQorfX19DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK0dsb2JhbDoNCisNCitQYWNrYWdlPTw1Pg0KK3t7ew0KK319fQ0KKw0KK1BhY2thZ2U9PDM+DQore3t7DQorfX19DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KZGlmZiAtLWdpdCBhL3Rpbnl4bWwuaCBiL3Rpbnl4bWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGNmOTRmCi0tLSAvZGV2L251bGwKKysrIGIvdGlueXhtbC5oCkBAIC0wLDAgKzEsMTUxMSBAQAorLyoKK3d3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbAorT3JpZ2luYWwgY29kZSAoMi4wIGFuZCBlYXJsaWVyICljb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBMZWUgVGhvbWFzb24gKHd3dy5ncmlubmluZ2xpemFyZC5jb20pCisKK1RoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCit3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55CitkYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCityZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0Citub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKK3NvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgord291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKworMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQKK211c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KKworMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCitkaXN0cmlidXRpb24uCisqLworCisKKyNpZm5kZWYgVElOWVhNTF9JTkNMVURFRAorI2RlZmluZSBUSU5ZWE1MX0lOQ0xVREVECisKKyNpZmRlZiBfTVNDX1ZFUgorI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKKyNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ1MzAgKQorI3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDc4NiApCisjZW5kaWYKKworI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworLy8gSGVscCBvdXQgd2luZG93czoKKyNpZiBkZWZpbmVkKCBfREVCVUcgKSAmJiAhZGVmaW5lZCggREVCVUcgKQorI2RlZmluZSBERUJVRworI2VuZGlmCisKKyNpZiBkZWZpbmVkKCBERUJVRyApICYmIGRlZmluZWQoIF9NU0NfVkVSICkKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZGVmaW5lIFRJWE1MX0xPRyBPdXRwdXREZWJ1Z1N0cmluZworI2Vsc2UKKyNkZWZpbmUgVElYTUxfTE9HIHByaW50ZgorI2VuZGlmCisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisJI2luY2x1ZGUgPHN0cmluZz4KKyAJI2luY2x1ZGUgPGlvc3RyZWFtPgorCSNkZWZpbmUgVElYTUxfU1RSSU5HCXN0ZDo6c3RyaW5nCisJI2RlZmluZSBUSVhNTF9JU1RSRUFNCXN0ZDo6aXN0cmVhbQorCSNkZWZpbmUgVElYTUxfT1NUUkVBTQlzdGQ6Om9zdHJlYW0KKyNlbHNlCisJI2luY2x1ZGUgInRpbnlzdHIuaCIKKwkjZGVmaW5lIFRJWE1MX1NUUklORwlUaVhtbFN0cmluZworCSNkZWZpbmUgVElYTUxfT1NUUkVBTQlUaVhtbE91dFN0cmVhbQorI2VuZGlmCisKKy8vIERlcHJlY2F0ZWQgbGlicmFyeSBmdW5jdGlvbiBoZWxsLiBDb21waWxlcnMgd2FudCB0byB1c2UgdGhlCisvLyBuZXcgc2FmZSB2ZXJzaW9ucy4gVGhpcyBwcm9iYWJseSBkb2Vzbid0IGZ1bGx5IGFkZHJlc3MgdGhlIHByb2JsZW0sCisvLyBidXQgaXQgZ2V0cyBjbG9zZXIuIFRoZXJlIGFyZSB0b28gbWFueSBjb21waWxlcnMgZm9yIG1lIHRvIGZ1bGx5CisvLyB0ZXN0LiBJZiB5b3UgZ2V0IGNvbXBpbGF0aW9uIHRyb3VibGVzLCB1bmRlZmluZSBUSVhNTF9TQUZFCisKKyNkZWZpbmUgVElYTUxfU0FGRQkJLy8gVGlueVhtbCBpc24ndCBmdWxseSBidWZmZXIgb3ZlcnJ1biBwcm90ZWN0ZWQsIHNhZmUgY29kZS4gVGhpcyBpcyB3b3JrIGluIHByb2dyZXNzLgorI2lmZGVmIFRJWE1MX1NBRkUKKwkjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDAgKQorCQkvLyBNaWNyb3NvZnQgdmlzdWFsIHN0dWRpbywgdmVyc2lvbiA2IGFuZCBoaWdoZXIuCisJCS8vI3ByYWdtYSBtZXNzYWdlKCAiVXNpbmcgX3NuKiBmdW5jdGlvbnMuIiApCisJCSNkZWZpbmUgVElYTUxfU05QUklOVEYgX3NucHJpbnRmCisJCSNkZWZpbmUgVElYTUxfU05TQ0FORiAgX3Nuc2NhbmYKKwkjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMyApCisJCS8vIEdDQyB2ZXJzaW9uIDMgYW5kIGhpZ2hlci5zCisJCS8vI3dhcm5pbmcoICJVc2luZyBzbiogZnVuY3Rpb25zLiIgKQorCQkjZGVmaW5lIFRJWE1MX1NOUFJJTlRGIHNucHJpbnRmCisJCSNkZWZpbmUgVElYTUxfU05TQ0FORiAgc25zY2FuZgorCSNlbmRpZgorI2VuZGlmCQorCitjbGFzcyBUaVhtbERvY3VtZW50OworY2xhc3MgVGlYbWxFbGVtZW50OworY2xhc3MgVGlYbWxDb21tZW50OworY2xhc3MgVGlYbWxVbmtub3duOworY2xhc3MgVGlYbWxBdHRyaWJ1dGU7CitjbGFzcyBUaVhtbFRleHQ7CitjbGFzcyBUaVhtbERlY2xhcmF0aW9uOworY2xhc3MgVGlYbWxQYXJzaW5nRGF0YTsKKworY29uc3QgaW50IFRJWE1MX01BSk9SX1ZFUlNJT04gPSAyOworY29uc3QgaW50IFRJWE1MX01JTk9SX1ZFUlNJT04gPSA0OworY29uc3QgaW50IFRJWE1MX1BBVENIX1ZFUlNJT04gPSAwOworCisvKglJbnRlcm5hbCBzdHJ1Y3R1cmUgZm9yIHRyYWNraW5nIGxvY2F0aW9uIG9mIGl0ZW1zIAorCWluIHRoZSBYTUwgZmlsZS4KKyovCitzdHJ1Y3QgVGlYbWxDdXJzb3IKK3sKKwlUaVhtbEN1cnNvcigpCQl7IENsZWFyKCk7IH0KKwl2b2lkIENsZWFyKCkJCXsgcm93ID0gY29sID0gLTE7IH0KKworCWludCByb3c7CS8vIDAgYmFzZWQuCisJaW50IGNvbDsJLy8gMCBiYXNlZC4KK307CisKKworLy8gT25seSB1c2VkIGJ5IEF0dHJpYnV0ZTo6UXVlcnkgZnVuY3Rpb25zCitlbnVtIAoreyAKKwlUSVhNTF9TVUNDRVNTLAorCVRJWE1MX05PX0FUVFJJQlVURSwKKwlUSVhNTF9XUk9OR19UWVBFCit9OworCisKKy8vIFVzZWQgYnkgdGhlIHBhcnNpbmcgcm91dGluZXMuCitlbnVtIFRpWG1sRW5jb2RpbmcKK3sKKwlUSVhNTF9FTkNPRElOR19VTktOT1dOLAorCVRJWE1MX0VOQ09ESU5HX1VURjgsCisJVElYTUxfRU5DT0RJTkdfTEVHQUNZCit9OworCitjb25zdCBUaVhtbEVuY29kaW5nIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgPSBUSVhNTF9FTkNPRElOR19VTktOT1dOOworCisvKiogVGlYbWxCYXNlIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXZlcnkgY2xhc3MgaW4gVGlueVhtbC4KKwlJdCBkb2VzIGxpdHRsZSBleGNlcHQgdG8gZXN0YWJsaXNoIHRoYXQgVGlueVhtbCBjbGFzc2VzCisJY2FuIGJlIHByaW50ZWQgYW5kIHByb3ZpZGUgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucy4KKworCUluIFhNTCwgdGhlIGRvY3VtZW50IGFuZCBlbGVtZW50cyBjYW4gY29udGFpbgorCW90aGVyIGVsZW1lbnRzIGFuZCBvdGhlciB0eXBlcyBvZiBub2Rlcy4KKworCUB2ZXJiYXRpbQorCUEgRG9jdW1lbnQgY2FuIGNvbnRhaW46CUVsZW1lbnQJKGNvbnRhaW5lciBvciBsZWFmKQorCQkJCQkJCUNvbW1lbnQgKGxlYWYpCisJCQkJCQkJVW5rbm93biAobGVhZikKKwkJCQkJCQlEZWNsYXJhdGlvbiggbGVhZiApCisKKwlBbiBFbGVtZW50IGNhbiBjb250YWluOglFbGVtZW50IChjb250YWluZXIgb3IgbGVhZikKKwkJCQkJCQlUZXh0CShsZWFmKQorCQkJCQkJCUF0dHJpYnV0ZXMgKG5vdCBvbiB0cmVlKQorCQkJCQkJCUNvbW1lbnQgKGxlYWYpCisJCQkJCQkJVW5rbm93biAobGVhZikKKworCUEgRGVjbGVyYXRpb24gY29udGFpbnM6IEF0dHJpYnV0ZXMgKG5vdCBvbiB0cmVlKQorCUBlbmR2ZXJiYXRpbQorKi8KK2NsYXNzIFRpWG1sQmFzZQoreworCWZyaWVuZCBjbGFzcyBUaVhtbE5vZGU7CisJZnJpZW5kIGNsYXNzIFRpWG1sRWxlbWVudDsKKwlmcmllbmQgY2xhc3MgVGlYbWxEb2N1bWVudDsKKworcHVibGljOgorCVRpWG1sQmFzZSgpCToJdXNlckRhdGEoMCkge30KKwl2aXJ0dWFsIH5UaVhtbEJhc2UoKQkJCQkJe30KKworCS8qKglBbGwgVGlueVhtbCBjbGFzc2VzIGNhbiBwcmludCB0aGVtc2VsdmVzIHRvIGEgZmlsZXN0cmVhbS4KKwkJVGhpcyBpcyBhIGZvcm1hdHRlZCBwcmludCwgYW5kIHdpbGwgaW5zZXJ0IHRhYnMgYW5kIG5ld2xpbmVzLgorCQkKKwkJKEZvciBhbiB1bmZvcm1hdHRlZCBzdHJlYW0sIHVzZSB0aGUgPDwgb3BlcmF0b3IuKQorCSovCisJdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3QgPSAwOworCisJLyoqCVRoZSB3b3JsZCBkb2VzIG5vdCBhZ3JlZSBvbiB3aGV0aGVyIHdoaXRlIHNwYWNlIHNob3VsZCBiZSBrZXB0IG9yCisJCW5vdC4gSW4gb3JkZXIgdG8gbWFrZSBldmVyeW9uZSBoYXBweSwgdGhlc2UgZ2xvYmFsLCBzdGF0aWMgZnVuY3Rpb25zCisJCWFyZSBwcm92aWRlZCB0byBzZXQgd2hldGhlciBvciBub3QgVGlueVhtbCB3aWxsIGNvbmRlbnNlIGFsbCB3aGl0ZSBzcGFjZQorCQlpbnRvIGEgc2luZ2xlIHNwYWNlIG9yIG5vdC4gVGhlIGRlZmF1bHQgaXMgdG8gY29uZGVuc2UuIE5vdGUgY2hhbmdpbmcgdGhpcworCQl2YWx1ZXMgaXMgbm90IHRocmVhZCBzYWZlLgorCSovCisJc3RhdGljIHZvaWQgU2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBib29sIGNvbmRlbnNlICkJCXsgY29uZGVuc2VXaGl0ZVNwYWNlID0gY29uZGVuc2U7IH0KKworCS8vLyBSZXR1cm4gdGhlIGN1cnJlbnQgd2hpdGUgc3BhY2Ugc2V0dGluZy4KKwlzdGF0aWMgYm9vbCBJc1doaXRlU3BhY2VDb25kZW5zZWQoKQkJCQkJCXsgcmV0dXJuIGNvbmRlbnNlV2hpdGVTcGFjZTsgfQorCisJLyoqIFJldHVybiB0aGUgcG9zaXRpb24sIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb2YgdGhpcyBub2RlIG9yIGF0dHJpYnV0ZS4KKwkJVGhlIHJvdyBhbmQgY29sdW1uIGFyZSAxLWJhc2VkLiAoVGhhdCBpcyB0aGUgZmlyc3Qgcm93IGFuZCBmaXJzdCBjb2x1bW4gaXMKKwkJMSwxKS4gSWYgdGhlIHJldHVybnMgdmFsdWVzIGFyZSAwIG9yIGxlc3MsIHRoZW4gdGhlIHBhcnNlciBkb2VzIG5vdCBoYXZlCisJCWEgcm93IGFuZCBjb2x1bW4gdmFsdWUuCisKKwkJR2VuZXJhbGx5LCB0aGUgcm93IGFuZCBjb2x1bW4gdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiB0aGUgVGlYbWxEb2N1bWVudDo6TG9hZCgpLAorCQlUaVhtbERvY3VtZW50OjpMb2FkRmlsZSgpLCBvciBhbnkgVGlYbWxOb2RlOjpQYXJzZSgpIGlzIGNhbGxlZC4gSXQgd2lsbCBOT1QgYmUgc2V0CisJCXdoZW4gdGhlIERPTSB3YXMgY3JlYXRlZCBmcm9tIG9wZXJhdG9yPj4uCisKKwkJVGhlIHZhbHVlcyByZWZsZWN0IHRoZSBpbml0aWFsIGxvYWQuIE9uY2UgdGhlIERPTSBpcyBtb2RpZmllZCBwcm9ncmFtbWF0aWNhbGx5CisJCShieSBhZGRpbmcgb3IgY2hhbmdpbmcgbm9kZXMgYW5kIGF0dHJpYnV0ZXMpIHRoZSBuZXcgdmFsdWVzIHdpbGwgTk9UIHVwZGF0ZSB0bworCQlyZWZsZWN0IGNoYW5nZXMgaW4gdGhlIGRvY3VtZW50LgorCisJCVRoZXJlIGlzIGEgbWlub3IgcGVyZm9ybWFuY2UgY29zdCB0byBjb21wdXRpbmcgdGhlIHJvdyBhbmQgY29sdW1uLiBDb21wdXRhdGlvbgorCQljYW4gYmUgZGlzYWJsZWQgaWYgVGlYbWxEb2N1bWVudDo6U2V0VGFiU2l6ZSgpIGlzIGNhbGxlZCB3aXRoIDAgYXMgdGhlIHZhbHVlLgorCisJCUBzYSBUaVhtbERvY3VtZW50OjpTZXRUYWJTaXplKCkKKwkqLworCWludCBSb3coKSBjb25zdAkJCXsgcmV0dXJuIGxvY2F0aW9uLnJvdyArIDE7IH0KKwlpbnQgQ29sdW1uKCkgY29uc3QJCXsgcmV0dXJuIGxvY2F0aW9uLmNvbCArIDE7IH0JLy8vPCBTZWUgUm93KCkKKworCXZvaWQgIFNldFVzZXJEYXRhKCB2b2lkKiB1c2VyICkJCQl7IHVzZXJEYXRhID0gdXNlcjsgfQorCXZvaWQqIEdldFVzZXJEYXRhKCkJCQkJCQl7IHJldHVybiB1c2VyRGF0YTsgfQorCisJLy8gVGFibGUgdGhhdCByZXR1cnMsIGZvciBhIGdpdmVuIGxlYWQgYnl0ZSwgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcworCS8vIGluIHRoZSBVVEYtOCBzZXF1ZW5jZS4KKwlzdGF0aWMgY29uc3QgaW50IHV0ZjhCeXRlVGFibGVbMjU2XTsKKworCXZpcnR1YWwgY29uc3QgY2hhciogUGFyc2UoCWNvbnN0IGNoYXIqIHAsIAorCQkJCQkJCQlUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCAKKwkJCQkJCQkJVGlYbWxFbmNvZGluZyBlbmNvZGluZyAvKj0gVElYTUxfRU5DT0RJTkdfVU5LTk9XTiAqLyApID0gMDsKKworCWVudW0KKwl7CisJCVRJWE1MX05PX0VSUk9SID0gMCwKKwkJVElYTUxfRVJST1IsCisJCVRJWE1MX0VSUk9SX09QRU5JTkdfRklMRSwKKwkJVElYTUxfRVJST1JfT1VUX09GX01FTU9SWSwKKwkJVElYTUxfRVJST1JfUEFSU0lOR19FTEVNRU5ULAorCQlUSVhNTF9FUlJPUl9GQUlMRURfVE9fUkVBRF9FTEVNRU5UX05BTUUsCisJCVRJWE1MX0VSUk9SX1JFQURJTkdfRUxFTUVOVF9WQUxVRSwKKwkJVElYTUxfRVJST1JfUkVBRElOR19BVFRSSUJVVEVTLAorCQlUSVhNTF9FUlJPUl9QQVJTSU5HX0VNUFRZLAorCQlUSVhNTF9FUlJPUl9SRUFESU5HX0VORF9UQUcsCisJCVRJWE1MX0VSUk9SX1BBUlNJTkdfVU5LTk9XTiwKKwkJVElYTUxfRVJST1JfUEFSU0lOR19DT01NRU5ULAorCQlUSVhNTF9FUlJPUl9QQVJTSU5HX0RFQ0xBUkFUSU9OLAorCQlUSVhNTF9FUlJPUl9ET0NVTUVOVF9FTVBUWSwKKwkJVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwKKwkJVElYTUxfRVJST1JfUEFSU0lOR19DREFUQSwKKworCQlUSVhNTF9FUlJPUl9TVFJJTkdfQ09VTlQKKwl9OworCitwcm90ZWN0ZWQ6CisKKwkvLyBTZWUgU1RMX1NUUklOR19CVUcKKwkvLyBVdGlsaXR5IGNsYXNzIHRvIG92ZXJjb21lIGEgYnVnLgorCWNsYXNzIFN0cmluZ1RvQnVmZmVyCisJeworCSAgcHVibGljOgorCQlTdHJpbmdUb0J1ZmZlciggY29uc3QgVElYTUxfU1RSSU5HJiBzdHIgKTsKKwkJflN0cmluZ1RvQnVmZmVyKCk7CisJCWNoYXIqIGJ1ZmZlcjsKKwl9OworCisJc3RhdGljIGNvbnN0IGNoYXIqCVNraXBXaGl0ZVNwYWNlKCBjb25zdCBjaGFyKiwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCWlubGluZSBzdGF0aWMgYm9vbAlJc1doaXRlU3BhY2UoIGNoYXIgYyApCQkKKwl7IAorCQlyZXR1cm4gKCBpc3NwYWNlKCAodW5zaWduZWQgY2hhcikgYyApIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicgKTsgCisJfQorCisJdmlydHVhbCB2b2lkIFN0cmVhbU91dCAoVElYTUxfT1NUUkVBTSAqKSBjb25zdCA9IDA7CisKKwkjaWZkZWYgVElYTUxfVVNFX1NUTAorCSAgICBzdGF0aWMgYm9vbAlTdHJlYW1XaGl0ZVNwYWNlKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworCSAgICBzdGF0aWMgYm9vbCBTdHJlYW1UbyggVElYTUxfSVNUUkVBTSAqIGluLCBpbnQgY2hhcmFjdGVyLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKwkjZW5kaWYKKworCS8qCVJlYWRzIGFuIFhNTCBuYW1lIGludG8gdGhlIHN0cmluZyBwcm92aWRlZC4gUmV0dXJucworCQlhIHBvaW50ZXIganVzdCBwYXN0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgbmFtZSwKKwkJb3IgMCBpZiB0aGUgZnVuY3Rpb24gaGFzIGFuIGVycm9yLgorCSovCisJc3RhdGljIGNvbnN0IGNoYXIqIFJlYWROYW1lKCBjb25zdCBjaGFyKiBwLCBUSVhNTF9TVFJJTkcqIG5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKworCS8qCVJlYWRzIHRleHQuIFJldHVybnMgYSBwb2ludGVyIHBhc3QgdGhlIGdpdmVuIGVuZCB0YWcuCisJCVdpY2tlZGx5IGNvbXBsZXggb3B0aW9ucywgYnV0IGl0IGtlZXBzIHRoZSAoc2Vuc2l0aXZlKSBjb2RlIGluIG9uZSBwbGFjZS4KKwkqLworCXN0YXRpYyBjb25zdCBjaGFyKiBSZWFkVGV4dCgJY29uc3QgY2hhciogaW4sCQkJCS8vIHdoZXJlIHRvIHN0YXJ0CisJCQkJCQkJCQlUSVhNTF9TVFJJTkcqIHRleHQsCQkJLy8gdGhlIHN0cmluZyByZWFkCisJCQkJCQkJCQlib29sIGlnbm9yZVdoaXRlU3BhY2UsCQkvLyB3aGV0aGVyIHRvIGtlZXAgdGhlIHdoaXRlIHNwYWNlCisJCQkJCQkJCQljb25zdCBjaGFyKiBlbmRUYWcsCQkJLy8gd2hhdCBlbmRzIHRoaXMgdGV4dAorCQkJCQkJCQkJYm9vbCBpZ25vcmVDYXNlLAkJCS8vIHdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4gdGhlIGVuZCB0YWcKKwkJCQkJCQkJCVRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsJLy8gdGhlIGN1cnJlbnQgZW5jb2RpbmcKKworCS8vIElmIGFuIGVudGl0eSBoYXMgYmVlbiBmb3VuZCwgdHJhbnNmb3JtIGl0IGludG8gYSBjaGFyYWN0ZXIuCisJc3RhdGljIGNvbnN0IGNoYXIqIEdldEVudGl0eSggY29uc3QgY2hhciogaW4sIGNoYXIqIHZhbHVlLCBpbnQqIGxlbmd0aCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCisJLy8gR2V0IGEgY2hhcmFjdGVyLCB3aGlsZSBpbnRlcnByZXRpbmcgZW50aXRpZXMuCisJLy8gVGhlIGxlbmd0aCBjYW4gYmUgZnJvbSAwIHRvIDQgYnl0ZXMuCisJaW5saW5lIHN0YXRpYyBjb25zdCBjaGFyKiBHZXRDaGFyKCBjb25zdCBjaGFyKiBwLCBjaGFyKiBfdmFsdWUsIGludCogbGVuZ3RoLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKKwl7CisJCWFzc2VydCggcCApOworCQlpZiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQorCQl7CisJCQkqbGVuZ3RoID0gdXRmOEJ5dGVUYWJsZVsgKigodW5zaWduZWQgY2hhciopcCkgXTsKKwkJCWFzc2VydCggKmxlbmd0aCA+PSAwICYmICpsZW5ndGggPCA1ICk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkqbGVuZ3RoID0gMTsKKwkJfQorCisJCWlmICggKmxlbmd0aCA9PSAxICkKKwkJeworCQkJaWYgKCAqcCA9PSAnJicgKQorCQkJCXJldHVybiBHZXRFbnRpdHkoIHAsIF92YWx1ZSwgbGVuZ3RoLCBlbmNvZGluZyApOworCQkJKl92YWx1ZSA9ICpwOworCQkJcmV0dXJuIHArMTsKKwkJfQorCQllbHNlIGlmICggKmxlbmd0aCApCisJCXsKKwkJCS8vc3RybmNweSggX3ZhbHVlLCBwLCAqbGVuZ3RoICk7CS8vIGxvdHMgb2YgY29tcGlsZXJzIGRvbid0IGxpa2UgdGhpcyBmdW5jdGlvbiAodW5zYWZlKSwKKwkJCQkJCQkJCQkJCS8vIGFuZCB0aGUgbnVsbCB0ZXJtaW5hdG9yIGlzbid0IG5lZWRlZAorCQkJZm9yKCBpbnQgaT0wOyBwW2ldICYmIGk8Kmxlbmd0aDsgKytpICkgeworCQkJCV92YWx1ZVtpXSA9IHBbaV07CisJCQl9CisJCQlyZXR1cm4gcCArICgqbGVuZ3RoKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8vIE5vdCB2YWxpZCB0ZXh0LgorCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkvLyBQdXRzIGEgc3RyaW5nIHRvIGEgc3RyZWFtLCBleHBhbmRpbmcgZW50aXRpZXMgYXMgaXQgZ29lcy4KKwkvLyBOb3RlIHRoaXMgc2hvdWxkIG5vdCBjb250aWFuIHRoZSAnPCcsICc+JywgZXRjLCBvciB0aGV5IHdpbGwgYmUgdHJhbnNmb3JtZWQgaW50byBlbnRpdGllcyEKKwlzdGF0aWMgdm9pZCBQdXRTdHJpbmcoIGNvbnN0IFRJWE1MX1NUUklORyYgc3RyLCBUSVhNTF9PU1RSRUFNKiBvdXQgKTsKKworCXN0YXRpYyB2b2lkIFB1dFN0cmluZyggY29uc3QgVElYTUxfU1RSSU5HJiBzdHIsIFRJWE1MX1NUUklORyogb3V0ICk7CisKKwkvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJlYW0gYXJlIGFueSBvZiB0aGUgZW5kVGFnIHNlcXVlbmNlcy4KKwkvLyBJZ25vcmUgY2FzZSBvbmx5IHdvcmtzIGZvciBlbmdsaXNoLCBhbmQgc2hvdWxkIG9ubHkgYmUgcmVsaWVkIG9uIHdoZW4gY29tcGFyaW5nCisJLy8gdG8gRW5nbGlzaCB3b3JkczogU3RyaW5nRXF1YWwoIHAsICJ2ZXJzaW9uIiwgdHJ1ZSApIGlzIGZpbmUuCisJc3RhdGljIGJvb2wgU3RyaW5nRXF1YWwoCWNvbnN0IGNoYXIqIHAsCisJCQkJCQkJCWNvbnN0IGNoYXIqIGVuZFRhZywKKwkJCQkJCQkJYm9vbCBpZ25vcmVDYXNlLAorCQkJCQkJCQlUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKKwlzdGF0aWMgY29uc3QgY2hhciogZXJyb3JTdHJpbmdbIFRJWE1MX0VSUk9SX1NUUklOR19DT1VOVCBdOworCisJVGlYbWxDdXJzb3IgbG9jYXRpb247CisKKyAgICAvLy8gRmllbGQgY29udGFpbmluZyBhIGdlbmVyaWMgdXNlciBwb2ludGVyCisJdm9pZCoJCQl1c2VyRGF0YTsKKwkKKwkvLyBOb25lIG9mIHRoZXNlIG1ldGhvZHMgYXJlIHJlbGlhYmxlIGZvciBhbnkgbGFuZ3VhZ2UgZXhjZXB0IEVuZ2xpc2guCisJLy8gR29vZCBmb3IgYXBwcm94aW1hdGlvbiwgbm90IGdyZWF0IGZvciBhY2N1cmFjeS4KKwlzdGF0aWMgaW50IElzQWxwaGEoIHVuc2lnbmVkIGNoYXIgYW55Qnl0ZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCXN0YXRpYyBpbnQgSXNBbHBoYU51bSggdW5zaWduZWQgY2hhciBhbnlCeXRlLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisJaW5saW5lIHN0YXRpYyBpbnQgVG9Mb3dlciggaW50IHYsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQorCXsKKwkJaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKKwkJeworCQkJaWYgKCB2IDwgMTI4ICkgcmV0dXJuIHRvbG93ZXIoIHYgKTsKKwkJCXJldHVybiB2OworCQl9CisJCWVsc2UKKwkJeworCQkJcmV0dXJuIHRvbG93ZXIoIHYgKTsKKwkJfQorCX0KKwlzdGF0aWMgdm9pZCBDb252ZXJ0VVRGMzJUb1VURjgoIHVuc2lnbmVkIGxvbmcgaW5wdXQsIGNoYXIqIG91dHB1dCwgaW50KiBsZW5ndGggKTsKKworcHJpdmF0ZToKKwlUaVhtbEJhc2UoIGNvbnN0IFRpWG1sQmFzZSYgKTsJCQkJLy8gbm90IGltcGxlbWVudGVkLgorCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbEJhc2UmIGJhc2UgKTsJLy8gbm90IGFsbG93ZWQuCisKKwlzdHJ1Y3QgRW50aXR5CisJeworCQljb25zdCBjaGFyKiAgICAgc3RyOworCQl1bnNpZ25lZCBpbnQJc3RyTGVuZ3RoOworCQljaGFyCQkgICAgY2hyOworCX07CisJZW51bQorCXsKKwkJTlVNX0VOVElUWSA9IDUsCisJCU1BWF9FTlRJVFlfTEVOR1RIID0gNgorCisJfTsKKwlzdGF0aWMgRW50aXR5IGVudGl0eVsgTlVNX0VOVElUWSBdOworCXN0YXRpYyBib29sIGNvbmRlbnNlV2hpdGVTcGFjZTsKK307CisKKworLyoqIFRoZSBwYXJlbnQgY2xhc3MgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlIERvY3VtZW50IE9iamVjdCBNb2RlbC4KKwkoRXhjZXB0IGZvciBhdHRyaWJ1dGVzKS4KKwlOb2RlcyBoYXZlIHNpYmxpbmdzLCBhIHBhcmVudCwgYW5kIGNoaWxkcmVuLiBBIG5vZGUgY2FuIGJlCisJaW4gYSBkb2N1bWVudCwgb3Igc3RhbmQgb24gaXRzIG93bi4gVGhlIHR5cGUgb2YgYSBUaVhtbE5vZGUKKwljYW4gYmUgcXVlcmllZCwgYW5kIGl0IGNhbiBiZSBjYXN0IHRvIGl0cyBtb3JlIGRlZmluZWQgdHlwZS4KKyovCitjbGFzcyBUaVhtbE5vZGUgOiBwdWJsaWMgVGlYbWxCYXNlCit7CisJZnJpZW5kIGNsYXNzIFRpWG1sRG9jdW1lbnQ7CisJZnJpZW5kIGNsYXNzIFRpWG1sRWxlbWVudDsKKworcHVibGljOgorCSNpZmRlZiBUSVhNTF9VU0VfU1RMCQorCisJICAgIC8qKiBBbiBpbnB1dCBzdHJlYW0gb3BlcmF0b3IsIGZvciBldmVyeSBjbGFzcy4gVG9sZXJhbnQgb2YgbmV3bGluZXMgYW5kCisJCSAgICBmb3JtYXR0aW5nLCBidXQgZG9lc24ndCBleHBlY3QgdGhlbS4KKwkgICAgKi8KKwkgICAgZnJpZW5kIHN0ZDo6aXN0cmVhbSYgb3BlcmF0b3IgPj4gKHN0ZDo6aXN0cmVhbSYgaW4sIFRpWG1sTm9kZSYgYmFzZSk7CisKKwkgICAgLyoqIEFuIG91dHB1dCBzdHJlYW0gb3BlcmF0b3IsIGZvciBldmVyeSBjbGFzcy4gTm90ZSB0aGF0IHRoaXMgb3V0cHV0cworCQkgICAgd2l0aG91dCBhbnkgbmV3bGluZXMgb3IgZm9ybWF0dGluZywgYXMgb3Bwb3NlZCB0byBQcmludCgpLCB3aGljaAorCQkgICAgaW5jbHVkZXMgdGFicyBhbmQgbmV3IGxpbmVzLgorCisJCSAgICBUaGUgb3BlcmF0b3I8PCBhbmQgb3BlcmF0b3I+PiBhcmUgbm90IGNvbXBsZXRlbHkgc3ltbWV0cmljLiBXcml0aW5nCisJCSAgICBhIG5vZGUgdG8gYSBzdHJlYW0gaXMgdmVyeSB3ZWxsIGRlZmluZWQuIFlvdSdsbCBnZXQgYSBuaWNlIHN0cmVhbQorCQkgICAgb2Ygb3V0cHV0LCB3aXRob3V0IGFueSBleHRyYSB3aGl0ZXNwYWNlIG9yIG5ld2xpbmVzLgorCQkgICAgCisJCSAgICBCdXQgcmVhZGluZyBpcyBub3QgYXMgd2VsbCBkZWZpbmVkLiAoQXMgaXQgYWx3YXlzIGlzLikgSWYgeW91IGNyZWF0ZQorCQkgICAgYSBUaVhtbEVsZW1lbnQgKGZvciBleGFtcGxlKSBhbmQgcmVhZCB0aGF0IGZyb20gYW4gaW5wdXQgc3RyZWFtLAorCQkgICAgdGhlIHRleHQgbmVlZHMgdG8gZGVmaW5lIGFuIGVsZW1lbnQgb3IganVuayB3aWxsIHJlc3VsdC4gVGhpcyBpcworCQkgICAgdHJ1ZSBvZiBhbGwgaW5wdXQgc3RyZWFtcywgYnV0IGl0J3Mgd29ydGgga2VlcGluZyBpbiBtaW5kLgorCisJCSAgICBBIFRpWG1sRG9jdW1lbnQgd2lsbCByZWFkIG5vZGVzIHVudGlsIGl0IHJlYWRzIGEgcm9vdCBlbGVtZW50LCBhbmQKKwkJCWFsbCB0aGUgY2hpbGRyZW4gb2YgdGhhdCByb290IGVsZW1lbnQuCisJICAgICovCQorCSAgICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8IChzdGQ6Om9zdHJlYW0mIG91dCwgY29uc3QgVGlYbWxOb2RlJiBiYXNlKTsKKworCQkvLy8gQXBwZW5kcyB0aGUgWE1MIG5vZGUgb3IgYXR0cmlidXRlIHRvIGEgc3RkOjpzdHJpbmcuCisJCWZyaWVuZCBzdGQ6OnN0cmluZyYgb3BlcmF0b3I8PCAoc3RkOjpzdHJpbmcmIG91dCwgY29uc3QgVGlYbWxOb2RlJiBiYXNlICk7CisKKwkjZWxzZQorCSAgICAvLyBVc2VkIGludGVybmFsbHksIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLgorCSAgICBmcmllbmQgVElYTUxfT1NUUkVBTSYgb3BlcmF0b3I8PCAoVElYTUxfT1NUUkVBTSYgb3V0LCBjb25zdCBUaVhtbE5vZGUmIGJhc2UpOworCSNlbmRpZgorCisJLyoqIFRoZSB0eXBlcyBvZiBYTUwgbm9kZXMgc3VwcG9ydGVkIGJ5IFRpbnlYbWwuIChBbGwgdGhlCisJCQl1bnN1cHBvcnRlZCB0eXBlcyBhcmUgcGlja2VkIHVwIGJ5IFVOS05PV04uKQorCSovCisJZW51bSBOb2RlVHlwZQorCXsKKwkJRE9DVU1FTlQsCisJCUVMRU1FTlQsCisJCUNPTU1FTlQsCisJCVVOS05PV04sCisJCVRFWFQsCisJCURFQ0xBUkFUSU9OLAorCQlUWVBFQ09VTlQKKwl9OworCisJdmlydHVhbCB+VGlYbWxOb2RlKCk7CisKKwkvKiogVGhlIG1lYW5pbmcgb2YgJ3ZhbHVlJyBjaGFuZ2VzIGZvciB0aGUgc3BlY2lmaWMgdHlwZSBvZgorCQlUaVhtbE5vZGUuCisJCUB2ZXJiYXRpbQorCQlEb2N1bWVudDoJZmlsZW5hbWUgb2YgdGhlIHhtbCBmaWxlCisJCUVsZW1lbnQ6CW5hbWUgb2YgdGhlIGVsZW1lbnQKKwkJQ29tbWVudDoJdGhlIGNvbW1lbnQgdGV4dAorCQlVbmtub3duOgl0aGUgdGFnIGNvbnRlbnRzCisJCVRleHQ6CQl0aGUgdGV4dCBzdHJpbmcKKwkJQGVuZHZlcmJhdGltCisKKwkJVGhlIHN1YmNsYXNzZXMgd2lsbCB3cmFwIHRoaXMgZnVuY3Rpb24uCisJKi8KKwljb25zdCBjaGFyICpWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlLmNfc3RyICgpOyB9CisKKyAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAorCS8qKiBSZXR1cm4gVmFsdWUoKSBhcyBhIHN0ZDo6c3RyaW5nLiBJZiB5b3Ugb25seSB1c2UgU1RMLAorCSAgICB0aGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gY2FsbGluZyBWYWx1ZSgpLgorCQlPbmx5IGF2YWlsYWJsZSBpbiBTVEwgbW9kZS4KKwkqLworCWNvbnN0IHN0ZDo6c3RyaW5nJiBWYWx1ZVN0cigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CisJI2VuZGlmCisKKwkvKiogQ2hhbmdlcyB0aGUgdmFsdWUgb2YgdGhlIG5vZGUuIERlZmluZWQgYXM6CisJCUB2ZXJiYXRpbQorCQlEb2N1bWVudDoJZmlsZW5hbWUgb2YgdGhlIHhtbCBmaWxlCisJCUVsZW1lbnQ6CW5hbWUgb2YgdGhlIGVsZW1lbnQKKwkJQ29tbWVudDoJdGhlIGNvbW1lbnQgdGV4dAorCQlVbmtub3duOgl0aGUgdGFnIGNvbnRlbnRzCisJCVRleHQ6CQl0aGUgdGV4dCBzdHJpbmcKKwkJQGVuZHZlcmJhdGltCisJKi8KKwl2b2lkIFNldFZhbHVlKGNvbnN0IGNoYXIgKiBfdmFsdWUpIHsgdmFsdWUgPSBfdmFsdWU7fQorCisgICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkvLy8gU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJdm9pZCBTZXRWYWx1ZSggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApICAgIAorCXsJICAKKwkJU3RyaW5nVG9CdWZmZXIgYnVmKCBfdmFsdWUgKTsKKwkJU2V0VmFsdWUoIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogIiIgKTsgICAgCQorCX0JCisJI2VuZGlmCisKKwkvLy8gRGVsZXRlIGFsbCB0aGUgY2hpbGRyZW4gb2YgdGhpcyBub2RlLiBEb2VzIG5vdCBhZmZlY3QgJ3RoaXMnLgorCXZvaWQgQ2xlYXIoKTsKKworCS8vLyBPbmUgc3RlcCB1cCB0aGUgRE9NLgorCVRpWG1sTm9kZSogUGFyZW50KCkJCQkJCQkJeyByZXR1cm4gcGFyZW50OyB9CisJY29uc3QgVGlYbWxOb2RlKiBQYXJlbnQoKSBjb25zdAkJCQl7IHJldHVybiBwYXJlbnQ7IH0KKworCWNvbnN0IFRpWG1sTm9kZSogRmlyc3RDaGlsZCgpCWNvbnN0CXsgcmV0dXJuIGZpcnN0Q2hpbGQ7IH0JCS8vLzwgVGhlIGZpcnN0IGNoaWxkIG9mIHRoaXMgbm9kZS4gV2lsbCBiZSBudWxsIGlmIHRoZXJlIGFyZSBubyBjaGlsZHJlbi4KKwlUaVhtbE5vZGUqIEZpcnN0Q2hpbGQoKQkJCQkJeyByZXR1cm4gZmlyc3RDaGlsZDsgfQorCWNvbnN0IFRpWG1sTm9kZSogRmlyc3RDaGlsZCggY29uc3QgY2hhciAqIHZhbHVlICkgY29uc3Q7CQkJLy8vPCBUaGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBub2RlIHdpdGggdGhlIG1hdGNoaW5nICd2YWx1ZScuIFdpbGwgYmUgbnVsbCBpZiBub25lIGZvdW5kLgorCVRpWG1sTm9kZSogRmlyc3RDaGlsZCggY29uc3QgY2hhciAqIHZhbHVlICk7CQkJCQkJLy8vPCBUaGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBub2RlIHdpdGggdGhlIG1hdGNoaW5nICd2YWx1ZScuIFdpbGwgYmUgbnVsbCBpZiBub25lIGZvdW5kLgorCisJY29uc3QgVGlYbWxOb2RlKiBMYXN0Q2hpbGQoKSBjb25zdAl7IHJldHVybiBsYXN0Q2hpbGQ7IH0JCS8vLyBUaGUgbGFzdCBjaGlsZCBvZiB0aGlzIG5vZGUuIFdpbGwgYmUgbnVsbCBpZiB0aGVyZSBhcmUgbm8gY2hpbGRyZW4uCisJVGlYbWxOb2RlKiBMYXN0Q2hpbGQoKQl7IHJldHVybiBsYXN0Q2hpbGQ7IH0KKwljb25zdCBUaVhtbE5vZGUqIExhc3RDaGlsZCggY29uc3QgY2hhciAqIHZhbHVlICkgY29uc3Q7CQkJLy8vIFRoZSBsYXN0IGNoaWxkIG9mIHRoaXMgbm9kZSBtYXRjaGluZyAndmFsdWUnLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLgorCVRpWG1sTm9kZSogTGFzdENoaWxkKCBjb25zdCBjaGFyICogdmFsdWUgKTsJCisKKyAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAorCWNvbnN0IFRpWG1sTm9kZSogRmlyc3RDaGlsZCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApIGNvbnN0CXsJcmV0dXJuIEZpcnN0Q2hpbGQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwlUaVhtbE5vZGUqIEZpcnN0Q2hpbGQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKQkJCQl7CXJldHVybiBGaXJzdENoaWxkIChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJY29uc3QgVGlYbWxOb2RlKiBMYXN0Q2hpbGQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSBjb25zdAl7CXJldHVybiBMYXN0Q2hpbGQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwlUaVhtbE5vZGUqIExhc3RDaGlsZCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApCQkJCXsJcmV0dXJuIExhc3RDaGlsZCAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCSNlbmRpZgorCisJLyoqIEFuIGFsdGVybmF0ZSB3YXkgdG8gd2FsayB0aGUgY2hpbGRyZW4gb2YgYSBub2RlLgorCQlPbmUgd2F5IHRvIGl0ZXJhdGUgb3ZlciBub2RlcyBpczoKKwkJQHZlcmJhdGltCisJCQlmb3IoIGNoaWxkID0gcGFyZW50LT5GaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5OZXh0U2libGluZygpICkKKwkJQGVuZHZlcmJhdGltCisKKwkJSXRlcmF0ZUNoaWxkcmVuIGRvZXMgdGhlIHNhbWUgdGhpbmcgd2l0aCB0aGUgc3ludGF4OgorCQlAdmVyYmF0aW0KKwkJCWNoaWxkID0gMDsKKwkJCXdoaWxlKCBjaGlsZCA9IHBhcmVudC0+SXRlcmF0ZUNoaWxkcmVuKCBjaGlsZCApICkKKwkJQGVuZHZlcmJhdGltCisKKwkJSXRlcmF0ZUNoaWxkcmVuIHRha2VzIHRoZSBwcmV2aW91cyBjaGlsZCBhcyBpbnB1dCBhbmQgZmluZHMKKwkJdGhlIG5leHQgb25lLiBJZiB0aGUgcHJldmlvdXMgY2hpbGQgaXMgbnVsbCwgaXQgcmV0dXJucyB0aGUKKwkJZmlyc3QuIEl0ZXJhdGVDaGlsZHJlbiB3aWxsIHJldHVybiBudWxsIHdoZW4gZG9uZS4KKwkqLworCWNvbnN0IFRpWG1sTm9kZSogSXRlcmF0ZUNoaWxkcmVuKCBjb25zdCBUaVhtbE5vZGUqIHByZXZpb3VzICkgY29uc3Q7CisJVGlYbWxOb2RlKiBJdGVyYXRlQ2hpbGRyZW4oIFRpWG1sTm9kZSogcHJldmlvdXMgKTsKKworCS8vLyBUaGlzIGZsYXZvciBvZiBJdGVyYXRlQ2hpbGRyZW4gc2VhcmNoZXMgZm9yIGNoaWxkcmVuIHdpdGggYSBwYXJ0aWN1bGFyICd2YWx1ZScKKwljb25zdCBUaVhtbE5vZGUqIEl0ZXJhdGVDaGlsZHJlbiggY29uc3QgY2hhciAqIHZhbHVlLCBjb25zdCBUaVhtbE5vZGUqIHByZXZpb3VzICkgY29uc3Q7CisJVGlYbWxOb2RlKiBJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IGNoYXIgKiB2YWx1ZSwgVGlYbWxOb2RlKiBwcmV2aW91cyApOworCisgICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwljb25zdCBUaVhtbE5vZGUqIEl0ZXJhdGVDaGlsZHJlbiggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSwgY29uc3QgVGlYbWxOb2RlKiBwcmV2aW91cyApIGNvbnN0CXsJcmV0dXJuIEl0ZXJhdGVDaGlsZHJlbiAoX3ZhbHVlLmNfc3RyICgpLCBwcmV2aW91cyk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwlUaVhtbE5vZGUqIEl0ZXJhdGVDaGlsZHJlbiggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSwgVGlYbWxOb2RlKiBwcmV2aW91cyApIHsJcmV0dXJuIEl0ZXJhdGVDaGlsZHJlbiAoX3ZhbHVlLmNfc3RyICgpLCBwcmV2aW91cyk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwkjZW5kaWYKKworCS8qKiBBZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuIEFkZHMgYSBjaGlsZCBwYXN0IHRoZSBMYXN0Q2hpbGQuCisJCVJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgb2JqZWN0IG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKwkqLworCVRpWG1sTm9kZSogSW5zZXJ0RW5kQ2hpbGQoIGNvbnN0IFRpWG1sTm9kZSYgYWRkVGhpcyApOworCisKKwkvKiogQWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiBBZGRzIGEgY2hpbGQgcGFzdCB0aGUgTGFzdENoaWxkLgorCisJCU5PVEU6IHRoZSBub2RlIHRvIGJlIGFkZGVkIGlzIHBhc3NlZCBieSBwb2ludGVyLCBhbmQgd2lsbCBiZQorCQloZW5jZWZvcnRoIG93bmVkIChhbmQgZGVsZXRlZCkgYnkgdGlueVhtbC4gVGhpcyBtZXRob2QgaXMgZWZmaWNpZW50CisJCWFuZCBhdm9pZHMgYW4gZXh0cmEgY29weSwgYnV0IHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZSBhcyBpdAorCQl1c2VzIGEgZGlmZmVyZW50IG1lbW9yeSBtb2RlbCB0aGFuIHRoZSBvdGhlciBpbnNlcnQgZnVuY3Rpb25zLgorCisJCUBzYSBJbnNlcnRFbmRDaGlsZAorCSovCisJVGlYbWxOb2RlKiBMaW5rRW5kQ2hpbGQoIFRpWG1sTm9kZSogYWRkVGhpcyApOworCisJLyoqIEFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gQWRkcyBhIGNoaWxkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIGNoaWxkLgorCQlSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuCisJKi8KKwlUaVhtbE5vZGUqIEluc2VydEJlZm9yZUNoaWxkKCBUaVhtbE5vZGUqIGJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSYgYWRkVGhpcyApOworCisJLyoqIEFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gQWRkcyBhIGNoaWxkIGFmdGVyIHRoZSBzcGVjaWZpZWQgY2hpbGQuCisJCVJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgb2JqZWN0IG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKwkqLworCVRpWG1sTm9kZSogSW5zZXJ0QWZ0ZXJDaGlsZCggIFRpWG1sTm9kZSogYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUmIGFkZFRoaXMgKTsKKworCS8qKiBSZXBsYWNlIGEgY2hpbGQgb2YgdGhpcyBub2RlLgorCQlSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuCisJKi8KKwlUaVhtbE5vZGUqIFJlcGxhY2VDaGlsZCggVGlYbWxOb2RlKiByZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlJiB3aXRoVGhpcyApOworCisJLy8vIERlbGV0ZSBhIGNoaWxkIG9mIHRoaXMgbm9kZS4KKwlib29sIFJlbW92ZUNoaWxkKCBUaVhtbE5vZGUqIHJlbW92ZVRoaXMgKTsKKworCS8vLyBOYXZpZ2F0ZSB0byBhIHNpYmxpbmcgbm9kZS4KKwljb25zdCBUaVhtbE5vZGUqIFByZXZpb3VzU2libGluZygpIGNvbnN0CQkJeyByZXR1cm4gcHJldjsgfQorCVRpWG1sTm9kZSogUHJldmlvdXNTaWJsaW5nKCkJCQkJCQl7IHJldHVybiBwcmV2OyB9CisKKwkvLy8gTmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuCisJY29uc3QgVGlYbWxOb2RlKiBQcmV2aW91c1NpYmxpbmcoIGNvbnN0IGNoYXIgKiApIGNvbnN0OworCVRpWG1sTm9kZSogUHJldmlvdXNTaWJsaW5nKCBjb25zdCBjaGFyICogKTsKKworICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMCisJY29uc3QgVGlYbWxOb2RlKiBQcmV2aW91c1NpYmxpbmcoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSBjb25zdAl7CXJldHVybiBQcmV2aW91c1NpYmxpbmcgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwlUaVhtbE5vZGUqIFByZXZpb3VzU2libGluZyggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApIAkJCXsJcmV0dXJuIFByZXZpb3VzU2libGluZyAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCWNvbnN0IFRpWG1sTm9kZSogTmV4dFNpYmxpbmcoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUpIGNvbnN0CQl7CXJldHVybiBOZXh0U2libGluZyAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCVRpWG1sTm9kZSogTmV4dFNpYmxpbmcoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUpIAkJCQkJewlyZXR1cm4gTmV4dFNpYmxpbmcgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwkjZW5kaWYKKworCS8vLyBOYXZpZ2F0ZSB0byBhIHNpYmxpbmcgbm9kZS4KKwljb25zdCBUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCkgY29uc3QJCQkJeyByZXR1cm4gbmV4dDsgfQorCVRpWG1sTm9kZSogTmV4dFNpYmxpbmcoKQkJCQkJCQl7IHJldHVybiBuZXh0OyB9CisKKwkvLy8gTmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUgd2l0aCB0aGUgZ2l2ZW4gJ3ZhbHVlJy4KKwljb25zdCBUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCBjb25zdCBjaGFyICogKSBjb25zdDsKKwlUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCBjb25zdCBjaGFyICogKTsKKworCS8qKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4KKwkJQ2FsbHMgTmV4dFNpYmxpbmcgYW5kIFRvRWxlbWVudC4gV2lsbCBza2lwIGFsbCBub24tRWxlbWVudAorCQlub2Rlcy4gUmV0dXJucyAwIGlmIHRoZXJlIGlzIG5vdCBhbm90aGVyIGVsZW1lbnQuCisJKi8KKwljb25zdCBUaVhtbEVsZW1lbnQqIE5leHRTaWJsaW5nRWxlbWVudCgpIGNvbnN0OworCVRpWG1sRWxlbWVudCogTmV4dFNpYmxpbmdFbGVtZW50KCk7CisKKwkvKiogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuCisJCUNhbGxzIE5leHRTaWJsaW5nIGFuZCBUb0VsZW1lbnQuIFdpbGwgc2tpcCBhbGwgbm9uLUVsZW1lbnQKKwkJbm9kZXMuIFJldHVybnMgMCBpZiB0aGVyZSBpcyBub3QgYW5vdGhlciBlbGVtZW50LgorCSovCisJY29uc3QgVGlYbWxFbGVtZW50KiBOZXh0U2libGluZ0VsZW1lbnQoIGNvbnN0IGNoYXIgKiApIGNvbnN0OworCVRpWG1sRWxlbWVudCogTmV4dFNpYmxpbmdFbGVtZW50KCBjb25zdCBjaGFyICogKTsKKworICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMCisJY29uc3QgVGlYbWxFbGVtZW50KiBOZXh0U2libGluZ0VsZW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUpIGNvbnN0CXsJcmV0dXJuIE5leHRTaWJsaW5nRWxlbWVudCAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCVRpWG1sRWxlbWVudCogTmV4dFNpYmxpbmdFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlKQkJCQl7CXJldHVybiBOZXh0U2libGluZ0VsZW1lbnQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwkjZW5kaWYKKworCS8vLyBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4KKwljb25zdCBUaVhtbEVsZW1lbnQqIEZpcnN0Q2hpbGRFbGVtZW50KCkJY29uc3Q7CisJVGlYbWxFbGVtZW50KiBGaXJzdENoaWxkRWxlbWVudCgpOworCisJLy8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCB0aHJvdWdoIGVsZW1lbnRzLgorCWNvbnN0IFRpWG1sRWxlbWVudCogRmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0OworCVRpWG1sRWxlbWVudCogRmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApOworCisgICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwljb25zdCBUaVhtbEVsZW1lbnQqIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkgY29uc3QJewlyZXR1cm4gRmlyc3RDaGlsZEVsZW1lbnQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwlUaVhtbEVsZW1lbnQqIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkJCQkJewlyZXR1cm4gRmlyc3RDaGlsZEVsZW1lbnQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwkjZW5kaWYKKworCS8qKiBRdWVyeSB0aGUgdHlwZSAoYXMgYW4gZW51bWVyYXRlZCB2YWx1ZSwgYWJvdmUpIG9mIHRoaXMgbm9kZS4KKwkJVGhlIHBvc3NpYmxlIHR5cGVzIGFyZTogRE9DVU1FTlQsIEVMRU1FTlQsIENPTU1FTlQsCisJCQkJCQkJCVVOS05PV04sIFRFWFQsIGFuZCBERUNMQVJBVElPTi4KKwkqLworCXZpcnR1YWwgaW50IFR5cGUoKSBjb25zdAl7IHJldHVybiB0eXBlOyB9CisKKwkvKiogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgRG9jdW1lbnQgdGhpcyBub2RlIGxpdmVzIGluLgorCQlSZXR1cm5zIG51bGwgaWYgbm90IGluIGEgZG9jdW1lbnQuCisJKi8KKwljb25zdCBUaVhtbERvY3VtZW50KiBHZXREb2N1bWVudCgpIGNvbnN0OworCVRpWG1sRG9jdW1lbnQqIEdldERvY3VtZW50KCk7CisKKwkvLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbm9kZSBoYXMgbm8gY2hpbGRyZW4uCisJYm9vbCBOb0NoaWxkcmVuKCkgY29uc3QJCQkJCQl7IHJldHVybiAhZmlyc3RDaGlsZDsgfQorCisJY29uc3QgVGlYbWxEb2N1bWVudCogVG9Eb2N1bWVudCgpCWNvbnN0CQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBET0NVTUVOVCApID8gKGNvbnN0IFRpWG1sRG9jdW1lbnQqKSB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCWNvbnN0IFRpWG1sRWxlbWVudCogIFRvRWxlbWVudCgpIGNvbnN0CQkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gRUxFTUVOVCAgKSA/IChjb25zdCBUaVhtbEVsZW1lbnQqKSAgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KKwljb25zdCBUaVhtbENvbW1lbnQqICBUb0NvbW1lbnQoKSBjb25zdAkJCXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IENPTU1FTlQgICkgPyAoY29uc3QgVGlYbWxDb21tZW50KikgIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCisJY29uc3QgVGlYbWxVbmtub3duKiAgVG9Vbmtub3duKCkgY29uc3QJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBVTktOT1dOICApID8gKGNvbnN0IFRpWG1sVW5rbm93biopICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCWNvbnN0IFRpWG1sVGV4dCoJICAgVG9UZXh0KCkgICAgY29uc3QJCXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IFRFWFQgICAgICkgPyAoY29uc3QgVGlYbWxUZXh0KikgICAgIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCisJY29uc3QgVGlYbWxEZWNsYXJhdGlvbiogVG9EZWNsYXJhdGlvbigpIGNvbnN0CXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IERFQ0xBUkFUSU9OICkgPyAoY29uc3QgVGlYbWxEZWNsYXJhdGlvbiopIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCisKKwlUaVhtbERvY3VtZW50KiBUb0RvY3VtZW50KCkJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBET0NVTUVOVCApID8gKFRpWG1sRG9jdW1lbnQqKSB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCVRpWG1sRWxlbWVudCogIFRvRWxlbWVudCgpCQkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gRUxFTUVOVCAgKSA/IChUaVhtbEVsZW1lbnQqKSAgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KKwlUaVhtbENvbW1lbnQqICBUb0NvbW1lbnQoKQkJCXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IENPTU1FTlQgICkgPyAoVGlYbWxDb21tZW50KikgIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCisJVGlYbWxVbmtub3duKiAgVG9Vbmtub3duKCkJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBVTktOT1dOICApID8gKFRpWG1sVW5rbm93biopICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCVRpWG1sVGV4dCoJICAgVG9UZXh0KCkgICAJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBURVhUICAgICApID8gKFRpWG1sVGV4dCopICAgICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCVRpWG1sRGVjbGFyYXRpb24qIFRvRGVjbGFyYXRpb24oKQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBERUNMQVJBVElPTiApID8gKFRpWG1sRGVjbGFyYXRpb24qKSB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCisJLyoqIENyZWF0ZSBhbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcyBub2RlIGFuZCByZXR1cm4gaXQuIFRoZSBtZW1vcnkgbXVzdCBiZSBkZWxldGVkCisJCWJ5IHRoZSBjYWxsZXIuIAorCSovCisJdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisJVGlYbWxOb2RlKCBOb2RlVHlwZSBfdHlwZSApOworCisJLy8gQ29weSB0byB0aGUgYWxsb2NhdGVkIG9iamVjdC4gU2hhcmVkIGZ1bmN0aW9uYWxpdHkgYmV0d2VlbiBDbG9uZSwgQ29weSBjb25zdHJ1Y3RvciwKKwkvLyBhbmQgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisJdm9pZCBDb3B5VG8oIFRpWG1sTm9kZSogdGFyZ2V0ICkgY29uc3Q7CisKKwkjaWZkZWYgVElYTUxfVVNFX1NUTAorCSAgICAvLyBUaGUgcmVhbCB3b3JrIG9mIHRoZSBpbnB1dCBvcGVyYXRvci4KKwkgICAgdmlydHVhbCB2b2lkIFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNKiBpbiwgVElYTUxfU1RSSU5HKiB0YWcgKSA9IDA7CisJI2VuZGlmCisKKwkvLyBGaWd1cmUgb3V0IHdoYXQgaXMgYXQgKnAsIGFuZCBwYXJzZSBpdC4gUmV0dXJucyBudWxsIGlmIGl0IGlzIG5vdCBhbiB4bWwgbm9kZS4KKwlUaVhtbE5vZGUqIElkZW50aWZ5KCBjb25zdCBjaGFyKiBzdGFydCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCisJVGlYbWxOb2RlKgkJcGFyZW50OworCU5vZGVUeXBlCQl0eXBlOworCisJVGlYbWxOb2RlKgkJZmlyc3RDaGlsZDsKKwlUaVhtbE5vZGUqCQlsYXN0Q2hpbGQ7CisKKwlUSVhNTF9TVFJJTkcJdmFsdWU7CisKKwlUaVhtbE5vZGUqCQlwcmV2OworCVRpWG1sTm9kZSoJCW5leHQ7CisKK3ByaXZhdGU6CisJVGlYbWxOb2RlKCBjb25zdCBUaVhtbE5vZGUmICk7CQkJCS8vIG5vdCBpbXBsZW1lbnRlZC4KKwl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxOb2RlJiBiYXNlICk7CS8vIG5vdCBhbGxvd2VkLgorfTsKKworCisvKiogQW4gYXR0cmlidXRlIGlzIGEgbmFtZS12YWx1ZSBwYWlyLiBFbGVtZW50cyBoYXZlIGFuIGFyYml0cmFyeQorCW51bWJlciBvZiBhdHRyaWJ1dGVzLCBlYWNoIHdpdGggYSB1bmlxdWUgbmFtZS4KKworCUBub3RlIFRoZSBhdHRyaWJ1dGVzIGFyZSBub3QgVGlYbWxOb2Rlcywgc2luY2UgdGhleSBhcmUgbm90CisJCSAgcGFydCBvZiB0aGUgdGlueVhNTCBkb2N1bWVudCBvYmplY3QgbW9kZWwuIFRoZXJlIGFyZSBvdGhlcgorCQkgIHN1Z2dlc3RlZCB3YXlzIHRvIGxvb2sgYXQgdGhpcyBwcm9ibGVtLgorKi8KK2NsYXNzIFRpWG1sQXR0cmlidXRlIDogcHVibGljIFRpWG1sQmFzZQoreworCWZyaWVuZCBjbGFzcyBUaVhtbEF0dHJpYnV0ZVNldDsKKworcHVibGljOgorCS8vLyBDb25zdHJ1Y3QgYW4gZW1wdHkgYXR0cmlidXRlLgorCVRpWG1sQXR0cmlidXRlKCkgOiBUaVhtbEJhc2UoKQorCXsKKwkJZG9jdW1lbnQgPSAwOworCQlwcmV2ID0gbmV4dCA9IDA7CisJfQorCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkvLy8gc3RkOjpzdHJpbmcgY29uc3RydWN0b3IuCisJVGlYbWxBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApCisJeworCQluYW1lID0gX25hbWU7CisJCXZhbHVlID0gX3ZhbHVlOworCQlkb2N1bWVudCA9IDA7CisJCXByZXYgPSBuZXh0ID0gMDsKKwl9CisJI2VuZGlmCisKKwkvLy8gQ29uc3RydWN0IGFuIGF0dHJpYnV0ZSB3aXRoIGEgbmFtZSBhbmQgdmFsdWUuCisJVGlYbWxBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBfbmFtZSwgY29uc3QgY2hhciAqIF92YWx1ZSApCisJeworCQluYW1lID0gX25hbWU7CisJCXZhbHVlID0gX3ZhbHVlOworCQlkb2N1bWVudCA9IDA7CisJCXByZXYgPSBuZXh0ID0gMDsKKwl9CisKKwljb25zdCBjaGFyKgkJTmFtZSgpICBjb25zdAkJeyByZXR1cm4gbmFtZS5jX3N0ciAoKTsgfQkJLy8vPCBSZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBhdHRyaWJ1dGUuCisJY29uc3QgY2hhcioJCVZhbHVlKCkgY29uc3QJCXsgcmV0dXJuIHZhbHVlLmNfc3RyICgpOyB9CQkvLy88IFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUuCisJaW50CQkJCUludFZhbHVlKCkgY29uc3Q7CQkJCQkJCQkJLy8vPCBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLCBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlci4KKwlkb3VibGUJCQlEb3VibGVWYWx1ZSgpIGNvbnN0OwkJCQkJCQkJLy8vPCBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLCBjb252ZXJ0ZWQgdG8gYSBkb3VibGUuCisKKwkvKiogUXVlcnlJbnRWYWx1ZSBleGFtaW5lcyB0aGUgdmFsdWUgc3RyaW5nLiBJdCBpcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUKKwkJSW50VmFsdWUoKSBtZXRob2Qgd2l0aCByaWNoZXIgZXJyb3IgY2hlY2tpbmcuCisJCUlmIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLCBpdCBpcyBzdG9yZWQgaW4gJ3ZhbHVlJyBhbmQgCisJCXRoZSBjYWxsIHJldHVybnMgVElYTUxfU1VDQ0VTUy4gSWYgaXQgaXMgbm90CisJCWFuIGludGVnZXIsIGl0IHJldHVybnMgVElYTUxfV1JPTkdfVFlQRS4KKworCQlBIHNwZWNpYWxpemVkIGJ1dCB1c2VmdWwgY2FsbC4gTm90ZSB0aGF0IGZvciBzdWNjZXNzIGl0IHJldHVybnMgMCwKKwkJd2hpY2ggaXMgdGhlIG9wcG9zaXRlIG9mIGFsbW9zdCBhbGwgb3RoZXIgVGlueVhtbCBjYWxscy4KKwkqLworCWludCBRdWVyeUludFZhbHVlKCBpbnQqIF92YWx1ZSApIGNvbnN0OworCS8vLyBRdWVyeURvdWJsZVZhbHVlIGV4YW1pbmVzIHRoZSB2YWx1ZSBzdHJpbmcuIFNlZSBRdWVyeUludFZhbHVlKCkuCisJaW50IFF1ZXJ5RG91YmxlVmFsdWUoIGRvdWJsZSogX3ZhbHVlICkgY29uc3Q7CisKKwl2b2lkIFNldE5hbWUoIGNvbnN0IGNoYXIqIF9uYW1lICkJeyBuYW1lID0gX25hbWU7IH0JCQkJLy8vPCBTZXQgdGhlIG5hbWUgb2YgdGhpcyBhdHRyaWJ1dGUuCisJdm9pZCBTZXRWYWx1ZSggY29uc3QgY2hhciogX3ZhbHVlICkJeyB2YWx1ZSA9IF92YWx1ZTsgfQkJCQkvLy88IFNldCB0aGUgdmFsdWUuCisKKwl2b2lkIFNldEludFZhbHVlKCBpbnQgX3ZhbHVlICk7CQkJCQkJCQkJCS8vLzwgU2V0IHRoZSB2YWx1ZSBmcm9tIGFuIGludGVnZXIuCisJdm9pZCBTZXREb3VibGVWYWx1ZSggZG91YmxlIF92YWx1ZSApOwkJCQkJCQkJLy8vPCBTZXQgdGhlIHZhbHVlIGZyb20gYSBkb3VibGUuCisKKyAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAorCS8vLyBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwl2b2lkIFNldE5hbWUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfbmFtZSApCQorCXsJCisJCVN0cmluZ1RvQnVmZmVyIGJ1ZiggX25hbWUgKTsKKwkJU2V0TmFtZSAoIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogImVycm9yIiApOwkKKwl9CisJLy8vIFNUTCBzdGQ6OnN0cmluZyBmb3JtLgkKKwl2b2lkIFNldFZhbHVlKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkJCisJewkKKwkJU3RyaW5nVG9CdWZmZXIgYnVmKCBfdmFsdWUgKTsKKwkJU2V0VmFsdWUoIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogImVycm9yIiApOwkKKwl9CisJI2VuZGlmCisKKwkvLy8gR2V0IHRoZSBuZXh0IHNpYmxpbmcgYXR0cmlidXRlIGluIHRoZSBET00uIFJldHVybnMgbnVsbCBhdCBlbmQuCisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIE5leHQoKSBjb25zdDsKKwlUaVhtbEF0dHJpYnV0ZSogTmV4dCgpOworCS8vLyBHZXQgdGhlIHByZXZpb3VzIHNpYmxpbmcgYXR0cmlidXRlIGluIHRoZSBET00uIFJldHVybnMgbnVsbCBhdCBiZWdpbm5pbmcuCisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIFByZXZpb3VzKCkgY29uc3Q7CisJVGlYbWxBdHRyaWJ1dGUqIFByZXZpb3VzKCk7CisKKwlib29sIG9wZXJhdG9yPT0oIGNvbnN0IFRpWG1sQXR0cmlidXRlJiByaHMgKSBjb25zdCB7IHJldHVybiByaHMubmFtZSA9PSBuYW1lOyB9CisJYm9vbCBvcGVyYXRvcjwoIGNvbnN0IFRpWG1sQXR0cmlidXRlJiByaHMgKQkgY29uc3QgeyByZXR1cm4gbmFtZSA8IHJocy5uYW1lOyB9CisJYm9vbCBvcGVyYXRvcj4oIGNvbnN0IFRpWG1sQXR0cmlidXRlJiByaHMgKSAgY29uc3QgeyByZXR1cm4gbmFtZSA+IHJocy5uYW1lOyB9CisKKwkvKglBdHRyaWJ1dGUgcGFyc2luZyBzdGFydHM6IGZpcnN0IGxldHRlciBvZiB0aGUgbmFtZQorCQkJCQkJIHJldHVybnM6IHRoZSBuZXh0IGNoYXIgYWZ0ZXIgdGhlIHZhbHVlIGVuZCBxdW90ZQorCSovCisJdmlydHVhbCBjb25zdCBjaGFyKiBQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCisJLy8gUHJpbnRzIHRoaXMgQXR0cmlidXRlIHRvIGEgRklMRSBzdHJlYW0uCisJdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7CisKKwl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogb3V0ICkgY29uc3Q7CisJLy8gW2ludGVybmFsIHVzZV0KKwkvLyBTZXQgdGhlIGRvY3VtZW50IHBvaW50ZXIgc28gdGhlIGF0dHJpYnV0ZSBjYW4gcmVwb3J0IGVycm9ycy4KKwl2b2lkIFNldERvY3VtZW50KCBUaVhtbERvY3VtZW50KiBkb2MgKQl7IGRvY3VtZW50ID0gZG9jOyB9CisKK3ByaXZhdGU6CisJVGlYbWxBdHRyaWJ1dGUoIGNvbnN0IFRpWG1sQXR0cmlidXRlJiApOwkJCQkvLyBub3QgaW1wbGVtZW50ZWQuCisJdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sQXR0cmlidXRlJiBiYXNlICk7CS8vIG5vdCBhbGxvd2VkLgorCisJVGlYbWxEb2N1bWVudCoJZG9jdW1lbnQ7CS8vIEEgcG9pbnRlciBiYWNrIHRvIGEgZG9jdW1lbnQsIGZvciBlcnJvciByZXBvcnRpbmcuCisJVElYTUxfU1RSSU5HIG5hbWU7CisJVElYTUxfU1RSSU5HIHZhbHVlOworCVRpWG1sQXR0cmlidXRlKglwcmV2OworCVRpWG1sQXR0cmlidXRlKgluZXh0OworfTsKKworCisvKglBIGNsYXNzIHVzZWQgdG8gbWFuYWdlIGEgZ3JvdXAgb2YgYXR0cmlidXRlcy4KKwlJdCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgYm90aCBieSB0aGUgRUxFTUVOVCBhbmQgdGhlIERFQ0xBUkFUSU9OLgorCQorCVRoZSBzZXQgY2FuIGJlIGNoYW5nZWQgdHJhbnNwYXJlbnQgdG8gdGhlIEVsZW1lbnQgYW5kIERlY2xhcmF0aW9uCisJY2xhc3NlcyB0aGF0IHVzZSBpdCwgYnV0IE5PVCB0cmFuc3BhcmVudCB0byB0aGUgQXR0cmlidXRlCisJd2hpY2ggaGFzIHRvIGltcGxlbWVudCBhIG5leHQoKSBhbmQgcHJldmlvdXMoKSBtZXRob2QuIFdoaWNoIG1ha2VzCisJaXQgYSBiaXQgcHJvYmxlbWF0aWMgYW5kIHByZXZlbnRzIHRoZSB1c2Ugb2YgU1RMLgorCisJVGhpcyB2ZXJzaW9uIGlzIGltcGxlbWVudGVkIHdpdGggY2lyY3VsYXIgbGlzdHMgYmVjYXVzZToKKwkJLSBJIGxpa2UgY2lyY3VsYXIgbGlzdHMKKwkJLSBpdCBkZW1vbnN0cmF0ZXMgc29tZSBpbmRlcGVuZGVuY2UgZnJvbSB0aGUgKHR5cGljYWwpIGRvdWJseSBsaW5rZWQgbGlzdC4KKyovCitjbGFzcyBUaVhtbEF0dHJpYnV0ZVNldAoreworcHVibGljOgorCVRpWG1sQXR0cmlidXRlU2V0KCk7CisJflRpWG1sQXR0cmlidXRlU2V0KCk7CisKKwl2b2lkIEFkZCggVGlYbWxBdHRyaWJ1dGUqIGF0dHJpYnV0ZSApOworCXZvaWQgUmVtb3ZlKCBUaVhtbEF0dHJpYnV0ZSogYXR0cmlidXRlICk7CisKKwljb25zdCBUaVhtbEF0dHJpYnV0ZSogRmlyc3QoKQljb25zdAl7IHJldHVybiAoIHNlbnRpbmVsLm5leHQgPT0gJnNlbnRpbmVsICkgPyAwIDogc2VudGluZWwubmV4dDsgfQorCVRpWG1sQXR0cmlidXRlKiBGaXJzdCgpCQkJCQl7IHJldHVybiAoIHNlbnRpbmVsLm5leHQgPT0gJnNlbnRpbmVsICkgPyAwIDogc2VudGluZWwubmV4dDsgfQorCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBMYXN0KCkgY29uc3QJCXsgcmV0dXJuICggc2VudGluZWwucHJldiA9PSAmc2VudGluZWwgKSA/IDAgOiBzZW50aW5lbC5wcmV2OyB9CisJVGlYbWxBdHRyaWJ1dGUqIExhc3QoKQkJCQkJeyByZXR1cm4gKCBzZW50aW5lbC5wcmV2ID09ICZzZW50aW5lbCApID8gMCA6IHNlbnRpbmVsLnByZXY7IH0KKworCWNvbnN0IFRpWG1sQXR0cmlidXRlKglGaW5kKCBjb25zdCBjaGFyICogbmFtZSApIGNvbnN0OworCVRpWG1sQXR0cmlidXRlKglGaW5kKCBjb25zdCBjaGFyICogbmFtZSApOworCitwcml2YXRlOgorCS8vKk1FOglCZWNhdXNlIG9mIGhpZGRlbi9kaXNhYmxlZCBjb3B5LWNvbnN0cnVrdG9yIGluIFRpWG1sQXR0cmlidXRlIChzZW50aW5lbC1lbGVtZW50KSwKKwkvLypNRToJdGhpcyBjbGFzcyBtdXN0IGJlIGFsc28gdXNlIGEgaGlkZGVuL2Rpc2FibGVkIGNvcHktY29uc3RydWN0b3IgISEhCisJVGlYbWxBdHRyaWJ1dGVTZXQoIGNvbnN0IFRpWG1sQXR0cmlidXRlU2V0JiApOwkvLyBub3QgYWxsb3dlZAorCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbEF0dHJpYnV0ZVNldCYgKTsJLy8gbm90IGFsbG93ZWQgKGFzIFRpWG1sQXR0cmlidXRlKQorCisJVGlYbWxBdHRyaWJ1dGUgc2VudGluZWw7Cit9OworCisKKy8qKiBUaGUgZWxlbWVudCBpcyBhIGNvbnRhaW5lciBjbGFzcy4gSXQgaGFzIGEgdmFsdWUsIHRoZSBlbGVtZW50IG5hbWUsCisJYW5kIGNhbiBjb250YWluIG90aGVyIGVsZW1lbnRzLCB0ZXh0LCBjb21tZW50cywgYW5kIHVua25vd25zLgorCUVsZW1lbnRzIGFsc28gY29udGFpbiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGF0dHJpYnV0ZXMuCisqLworY2xhc3MgVGlYbWxFbGVtZW50IDogcHVibGljIFRpWG1sTm9kZQoreworcHVibGljOgorCS8vLyBDb25zdHJ1Y3QgYW4gZWxlbWVudC4KKwlUaVhtbEVsZW1lbnQgKGNvbnN0IGNoYXIgKiBpbl92YWx1ZSk7CisKKwkjaWZkZWYgVElYTUxfVVNFX1NUTAorCS8vLyBzdGQ6OnN0cmluZyBjb25zdHJ1Y3Rvci4KKwlUaVhtbEVsZW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKTsKKwkjZW5kaWYKKworCVRpWG1sRWxlbWVudCggY29uc3QgVGlYbWxFbGVtZW50JiApOworCisJdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sRWxlbWVudCYgYmFzZSApOworCisJdmlydHVhbCB+VGlYbWxFbGVtZW50KCk7CisKKwkvKiogR2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUsIEF0dHJpYnV0ZSgpIHJldHVybnMgdGhlIHZhbHVlCisJCWZvciB0aGUgYXR0cmlidXRlIG9mIHRoYXQgbmFtZSwgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4KKwkqLworCWNvbnN0IGNoYXIqIEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSApIGNvbnN0OworCisJLyoqIEdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCBBdHRyaWJ1dGUoKSByZXR1cm5zIHRoZSB2YWx1ZQorCQlmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuCisJCUlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzIGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGludGVnZXIsCisJCXRoZSBpbnRlZ2VyIHZhbHVlIHdpbGwgYmUgcHV0IGluIHRoZSByZXR1cm4gJ2knLCBpZiAnaScKKwkJaXMgbm9uLW51bGwuCisJKi8KKwljb25zdCBjaGFyKiBBdHRyaWJ1dGUoIGNvbnN0IGNoYXIqIG5hbWUsIGludCogaSApIGNvbnN0OworCisJLyoqIEdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCBBdHRyaWJ1dGUoKSByZXR1cm5zIHRoZSB2YWx1ZQorCQlmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuCisJCUlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzIGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGRvdWJsZSwKKwkJdGhlIGRvdWJsZSB2YWx1ZSB3aWxsIGJlIHB1dCBpbiB0aGUgcmV0dXJuICdkJywgaWYgJ2QnCisJCWlzIG5vbi1udWxsLgorCSovCisJY29uc3QgY2hhciogQXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUqIGQgKSBjb25zdDsKKworCS8qKiBRdWVyeUludEF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gaXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlCisJCUF0dHJpYnV0ZSgpIG1ldGhvZCB3aXRoIHJpY2hlciBlcnJvciBjaGVja2luZy4KKwkJSWYgdGhlIGF0dHJpYnV0ZSBpcyBhbiBpbnRlZ2VyLCBpdCBpcyBzdG9yZWQgaW4gJ3ZhbHVlJyBhbmQgCisJCXRoZSBjYWxsIHJldHVybnMgVElYTUxfU1VDQ0VTUy4gSWYgaXQgaXMgbm90CisJCWFuIGludGVnZXIsIGl0IHJldHVybnMgVElYTUxfV1JPTkdfVFlQRS4gSWYgdGhlIGF0dHJpYnV0ZQorCQlkb2VzIG5vdCBleGlzdCwgdGhlbiBUSVhNTF9OT19BVFRSSUJVVEUgaXMgcmV0dXJuZWQuCisJKi8JCisJaW50IFF1ZXJ5SW50QXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBpbnQqIF92YWx1ZSApIGNvbnN0OworCS8vLyBRdWVyeURvdWJsZUF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gc2VlIFF1ZXJ5SW50QXR0cmlidXRlKCkuCisJaW50IFF1ZXJ5RG91YmxlQXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUqIF92YWx1ZSApIGNvbnN0OworCS8vLyBRdWVyeUZsb2F0QXR0cmlidXRlIGV4YW1pbmVzIHRoZSBhdHRyaWJ1dGUgLSBzZWUgUXVlcnlJbnRBdHRyaWJ1dGUoKS4KKwlpbnQgUXVlcnlGbG9hdEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgZmxvYXQqIF92YWx1ZSApIGNvbnN0IHsKKwkJZG91YmxlIGQ7CisJCWludCByZXN1bHQgPSBRdWVyeURvdWJsZUF0dHJpYnV0ZSggbmFtZSwgJmQgKTsKKwkJaWYgKCByZXN1bHQgPT0gVElYTUxfU1VDQ0VTUyApIHsKKwkJCSpfdmFsdWUgPSAoZmxvYXQpZDsKKwkJfQorCQlyZXR1cm4gcmVzdWx0OworCX0KKworCS8qKiBTZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuIFRoZSBhdHRyaWJ1dGUKKwkJd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBjaGFuZ2VkIGlmIGl0IGRvZXMuCisJKi8KKwl2b2lkIFNldEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciAqIF92YWx1ZSApOworCisgICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwljb25zdCBjaGFyKiBBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lICkgY29uc3QJCQkJeyByZXR1cm4gQXR0cmlidXRlKCBuYW1lLmNfc3RyKCkgKTsgfQorCWNvbnN0IGNoYXIqIEF0dHJpYnV0ZSggY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGludCogaSApIGNvbnN0CQl7IHJldHVybiBBdHRyaWJ1dGUoIG5hbWUuY19zdHIoKSwgaSApOyB9CisJY29uc3QgY2hhciogQXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgZG91YmxlKiBkICkgY29uc3QJeyByZXR1cm4gQXR0cmlidXRlKCBuYW1lLmNfc3RyKCksIGQgKTsgfQorCWludCBRdWVyeUludEF0dHJpYnV0ZSggY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGludCogX3ZhbHVlICkgY29uc3QJeyByZXR1cm4gUXVlcnlJbnRBdHRyaWJ1dGUoIG5hbWUuY19zdHIoKSwgX3ZhbHVlICk7IH0KKwlpbnQgUXVlcnlEb3VibGVBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBkb3VibGUqIF92YWx1ZSApIGNvbnN0IHsgcmV0dXJuIFF1ZXJ5RG91YmxlQXR0cmlidXRlKCBuYW1lLmNfc3RyKCksIF92YWx1ZSApOyB9CisKKwkvLy8gU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJdm9pZCBTZXRBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkJCisJewkKKwkJU3RyaW5nVG9CdWZmZXIgbiggbmFtZSApOworCQlTdHJpbmdUb0J1ZmZlciB2KCBfdmFsdWUgKTsKKwkJaWYgKCBuLmJ1ZmZlciAmJiB2LmJ1ZmZlciApCisJCQlTZXRBdHRyaWJ1dGUgKG4uYnVmZmVyLCB2LmJ1ZmZlciApOwkKKwl9CQorCS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJdm9pZCBTZXRBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBpbnQgX3ZhbHVlICkJCisJewkKKwkJU3RyaW5nVG9CdWZmZXIgbiggbmFtZSApOworCQlpZiAoIG4uYnVmZmVyICkKKwkJCVNldEF0dHJpYnV0ZSAobi5idWZmZXIsIF92YWx1ZSk7CQorCX0JCisJI2VuZGlmCisKKwkvKiogU2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiBUaGUgYXR0cmlidXRlCisJCXdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgY2hhbmdlZCBpZiBpdCBkb2VzLgorCSovCisJdm9pZCBTZXRBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBpbnQgdmFsdWUgKTsKKworCS8qKiBTZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuIFRoZSBhdHRyaWJ1dGUKKwkJd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBjaGFuZ2VkIGlmIGl0IGRvZXMuCisJKi8KKwl2b2lkIFNldERvdWJsZUF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUsIGRvdWJsZSB2YWx1ZSApOworCisJLyoqIERlbGV0ZXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuCisJKi8KKwl2b2lkIFJlbW92ZUF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUgKTsKKyAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAorCXZvaWQgUmVtb3ZlQXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSApCXsJUmVtb3ZlQXR0cmlidXRlIChuYW1lLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCSNlbmRpZgorCisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIEZpcnN0QXR0cmlidXRlKCkgY29uc3QJeyByZXR1cm4gYXR0cmlidXRlU2V0LkZpcnN0KCk7IH0JCS8vLzwgQWNjZXNzIHRoZSBmaXJzdCBhdHRyaWJ1dGUgaW4gdGhpcyBlbGVtZW50LgorCVRpWG1sQXR0cmlidXRlKiBGaXJzdEF0dHJpYnV0ZSgpIAkJCQl7IHJldHVybiBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsgfQorCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBMYXN0QXR0cmlidXRlKCkJY29uc3QgCXsgcmV0dXJuIGF0dHJpYnV0ZVNldC5MYXN0KCk7IH0JCS8vLzwgQWNjZXNzIHRoZSBsYXN0IGF0dHJpYnV0ZSBpbiB0aGlzIGVsZW1lbnQuCisJVGlYbWxBdHRyaWJ1dGUqIExhc3RBdHRyaWJ1dGUoKQkJCQkJeyByZXR1cm4gYXR0cmlidXRlU2V0Lkxhc3QoKTsgfQorCisJLyoqIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBlYXN5IGFjY2VzcyB0byB0aGUgdGV4dCBpbnNpZGUgYW4gZWxlbWVudC4gQWx0aG91Z2ggZWFzeQorCQlhbmQgY29uY2lzZSwgR2V0VGV4dCgpIGlzIGxpbWl0ZWQgY29tcGFyZWQgdG8gZ2V0dGluZyB0aGUgVGlYbWxUZXh0IGNoaWxkCisJCWFuZCBhY2Nlc3NpbmcgaXQgZGlyZWN0bHkuCisJCisJCUlmIHRoZSBmaXJzdCBjaGlsZCBvZiAndGhpcycgaXMgYSBUaVhtbFRleHQsIHRoZSBHZXRUZXh0KCkKKwkJcmV0dXJzIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIG9mIHRoZSBUZXh0IG5vZGUsIGVsc2UgbnVsbCBpcyByZXR1cm5lZC4KKworCQlUaGlzIGlzIGEgY29udmVuaWVudCBtZXRob2QgZm9yIGdldHRpbmcgdGhlIHRleHQgb2Ygc2ltcGxlIGNvbnRhaW5lZCB0ZXh0OgorCQlAdmVyYmF0aW0KKwkJPGZvbz5UaGlzIGlzIHRleHQ8L2Zvbz4KKwkJY29uc3QgY2hhciogc3RyID0gZm9vRWxlbWVudC0+R2V0VGV4dCgpOworCQlAZW5kdmVyYmF0aW0KKworCQknc3RyJyB3aWxsIGJlIGEgcG9pbnRlciB0byAiVGhpcyBpcyB0ZXh0Ii4gCisJCQorCQlOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4gYmUgbWlzbGVhZGluZy4gSWYgdGhlIGVsZW1lbnQgZm9vIHdhcyBjcmVhdGVkIGZyb20KKwkJdGhpcyBYTUw6CisJCUB2ZXJiYXRpbQorCQk8Zm9vPjxiPlRoaXMgaXMgdGV4dDwvYj48L2Zvbz4gCisJCUBlbmR2ZXJiYXRpbQorCisJCXRoZW4gdGhlIHZhbHVlIG9mIHN0ciB3b3VsZCBiZSBudWxsLiBUaGUgZmlyc3QgY2hpbGQgbm9kZSBpc24ndCBhIHRleHQgbm9kZSwgaXQgaXMKKwkJYW5vdGhlciBlbGVtZW50LiBGcm9tIHRoaXMgWE1MOgorCQlAdmVyYmF0aW0KKwkJPGZvbz5UaGlzIGlzIDxiPnRleHQ8L2I+PC9mb28+IAorCQlAZW5kdmVyYmF0aW0KKwkJR2V0VGV4dCgpIHdpbGwgcmV0dXJuICJUaGlzIGlzICIuCisKKwkJV0FSTklORzogR2V0VGV4dCgpIGFjY2Vzc2VzIGEgY2hpbGQgbm9kZSAtIGRvbid0IGJlY29tZSBjb25mdXNlZCB3aXRoIHRoZSAKKwkJCQkgc2ltaWxhcmx5IG5hbWVkIFRpWG1sSGFuZGxlOjpUZXh0KCkgYW5kIFRpWG1sTm9kZTo6VG9UZXh0KCkgd2hpY2ggYXJlIAorCQkJCSBzYWZlIHR5cGUgY2FzdHMgb24gdGhlIHJlZmVyZW5jZWQgbm9kZS4KKwkqLworCWNvbnN0IGNoYXIqIEdldFRleHQoKSBjb25zdDsKKworCS8vLyBDcmVhdGVzIGEgbmV3IEVsZW1lbnQgYW5kIHJldHVybnMgaXQgLSB0aGUgcmV0dXJuZWQgZWxlbWVudCBpcyBhIGNvcHkuCisJdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7CisJLy8gUHJpbnQgdGhlIEVsZW1lbnQgdG8gYSBGSUxFIHN0cmVhbS4KKwl2aXJ0dWFsIHZvaWQgUHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdDsKKworCS8qCUF0dHJpYnR1ZSBwYXJzaW5nIHN0YXJ0czogbmV4dCBjaGFyIHBhc3QgJzwnCisJCQkJCQkgcmV0dXJuczogbmV4dCBjaGFyIHBhc3QgJz4nCisJKi8KKwl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKK3Byb3RlY3RlZDoKKworCXZvaWQgQ29weVRvKCBUaVhtbEVsZW1lbnQqIHRhcmdldCApIGNvbnN0OworCXZvaWQgQ2xlYXJUaGlzKCk7CS8vIGxpa2UgY2xlYXIsIGJ1dCBpbml0aWFsaXplcyAndGhpcycgb2JqZWN0IGFzIHdlbGwKKworCS8vIFVzZWQgdG8gYmUgcHVibGljIFtpbnRlcm5hbCB1c2VdCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkgICAgdmlydHVhbCB2b2lkIFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworCSNlbmRpZgorCXZpcnR1YWwgdm9pZCBTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSBjb25zdDsKKworCS8qCVtpbnRlcm5hbCB1c2VdCisJCVJlYWRzIHRoZSAidmFsdWUiIG9mIHRoZSBlbGVtZW50IC0tIGFub3RoZXIgZWxlbWVudCwgb3IgdGV4dC4KKwkJVGhpcyBzaG91bGQgdGVybWluYXRlIHdpdGggdGhlIGN1cnJlbnQgZW5kIHRhZy4KKwkqLworCWNvbnN0IGNoYXIqIFJlYWRWYWx1ZSggY29uc3QgY2hhciogaW4sIFRpWG1sUGFyc2luZ0RhdGEqIHByZXZEYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKK3ByaXZhdGU6CisKKwlUaVhtbEF0dHJpYnV0ZVNldCBhdHRyaWJ1dGVTZXQ7Cit9OworCisKKy8qKglBbiBYTUwgY29tbWVudC4KKyovCitjbGFzcyBUaVhtbENvbW1lbnQgOiBwdWJsaWMgVGlYbWxOb2RlCit7CitwdWJsaWM6CisJLy8vIENvbnN0cnVjdHMgYW4gZW1wdHkgY29tbWVudC4KKwlUaVhtbENvbW1lbnQoKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpDT01NRU5UICkge30KKwlUaVhtbENvbW1lbnQoIGNvbnN0IFRpWG1sQ29tbWVudCYgKTsKKwl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxDb21tZW50JiBiYXNlICk7CisKKwl2aXJ0dWFsIH5UaVhtbENvbW1lbnQoKQl7fQorCisJLy8vIFJldHVybnMgYSBjb3B5IG9mIHRoaXMgQ29tbWVudC4KKwl2aXJ0dWFsIFRpWG1sTm9kZSogQ2xvbmUoKSBjb25zdDsKKwkvLy8gV3JpdGUgdGhpcyBDb21tZW50IHRvIGEgRklMRSBzdHJlYW0uCisJdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7CisKKwkvKglBdHRyaWJ0dWUgcGFyc2luZyBzdGFydHM6IGF0IHRoZSAhIG9mIHRoZSAhLS0KKwkJCQkJCSByZXR1cm5zOiBuZXh0IGNoYXIgcGFzdCAnPicKKwkqLworCXZpcnR1YWwgY29uc3QgY2hhciogUGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKworcHJvdGVjdGVkOgorCXZvaWQgQ29weVRvKCBUaVhtbENvbW1lbnQqIHRhcmdldCApIGNvbnN0OworCisJLy8gdXNlZCB0byBiZSBwdWJsaWMKKwkjaWZkZWYgVElYTUxfVVNFX1NUTAorCSAgICB2aXJ0dWFsIHZvaWQgU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7CisJI2VuZGlmCisJdmlydHVhbCB2b2lkIFN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIG91dCApIGNvbnN0OworCitwcml2YXRlOgorCit9OworCisKKy8qKiBYTUwgdGV4dC4gQSB0ZXh0IG5vZGUgY2FuIGhhdmUgMiB3YXlzIHRvIG91dHB1dCB0aGUgbmV4dC4gIm5vcm1hbCIgb3V0cHV0IAorCWFuZCBDREFUQS4gSXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBtb2RlIGl0IHdhcyBwYXJzZWQgZnJvbSB0aGUgWE1MIGZpbGUgYW5kCisJeW91IGdlbmVyYWxseSB3YW50IHRvIGxlYXZlIGl0IGFsb25lLCBidXQgeW91IGNhbiBjaGFuZ2UgdGhlIG91dHB1dCBtb2RlIHdpdGggCisJU2V0Q0RBVEEoKSBhbmQgcXVlcnkgaXQgd2l0aCBDREFUQSgpLgorKi8KK2NsYXNzIFRpWG1sVGV4dCA6IHB1YmxpYyBUaVhtbE5vZGUKK3sKKwlmcmllbmQgY2xhc3MgVGlYbWxFbGVtZW50OworcHVibGljOgorCS8qKiBDb25zdHJ1Y3RvciBmb3IgdGV4dCBlbGVtZW50LiBCeSBkZWZhdWx0LCBpdCBpcyB0cmVhdGVkIGFzIAorCQlub3JtYWwsIGVuY29kZWQgdGV4dC4gSWYgeW91IHdhbnQgaXQgYmUgb3V0cHV0IGFzIGEgQ0RBVEEgdGV4dAorCQllbGVtZW50LCBzZXQgdGhlIHBhcmFtZXRlciBfY2RhdGEgdG8gJ3RydWUnCisJKi8KKwlUaVhtbFRleHQgKGNvbnN0IGNoYXIgKiBpbml0VmFsdWUgKSA6IFRpWG1sTm9kZSAoVGlYbWxOb2RlOjpURVhUKQorCXsKKwkJU2V0VmFsdWUoIGluaXRWYWx1ZSApOworCQljZGF0YSA9IGZhbHNlOworCX0KKwl2aXJ0dWFsIH5UaVhtbFRleHQoKSB7fQorCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkvLy8gQ29uc3RydWN0b3IuCisJVGlYbWxUZXh0KCBjb25zdCBzdGQ6OnN0cmluZyYgaW5pdFZhbHVlICkgOiBUaVhtbE5vZGUgKFRpWG1sTm9kZTo6VEVYVCkKKwl7CisJCVNldFZhbHVlKCBpbml0VmFsdWUgKTsKKwkJY2RhdGEgPSBmYWxzZTsKKwl9CisJI2VuZGlmCisKKwlUaVhtbFRleHQoIGNvbnN0IFRpWG1sVGV4dCYgY29weSApIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OlRFWFQgKQl7IGNvcHkuQ29weVRvKCB0aGlzICk7IH0KKwl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxUZXh0JiBiYXNlICkJCQkJCQkJIAl7IGJhc2UuQ29weVRvKCB0aGlzICk7IH0KKworCS8vLyBXcml0ZSB0aGlzIHRleHQgb2JqZWN0IHRvIGEgRklMRSBzdHJlYW0uCisJdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7CisKKwkvLy8gUXVlcmllcyB3aGV0aGVyIHRoaXMgcmVwcmVzZW50cyB0ZXh0IHVzaW5nIGEgQ0RBVEEgc2VjdGlvbi4KKwlib29sIENEQVRBKCkJCQkJCXsgcmV0dXJuIGNkYXRhOyB9CisJLy8vIFR1cm5zIG9uIG9yIG9mZiBhIENEQVRBIHJlcHJlc2VudGF0aW9uIG9mIHRleHQuCisJdm9pZCBTZXRDREFUQSggYm9vbCBfY2RhdGEgKQl7IGNkYXRhID0gX2NkYXRhOyB9CisKKwl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKK3Byb3RlY3RlZCA6CisJLy8vICBbaW50ZXJuYWwgdXNlXSBDcmVhdGVzIGEgbmV3IEVsZW1lbnQgYW5kIHJldHVybnMgaXQuCisJdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7CisJdm9pZCBDb3B5VG8oIFRpWG1sVGV4dCogdGFyZ2V0ICkgY29uc3Q7CisKKwl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCApIGNvbnN0OworCWJvb2wgQmxhbmsoKSBjb25zdDsJLy8gcmV0dXJucyB0cnVlIGlmIGFsbCB3aGl0ZSBzcGFjZSBhbmQgbmV3IGxpbmVzCisJLy8gW2ludGVybmFsIHVzZV0KKwkjaWZkZWYgVElYTUxfVVNFX1NUTAorCSAgICB2aXJ0dWFsIHZvaWQgU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7CisJI2VuZGlmCisKK3ByaXZhdGU6CisJYm9vbCBjZGF0YTsJCQkvLyB0cnVlIGlmIHRoaXMgc2hvdWxkIGJlIGlucHV0IGFuZCBvdXRwdXQgYXMgYSBDREFUQSBzdHlsZSB0ZXh0IGVsZW1lbnQKK307CisKKworLyoqIEluIGNvcnJlY3QgWE1MIHRoZSBkZWNsYXJhdGlvbiBpcyB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGZpbGUuCisJQHZlcmJhdGltCisJCTw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT0ieWVzIj8+CisJQGVuZHZlcmJhdGltCisKKwlUaW55WG1sIHdpbGwgaGFwcGlseSByZWFkIG9yIHdyaXRlIGZpbGVzIHdpdGhvdXQgYSBkZWNsYXJhdGlvbiwKKwlob3dldmVyLiBUaGVyZSBhcmUgMyBwb3NzaWJsZSBhdHRyaWJ1dGVzIHRvIHRoZSBkZWNsYXJhdGlvbjoKKwl2ZXJzaW9uLCBlbmNvZGluZywgYW5kIHN0YW5kYWxvbmUuCisKKwlOb3RlOiBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIGNvZGUsIHRoZSBhdHRyaWJ1dGVzIGFyZQorCWhhbmRsZWQgYXMgc3BlY2lhbCBjYXNlcywgbm90IGdlbmVyaWMgYXR0cmlidXRlcywgc2ltcGx5CisJYmVjYXVzZSB0aGVyZSBjYW4gb25seSBiZSBhdCBtb3N0IDMgYW5kIHRoZXkgYXJlIGFsd2F5cyB0aGUgc2FtZS4KKyovCitjbGFzcyBUaVhtbERlY2xhcmF0aW9uIDogcHVibGljIFRpWG1sTm9kZQoreworcHVibGljOgorCS8vLyBDb25zdHJ1Y3QgYW4gZW1wdHkgZGVjbGFyYXRpb24uCisJVGlYbWxEZWNsYXJhdGlvbigpICAgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6REVDTEFSQVRJT04gKSB7fQorCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCS8vLyBDb25zdHJ1Y3Rvci4KKwlUaVhtbERlY2xhcmF0aW9uKAljb25zdCBzdGQ6OnN0cmluZyYgX3ZlcnNpb24sCisJCQkJCQljb25zdCBzdGQ6OnN0cmluZyYgX2VuY29kaW5nLAorCQkJCQkJY29uc3Qgc3RkOjpzdHJpbmcmIF9zdGFuZGFsb25lICk7CisjZW5kaWYKKworCS8vLyBDb25zdHJ1Y3QuCisJVGlYbWxEZWNsYXJhdGlvbigJY29uc3QgY2hhciogX3ZlcnNpb24sCisJCQkJCQljb25zdCBjaGFyKiBfZW5jb2RpbmcsCisJCQkJCQljb25zdCBjaGFyKiBfc3RhbmRhbG9uZSApOworCisJVGlYbWxEZWNsYXJhdGlvbiggY29uc3QgVGlYbWxEZWNsYXJhdGlvbiYgY29weSApOworCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbERlY2xhcmF0aW9uJiBjb3B5ICk7CisKKwl2aXJ0dWFsIH5UaVhtbERlY2xhcmF0aW9uKCkJe30KKworCS8vLyBWZXJzaW9uLiBXaWxsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgaWYgbm9uZSB3YXMgZm91bmQuCisJY29uc3QgY2hhciAqVmVyc2lvbigpIGNvbnN0CQkJeyByZXR1cm4gdmVyc2lvbi5jX3N0ciAoKTsgfQorCS8vLyBFbmNvZGluZy4gV2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIG5vbmUgd2FzIGZvdW5kLgorCWNvbnN0IGNoYXIgKkVuY29kaW5nKCkgY29uc3QJCXsgcmV0dXJuIGVuY29kaW5nLmNfc3RyICgpOyB9CisJLy8vIElzIHRoaXMgYSBzdGFuZGFsb25lIGRvY3VtZW50PworCWNvbnN0IGNoYXIgKlN0YW5kYWxvbmUoKSBjb25zdAkJeyByZXR1cm4gc3RhbmRhbG9uZS5jX3N0ciAoKTsgfQorCisJLy8vIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgRGVjbGFyYXRpb24gYW5kIHJldHVybnMgaXQuCisJdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7CisJLy8vIFByaW50IHRoaXMgZGVjbGFyYXRpb24gdG8gYSBGSUxFIHN0cmVhbS4KKwl2aXJ0dWFsIHZvaWQgUHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdDsKKworCXZpcnR1YWwgY29uc3QgY2hhciogUGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKworcHJvdGVjdGVkOgorCXZvaWQgQ29weVRvKCBUaVhtbERlY2xhcmF0aW9uKiB0YXJnZXQgKSBjb25zdDsKKwkvLyB1c2VkIHRvIGJlIHB1YmxpYworCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJICAgIHZpcnR1YWwgdm9pZCBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKwkjZW5kaWYKKwl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCkgY29uc3Q7CisKK3ByaXZhdGU6CisKKwlUSVhNTF9TVFJJTkcgdmVyc2lvbjsKKwlUSVhNTF9TVFJJTkcgZW5jb2Rpbmc7CisJVElYTUxfU1RSSU5HIHN0YW5kYWxvbmU7Cit9OworCisKKy8qKiBBbnkgdGFnIHRoYXQgdGlueVhtbCBkb2Vzbid0IHJlY29nbml6ZSBpcyBzYXZlZCBhcyBhbgorCXVua25vd24uIEl0IGlzIGEgdGFnIG9mIHRleHQsIGJ1dCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLgorCUl0IHdpbGwgYmUgd3JpdHRlbiBiYWNrIHRvIHRoZSBYTUwsIHVuY2hhbmdlZCwgd2hlbiB0aGUgZmlsZQorCWlzIHNhdmVkLgorCisJRFREIHRhZ3MgZ2V0IHRocm93biBpbnRvIFRpWG1sVW5rbm93bnMuCisqLworY2xhc3MgVGlYbWxVbmtub3duIDogcHVibGljIFRpWG1sTm9kZQoreworcHVibGljOgorCVRpWG1sVW5rbm93bigpIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OlVOS05PV04gKQl7fQorCXZpcnR1YWwgflRpWG1sVW5rbm93bigpIHt9CisKKwlUaVhtbFVua25vd24oIGNvbnN0IFRpWG1sVW5rbm93biYgY29weSApIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OlVOS05PV04gKQkJeyBjb3B5LkNvcHlUbyggdGhpcyApOyB9CisJdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sVW5rbm93biYgY29weSApCQkJCQkJCQkJCXsgY29weS5Db3B5VG8oIHRoaXMgKTsgfQorCisJLy8vIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgVW5rbm93biBhbmQgcmV0dXJucyBpdC4KKwl2aXJ0dWFsIFRpWG1sTm9kZSogQ2xvbmUoKSBjb25zdDsKKwkvLy8gUHJpbnQgdGhpcyBVbmtub3duIHRvIGEgRklMRSBzdHJlYW0uCisJdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7CisKKwl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKK3Byb3RlY3RlZDoKKwl2b2lkIENvcHlUbyggVGlYbWxVbmtub3duKiB0YXJnZXQgKSBjb25zdDsKKworCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJICAgIHZpcnR1YWwgdm9pZCBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKwkjZW5kaWYKKwl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCApIGNvbnN0OworCitwcml2YXRlOgorCit9OworCisKKy8qKiBBbHdheXMgdGhlIHRvcCBsZXZlbCBub2RlLiBBIGRvY3VtZW50IGJpbmRzIHRvZ2V0aGVyIGFsbCB0aGUKKwlYTUwgcGllY2VzLiBJdCBjYW4gYmUgc2F2ZWQsIGxvYWRlZCwgYW5kIHByaW50ZWQgdG8gdGhlIHNjcmVlbi4KKwlUaGUgJ3ZhbHVlJyBvZiBhIGRvY3VtZW50IG5vZGUgaXMgdGhlIHhtbCBmaWxlIG5hbWUuCisqLworY2xhc3MgVGlYbWxEb2N1bWVudCA6IHB1YmxpYyBUaVhtbE5vZGUKK3sKK3B1YmxpYzoKKwkvLy8gQ3JlYXRlIGFuIGVtcHR5IGRvY3VtZW50LCB0aGF0IGhhcyBubyBuYW1lLgorCVRpWG1sRG9jdW1lbnQoKTsKKwkvLy8gQ3JlYXRlIGEgZG9jdW1lbnQgd2l0aCBhIG5hbWUuIFRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudCBpcyBhbHNvIHRoZSBmaWxlbmFtZSBvZiB0aGUgeG1sLgorCVRpWG1sRG9jdW1lbnQoIGNvbnN0IGNoYXIgKiBkb2N1bWVudE5hbWUgKTsKKworCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJLy8vIENvbnN0cnVjdG9yLgorCVRpWG1sRG9jdW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBkb2N1bWVudE5hbWUgKTsKKwkjZW5kaWYKKworCVRpWG1sRG9jdW1lbnQoIGNvbnN0IFRpWG1sRG9jdW1lbnQmIGNvcHkgKTsKKwl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxEb2N1bWVudCYgY29weSApOworCisJdmlydHVhbCB+VGlYbWxEb2N1bWVudCgpIHt9CisKKwkvKiogTG9hZCBhIGZpbGUgdXNpbmcgdGhlIGN1cnJlbnQgZG9jdW1lbnQgdmFsdWUuCisJCVJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLiBXaWxsIGRlbGV0ZSBhbnkgZXhpc3RpbmcKKwkJZG9jdW1lbnQgZGF0YSBiZWZvcmUgbG9hZGluZy4KKwkqLworCWJvb2wgTG9hZEZpbGUoIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICk7CisJLy8vIFNhdmUgYSBmaWxlIHVzaW5nIHRoZSBjdXJyZW50IGRvY3VtZW50IHZhbHVlLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4KKwlib29sIFNhdmVGaWxlKCkgY29uc3Q7CisJLy8vIExvYWQgYSBmaWxlIHVzaW5nIHRoZSBnaXZlbiBmaWxlbmFtZS4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuCisJYm9vbCBMb2FkRmlsZSggY29uc3QgY2hhciAqIGZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApOworCS8vLyBTYXZlIGEgZmlsZSB1c2luZyB0aGUgZ2l2ZW4gZmlsZW5hbWUuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgorCWJvb2wgU2F2ZUZpbGUoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSApIGNvbnN0OworCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwlib29sIExvYWRGaWxlKCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICkJCQkvLy88IFNUTCBzdGQ6OnN0cmluZyB2ZXJzaW9uLgorCXsKKwkJU3RyaW5nVG9CdWZmZXIgZiggZmlsZW5hbWUgKTsKKwkJcmV0dXJuICggZi5idWZmZXIgJiYgTG9hZEZpbGUoIGYuYnVmZmVyLCBlbmNvZGluZyApKTsKKwl9CisJYm9vbCBTYXZlRmlsZSggY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lICkgY29uc3QJCS8vLzwgU1RMIHN0ZDo6c3RyaW5nIHZlcnNpb24uCisJeworCQlTdHJpbmdUb0J1ZmZlciBmKCBmaWxlbmFtZSApOworCQlyZXR1cm4gKCBmLmJ1ZmZlciAmJiBTYXZlRmlsZSggZi5idWZmZXIgKSk7CisJfQorCSNlbmRpZgorCisJLyoqIFBhcnNlIHRoZSBnaXZlbiBudWxsIHRlcm1pbmF0ZWQgYmxvY2sgb2YgeG1sIGRhdGEuIFBhc3NpbmcgaW4gYW4gZW5jb2RpbmcgdG8gdGhpcworCQltZXRob2QgKGVpdGhlciBUSVhNTF9FTkNPRElOR19MRUdBQ1kgb3IgVElYTUxfRU5DT0RJTkdfVVRGOCB3aWxsIGZvcmNlIFRpbnlYbWwKKwkJdG8gdXNlIHRoYXQgZW5jb2RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBUaW55WG1sIG1pZ2h0IG90aGVyd2lzZSB0cnkgdG8gZGV0ZWN0LgorCSovCisJdmlydHVhbCBjb25zdCBjaGFyKiBQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSA9IDAsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICk7CisKKwkvKiogR2V0IHRoZSByb290IGVsZW1lbnQgLS0gdGhlIG9ubHkgdG9wIGxldmVsIGVsZW1lbnQgLS0gb2YgdGhlIGRvY3VtZW50LgorCQlJbiB3ZWxsIGZvcm1lZCBYTUwsIHRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZS4gVGlueVhtbCBpcyB0b2xlcmFudCBvZgorCQltdWx0aXBsZSBlbGVtZW50cyBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwuCisJKi8KKwljb25zdCBUaVhtbEVsZW1lbnQqIFJvb3RFbGVtZW50KCkgY29uc3QJCXsgcmV0dXJuIEZpcnN0Q2hpbGRFbGVtZW50KCk7IH0KKwlUaVhtbEVsZW1lbnQqIFJvb3RFbGVtZW50KCkJCQkJCXsgcmV0dXJuIEZpcnN0Q2hpbGRFbGVtZW50KCk7IH0KKworCS8qKiBJZiBhbiBlcnJvciBvY2N1cnMsIEVycm9yIHdpbGwgYmUgc2V0IHRvIHRydWUuIEFsc28sCisJCS0gVGhlIEVycm9ySWQoKSB3aWxsIGNvbnRhaW4gdGhlIGludGVnZXIgaWRlbnRpZmllciBvZiB0aGUgZXJyb3IgKG5vdCBnZW5lcmFsbHkgdXNlZnVsKQorCQktIFRoZSBFcnJvckRlc2MoKSBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVycm9yLiAodmVyeSB1c2VmdWwpCisJCS0gVGhlIEVycm9yUm93KCkgYW5kIEVycm9yQ29sKCkgd2lsbCByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBlcnJvciAoaWYga25vd24pCisJKi8JCisJYm9vbCBFcnJvcigpIGNvbnN0CQkJCQkJeyByZXR1cm4gZXJyb3I7IH0KKworCS8vLyBDb250YWlucyBhIHRleHR1YWwgKGVuZ2xpc2gpIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciBpZiBvbmUgb2NjdXJzLgorCWNvbnN0IGNoYXIgKiBFcnJvckRlc2MoKSBjb25zdAl7IHJldHVybiBlcnJvckRlc2MuY19zdHIgKCk7IH0KKworCS8qKiBHZW5lcmFsbHksIHlvdSBwcm9iYWJseSB3YW50IHRoZSBlcnJvciBzdHJpbmcgKCBFcnJvckRlc2MoKSApLiBCdXQgaWYgeW91CisJCXByZWZlciB0aGUgRXJyb3JJZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIGl0LgorCSovCisJaW50IEVycm9ySWQoKQljb25zdAkJCQl7IHJldHVybiBlcnJvcklkOyB9CisKKwkvKiogUmV0dXJucyB0aGUgbG9jYXRpb24gKGlmIGtub3duKSBvZiB0aGUgZXJyb3IuIFRoZSBmaXJzdCBjb2x1bW4gaXMgY29sdW1uIDEsIAorCQlhbmQgdGhlIGZpcnN0IHJvdyBpcyByb3cgMS4gQSB2YWx1ZSBvZiAwIG1lYW5zIHRoZSByb3cgYW5kIGNvbHVtbiB3YXNuJ3QgYXBwbGljYWJsZQorCQkobWVtb3J5IGVycm9ycywgZm9yIGV4YW1wbGUsIGhhdmUgbm8gcm93L2NvbHVtbikgb3IgdGhlIHBhcnNlciBsb3N0IHRoZSBlcnJvci4gKEFuCisJCWVycm9yIGluIHRoZSBlcnJvciByZXBvcnRpbmcsIGluIHRoYXQgY2FzZS4pCisKKwkJQHNhIFNldFRhYlNpemUsIFJvdywgQ29sdW1uCisJKi8KKwlpbnQgRXJyb3JSb3coKQl7IHJldHVybiBlcnJvckxvY2F0aW9uLnJvdysxOyB9CisJaW50IEVycm9yQ29sKCkJeyByZXR1cm4gZXJyb3JMb2NhdGlvbi5jb2wrMTsgfQkvLy88IFRoZSBjb2x1bW4gd2hlcmUgdGhlIGVycm9yIG9jY3VyZWQuIFNlZSBFcnJvclJvdygpCisKKwkvKiogU2V0VGFiU2l6ZSgpIGFsbG93cyB0aGUgZXJyb3IgcmVwb3J0aW5nIGZ1bmN0aW9ucyAoRXJyb3JSb3coKSBhbmQgRXJyb3JDb2woKSkKKwkJdG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlcyBmb3Igcm93IGFuZCBjb2x1bW4uIEl0IGRvZXMgbm90IGNoYW5nZSB0aGUgb3V0cHV0CisJCW9yIGlucHV0IGluIGFueSB3YXkuCisJCQorCQlCeSBjYWxsaW5nIHRoaXMgbWV0aG9kLCB3aXRoIGEgdGFiIHNpemUKKwkJZ3JlYXRlciB0aGFuIDAsIHRoZSByb3cgYW5kIGNvbHVtbiBvZiBlYWNoIG5vZGUgYW5kIGF0dHJpYnV0ZSBpcyBzdG9yZWQKKwkJd2hlbiB0aGUgZmlsZSBpcyBsb2FkZWQuIFZlcnkgdXNlZnVsIGZvciB0cmFja2luZyB0aGUgRE9NIGJhY2sgaW4gdG8KKwkJdGhlIHNvdXJjZSBmaWxlLgorCisJCVRoZSB0YWIgc2l6ZSBpcyByZXF1aXJlZCBmb3IgY2FsY3VsYXRpbmcgdGhlIGxvY2F0aW9uIG9mIG5vZGVzLiBJZiBub3QKKwkJc2V0LCB0aGUgZGVmYXVsdCBvZiA0IGlzIHVzZWQuIFRoZSB0YWJzaXplIGlzIHNldCBwZXIgZG9jdW1lbnQuIFNldHRpbmcKKwkJdGhlIHRhYnNpemUgdG8gMCBkaXNhYmxlcyByb3cvY29sdW1uIHRyYWNraW5nLgorCisJCU5vdGUgdGhhdCByb3cgYW5kIGNvbHVtbiB0cmFja2luZyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gdXNpbmcgb3BlcmF0b3I+Pi4KKworCQlUaGUgdGFiIHNpemUgbmVlZHMgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIHBhcnNlIG9yIGxvYWQuIENvcnJlY3QgdXNhZ2U6CisJCUB2ZXJiYXRpbQorCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlNldFRhYlNpemUoIDggKTsKKwkJZG9jLkxvYWQoICJteWZpbGUueG1sIiApOworCQlAZW5kdmVyYmF0aW0KKworCQlAc2EgUm93LCBDb2x1bW4KKwkqLworCXZvaWQgU2V0VGFiU2l6ZSggaW50IF90YWJzaXplICkJCXsgdGFic2l6ZSA9IF90YWJzaXplOyB9CisKKwlpbnQgVGFiU2l6ZSgpIGNvbnN0CXsgcmV0dXJuIHRhYnNpemU7IH0KKworCS8qKiBJZiB5b3UgaGF2ZSBoYW5kbGVkIHRoZSBlcnJvciwgaXQgY2FuIGJlIHJlc2V0IHdpdGggdGhpcyBjYWxsLiBUaGUgZXJyb3IKKwkJc3RhdGUgaXMgYXV0b21hdGljYWxseSBjbGVhcmVkIGlmIHlvdSBQYXJzZSBhIG5ldyBYTUwgYmxvY2suCisJKi8KKwl2b2lkIENsZWFyRXJyb3IoKQkJCQkJCXsJZXJyb3IgPSBmYWxzZTsgCisJCQkJCQkJCQkJCQllcnJvcklkID0gMDsgCisJCQkJCQkJCQkJCQllcnJvckRlc2MgPSAiIjsgCisJCQkJCQkJCQkJCQllcnJvckxvY2F0aW9uLnJvdyA9IGVycm9yTG9jYXRpb24uY29sID0gMDsgCisJCQkJCQkJCQkJCQkvL2Vycm9yTG9jYXRpb24ubGFzdCA9IDA7IAorCQkJCQkJCQkJCQl9CisKKwkvKiogRHVtcCB0aGUgZG9jdW1lbnQgdG8gc3RhbmRhcmQgb3V0LiAqLworCXZvaWQgUHJpbnQoKSBjb25zdAkJCQkJCXsgUHJpbnQoIHN0ZG91dCwgMCApOyB9CisKKwkvLy8gUHJpbnQgdGhpcyBEb2N1bWVudCB0byBhIEZJTEUgc3RyZWFtLgorCXZpcnR1YWwgdm9pZCBQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCA9IDAgKSBjb25zdDsKKwkvLyBbaW50ZXJuYWwgdXNlXQorCXZvaWQgU2V0RXJyb3IoIGludCBlcnIsIGNvbnN0IGNoYXIqIGVycm9yTG9jYXRpb24sIFRpWG1sUGFyc2luZ0RhdGEqIHByZXZEYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKK3Byb3RlY3RlZCA6CisJdmlydHVhbCB2b2lkIFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQpIGNvbnN0OworCS8vIFtpbnRlcm5hbCB1c2VdCisJdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7CisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkgICAgdmlydHVhbCB2b2lkIFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworCSNlbmRpZgorCitwcml2YXRlOgorCXZvaWQgQ29weVRvKCBUaVhtbERvY3VtZW50KiB0YXJnZXQgKSBjb25zdDsKKworCWJvb2wgZXJyb3I7CisJaW50ICBlcnJvcklkOworCVRJWE1MX1NUUklORyBlcnJvckRlc2M7CisJaW50IHRhYnNpemU7CisJVGlYbWxDdXJzb3IgZXJyb3JMb2NhdGlvbjsKKwlib29sIHVzZU1pY3Jvc29mdEJPTTsJCS8vIHRoZSBVVEYtOCBCT00gd2VyZSBmb3VuZCB3aGVuIHJlYWQuIE5vdGUgdGhpcywgYW5kIHRyeSB0byB3cml0ZS4KK307CisKKworLyoqCisJQSBUaVhtbEhhbmRsZSBpcyBhIGNsYXNzIHRoYXQgd3JhcHMgYSBub2RlIHBvaW50ZXIgd2l0aCBudWxsIGNoZWNrczsgdGhpcyBpcworCWFuIGluY3JlZGlibHkgdXNlZnVsIHRoaW5nLiBOb3RlIHRoYXQgVGlYbWxIYW5kbGUgaXMgbm90IHBhcnQgb2YgdGhlIFRpbnlYbWwKKwlET00gc3RydWN0dXJlLiBJdCBpcyBhIHNlcGFyYXRlIHV0aWxpdHkgY2xhc3MuCisKKwlUYWtlIGFuIGV4YW1wbGU6CisJQHZlcmJhdGltCisJPERvY3VtZW50PgorCQk8RWxlbWVudCBhdHRyaWJ1dGVBID0gInZhbHVlQSI+CisJCQk8Q2hpbGQgYXR0cmlidXRlQiA9ICJ2YWx1ZTEiIC8+CisJCQk8Q2hpbGQgYXR0cmlidXRlQiA9ICJ2YWx1ZTIiIC8+CisJCTwvRWxlbWVudD4KKwk8RG9jdW1lbnQ+CisJQGVuZHZlcmJhdGltCisKKwlBc3N1bWluZyB5b3Ugd2FudCB0aGUgdmFsdWUgb2YgImF0dHJpYnV0ZUIiIGluIHRoZSAybmQgIkNoaWxkIiBlbGVtZW50LCBpdCdzIHZlcnkgCisJZWFzeSB0byB3cml0ZSBhICpsb3QqIG9mIGNvZGUgdGhhdCBsb29rcyBsaWtlOgorCisJQHZlcmJhdGltCisJVGlYbWxFbGVtZW50KiByb290ID0gZG9jdW1lbnQuRmlyc3RDaGlsZEVsZW1lbnQoICJEb2N1bWVudCIgKTsKKwlpZiAoIHJvb3QgKQorCXsKKwkJVGlYbWxFbGVtZW50KiBlbGVtZW50ID0gcm9vdC0+Rmlyc3RDaGlsZEVsZW1lbnQoICJFbGVtZW50IiApOworCQlpZiAoIGVsZW1lbnQgKQorCQl7CisJCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gZWxlbWVudC0+Rmlyc3RDaGlsZEVsZW1lbnQoICJDaGlsZCIgKTsKKwkJCWlmICggY2hpbGQgKQorCQkJeworCQkJCVRpWG1sRWxlbWVudCogY2hpbGQyID0gY2hpbGQtPk5leHRTaWJsaW5nRWxlbWVudCggIkNoaWxkIiApOworCQkJCWlmICggY2hpbGQyICkKKwkJCQl7CisJCQkJCS8vIEZpbmFsbHkgZG8gc29tZXRoaW5nIHVzZWZ1bC4KKwlAZW5kdmVyYmF0aW0KKworCUFuZCB0aGF0IGRvZXNuJ3QgZXZlbiBjb3ZlciAiZWxzZSIgY2FzZXMuIFRpWG1sSGFuZGxlIGFkZHJlc3NlcyB0aGUgdmVyYm9zaXR5CisJb2Ygc3VjaCBjb2RlLiBBIFRpWG1sSGFuZGxlIGNoZWNrcyBmb3IgbnVsbAlwb2ludGVycyBzbyBpdCBpcyBwZXJmZWN0bHkgc2FmZSAKKwlhbmQgY29ycmVjdCB0byB1c2U6CisKKwlAdmVyYmF0aW0KKwlUaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZkb2N1bWVudCApOworCVRpWG1sRWxlbWVudCogY2hpbGQyID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5DaGlsZCggIkNoaWxkIiwgMSApLkVsZW1lbnQoKTsKKwlpZiAoIGNoaWxkMiApCisJeworCQkvLyBkbyBzb21ldGhpbmcgdXNlZnVsCisJQGVuZHZlcmJhdGltCisKKwlXaGljaCBpcyBNVUNIIG1vcmUgY29uY2lzZSBhbmQgdXNlZnVsLgorCisJSXQgaXMgYWxzbyBzYWZlIHRvIGNvcHkgaGFuZGxlcyAtIGludGVybmFsbHkgdGhleSBhcmUgbm90aGluZyBtb3JlIHRoYW4gbm9kZSBwb2ludGVycy4KKwlAdmVyYmF0aW0KKwlUaVhtbEhhbmRsZSBoYW5kbGVDb3B5ID0gaGFuZGxlOworCUBlbmR2ZXJiYXRpbQorCisJV2hhdCB0aGV5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IgaXMgaXRlcmF0aW9uOgorCisJQHZlcmJhdGltCisJaW50IGk9MDsgCisJd2hpbGUgKCB0cnVlICkKKwl7CisJCVRpWG1sRWxlbWVudCogY2hpbGQgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZCggIkRvY3VtZW50IiApLkZpcnN0Q2hpbGQoICJFbGVtZW50IiApLkNoaWxkKCAiQ2hpbGQiLCBpICkuRWxlbWVudCgpOworCQlpZiAoICFjaGlsZCApCisJCQlicmVhazsKKwkJLy8gZG8gc29tZXRoaW5nCisJCSsraTsKKwl9CisJQGVuZHZlcmJhdGltCisKKwlJdCBzZWVtcyByZWFzb25hYmxlLCBidXQgaXQgaXMgaW4gZmFjdCB0d28gZW1iZWRkZWQgd2hpbGUgbG9vcHMuIFRoZSBDaGlsZCBtZXRob2QgaXMgCisJYSBsaW5lYXIgd2FsayB0byBmaW5kIHRoZSBlbGVtZW50LCBzbyB0aGlzIGNvZGUgd291bGQgaXRlcmF0ZSBtdWNoIG1vcmUgdGhhbiBpdCBuZWVkcyAKKwl0by4gSW5zdGVhZCwgcHJlZmVyOgorCisJQHZlcmJhdGltCisJVGlYbWxFbGVtZW50KiBjaGlsZCA9IGRvY0hhbmRsZS5GaXJzdENoaWxkKCAiRG9jdW1lbnQiICkuRmlyc3RDaGlsZCggIkVsZW1lbnQiICkuRmlyc3RDaGlsZCggIkNoaWxkIiApLkVsZW1lbnQoKTsKKworCWZvciggY2hpbGQ7IGNoaWxkOyBjaGlsZD1jaGlsZC0+TmV4dFNpYmxpbmdFbGVtZW50KCkgKQorCXsKKwkJLy8gZG8gc29tZXRoaW5nCisJfQorCUBlbmR2ZXJiYXRpbQorKi8KK2NsYXNzIFRpWG1sSGFuZGxlCit7CitwdWJsaWM6CisJLy8vIENyZWF0ZSBhIGhhbmRsZSBmcm9tIGFueSBub2RlIChhdCBhbnkgZGVwdGggb2YgdGhlIHRyZWUuKSBUaGlzIGNhbiBiZSBhIG51bGwgcG9pbnRlci4KKwlUaVhtbEhhbmRsZSggVGlYbWxOb2RlKiBfbm9kZSApCQkJCQl7IHRoaXMtPm5vZGUgPSBfbm9kZTsgfQorCS8vLyBDb3B5IGNvbnN0cnVjdG9yCisJVGlYbWxIYW5kbGUoIGNvbnN0IFRpWG1sSGFuZGxlJiByZWYgKQkJCXsgdGhpcy0+bm9kZSA9IHJlZi5ub2RlOyB9CisJVGlYbWxIYW5kbGUgb3BlcmF0b3I9KCBjb25zdCBUaVhtbEhhbmRsZSYgcmVmICkgeyB0aGlzLT5ub2RlID0gcmVmLm5vZGU7IHJldHVybiAqdGhpczsgfQorCisJLy8vIFJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgbm9kZS4KKwlUaVhtbEhhbmRsZSBGaXJzdENoaWxkKCkgY29uc3Q7CisJLy8vIFJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgbm9kZSB3aXRoIHRoZSBnaXZlbiBuYW1lLgorCVRpWG1sSGFuZGxlIEZpcnN0Q2hpbGQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0OworCS8vLyBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQuCisJVGlYbWxIYW5kbGUgRmlyc3RDaGlsZEVsZW1lbnQoKSBjb25zdDsKKwkvLy8gUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IHdpdGggdGhlIGdpdmVuIG5hbWUuCisJVGlYbWxIYW5kbGUgRmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0OworCisJLyoqIFJldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAKKwkJVGhlIGZpcnN0IGNoaWxkIGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLgorCSovCisJVGlYbWxIYW5kbGUgQ2hpbGQoIGNvbnN0IGNoYXIqIHZhbHVlLCBpbnQgaW5kZXggKSBjb25zdDsKKwkvKiogUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkLiAKKwkJVGhlIGZpcnN0IGNoaWxkIGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLgorCSovCisJVGlYbWxIYW5kbGUgQ2hpbGQoIGludCBpbmRleCApIGNvbnN0OworCS8qKiBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAKKwkJVGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgaXMgMCwgdGhlIHNlY29uZCAxLCBldGMuIE5vdGUgdGhhdCBvbmx5IFRpWG1sRWxlbWVudHMKKwkJYXJlIGluZGV4ZWQ6IG90aGVyIHR5cGVzIGFyZSBub3QgY291bnRlZC4KKwkqLworCVRpWG1sSGFuZGxlIENoaWxkRWxlbWVudCggY29uc3QgY2hhciogdmFsdWUsIGludCBpbmRleCApIGNvbnN0OworCS8qKiBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgZWxlbWVudC4gCisJCVRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLiBOb3RlIHRoYXQgb25seSBUaVhtbEVsZW1lbnRzCisJCWFyZSBpbmRleGVkOiBvdGhlciB0eXBlcyBhcmUgbm90IGNvdW50ZWQuCisJKi8KKwlUaVhtbEhhbmRsZSBDaGlsZEVsZW1lbnQoIGludCBpbmRleCApIGNvbnN0OworCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwlUaVhtbEhhbmRsZSBGaXJzdENoaWxkKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkgY29uc3QJCQkJeyByZXR1cm4gRmlyc3RDaGlsZCggX3ZhbHVlLmNfc3RyKCkgKTsgfQorCVRpWG1sSGFuZGxlIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkgY29uc3QJCXsgcmV0dXJuIEZpcnN0Q2hpbGRFbGVtZW50KCBfdmFsdWUuY19zdHIoKSApOyB9CisKKwlUaVhtbEhhbmRsZSBDaGlsZCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSwgaW50IGluZGV4ICkgY29uc3QJCQl7IHJldHVybiBDaGlsZCggX3ZhbHVlLmNfc3RyKCksIGluZGV4ICk7IH0KKwlUaVhtbEhhbmRsZSBDaGlsZEVsZW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUsIGludCBpbmRleCApIGNvbnN0CXsgcmV0dXJuIENoaWxkRWxlbWVudCggX3ZhbHVlLmNfc3RyKCksIGluZGV4ICk7IH0KKwkjZW5kaWYKKworCS8vLyBSZXR1cm4gdGhlIGhhbmRsZSBhcyBhIFRpWG1sTm9kZS4gVGhpcyBtYXkgcmV0dXJuIG51bGwuCisJVGlYbWxOb2RlKiBOb2RlKCkgY29uc3QJCQl7IHJldHVybiBub2RlOyB9IAorCS8vLyBSZXR1cm4gdGhlIGhhbmRsZSBhcyBhIFRpWG1sRWxlbWVudC4gVGhpcyBtYXkgcmV0dXJuIG51bGwuCisJVGlYbWxFbGVtZW50KiBFbGVtZW50KCkgY29uc3QJeyByZXR1cm4gKCAoIG5vZGUgJiYgbm9kZS0+VG9FbGVtZW50KCkgKSA/IG5vZGUtPlRvRWxlbWVudCgpIDogMCApOyB9CisJLy8vIFJldHVybiB0aGUgaGFuZGxlIGFzIGEgVGlYbWxUZXh0LiBUaGlzIG1heSByZXR1cm4gbnVsbC4KKwlUaVhtbFRleHQqIFRleHQoKSBjb25zdAkJCXsgcmV0dXJuICggKCBub2RlICYmIG5vZGUtPlRvVGV4dCgpICkgPyBub2RlLT5Ub1RleHQoKSA6IDAgKTsgfQorCS8vLyBSZXR1cm4gdGhlIGhhbmRsZSBhcyBhIFRpWG1sVW5rbm93bi4gVGhpcyBtYXkgcmV0dXJuIG51bGw7CisJVGlYbWxVbmtub3duKiBVbmtub3duKCkgY29uc3QJCQl7IHJldHVybiAoICggbm9kZSAmJiBub2RlLT5Ub1Vua25vd24oKSApID8gbm9kZS0+VG9Vbmtub3duKCkgOiAwICk7IH0KKworcHJpdmF0ZToKKwlUaVhtbE5vZGUqIG5vZGU7Cit9OworCisjaWZkZWYgX01TQ19WRVIKKyNwcmFnbWEgd2FybmluZyggcG9wICkKKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvdGlueXhtbFNUTC5kc3AgYi90aW55eG1sU1RMLmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzljMTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvdGlueXhtbFNUTC5kc3AKQEAgLTAsMCArMSwxMjYgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0idGlueXhtbFNUTCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCisjICoqIERPIE5PVCBFRElUICoqDQorDQorIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiIDB4MDEwNA0KKw0KK0NGRz10aW55eG1sU1RMIC0gV2luMzIgRGVidWcNCishTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgTk1BS0UgL2YgInRpbnl4bWxTVEwubWFrIi4NCishTUVTU0FHRSANCishTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KKyFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQorIU1FU1NBR0UgDQorIU1FU1NBR0UgTk1BS0UgL2YgInRpbnl4bWxTVEwubWFrIiBDRkc9InRpbnl4bWxTVEwgLSBXaW4zMiBEZWJ1ZyINCishTUVTU0FHRSANCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCishTUVTU0FHRSANCishTUVTU0FHRSAidGlueXhtbFNUTCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJ0aW55eG1sU1RMIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFIA0KKw0KKyMgQmVnaW4gUHJvamVjdA0KKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KKyMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQorQ1BQPWNsLmV4ZQ0KK1JTQz1yYy5leGUNCisNCishSUYgICIkKENGRykiID09ICJ0aW55eG1sU1RMIC0gV2luMzIgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ0aW55eG1sU1RMX19fV2luMzJfUmVsZWFzZSINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0aW55eG1sU1RMX19fV2luMzJfUmVsZWFzZSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiUmVsZWFzZV9TVEwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2VfU1RMIg0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9ZWCAvRkQgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9EICJUSVhNTF9VU0VfU1RMIiAvRlIgL0ZEIC9jDQorIyBTVUJUUkFDVCBDUFAgL1lYDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSUIzMj1saW5rLmV4ZSAtbGliDQorIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQorIyBBREQgTElCMzIgL25vbG9nbyAvb3V0OiJSZWxlYXNlX1NUTFx0aW55eG1sX1NUTC5saWIiDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInRpbnl4bWxTVEwgLSBXaW4zMiBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ0aW55eG1sU1RMX19fV2luMzJfRGVidWcwIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInRpbnl4bWxTVExfX19XaW4zMl9EZWJ1ZzAiDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIE91dHB1dF9EaXIgIkRlYnVnX1NUTCINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiRGVidWdfU1RMIg0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL1lYIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL0QgIlRJWE1MX1VTRV9TVEwiIC9GRCAvR1ogL2MNCisjIFNVQlRSQUNUIENQUCAvWVgNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvIC9vdXQ6IkRlYnVnX1NUTFx0aW55eG1sZF9TVEwubGliIg0KKw0KKyFFTkRJRiANCisNCisjIEJlZ2luIFRhcmdldA0KKw0KKyMgTmFtZSAidGlueXhtbFNUTCAtIFdpbjMyIFJlbGVhc2UiDQorIyBOYW1lICJ0aW55eG1sU1RMIC0gV2luMzIgRGVidWciDQorIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KKw0KKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55c3RyLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWwuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXhtbGVycm9yLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWxwYXJzZXIuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBHcm91cA0KKyMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyINCisNCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXN0ci5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXhtbC5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBHcm91cA0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9LlxjaGFuZ2VzLnR4dA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHJlYWRtZS50eHQNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIFRhcmdldA0KKyMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS90aW55eG1sX2xpYi5kc3AgYi90aW55eG1sX2xpYi5kc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBkMjllMQotLS0gL2Rldi9udWxsCisrKyBiL3Rpbnl4bWxfbGliLmRzcApAQCAtMCwwICsxLDEzMCBAQAorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ0aW55eG1sIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KKyMgKiogRE8gTk9UIEVESVQgKioNCisNCisjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBTdGF0aWMgTGlicmFyeSIgMHgwMTA0DQorDQorQ0ZHPXRpbnl4bWwgLSBXaW4zMiBSZWxlYXNlDQorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJ0aW55eG1sX2xpYi5tYWsiLg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQorIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCishTUVTU0FHRSANCishTUVTU0FHRSBOTUFLRSAvZiAidGlueXhtbF9saWIubWFrIiBDRkc9InRpbnl4bWwgLSBXaW4zMiBSZWxlYXNlIg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFICJ0aW55eG1sIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBTdGF0aWMgTGlicmFyeSIpDQorIU1FU1NBR0UgInRpbnl4bWwgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBTdGF0aWMgTGlicmFyeSIpDQorIU1FU1NBR0UgDQorDQorIyBCZWdpbiBQcm9qZWN0DQorIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCisjIFBST1AgU2NjX1Byb2pOYW1lICIiDQorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCitDUFA9Y2wuZXhlDQorUlNDPXJjLmV4ZQ0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gInRpbnl4bWwgLSBXaW4zMiBSZWxlYXNlIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiUmVsZWFzZSINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvWVggL0ZEIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvRkQgL2MNCisjIFNVQlRSQUNUIENQUCAvWVgNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwNyAvZCAiTkRFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwNyAvZCAiTkRFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvIC9vdXQ6IlJlbGVhc2VcdGlueXhtbC5saWIiDQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInRpbnl4bWwgLSBXaW4zMiBEZWJ1ZyINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiRGVidWciDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL1lYIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL0ZSIC9GRCAvR1ogL2MNCisjIFNVQlRSQUNUIENQUCAvWVgNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwNyAvZCAiX0RFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwNyAvZCAiX0RFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJQjMyPWxpbmsuZXhlIC1saWINCisjIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCisjIEFERCBMSUIzMiAvbm9sb2dvIC9vdXQ6IkRlYnVnXHRpbnl4bWxkLmxpYiINCisNCishRU5ESUYgDQorDQorIyBCZWdpbiBUYXJnZXQNCisNCisjIE5hbWUgInRpbnl4bWwgLSBXaW4zMiBSZWxlYXNlIg0KKyMgTmFtZSAidGlueXhtbCAtIFdpbjMyIERlYnVnIg0KKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCisNCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnlzdHIuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXhtbC5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55eG1sZXJyb3IuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXhtbHBhcnNlci5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIEdyb3VwDQorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KKw0KKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXN0ci5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXhtbC5oDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBHcm91cA0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9LlxjaGFuZ2VzLnR4dA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHJlYWRtZS50eHQNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0dXRvcmlhbF9nZXR0aW5nU3RhcnRlZC50eHQNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIFRhcmdldA0KKyMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS90aW55eG1sZXJyb3IuY3BwIGIvdGlueXhtbGVycm9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg4NDM4Ci0tLSAvZGV2L251bGwKKysrIGIvdGlueXhtbGVycm9yLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgord3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCitPcmlnaW5hbCBjb2RlICgyLjAgYW5kIGVhcmxpZXIgKWNvcHlyaWdodCAoYykgMjAwMC0yMDAyIExlZSBUaG9tYXNvbiAod3d3LmdyaW5uaW5nbGl6YXJkLmNvbSkKKworVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgCit3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IAorZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgorCitQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgCitwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgCityZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0Citub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKK3NvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgord291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKworMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQKK211c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KKworMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCitkaXN0cmlidXRpb24uCisqLworCisjaW5jbHVkZSAidGlueXhtbC5oIgorCisvLyBUaGUgZ29hbCBvZiB0aGUgc2VwZXJhdGUgZXJyb3IgZmlsZSBpcyB0byBtYWtlIHRoZSBmaXJzdAorLy8gc3RlcCB0b3dhcmRzIGxvY2FsaXphdGlvbi4gdGlueXhtbCAoY3VycmVudGx5KSBvbmx5IHN1cHBvcnRzCisvLyBlbmdsaXNoIGVycm9yIG1lc3NhZ2VzLCBidXQgdGhlIGNvdWxkIG5vdyBiZSB0cmFuc2xhdGVkLgorLy8KKy8vIEl0IGFsc28gY2xlYW5zIHVwIHRoZSBjb2RlIGEgYml0LgorLy8KKworY29uc3QgY2hhciogVGlYbWxCYXNlOjplcnJvclN0cmluZ1sgVElYTUxfRVJST1JfU1RSSU5HX0NPVU5UIF0gPQoreworCSJObyBlcnJvciIsCisJIkVycm9yIiwKKwkiRmFpbGVkIHRvIG9wZW4gZmlsZSIsCisJIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4iLAorCSJFcnJvciBwYXJzaW5nIEVsZW1lbnQuIiwKKwkiRmFpbGVkIHRvIHJlYWQgRWxlbWVudCBuYW1lIiwKKwkiRXJyb3IgcmVhZGluZyBFbGVtZW50IHZhbHVlLiIsCisJIkVycm9yIHJlYWRpbmcgQXR0cmlidXRlcy4iLAorCSJFcnJvcjogZW1wdHkgdGFnLiIsCisJIkVycm9yIHJlYWRpbmcgZW5kIHRhZy4iLAorCSJFcnJvciBwYXJzaW5nIFVua25vd24uIiwKKwkiRXJyb3IgcGFyc2luZyBDb21tZW50LiIsCisJIkVycm9yIHBhcnNpbmcgRGVjbGFyYXRpb24uIiwKKwkiRXJyb3IgZG9jdW1lbnQgZW1wdHkuIiwKKwkiRXJyb3IgbnVsbCAoMCkgb3IgdW5leHBlY3RlZCBFT0YgZm91bmQgaW4gaW5wdXQgc3RyZWFtLiIsCisJIkVycm9yIHBhcnNpbmcgQ0RBVEEuIiwKK307CmRpZmYgLS1naXQgYS90aW55eG1scGFyc2VyLmNwcCBiL3Rpbnl4bWxwYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZDBhOWUKLS0tIC9kZXYvbnVsbAorKysgYi90aW55eG1scGFyc2VyLmNwcApAQCAtMCwwICsxLDE1NzIgQEAKKy8qCit3d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWwKK09yaWdpbmFsIGNvZGUgKDIuMCBhbmQgZWFybGllciApY29weXJpZ2h0IChjKSAyMDAwLTIwMDIgTGVlIFRob21hc29uICh3d3cuZ3Jpbm5pbmdsaXphcmQuY29tKQorCitUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZCAKK3dhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgCitkYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSAKK3B1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCAKK3JlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CisKKzEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QgCitub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKK3NvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgord291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKworMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgCittdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCisKKzMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSAKK2Rpc3RyaWJ1dGlvbi4KKyovCisKKyNpbmNsdWRlICJ0aW55eG1sLmgiCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworLy8jZGVmaW5lIERFQlVHX1BBUlNFUgorCisvLyBOb3RlIHRoYSAiUHV0U3RyaW5nIiBoYXJkY29kZXMgdGhlIHNhbWUgbGlzdC4gVGhpcworLy8gaXMgbGVzcyBmbGV4aWJsZSB0aGFuIGl0IGFwcGVhcnMuIENoYW5naW5nIHRoZSBlbnRyaWVzCisvLyBvciBvcmRlciB3aWxsIGJyZWFrIHB1dHN0cmluZy4JCitUaVhtbEJhc2U6OkVudGl0eSBUaVhtbEJhc2U6OmVudGl0eVsgTlVNX0VOVElUWSBdID0gCit7CisJeyAiJmFtcDsiLCAgNSwgJyYnIH0sCisJeyAiJmx0OyIsICAgNCwgJzwnIH0sCisJeyAiJmd0OyIsICAgNCwgJz4nIH0sCisJeyAiJnF1b3Q7IiwgNiwgJ1wiJyB9LAorCXsgIiZhcG9zOyIsIDYsICdcJycgfQorfTsKKworLy8gQnVuY2ggb2YgdW5pY29kZSBpbmZvIGF0OgorLy8JCWh0dHA6Ly93d3cudW5pY29kZS5vcmcvZmFxL3V0Zl9ib20uaHRtbAorLy8gSW5jbHVkaW5nIHRoZSBiYXNpYyBvZiB0aGlzIHRhYmxlLCB3aGljaCBkZXRlcm1pbmVzIHRoZSAjYnl0ZXMgaW4gdGhlCisvLyBzZXF1ZW5jZSBmcm9tIHRoZSBsZWFkIGJ5dGUuIDEgcGxhY2VkIGZvciBpbnZhbGlkIHNlcXVlbmNlcyAtLQorLy8gYWx0aG91Z2ggdGhlIHJlc3VsdCB3aWxsIGJlIGp1bmssIHBhc3MgaXQgdGhyb3VnaCBhcyBtdWNoIGFzIHBvc3NpYmxlLgorLy8gQmV3YXJlIG9mIHRoZSBub24tY2hhcmFjdGVycyBpbiBVVEYtODoJCisvLwkJCQllZiBiYiBiZiAoTWljcm9zb2Z0ICJsZWFkIGJ5dGVzIikKKy8vCQkJCWVmIGJmIGJlCisvLwkJCQllZiBiZiBiZiAKKworY29uc3QgdW5zaWduZWQgY2hhciBUSVhNTF9VVEZfTEVBRF8wID0gMHhlZlU7Citjb25zdCB1bnNpZ25lZCBjaGFyIFRJWE1MX1VURl9MRUFEXzEgPSAweGJiVTsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgVElYTUxfVVRGX0xFQURfMiA9IDB4YmZVOworCitjb25zdCBpbnQgVGlYbWxCYXNlOjp1dGY4Qnl0ZVRhYmxlWzI1Nl0gPSAKK3sKKwkvLwkwCTEJMgkzCTQJNQk2CTcJOAk5CWEJYgljCWQJZQlmCisJCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4MDAKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHgxMAorCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDIwCisJCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4MzAKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHg0MAorCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDUwCisJCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4NjAKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHg3MAlFbmQgb2YgQVNDSUkgcmFuZ2UKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHg4MCAweDgwIHRvIDB4YzEgaW52YWxpZAorCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDkwIAorCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweGEwIAorCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweGIwIAorCQkxLAkxLAkyLAkyLAkyLAkyLAkyLAkyLAkyLAkyLAkyLAkyLAkyLAkyLAkyLAkyLAkvLyAweGMwIDB4YzIgdG8gMHhkZiAyIGJ5dGUKKwkJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJLy8gMHhkMAorCQkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkzLAkvLyAweGUwIDB4ZTAgdG8gMHhlZiAzIGJ5dGUKKwkJNCwJNCwJNCwJNCwJNCwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMQkvLyAweGYwIDB4ZjAgdG8gMHhmNCA0IGJ5dGUsIDB4ZjUgYW5kIGhpZ2hlciBpbnZhbGlkCit9OworCisKK3ZvaWQgVGlYbWxCYXNlOjpDb252ZXJ0VVRGMzJUb1VURjgoIHVuc2lnbmVkIGxvbmcgaW5wdXQsIGNoYXIqIG91dHB1dCwgaW50KiBsZW5ndGggKQoreworCWNvbnN0IHVuc2lnbmVkIGxvbmcgQllURV9NQVNLID0gMHhCRjsKKwljb25zdCB1bnNpZ25lZCBsb25nIEJZVEVfTUFSSyA9IDB4ODA7CisJY29uc3QgdW5zaWduZWQgbG9uZyBGSVJTVF9CWVRFX01BUktbN10gPSB7IDB4MDAsIDB4MDAsIDB4QzAsIDB4RTAsIDB4RjAsIDB4RjgsIDB4RkMgfTsKKworCWlmIChpbnB1dCA8IDB4ODApIAorCQkqbGVuZ3RoID0gMTsKKwllbHNlIGlmICggaW5wdXQgPCAweDgwMCApCisJCSpsZW5ndGggPSAyOworCWVsc2UgaWYgKCBpbnB1dCA8IDB4MTAwMDAgKQorCQkqbGVuZ3RoID0gMzsKKwllbHNlIGlmICggaW5wdXQgPCAweDIwMDAwMCApCisJCSpsZW5ndGggPSA0OworCWVsc2UKKwkJeyAqbGVuZ3RoID0gMDsgcmV0dXJuOyB9CS8vIFRoaXMgY29kZSB3b24ndCBjb3ZlcnQgdGhpcyBjb3JyZWN0bHkgYW55d2F5LgorCisJb3V0cHV0ICs9ICpsZW5ndGg7CisKKwkvLyBTY2FyeSBzY2FyeSBmYWxsIHRocm91Z2hzLgorCXN3aXRjaCAoKmxlbmd0aCkgCisJeworCQljYXNlIDQ6CisJCQktLW91dHB1dDsgCisJCQkqb3V0cHV0ID0gKGNoYXIpKChpbnB1dCB8IEJZVEVfTUFSSykgJiBCWVRFX01BU0spOyAKKwkJCWlucHV0ID4+PSA2OworCQljYXNlIDM6CisJCQktLW91dHB1dDsgCisJCQkqb3V0cHV0ID0gKGNoYXIpKChpbnB1dCB8IEJZVEVfTUFSSykgJiBCWVRFX01BU0spOyAKKwkJCWlucHV0ID4+PSA2OworCQljYXNlIDI6CisJCQktLW91dHB1dDsgCisJCQkqb3V0cHV0ID0gKGNoYXIpKChpbnB1dCB8IEJZVEVfTUFSSykgJiBCWVRFX01BU0spOyAKKwkJCWlucHV0ID4+PSA2OworCQljYXNlIDE6CisJCQktLW91dHB1dDsgCisJCQkqb3V0cHV0ID0gKGNoYXIpKGlucHV0IHwgRklSU1RfQllURV9NQVJLWypsZW5ndGhdKTsKKwl9Cit9CisKKworLypzdGF0aWMqLyBpbnQgVGlYbWxCYXNlOjpJc0FscGhhKCB1bnNpZ25lZCBjaGFyIGFueUJ5dGUsIFRpWG1sRW5jb2RpbmcgLyplbmNvZGluZyovICkKK3sKKwkvLyBUaGlzIHdpbGwgb25seSB3b3JrIGZvciBsb3ctYXNjaWksIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhc3N1bWVkIHRvIGJlIGEgdmFsaWQKKwkvLyBsZXR0ZXIuIEknbSBub3Qgc3VyZSB0aGlzIGlzIHRoZSBiZXN0IGFwcHJvYWNoLCBidXQgaXQgaXMgcXVpdGUgdHJpY2t5IHRyeWluZworCS8vIHRvIGZpZ3VyZSBvdXQgYWxoYWJldGljYWwgdnMuIG5vdCBhY3Jvc3MgZW5jb2RpbmcuIFNvIHRha2UgYSB2ZXJ5IAorCS8vIGNvbnNlcnZhdGl2ZSBhcHByb2FjaC4KKworLy8JaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKKy8vCXsKKwkJaWYgKCBhbnlCeXRlIDwgMTI3ICkKKwkJCXJldHVybiBpc2FscGhhKCBhbnlCeXRlICk7CisJCWVsc2UKKwkJCXJldHVybiAxOwkvLyBXaGF0IGVsc2UgdG8gZG8/IFRoZSB1bmljb2RlIHNldCBpcyBodWdlLi4uZ2V0IHRoZSBlbmdsaXNoIG9uZXMgcmlnaHQuCisvLwl9CisvLwllbHNlCisvLwl7CisvLwkJcmV0dXJuIGlzYWxwaGEoIGFueUJ5dGUgKTsKKy8vCX0KK30KKworCisvKnN0YXRpYyovIGludCBUaVhtbEJhc2U6OklzQWxwaGFOdW0oIHVuc2lnbmVkIGNoYXIgYW55Qnl0ZSwgVGlYbWxFbmNvZGluZyAvKmVuY29kaW5nKi8gKQoreworCS8vIFRoaXMgd2lsbCBvbmx5IHdvcmsgZm9yIGxvdy1hc2NpaSwgZXZlcnl0aGluZyBlbHNlIGlzIGFzc3VtZWQgdG8gYmUgYSB2YWxpZAorCS8vIGxldHRlci4gSSdtIG5vdCBzdXJlIHRoaXMgaXMgdGhlIGJlc3QgYXBwcm9hY2gsIGJ1dCBpdCBpcyBxdWl0ZSB0cmlja3kgdHJ5aW5nCisJLy8gdG8gZmlndXJlIG91dCBhbGhhYmV0aWNhbCB2cy4gbm90IGFjcm9zcyBlbmNvZGluZy4gU28gdGFrZSBhIHZlcnkgCisJLy8gY29uc2VydmF0aXZlIGFwcHJvYWNoLgorCisvLwlpZiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQorLy8JeworCQlpZiAoIGFueUJ5dGUgPCAxMjcgKQorCQkJcmV0dXJuIGlzYWxudW0oIGFueUJ5dGUgKTsKKwkJZWxzZQorCQkJcmV0dXJuIDE7CS8vIFdoYXQgZWxzZSB0byBkbz8gVGhlIHVuaWNvZGUgc2V0IGlzIGh1Z2UuLi5nZXQgdGhlIGVuZ2xpc2ggb25lcyByaWdodC4KKy8vCX0KKy8vCWVsc2UKKy8vCXsKKy8vCQlyZXR1cm4gaXNhbG51bSggYW55Qnl0ZSApOworLy8JfQorfQorCisKK2NsYXNzIFRpWG1sUGFyc2luZ0RhdGEKK3sKKwlmcmllbmQgY2xhc3MgVGlYbWxEb2N1bWVudDsKKyAgcHVibGljOgorCXZvaWQgU3RhbXAoIGNvbnN0IGNoYXIqIG5vdywgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCisJY29uc3QgVGlYbWxDdXJzb3ImIEN1cnNvcigpCXsgcmV0dXJuIGN1cnNvcjsgfQorCisgIHByaXZhdGU6CisJLy8gT25seSB1c2VkIGJ5IHRoZSBkb2N1bWVudCEKKwlUaVhtbFBhcnNpbmdEYXRhKCBjb25zdCBjaGFyKiBzdGFydCwgaW50IF90YWJzaXplLCBpbnQgcm93LCBpbnQgY29sICkKKwl7CisJCWFzc2VydCggc3RhcnQgKTsKKwkJc3RhbXAgPSBzdGFydDsKKwkJdGFic2l6ZSA9IF90YWJzaXplOworCQljdXJzb3Iucm93ID0gcm93OworCQljdXJzb3IuY29sID0gY29sOworCX0KKworCVRpWG1sQ3Vyc29yCQljdXJzb3I7CisJY29uc3QgY2hhcioJCXN0YW1wOworCWludAkJCQl0YWJzaXplOworfTsKKworCit2b2lkIFRpWG1sUGFyc2luZ0RhdGE6OlN0YW1wKCBjb25zdCBjaGFyKiBub3csIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCWFzc2VydCggbm93ICk7CisKKwkvLyBEbyBub3RoaW5nIGlmIHRoZSB0YWJzaXplIGlzIDAuCisJaWYgKCB0YWJzaXplIDwgMSApCisJeworCQlyZXR1cm47CisJfQorCisJLy8gR2V0IHRoZSBjdXJyZW50IHJvdywgY29sdW1uLgorCWludCByb3cgPSBjdXJzb3Iucm93OworCWludCBjb2wgPSBjdXJzb3IuY29sOworCWNvbnN0IGNoYXIqIHAgPSBzdGFtcDsKKwlhc3NlcnQoIHAgKTsKKworCXdoaWxlICggcCA8IG5vdyApCisJeworCQkvLyBUcmVhdCBwIGFzIHVuc2lnbmVkLCBzbyB3ZSBoYXZlIGEgaGFwcHkgY29tcGlsZXIuCisJCWNvbnN0IHVuc2lnbmVkIGNoYXIqIHBVID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXA7CisKKwkJLy8gQ29kZSBjb250cmlidXRlZCBieSBGbGV0Y2hlciBEdW5uOiAobW9kaWZpZWQgYnkgbGVlKQorCQlzd2l0Y2ggKCpwVSkgeworCQkJY2FzZSAwOgorCQkJCS8vIFdlICpzaG91bGQqIG5ldmVyIGdldCBoZXJlLCBidXQgaW4gY2FzZSB3ZSBkbywgZG9uJ3QKKwkJCQkvLyBhZHZhbmNlIHBhc3QgdGhlIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyLCBldmVyCisJCQkJcmV0dXJuOworCisJCQljYXNlICdccic6CisJCQkJLy8gYnVtcCBkb3duIHRvIHRoZSBuZXh0IGxpbmUKKwkJCQkrK3JvdzsKKwkJCQljb2wgPSAwOwkJCQkKKwkJCQkvLyBFYXQgdGhlIGNoYXJhY3RlcgorCQkJCSsrcDsKKworCQkJCS8vIENoZWNrIGZvciBcclxuIHNlcXVlbmNlLCBhbmQgdHJlYXQgdGhpcyBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIKKwkJCQlpZiAoKnAgPT0gJ1xuJykgeworCQkJCQkrK3A7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlICdcbic6CisJCQkJLy8gYnVtcCBkb3duIHRvIHRoZSBuZXh0IGxpbmUKKwkJCQkrK3JvdzsKKwkJCQljb2wgPSAwOworCisJCQkJLy8gRWF0IHRoZSBjaGFyYWN0ZXIKKwkJCQkrK3A7CisKKwkJCQkvLyBDaGVjayBmb3IgXG5cciBzZXF1ZW5jZSwgYW5kIHRyZWF0IHRoaXMgYXMgYSBzaW5nbGUKKwkJCQkvLyBjaGFyYWN0ZXIuICAoWWVzLCB0aGlzIGJpemFycmUgdGhpbmcgZG9lcyBvY2N1ciBzdGlsbAorCQkJCS8vIG9uIHNvbWUgYXJjYW5lIHBsYXRmb3Jtcy4uLikKKwkJCQlpZiAoKnAgPT0gJ1xyJykgeworCQkJCQkrK3A7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlICdcdCc6CisJCQkJLy8gRWF0IHRoZSBjaGFyYWN0ZXIKKwkJCQkrK3A7CisKKwkJCQkvLyBTa2lwIHRvIG5leHQgdGFiIHN0b3AKKwkJCQljb2wgPSAoY29sIC8gdGFic2l6ZSArIDEpICogdGFic2l6ZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBUSVhNTF9VVEZfTEVBRF8wOgorCQkJCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCisJCQkJeworCQkJCQlpZiAoICoocCsxKSAmJiAqKHArMikgKQorCQkJCQl7CisJCQkJCQkvLyBJbiB0aGVzZSBjYXNlcywgZG9uJ3QgYWR2YW5jZSB0aGUgY29sdW1uLiBUaGVzZSBhcmUKKwkJCQkJCS8vIDAtd2lkdGggc3BhY2VzLgorCQkJCQkJaWYgKCAqKHBVKzEpPT1USVhNTF9VVEZfTEVBRF8xICYmICoocFUrMik9PVRJWE1MX1VURl9MRUFEXzIgKQorCQkJCQkJCXAgKz0gMzsJCisJCQkJCQllbHNlIGlmICggKihwVSsxKT09MHhiZlUgJiYgKihwVSsyKT09MHhiZVUgKQorCQkJCQkJCXAgKz0gMzsJCisJCQkJCQllbHNlIGlmICggKihwVSsxKT09MHhiZlUgJiYgKihwVSsyKT09MHhiZlUgKQorCQkJCQkJCXAgKz0gMzsJCisJCQkJCQllbHNlCisJCQkJCQkJeyBwICs9MzsgKytjb2w7IH0JLy8gQSBub3JtYWwgY2hhcmFjdGVyLgorCQkJCQl9CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCSsrcDsKKwkJCQkJKytjb2w7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCisJCQkJeworCQkJCQkvLyBFYXQgdGhlIDEgdG8gNCBieXRlIHV0ZjggY2hhcmFjdGVyLgorCQkJCQlpbnQgc3RlcCA9IFRpWG1sQmFzZTo6dXRmOEJ5dGVUYWJsZVsqKCh1bnNpZ25lZCBjaGFyKilwKV07CisJCQkJCWlmICggc3RlcCA9PSAwICkKKwkJCQkJCXN0ZXAgPSAxOwkJLy8gRXJyb3IgY2FzZSBmcm9tIGJhZCBlbmNvZGluZywgYnV0IGhhbmRsZSBncmFjZWZ1bGx5LgorCQkJCQlwICs9IHN0ZXA7CisKKwkJCQkJLy8gSnVzdCBhZHZhbmNlIG9uZSBjb2x1bW4sIG9mIGNvdXJzZS4KKwkJCQkJKytjb2w7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCSsrcDsKKwkJCQkJKytjb2w7CisJCQkJfQorCQkJCWJyZWFrOworCQl9CisJfQorCWN1cnNvci5yb3cgPSByb3c7CisJY3Vyc29yLmNvbCA9IGNvbDsKKwlhc3NlcnQoIGN1cnNvci5yb3cgPj0gLTEgKTsKKwlhc3NlcnQoIGN1cnNvci5jb2wgPj0gLTEgKTsKKwlzdGFtcCA9IHA7CisJYXNzZXJ0KCBzdGFtcCApOworfQorCisKK2NvbnN0IGNoYXIqIFRpWG1sQmFzZTo6U2tpcFdoaXRlU3BhY2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCWlmICggIXAgfHwgISpwICkKKwl7CisJCXJldHVybiAwOworCX0KKwlpZiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQorCXsKKwkJd2hpbGUgKCAqcCApCisJCXsKKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIqIHBVID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXA7CisJCQkKKwkJCS8vIFNraXAgdGhlIHN0dXBpZCBNaWNyb3NvZnQgVVRGLTggQnl0ZSBvcmRlciBtYXJrcworCQkJaWYgKAkqKHBVKzApPT1USVhNTF9VVEZfTEVBRF8wCisJCQkJICYmICoocFUrMSk9PVRJWE1MX1VURl9MRUFEXzEgCisJCQkJICYmICoocFUrMik9PVRJWE1MX1VURl9MRUFEXzIgKQorCQkJeworCQkJCXAgKz0gMzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWVsc2UgaWYoKihwVSswKT09VElYTUxfVVRGX0xFQURfMAorCQkJCSAmJiAqKHBVKzEpPT0weGJmVQorCQkJCSAmJiAqKHBVKzIpPT0weGJlVSApCisJCQl7CisJCQkJcCArPSAzOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZWxzZSBpZigqKHBVKzApPT1USVhNTF9VVEZfTEVBRF8wCisJCQkJICYmICoocFUrMSk9PTB4YmZVCisJCQkJICYmICoocFUrMik9PTB4YmZVICkKKwkJCXsKKwkJCQlwICs9IDM7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWlmICggSXNXaGl0ZVNwYWNlKCAqcCApIHx8ICpwID09ICdcbicgfHwgKnAgPT0nXHInICkJCS8vIFN0aWxsIHVzaW5nIG9sZCBydWxlcyBmb3Igd2hpdGUgc3BhY2UuCisJCQkJKytwOworCQkJZWxzZQorCQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXdoaWxlICggKnAgJiYgSXNXaGl0ZVNwYWNlKCAqcCApIHx8ICpwID09ICdcbicgfHwgKnAgPT0nXHInICkKKwkJCSsrcDsKKwl9CisKKwlyZXR1cm4gcDsKK30KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKKy8qc3RhdGljKi8gYm9vbCBUaVhtbEJhc2U6OlN0cmVhbVdoaXRlU3BhY2UoIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICkKK3sKKwlmb3IoIDs7ICkKKwl7CisJCWlmICggIWluLT5nb29kKCkgKSByZXR1cm4gZmFsc2U7CisKKwkJaW50IGMgPSBpbi0+cGVlaygpOworCQkvLyBBdCB0aGlzIHNjb3BlLCB3ZSBjYW4ndCBnZXQgdG8gYSBkb2N1bWVudC4gU28gZmFpbCBzaWxlbnRseS4KKwkJaWYgKCAhSXNXaGl0ZVNwYWNlKCBjICkgfHwgYyA8PSAwICkKKwkJCXJldHVybiB0cnVlOworCisJCSp0YWcgKz0gKGNoYXIpIGluLT5nZXQoKTsKKwl9Cit9CisKKy8qc3RhdGljKi8gYm9vbCBUaVhtbEJhc2U6OlN0cmVhbVRvKCBUSVhNTF9JU1RSRUFNICogaW4sIGludCBjaGFyYWN0ZXIsIFRJWE1MX1NUUklORyAqIHRhZyApCit7CisJLy9hc3NlcnQoIGNoYXJhY3RlciA+IDAgJiYgY2hhcmFjdGVyIDwgMTI4ICk7CS8vIGVsc2UgaXQgd29uJ3Qgd29yayBpbiB1dGYtOAorCXdoaWxlICggaW4tPmdvb2QoKSApCisJeworCQlpbnQgYyA9IGluLT5wZWVrKCk7CisJCWlmICggYyA9PSBjaGFyYWN0ZXIgKQorCQkJcmV0dXJuIHRydWU7CisJCWlmICggYyA8PSAwICkJCS8vIFNpbGVudCBmYWlsdXJlOiBjYW4ndCBnZXQgZG9jdW1lbnQgYXQgdGhpcyBzY29wZQorCQkJcmV0dXJuIGZhbHNlOworCisJCWluLT5nZXQoKTsKKwkJKnRhZyArPSAoY2hhcikgYzsKKwl9CisJcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKK2NvbnN0IGNoYXIqIFRpWG1sQmFzZTo6UmVhZE5hbWUoIGNvbnN0IGNoYXIqIHAsIFRJWE1MX1NUUklORyAqIG5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCSpuYW1lID0gIiI7CisJYXNzZXJ0KCBwICk7CisKKwkvLyBOYW1lcyBzdGFydCB3aXRoIGxldHRlcnMgb3IgdW5kZXJzY29yZXMuCisJLy8gT2YgY291cnNlLCBpbiB1bmljb2RlLCB0aW55eG1sIGhhcyBubyBpZGVhIHdoYXQgYSBsZXR0ZXIgKmlzKi4gVGhlCisJLy8gYWxnb3JpdGhtIGlzIGdlbmVyb3VzLgorCS8vCisJLy8gQWZ0ZXIgdGhhdCwgdGhleSBjYW4gYmUgbGV0dGVycywgdW5kZXJzY29yZXMsIG51bWJlcnMsCisJLy8gaHlwaGVucywgb3IgY29sb25zLiAoQ29sb25zIGFyZSB2YWxpZCBvbnkgZm9yIG5hbWVzcGFjZXMsCisJLy8gYnV0IHRpbnl4bWwgY2FuJ3QgdGVsbCBuYW1lc3BhY2VzIGZyb20gbmFtZXMuKQorCWlmICggICAgcCAmJiAqcCAKKwkJICYmICggSXNBbHBoYSggKHVuc2lnbmVkIGNoYXIpICpwLCBlbmNvZGluZyApIHx8ICpwID09ICdfJyApICkKKwl7CisJCXdoaWxlKAkJcCAmJiAqcAorCQkJCSYmCSgJCUlzQWxwaGFOdW0oICh1bnNpZ25lZCBjaGFyICkgKnAsIGVuY29kaW5nICkgCisJCQkJCQkgfHwgKnAgPT0gJ18nCisJCQkJCQkgfHwgKnAgPT0gJy0nCisJCQkJCQkgfHwgKnAgPT0gJy4nCisJCQkJCQkgfHwgKnAgPT0gJzonICkgKQorCQl7CisJCQkoKm5hbWUpICs9ICpwOworCQkJKytwOworCQl9CisJCXJldHVybiBwOworCX0KKwlyZXR1cm4gMDsKK30KKworY29uc3QgY2hhciogVGlYbWxCYXNlOjpHZXRFbnRpdHkoIGNvbnN0IGNoYXIqIHAsIGNoYXIqIHZhbHVlLCBpbnQqIGxlbmd0aCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCit7CisJLy8gUHJlc3VtZSBhbiBlbnRpdHksIGFuZCBwdWxsIGl0IG91dC4KKyAgICBUSVhNTF9TVFJJTkcgZW50OworCWludCBpOworCSpsZW5ndGggPSAwOworCisJaWYgKCAqKHArMSkgJiYgKihwKzEpID09ICcjJyAmJiAqKHArMikgKQorCXsKKwkJdW5zaWduZWQgbG9uZyB1Y3MgPSAwOworCQlwdHJkaWZmX3QgZGVsdGEgPSAwOworCQl1bnNpZ25lZCBtdWx0ID0gMTsKKworCQlpZiAoICoocCsyKSA9PSAneCcgKQorCQl7CisJCQkvLyBIZXhhZGVjaW1hbC4KKwkJCWlmICggISoocCszKSApIHJldHVybiAwOworCisJCQljb25zdCBjaGFyKiBxID0gcCszOworCQkJcSA9IHN0cmNociggcSwgJzsnICk7CisKKwkJCWlmICggIXEgfHwgISpxICkgcmV0dXJuIDA7CisKKwkJCWRlbHRhID0gcS1wOworCQkJLS1xOworCisJCQl3aGlsZSAoICpxICE9ICd4JyApCisJCQl7CisJCQkJaWYgKCAqcSA+PSAnMCcgJiYgKnEgPD0gJzknICkKKwkJCQkJdWNzICs9IG11bHQgKiAoKnEgLSAnMCcpOworCQkJCWVsc2UgaWYgKCAqcSA+PSAnYScgJiYgKnEgPD0gJ2YnICkKKwkJCQkJdWNzICs9IG11bHQgKiAoKnEgLSAnYScgKyAxMCk7CisJCQkJZWxzZSBpZiAoICpxID49ICdBJyAmJiAqcSA8PSAnRicgKQorCQkJCQl1Y3MgKz0gbXVsdCAqICgqcSAtICdBJyArIDEwICk7CisJCQkJZWxzZSAKKwkJCQkJcmV0dXJuIDA7CisJCQkJbXVsdCAqPSAxNjsKKwkJCQktLXE7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQkvLyBEZWNpbWFsLgorCQkJaWYgKCAhKihwKzIpICkgcmV0dXJuIDA7CisKKwkJCWNvbnN0IGNoYXIqIHEgPSBwKzI7CisJCQlxID0gc3RyY2hyKCBxLCAnOycgKTsKKworCQkJaWYgKCAhcSB8fCAhKnEgKSByZXR1cm4gMDsKKworCQkJZGVsdGEgPSBxLXA7CisJCQktLXE7CisKKwkJCXdoaWxlICggKnEgIT0gJyMnICkKKwkJCXsKKwkJCQlpZiAoICpxID49ICcwJyAmJiAqcSA8PSAnOScgKQorCQkJCQl1Y3MgKz0gbXVsdCAqICgqcSAtICcwJyk7CisJCQkJZWxzZSAKKwkJCQkJcmV0dXJuIDA7CisJCQkJbXVsdCAqPSAxMDsKKwkJCQktLXE7CisJCQl9CisJCX0KKwkJaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKKwkJeworCQkJLy8gY29udmVydCB0aGUgVUNTIHRvIFVURi04CisJCQlDb252ZXJ0VVRGMzJUb1VURjgoIHVjcywgdmFsdWUsIGxlbmd0aCApOworCQl9CisJCWVsc2UKKwkJeworCQkJKnZhbHVlID0gKGNoYXIpdWNzOworCQkJKmxlbmd0aCA9IDE7CisJCX0KKwkJcmV0dXJuIHAgKyBkZWx0YSArIDE7CisJfQorCisJLy8gTm93IHRyeSB0byBtYXRjaCBpdC4KKwlmb3IoIGk9MDsgaTxOVU1fRU5USVRZOyArK2kgKQorCXsKKwkJaWYgKCBzdHJuY21wKCBlbnRpdHlbaV0uc3RyLCBwLCBlbnRpdHlbaV0uc3RyTGVuZ3RoICkgPT0gMCApCisJCXsKKwkJCWFzc2VydCggc3RybGVuKCBlbnRpdHlbaV0uc3RyICkgPT0gZW50aXR5W2ldLnN0ckxlbmd0aCApOworCQkJKnZhbHVlID0gZW50aXR5W2ldLmNocjsKKwkJCSpsZW5ndGggPSAxOworCQkJcmV0dXJuICggcCArIGVudGl0eVtpXS5zdHJMZW5ndGggKTsKKwkJfQorCX0KKworCS8vIFNvIGl0IHdhc24ndCBhbiBlbnRpdHksIGl0cyB1bnJlY29nbml6ZWQsIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCisJKnZhbHVlID0gKnA7CS8vIERvbid0IHB1dCBiYWNrIHRoZSBsYXN0IG9uZSwgc2luY2Ugd2UgcmV0dXJuIGl0IQorCXJldHVybiBwKzE7Cit9CisKKworYm9vbCBUaVhtbEJhc2U6OlN0cmluZ0VxdWFsKCBjb25zdCBjaGFyKiBwLAorCQkJCQkJCSBjb25zdCBjaGFyKiB0YWcsCisJCQkJCQkJIGJvb2wgaWdub3JlQ2FzZSwKKwkJCQkJCQkgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCit7CisJYXNzZXJ0KCBwICk7CisJYXNzZXJ0KCB0YWcgKTsKKwlpZiAoICFwIHx8ICEqcCApCisJeworCQlhc3NlcnQoIDAgKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWNvbnN0IGNoYXIqIHEgPSBwOworCisJaWYgKCBpZ25vcmVDYXNlICkKKwl7CisJCXdoaWxlICggKnEgJiYgKnRhZyAmJiBUb0xvd2VyKCAqcSwgZW5jb2RpbmcgKSA9PSBUb0xvd2VyKCAqdGFnLCBlbmNvZGluZyApICkKKwkJeworCQkJKytxOworCQkJKyt0YWc7CisJCX0KKworCQlpZiAoICp0YWcgPT0gMCApCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJd2hpbGUgKCAqcSAmJiAqdGFnICYmICpxID09ICp0YWcgKQorCQl7CisJCQkrK3E7CisJCQkrK3RhZzsKKwkJfQorCisJCWlmICggKnRhZyA9PSAwICkJCS8vIEhhdmUgd2UgZm91bmQgdGhlIGVuZCBvZiB0aGUgdGFnLCBhbmQgZXZlcnl0aGluZyBlcXVhbD8KKwkJCXJldHVybiB0cnVlOworCX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKK2NvbnN0IGNoYXIqIFRpWG1sQmFzZTo6UmVhZFRleHQoCWNvbnN0IGNoYXIqIHAsIAorCQkJCQkJCQkJVElYTUxfU1RSSU5HICogdGV4dCwgCisJCQkJCQkJCQlib29sIHRyaW1XaGl0ZVNwYWNlLCAKKwkJCQkJCQkJCWNvbnN0IGNoYXIqIGVuZFRhZywgCisJCQkJCQkJCQlib29sIGNhc2VJbnNlbnNpdGl2ZSwKKwkJCQkJCQkJCVRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworICAgICp0ZXh0ID0gIiI7CisJaWYgKCAgICAhdHJpbVdoaXRlU3BhY2UJCQkvLyBjZXJ0YWluIHRhZ3MgYWx3YXlzIGtlZXAgd2hpdGVzcGFjZQorCQkgfHwgIWNvbmRlbnNlV2hpdGVTcGFjZSApCS8vIGlmIHRydWUsIHdoaXRlc3BhY2UgaXMgYWx3YXlzIGtlcHQKKwl7CisJCS8vIEtlZXAgYWxsIHRoZSB3aGl0ZSBzcGFjZS4KKwkJd2hpbGUgKAkgICBwICYmICpwCisJCQkJJiYgIVN0cmluZ0VxdWFsKCBwLCBlbmRUYWcsIGNhc2VJbnNlbnNpdGl2ZSwgZW5jb2RpbmcgKQorCQkJICApCisJCXsKKwkJCWludCBsZW47CisJCQljaGFyIGNBcnJbNF0gPSB7IDAsIDAsIDAsIDAgfTsKKwkJCXAgPSBHZXRDaGFyKCBwLCBjQXJyLCAmbGVuLCBlbmNvZGluZyApOworCQkJdGV4dC0+YXBwZW5kKCBjQXJyLCBsZW4gKTsKKwkJfQorCX0KKwllbHNlCisJeworCQlib29sIHdoaXRlc3BhY2UgPSBmYWxzZTsKKworCQkvLyBSZW1vdmUgbGVhZGluZyB3aGl0ZSBzcGFjZToKKwkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCQl3aGlsZSAoCSAgIHAgJiYgKnAKKwkJCQkmJiAhU3RyaW5nRXF1YWwoIHAsIGVuZFRhZywgY2FzZUluc2Vuc2l0aXZlLCBlbmNvZGluZyApICkKKwkJeworCQkJaWYgKCAqcCA9PSAnXHInIHx8ICpwID09ICdcbicgKQorCQkJeworCQkJCXdoaXRlc3BhY2UgPSB0cnVlOworCQkJCSsrcDsKKwkJCX0KKwkJCWVsc2UgaWYgKCBJc1doaXRlU3BhY2UoICpwICkgKQorCQkJeworCQkJCXdoaXRlc3BhY2UgPSB0cnVlOworCQkJCSsrcDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvLyBJZiB3ZSd2ZSBmb3VuZCB3aGl0ZXNwYWNlLCBhZGQgaXQgYmVmb3JlIHRoZQorCQkJCS8vIG5ldyBjaGFyYWN0ZXIuIEFueSB3aGl0ZXNwYWNlIGp1c3QgYmVjb21lcyBhIHNwYWNlLgorCQkJCWlmICggd2hpdGVzcGFjZSApCisJCQkJeworCQkJCQkoKnRleHQpICs9ICcgJzsKKwkJCQkJd2hpdGVzcGFjZSA9IGZhbHNlOworCQkJCX0KKwkJCQlpbnQgbGVuOworCQkJCWNoYXIgY0Fycls0XSA9IHsgMCwgMCwgMCwgMCB9OworCQkJCXAgPSBHZXRDaGFyKCBwLCBjQXJyLCAmbGVuLCBlbmNvZGluZyApOworCQkJCWlmICggbGVuID09IDEgKQorCQkJCQkoKnRleHQpICs9IGNBcnJbMF07CS8vIG1vcmUgZWZmaWNpZW50CisJCQkJZWxzZQorCQkJCQl0ZXh0LT5hcHBlbmQoIGNBcnIsIGxlbiApOworCQkJfQorCQl9CisJfQorCXJldHVybiBwICsgc3RybGVuKCBlbmRUYWcgKTsKK30KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwordm9pZCBUaVhtbERvY3VtZW50OjpTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKQoreworCS8vIFRoZSBiYXNpYyBpc3N1ZSB3aXRoIGEgZG9jdW1lbnQgaXMgdGhhdCB3ZSBkb24ndCBrbm93IHdoYXQgd2UncmUKKwkvLyBzdHJlYW1pbmcuIFJlYWQgc29tZXRoaW5nIHByZXN1bWVkIHRvIGJlIGEgdGFnIChhbmQgaG9wZSksIHRoZW4KKwkvLyBpZGVudGlmeSBpdCwgYW5kIGNhbGwgdGhlIGFwcHJvcHJpYXRlIHN0cmVhbSBtZXRob2Qgb24gdGhlIHRhZy4KKwkvLworCS8vIFRoaXMgInByZS1zdHJlYW1pbmciIHdpbGwgbmV2ZXIgcmVhZCB0aGUgY2xvc2luZyAiPiIgc28gdGhlCisJLy8gc3ViLXRhZyBjYW4gb3JpZW50IGl0c2VsZi4KKworCWlmICggIVN0cmVhbVRvKCBpbiwgJzwnLCB0YWcgKSApIAorCXsKKwkJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX1BBUlNJTkdfRU1QVFksIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJcmV0dXJuOworCX0KKworCXdoaWxlICggaW4tPmdvb2QoKSApCisJeworCQlpbnQgdGFnSW5kZXggPSAoaW50KSB0YWctPmxlbmd0aCgpOworCQl3aGlsZSAoIGluLT5nb29kKCkgJiYgaW4tPnBlZWsoKSAhPSAnPicgKQorCQl7CisJCQlpbnQgYyA9IGluLT5nZXQoKTsKKwkJCWlmICggYyA8PSAwICkKKwkJCXsKKwkJCQlTZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJCWJyZWFrOworCQkJfQorCQkJKCp0YWcpICs9IChjaGFyKSBjOworCQl9CisKKwkJaWYgKCBpbi0+Z29vZCgpICkKKwkJeworCQkJLy8gV2Ugbm93IGhhdmUgc29tZXRoaW5nIHdlIHByZXN1bWUgdG8gYmUgYSBub2RlIG9mIAorCQkJLy8gc29tZSBzb3J0LiBJZGVudGlmeSBpdCwgYW5kIGNhbGwgdGhlIG5vZGUgdG8KKwkJCS8vIGNvbnRpbnVlIHN0cmVhbWluZy4KKwkJCVRpWG1sTm9kZSogbm9kZSA9IElkZW50aWZ5KCB0YWctPmNfc3RyKCkgKyB0YWdJbmRleCwgVElYTUxfREVGQVVMVF9FTkNPRElORyApOworCisJCQlpZiAoIG5vZGUgKQorCQkJeworCQkJCW5vZGUtPlN0cmVhbUluKCBpbiwgdGFnICk7CisJCQkJYm9vbCBpc0VsZW1lbnQgPSBub2RlLT5Ub0VsZW1lbnQoKSAhPSAwOworCQkJCWRlbGV0ZSBub2RlOworCQkJCW5vZGUgPSAwOworCisJCQkJLy8gSWYgdGhpcyBpcyB0aGUgcm9vdCBlbGVtZW50LCB3ZSdyZSBkb25lLiBQYXJzaW5nIHdpbGwgYmUKKwkJCQkvLyBkb25lIGJ5IHRoZSA+PiBvcGVyYXRvci4KKwkJCQlpZiAoIGlzRWxlbWVudCApCisJCQkJeworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJeworCQkJCVNldEVycm9yKCBUSVhNTF9FUlJPUiwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0KKwkvLyBXZSBzaG91bGQgaGF2ZSByZXR1cm5lZCBzb29uZXIuCisJU2V0RXJyb3IoIFRJWE1MX0VSUk9SLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7Cit9CisKKyNlbmRpZgorCitjb25zdCBjaGFyKiBUaVhtbERvY3VtZW50OjpQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogcHJldkRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCUNsZWFyRXJyb3IoKTsKKworCS8vIFBhcnNlIGF3YXksIGF0IHRoZSBkb2N1bWVudCBsZXZlbC4gU2luY2UgYSBkb2N1bWVudAorCS8vIGNvbnRhaW5zIG5vdGhpbmcgYnV0IG90aGVyIHRhZ3MsIG1vc3Qgb2Ygd2hhdCBoYXBwZW5zCisJLy8gaGVyZSBpcyBza2lwcGluZyB3aGl0ZSBzcGFjZS4KKwlpZiAoICFwIHx8ICEqcCApCisJeworCQlTZXRFcnJvciggVElYTUxfRVJST1JfRE9DVU1FTlRfRU1QVFksIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJcmV0dXJuIDA7CisJfQorCisJLy8gTm90ZSB0aGF0LCBmb3IgYSBkb2N1bWVudCwgdGhpcyBuZWVkcyB0byBjb21lCisJLy8gYmVmb3JlIHRoZSB3aGlsZSBzcGFjZSBza2lwLCBzbyB0aGF0IHBhcnNpbmcKKwkvLyBzdGFydHMgZnJvbSB0aGUgcG9pbnRlciB3ZSBhcmUgZ2l2ZW4uCisJbG9jYXRpb24uQ2xlYXIoKTsKKwlpZiAoIHByZXZEYXRhICkKKwl7CisJCWxvY2F0aW9uLnJvdyA9IHByZXZEYXRhLT5jdXJzb3Iucm93OworCQlsb2NhdGlvbi5jb2wgPSBwcmV2RGF0YS0+Y3Vyc29yLmNvbDsKKwl9CisJZWxzZQorCXsKKwkJbG9jYXRpb24ucm93ID0gMDsKKwkJbG9jYXRpb24uY29sID0gMDsKKwl9CisJVGlYbWxQYXJzaW5nRGF0YSBkYXRhKCBwLCBUYWJTaXplKCksIGxvY2F0aW9uLnJvdywgbG9jYXRpb24uY29sICk7CisJbG9jYXRpb24gPSBkYXRhLkN1cnNvcigpOworCisJaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VTktOT1dOICkKKwl7CisJCS8vIENoZWNrIGZvciB0aGUgTWljcm9zb2Z0IFVURi04IGxlYWQgYnl0ZXMuCisJCWNvbnN0IHVuc2lnbmVkIGNoYXIqIHBVID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXA7CisJCWlmICgJKihwVSswKSAmJiAqKHBVKzApID09IFRJWE1MX1VURl9MRUFEXzAKKwkJCSAmJiAqKHBVKzEpICYmICoocFUrMSkgPT0gVElYTUxfVVRGX0xFQURfMQorCQkJICYmICoocFUrMikgJiYgKihwVSsyKSA9PSBUSVhNTF9VVEZfTEVBRF8yICkKKwkJeworCQkJZW5jb2RpbmcgPSBUSVhNTF9FTkNPRElOR19VVEY4OworCQkJdXNlTWljcm9zb2Z0Qk9NID0gdHJ1ZTsKKwkJfQorCX0KKworICAgIHAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKwlpZiAoICFwICkKKwl7CisJCVNldEVycm9yKCBUSVhNTF9FUlJPUl9ET0NVTUVOVF9FTVBUWSwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQlyZXR1cm4gMDsKKwl9CisKKwl3aGlsZSAoIHAgJiYgKnAgKQorCXsKKwkJVGlYbWxOb2RlKiBub2RlID0gSWRlbnRpZnkoIHAsIGVuY29kaW5nICk7CisJCWlmICggbm9kZSApCisJCXsKKwkJCXAgPSBub2RlLT5QYXJzZSggcCwgJmRhdGEsIGVuY29kaW5nICk7CisJCQlMaW5rRW5kQ2hpbGQoIG5vZGUgKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWJyZWFrOworCQl9CisKKwkJLy8gRGlkIHdlIGdldCBlbmNvZGluZyBpbmZvPworCQlpZiAoICAgIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VOS05PV04KKwkJCSAmJiBub2RlLT5Ub0RlY2xhcmF0aW9uKCkgKQorCQl7CisJCQlUaVhtbERlY2xhcmF0aW9uKiBkZWMgPSBub2RlLT5Ub0RlY2xhcmF0aW9uKCk7CisJCQljb25zdCBjaGFyKiBlbmMgPSBkZWMtPkVuY29kaW5nKCk7CisJCQlhc3NlcnQoIGVuYyApOworCisJCQlpZiAoICplbmMgPT0gMCApCisJCQkJZW5jb2RpbmcgPSBUSVhNTF9FTkNPRElOR19VVEY4OworCQkJZWxzZSBpZiAoIFN0cmluZ0VxdWFsKCBlbmMsICJVVEYtOCIsIHRydWUsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKSApCisJCQkJZW5jb2RpbmcgPSBUSVhNTF9FTkNPRElOR19VVEY4OworCQkJZWxzZSBpZiAoIFN0cmluZ0VxdWFsKCBlbmMsICJVVEY4IiwgdHJ1ZSwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApICkKKwkJCQllbmNvZGluZyA9IFRJWE1MX0VOQ09ESU5HX1VURjg7CS8vIGluY29ycmVjdCwgYnV0IGJlIG5pY2UKKwkJCWVsc2UgCisJCQkJZW5jb2RpbmcgPSBUSVhNTF9FTkNPRElOR19MRUdBQ1k7CisJCX0KKworCQlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIGVuY29kaW5nICk7CisJfQorCisJLy8gV2FzIHRoaXMgZW1wdHk/CisJaWYgKCAhZmlyc3RDaGlsZCApIHsKKwkJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX0RPQ1VNRU5UX0VNUFRZLCAwLCAwLCBlbmNvZGluZyApOworCQlyZXR1cm4gMDsKKwl9CisKKwkvLyBBbGwgaXMgd2VsbC4KKwlyZXR1cm4gcDsKK30KKwordm9pZCBUaVhtbERvY3VtZW50OjpTZXRFcnJvciggaW50IGVyciwgY29uc3QgY2hhciogcEVycm9yLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sJCisJLy8gVGhlIGZpcnN0IGVycm9yIGluIGEgY2hhaW4gaXMgbW9yZSBhY2N1cmF0ZSAtIGRvbid0IHNldCBhZ2FpbiEKKwlpZiAoIGVycm9yICkKKwkJcmV0dXJuOworCisJYXNzZXJ0KCBlcnIgPiAwICYmIGVyciA8IFRJWE1MX0VSUk9SX1NUUklOR19DT1VOVCApOworCWVycm9yICAgPSB0cnVlOworCWVycm9ySWQgPSBlcnI7CisJZXJyb3JEZXNjID0gZXJyb3JTdHJpbmdbIGVycm9ySWQgXTsKKworCWVycm9yTG9jYXRpb24uQ2xlYXIoKTsKKwlpZiAoIHBFcnJvciAmJiBkYXRhICkKKwl7CisJCWRhdGEtPlN0YW1wKCBwRXJyb3IsIGVuY29kaW5nICk7CisJCWVycm9yTG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKKwl9Cit9CisKKworVGlYbWxOb2RlKiBUaVhtbE5vZGU6OklkZW50aWZ5KCBjb25zdCBjaGFyKiBwLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwlUaVhtbE5vZGUqIHJldHVybk5vZGUgPSAwOworCisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCWlmKCAhcCB8fCAhKnAgfHwgKnAgIT0gJzwnICkKKwl7CisJCXJldHVybiAwOworCX0KKworCVRpWG1sRG9jdW1lbnQqIGRvYyA9IEdldERvY3VtZW50KCk7CisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCisJaWYgKCAhcCB8fCAhKnAgKQorCXsKKwkJcmV0dXJuIDA7CisJfQorCisJLy8gV2hhdCBpcyB0aGlzIHRoaW5nPyAKKwkvLyAtIEVsZW1lbnRzIHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZSwgYnV0IHhtbCBpcyByZXNlcnZlZC4KKwkvLyAtIENvbW1lbnRzOiA8IS0tCisJLy8gLSBEZWNsZXJhdGlvbjogPD94bWwKKwkvLyAtIEV2ZXJ0aGluZyBlbHNlIGlzIHVua25vd24gdG8gdGlueXhtbC4KKwkvLworCisJY29uc3QgY2hhciogeG1sSGVhZGVyID0geyAiPD94bWwiIH07CisJY29uc3QgY2hhciogY29tbWVudEhlYWRlciA9IHsgIjwhLS0iIH07CisJY29uc3QgY2hhciogZHRkSGVhZGVyID0geyAiPCEiIH07CisJY29uc3QgY2hhciogY2RhdGFIZWFkZXIgPSB7ICI8IVtDREFUQVsiIH07CisKKwlpZiAoIFN0cmluZ0VxdWFsKCBwLCB4bWxIZWFkZXIsIHRydWUsIGVuY29kaW5nICkgKQorCXsKKwkJI2lmZGVmIERFQlVHX1BBUlNFUgorCQkJVElYTUxfTE9HKCAiWE1MIHBhcnNpbmcgRGVjbGFyYXRpb25cbiIgKTsKKwkJI2VuZGlmCisJCXJldHVybk5vZGUgPSBuZXcgVGlYbWxEZWNsYXJhdGlvbigpOworCX0KKwllbHNlIGlmICggU3RyaW5nRXF1YWwoIHAsIGNvbW1lbnRIZWFkZXIsIGZhbHNlLCBlbmNvZGluZyApICkKKwl7CisJCSNpZmRlZiBERUJVR19QQVJTRVIKKwkJCVRJWE1MX0xPRyggIlhNTCBwYXJzaW5nIENvbW1lbnRcbiIgKTsKKwkJI2VuZGlmCisJCXJldHVybk5vZGUgPSBuZXcgVGlYbWxDb21tZW50KCk7CisJfQorCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggcCwgY2RhdGFIZWFkZXIsIGZhbHNlLCBlbmNvZGluZyApICkKKwl7CisJCSNpZmRlZiBERUJVR19QQVJTRVIKKwkJCVRJWE1MX0xPRyggIlhNTCBwYXJzaW5nIENEQVRBXG4iICk7CisJCSNlbmRpZgorCQlUaVhtbFRleHQqIHRleHQgPSBuZXcgVGlYbWxUZXh0KCAiIiApOworCQl0ZXh0LT5TZXRDREFUQSggdHJ1ZSApOworCQlyZXR1cm5Ob2RlID0gdGV4dDsKKwl9CisJZWxzZSBpZiAoIFN0cmluZ0VxdWFsKCBwLCBkdGRIZWFkZXIsIGZhbHNlLCBlbmNvZGluZyApICkKKwl7CisJCSNpZmRlZiBERUJVR19QQVJTRVIKKwkJCVRJWE1MX0xPRyggIlhNTCBwYXJzaW5nIFVua25vd24oMSlcbiIgKTsKKwkJI2VuZGlmCisJCXJldHVybk5vZGUgPSBuZXcgVGlYbWxVbmtub3duKCk7CisJfQorCWVsc2UgaWYgKCAgICBJc0FscGhhKCAqKHArMSksIGVuY29kaW5nICkKKwkJCSAgfHwgKihwKzEpID09ICdfJyApCisJeworCQkjaWZkZWYgREVCVUdfUEFSU0VSCisJCQlUSVhNTF9MT0coICJYTUwgcGFyc2luZyBFbGVtZW50XG4iICk7CisJCSNlbmRpZgorCQlyZXR1cm5Ob2RlID0gbmV3IFRpWG1sRWxlbWVudCggIiIgKTsKKwl9CisJZWxzZQorCXsKKwkJI2lmZGVmIERFQlVHX1BBUlNFUgorCQkJVElYTUxfTE9HKCAiWE1MIHBhcnNpbmcgVW5rbm93bigyKVxuIiApOworCQkjZW5kaWYKKwkJcmV0dXJuTm9kZSA9IG5ldyBUaVhtbFVua25vd24oKTsKKwl9CisKKwlpZiAoIHJldHVybk5vZGUgKQorCXsKKwkJLy8gU2V0IHRoZSBwYXJlbnQsIHNvIGl0IGNhbiByZXBvcnQgZXJyb3JzCisJCXJldHVybk5vZGUtPnBhcmVudCA9IHRoaXM7CisJfQorCWVsc2UKKwl7CisJCWlmICggZG9jICkKKwkJCWRvYy0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX09VVF9PRl9NRU1PUlksIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwl9CisJcmV0dXJuIHJldHVybk5vZGU7Cit9CisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisKK3ZvaWQgVGlYbWxFbGVtZW50OjpTdHJlYW1JbiAoVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcpCit7CisJLy8gV2UncmUgY2FsbGVkIHdpdGggc29tZSBhbW91bnQgb2YgcHJlLXBhcnNpbmcuIFRoYXQgaXMsIHNvbWUgb2YgInRoaXMiCisJLy8gZWxlbWVudCBpcyBpbiAidGFnIi4gR28gYWhlYWQgYW5kIHN0cmVhbSB0byB0aGUgY2xvc2luZyAiPiIKKwl3aGlsZSggaW4tPmdvb2QoKSApCisJeworCQlpbnQgYyA9IGluLT5nZXQoKTsKKwkJaWYgKCBjIDw9IDAgKQorCQl7CisJCQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisJCQlpZiAoIGRvY3VtZW50ICkKKwkJCQlkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX0VNQkVEREVEX05VTEwsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJCXJldHVybjsKKwkJfQorCQkoKnRhZykgKz0gKGNoYXIpIGMgOworCQkKKwkJaWYgKCBjID09ICc+JyApCisJCQlicmVhazsKKwl9CisKKwlpZiAoIHRhZy0+bGVuZ3RoKCkgPCAzICkgcmV0dXJuOworCisJLy8gT2theS4uLmlmIHdlIGFyZSBhICIvPiIgdGFnLCB0aGVuIHdlJ3JlIGRvbmUuIFdlJ3ZlIHJlYWQgYSBjb21wbGV0ZSB0YWcuCisJLy8gSWYgbm90LCBpZGVudGlmeSBhbmQgc3RyZWFtLgorCisJaWYgKCAgICB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMSApID09ICc+JyAKKwkJICYmIHRhZy0+YXQoIHRhZy0+bGVuZ3RoKCkgLSAyICkgPT0gJy8nICkKKwl7CisJCS8vIEFsbCBnb29kIQorCQlyZXR1cm47CisJfQorCWVsc2UgaWYgKCB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMSApID09ICc+JyApCisJeworCQkvLyBUaGVyZSBpcyBtb3JlLiBDb3VsZCBiZToKKwkJLy8JCXRleHQKKwkJLy8JCWNsb3NpbmcgdGFnCisJCS8vCQlhbm90aGVyIG5vZGUuCisJCWZvciAoIDs7ICkKKwkJeworCQkJU3RyZWFtV2hpdGVTcGFjZSggaW4sIHRhZyApOworCisJCQkvLyBEbyB3ZSBoYXZlIHRleHQ/CisJCQlpZiAoIGluLT5nb29kKCkgJiYgaW4tPnBlZWsoKSAhPSAnPCcgKSAKKwkJCXsKKwkJCQkvLyBZZXAsIHRleHQuCisJCQkJVGlYbWxUZXh0IHRleHQoICIiICk7CisJCQkJdGV4dC5TdHJlYW1JbiggaW4sIHRhZyApOworCisJCQkJLy8gV2hhdCBmb2xsb3dzIHRleHQgaXMgYSBjbG9zaW5nIHRhZyBvciBhbm90aGVyIG5vZGUuCisJCQkJLy8gR28gYXJvdW5kIGFnYWluIGFuZCBmaWd1cmUgaXQgb3V0LgorCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQkvLyBXZSBub3cgaGF2ZSBlaXRoZXIgYSBjbG9zaW5nIHRhZy4uLm9yIGFub3RoZXIgbm9kZS4KKwkJCS8vIFdlIHNob3VsZCBiZSBhdCBhICI8IiwgcmVnYXJkbGVzcy4KKwkJCWlmICggIWluLT5nb29kKCkgKSByZXR1cm47CisJCQlhc3NlcnQoIGluLT5wZWVrKCkgPT0gJzwnICk7CisJCQlpbnQgdGFnSW5kZXggPSAoaW50KSB0YWctPmxlbmd0aCgpOworCisJCQlib29sIGNsb3NpbmdUYWcgPSBmYWxzZTsKKwkJCWJvb2wgZmlyc3RDaGFyRm91bmQgPSBmYWxzZTsKKworCQkJZm9yKCA7OyApCisJCQl7CisJCQkJaWYgKCAhaW4tPmdvb2QoKSApCisJCQkJCXJldHVybjsKKworCQkJCWludCBjID0gaW4tPnBlZWsoKTsKKwkJCQlpZiAoIGMgPD0gMCApCisJCQkJeworCQkJCQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisJCQkJCWlmICggZG9jdW1lbnQgKQorCQkJCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCQkJCXJldHVybjsKKwkJCQl9CisJCQkJCisJCQkJaWYgKCBjID09ICc+JyApCisJCQkJCWJyZWFrOworCisJCQkJKnRhZyArPSAoY2hhcikgYzsKKwkJCQlpbi0+Z2V0KCk7CisKKwkJCQlpZiAoICFmaXJzdENoYXJGb3VuZCAmJiBjICE9ICc8JyAmJiAhSXNXaGl0ZVNwYWNlKCBjICkgKQorCQkJCXsKKwkJCQkJZmlyc3RDaGFyRm91bmQgPSB0cnVlOworCQkJCQlpZiAoIGMgPT0gJy8nICkKKwkJCQkJCWNsb3NpbmdUYWcgPSB0cnVlOworCQkJCX0KKwkJCX0KKwkJCS8vIElmIGl0IHdhcyBhIGNsb3NpbmcgdGFnLCB0aGVuIHJlYWQgaW4gdGhlIGNsb3NpbmcgJz4nIHRvIGNsZWFuIHVwIHRoZSBpbnB1dCBzdHJlYW0uCisJCQkvLyBJZiBpdCB3YXMgbm90LCB0aGUgc3RyZWFtaW5nIHdpbGwgYmUgZG9uZSBieSB0aGUgdGFnLgorCQkJaWYgKCBjbG9zaW5nVGFnICkKKwkJCXsKKwkJCQlpZiAoICFpbi0+Z29vZCgpICkKKwkJCQkJcmV0dXJuOworCisJCQkJaW50IGMgPSBpbi0+Z2V0KCk7CisJCQkJaWYgKCBjIDw9IDAgKQorCQkJCXsKKwkJCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCQkJCQlpZiAoIGRvY3VtZW50ICkKKwkJCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJCWFzc2VydCggYyA9PSAnPicgKTsKKwkJCQkqdGFnICs9IChjaGFyKSBjOworCisJCQkJLy8gV2UgYXJlIGRvbmUsIG9uY2Ugd2UndmUgZm91bmQgb3VyIGNsb3NpbmcgdGFnLgorCQkJCXJldHVybjsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvLyBJZiBub3QgYSBjbG9zaW5nIHRhZywgaWQgaXQsIGFuZCBzdHJlYW0uCisJCQkJY29uc3QgY2hhciogdGFnbG9jID0gdGFnLT5jX3N0cigpICsgdGFnSW5kZXg7CisJCQkJVGlYbWxOb2RlKiBub2RlID0gSWRlbnRpZnkoIHRhZ2xvYywgVElYTUxfREVGQVVMVF9FTkNPRElORyApOworCQkJCWlmICggIW5vZGUgKQorCQkJCQlyZXR1cm47CisJCQkJbm9kZS0+U3RyZWFtSW4oIGluLCB0YWcgKTsKKwkJCQlkZWxldGUgbm9kZTsKKwkJCQlub2RlID0gMDsKKworCQkJCS8vIE5vIHJldHVybjogZ28gYXJvdW5kIGZyb20gdGhlIGJlZ2lubmluZzogdGV4dCwgY2xvc2luZyB0YWcsIG9yIG5vZGUuCisJCQl9CisJCX0KKwl9Cit9CisjZW5kaWYKKworY29uc3QgY2hhciogVGlYbWxFbGVtZW50OjpQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCit7CisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKworCWlmICggIXAgfHwgISpwICkKKwl7CisJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1BBUlNJTkdfRUxFTUVOVCwgMCwgMCwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKCBkYXRhICkKKwl7CisJCWRhdGEtPlN0YW1wKCBwLCBlbmNvZGluZyApOworCQlsb2NhdGlvbiA9IGRhdGEtPkN1cnNvcigpOworCX0KKworCWlmICggKnAgIT0gJzwnICkKKwl7CisJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1BBUlNJTkdfRUxFTUVOVCwgcCwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwKzEsIGVuY29kaW5nICk7CisKKwkvLyBSZWFkIHRoZSBuYW1lLgorCWNvbnN0IGNoYXIqIHBFcnIgPSBwOworCisgICAgcCA9IFJlYWROYW1lKCBwLCAmdmFsdWUsIGVuY29kaW5nICk7CisJaWYgKCAhcCB8fCAhKnAgKQorCXsKKwkJaWYgKCBkb2N1bWVudCApCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRkFJTEVEX1RPX1JFQURfRUxFTUVOVF9OQU1FLCBwRXJyLCBkYXRhLCBlbmNvZGluZyApOworCQlyZXR1cm4gMDsKKwl9CisKKyAgICBUSVhNTF9TVFJJTkcgZW5kVGFnICgiPC8iKTsKKwllbmRUYWcgKz0gdmFsdWU7CisJZW5kVGFnICs9ICI+IjsKKworCS8vIENoZWNrIGZvciBhbmQgcmVhZCBhdHRyaWJ1dGVzLiBBbHNvIGxvb2sgZm9yIGFuIGVtcHR5CisJLy8gdGFnIG9yIGFuIGVuZCB0YWcuCisJd2hpbGUgKCBwICYmICpwICkKKwl7CisJCXBFcnIgPSBwOworCQlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIGVuY29kaW5nICk7CisJCWlmICggIXAgfHwgISpwICkKKwkJeworCQkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUkVBRElOR19BVFRSSUJVVEVTLCBwRXJyLCBkYXRhLCBlbmNvZGluZyApOworCQkJcmV0dXJuIDA7CisJCX0KKwkJaWYgKCAqcCA9PSAnLycgKQorCQl7CisJCQkrK3A7CisJCQkvLyBFbXB0eSB0YWcuCisJCQlpZiAoICpwICAhPSAnPicgKQorCQkJeworCQkJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1BBUlNJTkdfRU1QVFksIHAsIGRhdGEsIGVuY29kaW5nICk7CQkKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJCXJldHVybiAocCsxKTsKKwkJfQorCQllbHNlIGlmICggKnAgPT0gJz4nICkKKwkJeworCQkJLy8gRG9uZSB3aXRoIGF0dHJpYnV0ZXMgKGlmIHRoZXJlIHdlcmUgYW55LikKKwkJCS8vIFJlYWQgdGhlIHZhbHVlIC0tIHdoaWNoIGNhbiBpbmNsdWRlIG90aGVyCisJCQkvLyBlbGVtZW50cyAtLSByZWFkIHRoZSBlbmQgdGFnLCBhbmQgcmV0dXJuLgorCQkJKytwOworCQkJcCA9IFJlYWRWYWx1ZSggcCwgZGF0YSwgZW5jb2RpbmcgKTsJCS8vIE5vdGUgdGhpcyBpcyBhbiBFbGVtZW50IG1ldGhvZCwgYW5kIHdpbGwgc2V0IHRoZSBlcnJvciBpZiBvbmUgaGFwcGVucy4KKwkJCWlmICggIXAgfHwgISpwICkKKwkJCQlyZXR1cm4gMDsKKworCQkJLy8gV2Ugc2hvdWxkIGZpbmQgdGhlIGVuZCB0YWcgbm93CisJCQlpZiAoIFN0cmluZ0VxdWFsKCBwLCBlbmRUYWcuY19zdHIoKSwgZmFsc2UsIGVuY29kaW5nICkgKQorCQkJeworCQkJCXAgKz0gZW5kVGFnLmxlbmd0aCgpOworCQkJCXJldHVybiBwOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1JFQURJTkdfRU5EX1RBRywgcCwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCS8vIFRyeSB0byByZWFkIGFuIGF0dHJpYnV0ZToKKwkJCVRpWG1sQXR0cmlidXRlKiBhdHRyaWIgPSBuZXcgVGlYbWxBdHRyaWJ1dGUoKTsKKwkJCWlmICggIWF0dHJpYiApCisJCQl7CisJCQkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfT1VUX09GX01FTU9SWSwgcEVyciwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKworCQkJYXR0cmliLT5TZXREb2N1bWVudCggZG9jdW1lbnQgKTsKKwkJCWNvbnN0IGNoYXIqIHBFcnIgPSBwOworCQkJcCA9IGF0dHJpYi0+UGFyc2UoIHAsIGRhdGEsIGVuY29kaW5nICk7CisKKwkJCWlmICggIXAgfHwgISpwICkKKwkJCXsKKwkJCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VMRU1FTlQsIHBFcnIsIGRhdGEsIGVuY29kaW5nICk7CisJCQkJZGVsZXRlIGF0dHJpYjsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKworCQkJLy8gSGFuZGxlIHRoZSBzdHJhbmdlIGNhc2Ugb2YgZG91YmxlIGF0dHJpYnV0ZXM6CisJCQlUaVhtbEF0dHJpYnV0ZSogbm9kZSA9IGF0dHJpYnV0ZVNldC5GaW5kKCBhdHRyaWItPk5hbWUoKSApOworCQkJaWYgKCBub2RlICkKKwkJCXsKKwkJCQlub2RlLT5TZXRWYWx1ZSggYXR0cmliLT5WYWx1ZSgpICk7CisJCQkJZGVsZXRlIGF0dHJpYjsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKworCQkJYXR0cmlidXRlU2V0LkFkZCggYXR0cmliICk7CisJCX0KKwl9CisJcmV0dXJuIHA7Cit9CisKKworY29uc3QgY2hhciogVGlYbWxFbGVtZW50OjpSZWFkVmFsdWUoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKworCS8vIFJlYWQgaW4gdGV4dCBhbmQgZWxlbWVudHMgaW4gYW55IG9yZGVyLgorCWNvbnN0IGNoYXIqIHBXaXRoV2hpdGVTcGFjZSA9IHA7CisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCisJd2hpbGUgKCBwICYmICpwICkKKwl7CisJCWlmICggKnAgIT0gJzwnICkKKwkJeworCQkJLy8gVGFrZSB3aGF0IHdlIGhhdmUsIG1ha2UgYSB0ZXh0IGVsZW1lbnQuCisJCQlUaVhtbFRleHQqIHRleHROb2RlID0gbmV3IFRpWG1sVGV4dCggIiIgKTsKKworCQkJaWYgKCAhdGV4dE5vZGUgKQorCQkJeworCQkJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX09VVF9PRl9NRU1PUlksIDAsIDAsIGVuY29kaW5nICk7CisJCQkJICAgIHJldHVybiAwOworCQkJfQorCisJCQlpZiAoIFRpWG1sQmFzZTo6SXNXaGl0ZVNwYWNlQ29uZGVuc2VkKCkgKQorCQkJeworCQkJCXAgPSB0ZXh0Tm9kZS0+UGFyc2UoIHAsIGRhdGEsIGVuY29kaW5nICk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLy8gU3BlY2lhbCBjYXNlOiB3ZSB3YW50IHRvIGtlZXAgdGhlIHdoaXRlIHNwYWNlCisJCQkJLy8gc28gdGhhdCBsZWFkaW5nIHNwYWNlcyBhcmVuJ3QgcmVtb3ZlZC4KKwkJCQlwID0gdGV4dE5vZGUtPlBhcnNlKCBwV2l0aFdoaXRlU3BhY2UsIGRhdGEsIGVuY29kaW5nICk7CisJCQl9CisKKwkJCWlmICggIXRleHROb2RlLT5CbGFuaygpICkKKwkJCQlMaW5rRW5kQ2hpbGQoIHRleHROb2RlICk7CisJCQllbHNlCisJCQkJZGVsZXRlIHRleHROb2RlOworCQl9IAorCQllbHNlIAorCQl7CisJCQkvLyBXZSBoaXQgYSAnPCcKKwkJCS8vIEhhdmUgd2UgaGl0IGEgbmV3IGVsZW1lbnQgb3IgYW4gZW5kIHRhZz8gVGhpcyBjb3VsZCBhbHNvIGJlCisJCQkvLyBhIFRpWG1sVGV4dCBpbiB0aGUgIkNEQVRBIiBzdHlsZS4KKwkJCWlmICggU3RyaW5nRXF1YWwoIHAsICI8LyIsIGZhbHNlLCBlbmNvZGluZyApICkKKwkJCXsKKwkJCQlyZXR1cm4gcDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlUaVhtbE5vZGUqIG5vZGUgPSBJZGVudGlmeSggcCwgZW5jb2RpbmcgKTsKKwkJCQlpZiAoIG5vZGUgKQorCQkJCXsKKwkJCQkJcCA9IG5vZGUtPlBhcnNlKCBwLCBkYXRhLCBlbmNvZGluZyApOworCQkJCQlMaW5rRW5kQ2hpbGQoIG5vZGUgKTsKKwkJCQl9CQkJCQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCXJldHVybiAwOworCQkJCX0KKwkJCX0KKwkJfQorCQlwV2l0aFdoaXRlU3BhY2UgPSBwOworCQlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIGVuY29kaW5nICk7CisJfQorCisJaWYgKCAhcCApCisJeworCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9SRUFESU5HX0VMRU1FTlRfVkFMVUUsIDAsIDAsIGVuY29kaW5nICk7CisJfQkKKwlyZXR1cm4gcDsKK30KKworCisjaWZkZWYgVElYTUxfVVNFX1NUTAordm9pZCBUaVhtbFVua25vd246OlN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApCit7CisJd2hpbGUgKCBpbi0+Z29vZCgpICkKKwl7CisJCWludCBjID0gaW4tPmdldCgpOwkKKwkJaWYgKCBjIDw9IDAgKQorCQl7CisJCQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisJCQlpZiAoIGRvY3VtZW50ICkKKwkJCQlkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX0VNQkVEREVEX05VTEwsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJCXJldHVybjsKKwkJfQorCQkoKnRhZykgKz0gKGNoYXIpIGM7CisKKwkJaWYgKCBjID09ICc+JyApCisJCXsKKwkJCS8vIEFsbCBpcyB3ZWxsLgorCQkJcmV0dXJuOwkJCisJCX0KKwl9Cit9CisjZW5kaWYKKworCitjb25zdCBjaGFyKiBUaVhtbFVua25vd246OlBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCisJaWYgKCBkYXRhICkKKwl7CisJCWRhdGEtPlN0YW1wKCBwLCBlbmNvZGluZyApOworCQlsb2NhdGlvbiA9IGRhdGEtPkN1cnNvcigpOworCX0KKwlpZiAoICFwIHx8ICEqcCB8fCAqcCAhPSAnPCcgKQorCXsKKwkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUEFSU0lOR19VTktOT1dOLCBwLCBkYXRhLCBlbmNvZGluZyApOworCQlyZXR1cm4gMDsKKwl9CisJKytwOworICAgIHZhbHVlID0gIiI7CisKKwl3aGlsZSAoIHAgJiYgKnAgJiYgKnAgIT0gJz4nICkKKwl7CisJCXZhbHVlICs9ICpwOworCQkrK3A7CisJfQorCisJaWYgKCAhcCApCisJeworCQlpZiAoIGRvY3VtZW50ICkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX1VOS05PV04sIDAsIDAsIGVuY29kaW5nICk7CisJfQorCWlmICggKnAgPT0gJz4nICkKKwkJcmV0dXJuIHArMTsKKwlyZXR1cm4gcDsKK30KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKK3ZvaWQgVGlYbWxDb21tZW50OjpTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKQoreworCXdoaWxlICggaW4tPmdvb2QoKSApCisJeworCQlpbnQgYyA9IGluLT5nZXQoKTsJCisJCWlmICggYyA8PSAwICkKKwkJeworCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCQkJaWYgKCBkb2N1bWVudCApCisJCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCQlyZXR1cm47CisJCX0KKworCQkoKnRhZykgKz0gKGNoYXIpIGM7CisKKwkJaWYgKCBjID09ICc+JyAKKwkJCSAmJiB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMiApID09ICctJworCQkJICYmIHRhZy0+YXQoIHRhZy0+bGVuZ3RoKCkgLSAzICkgPT0gJy0nICkKKwkJeworCQkJLy8gQWxsIGlzIHdlbGwuCisJCQlyZXR1cm47CQkKKwkJfQorCX0KK30KKyNlbmRpZgorCisKK2NvbnN0IGNoYXIqIFRpWG1sQ29tbWVudDo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKwl2YWx1ZSA9ICIiOworCisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCisJaWYgKCBkYXRhICkKKwl7CisJCWRhdGEtPlN0YW1wKCBwLCBlbmNvZGluZyApOworCQlsb2NhdGlvbiA9IGRhdGEtPkN1cnNvcigpOworCX0KKwljb25zdCBjaGFyKiBzdGFydFRhZyA9ICI8IS0tIjsKKwljb25zdCBjaGFyKiBlbmRUYWcgICA9ICItLT4iOworCisJaWYgKCAhU3RyaW5nRXF1YWwoIHAsIHN0YXJ0VGFnLCBmYWxzZSwgZW5jb2RpbmcgKSApCisJeworCQlkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1BBUlNJTkdfQ09NTUVOVCwgcCwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCXAgKz0gc3RybGVuKCBzdGFydFRhZyApOworCXAgPSBSZWFkVGV4dCggcCwgJnZhbHVlLCBmYWxzZSwgZW5kVGFnLCBmYWxzZSwgZW5jb2RpbmcgKTsKKwlyZXR1cm4gcDsKK30KKworCitjb25zdCBjaGFyKiBUaVhtbEF0dHJpYnV0ZTo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKwlpZiAoICFwIHx8ICEqcCApIHJldHVybiAwOworCisJaW50IHRhYnNpemUgPSA0OworCWlmICggZG9jdW1lbnQgKQorCQl0YWJzaXplID0gZG9jdW1lbnQtPlRhYlNpemUoKTsKKworCWlmICggZGF0YSApCisJeworCQlkYXRhLT5TdGFtcCggcCwgZW5jb2RpbmcgKTsKKwkJbG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKKwl9CisJLy8gUmVhZCB0aGUgbmFtZSwgdGhlICc9JyBhbmQgdGhlIHZhbHVlLgorCWNvbnN0IGNoYXIqIHBFcnIgPSBwOworCXAgPSBSZWFkTmFtZSggcCwgJm5hbWUsIGVuY29kaW5nICk7CisJaWYgKCAhcCB8fCAhKnAgKQorCXsKKwkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUkVBRElOR19BVFRSSUJVVEVTLCBwRXJyLCBkYXRhLCBlbmNvZGluZyApOworCQlyZXR1cm4gMDsKKwl9CisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCWlmICggIXAgfHwgISpwIHx8ICpwICE9ICc9JyApCisJeworCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9SRUFESU5HX0FUVFJJQlVURVMsIHAsIGRhdGEsIGVuY29kaW5nICk7CisJCXJldHVybiAwOworCX0KKworCSsrcDsJLy8gc2tpcCAnPScKKwlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIGVuY29kaW5nICk7CisJaWYgKCAhcCB8fCAhKnAgKQorCXsKKwkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUkVBRElOR19BVFRSSUJVVEVTLCBwLCBkYXRhLCBlbmNvZGluZyApOworCQlyZXR1cm4gMDsKKwl9CisJCisJY29uc3QgY2hhciogZW5kOworCisJaWYgKCAqcCA9PSAnXCcnICkKKwl7CisJCSsrcDsKKwkJZW5kID0gIlwnIjsKKwkJcCA9IFJlYWRUZXh0KCBwLCAmdmFsdWUsIGZhbHNlLCBlbmQsIGZhbHNlLCBlbmNvZGluZyApOworCX0KKwllbHNlIGlmICggKnAgPT0gJyInICkKKwl7CisJCSsrcDsKKwkJZW5kID0gIlwiIjsKKwkJcCA9IFJlYWRUZXh0KCBwLCAmdmFsdWUsIGZhbHNlLCBlbmQsIGZhbHNlLCBlbmNvZGluZyApOworCX0KKwllbHNlCisJeworCQkvLyBBbGwgYXR0cmlidXRlIHZhbHVlcyBzaG91bGQgYmUgaW4gc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMuCisJCS8vIEJ1dCB0aGlzIGlzIHN1Y2ggYSBjb21tb24gZXJyb3IgdGhhdCB0aGUgcGFyc2VyIHdpbGwgdHJ5CisJCS8vIGl0cyBiZXN0LCBldmVuIHdpdGhvdXQgdGhlbS4KKwkJdmFsdWUgPSAiIjsKKwkJd2hpbGUgKCAgICBwICYmICpwCQkJCQkJCQkJCS8vIGV4aXN0ZW5jZQorCQkJCSYmICFJc1doaXRlU3BhY2UoICpwICkgJiYgKnAgIT0gJ1xuJyAmJiAqcCAhPSAnXHInCS8vIHdoaXRlc3BhY2UKKwkJCQkmJiAqcCAhPSAnLycgJiYgKnAgIT0gJz4nICkJCQkJCQkvLyB0YWcgZW5kCisJCXsKKwkJCXZhbHVlICs9ICpwOworCQkJKytwOworCQl9CisJfQorCXJldHVybiBwOworfQorCisjaWZkZWYgVElYTUxfVVNFX1NUTAordm9pZCBUaVhtbFRleHQ6OlN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApCit7CisJaWYgKCBjZGF0YSApCisJeworCQlpbnQgYyA9IGluLT5nZXQoKTsJCisJCWlmICggYyA8PSAwICkKKwkJeworCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCQkJaWYgKCBkb2N1bWVudCApCisJCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCQlyZXR1cm47CisJCX0KKworCQkoKnRhZykgKz0gKGNoYXIpIGM7CisKKwkJaWYgKCBjID09ICc+JyAKKwkJCSAmJiB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMiApID09ICddJworCQkJICYmIHRhZy0+YXQoIHRhZy0+bGVuZ3RoKCkgLSAzICkgPT0gJ10nICkKKwkJeworCQkJLy8gQWxsIGlzIHdlbGwuCisJCQlyZXR1cm47CQkKKwkJfQorCX0KKwllbHNlCisJeworCQl3aGlsZSAoIGluLT5nb29kKCkgKQorCQl7CisJCQlpbnQgYyA9IGluLT5wZWVrKCk7CQorCQkJaWYgKCBjID09ICc8JyApCisJCQkJcmV0dXJuOworCQkJaWYgKCBjIDw9IDAgKQorCQkJeworCQkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKwkJCQlpZiAoIGRvY3VtZW50ICkKKwkJCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQkoKnRhZykgKz0gKGNoYXIpIGM7CisJCQlpbi0+Z2V0KCk7CisJCX0KKwl9Cit9CisjZW5kaWYKKworY29uc3QgY2hhciogVGlYbWxUZXh0OjpQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCit7CisJdmFsdWUgPSAiIjsKKwlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisKKwlpZiAoIGRhdGEgKQorCXsKKwkJZGF0YS0+U3RhbXAoIHAsIGVuY29kaW5nICk7CisJCWxvY2F0aW9uID0gZGF0YS0+Q3Vyc29yKCk7CisJfQorCisJY29uc3QgY2hhciogY29uc3Qgc3RhcnRUYWcgPSAiPCFbQ0RBVEFbIjsKKwljb25zdCBjaGFyKiBjb25zdCBlbmRUYWcgICA9ICJdXT4iOworCisJaWYgKCBjZGF0YSB8fCBTdHJpbmdFcXVhbCggcCwgc3RhcnRUYWcsIGZhbHNlLCBlbmNvZGluZyApICkKKwl7CisJCWNkYXRhID0gdHJ1ZTsKKworCQlpZiAoICFTdHJpbmdFcXVhbCggcCwgc3RhcnRUYWcsIGZhbHNlLCBlbmNvZGluZyApICkKKwkJeworCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0NEQVRBLCBwLCBkYXRhLCBlbmNvZGluZyApOworCQkJcmV0dXJuIDA7CisJCX0KKwkJcCArPSBzdHJsZW4oIHN0YXJ0VGFnICk7CisKKwkJLy8gS2VlcCBhbGwgdGhlIHdoaXRlIHNwYWNlLCBpZ25vcmUgdGhlIGVuY29kaW5nLCBldGMuCisJCXdoaWxlICgJICAgcCAmJiAqcAorCQkJCSYmICFTdHJpbmdFcXVhbCggcCwgZW5kVGFnLCBmYWxzZSwgZW5jb2RpbmcgKQorCQkJICApCisJCXsKKwkJCXZhbHVlICs9ICpwOworCQkJKytwOworCQl9CisKKwkJVElYTUxfU1RSSU5HIGR1bW15OyAKKwkJcCA9IFJlYWRUZXh0KCBwLCAmZHVtbXksIGZhbHNlLCBlbmRUYWcsIGZhbHNlLCBlbmNvZGluZyApOworCQlyZXR1cm4gcDsKKwl9CisJZWxzZQorCXsKKwkJYm9vbCBpZ25vcmVXaGl0ZSA9IHRydWU7CisKKwkJY29uc3QgY2hhciogZW5kID0gIjwiOworCQlwID0gUmVhZFRleHQoIHAsICZ2YWx1ZSwgaWdub3JlV2hpdGUsIGVuZCwgZmFsc2UsIGVuY29kaW5nICk7CisJCWlmICggcCApCisJCQlyZXR1cm4gcC0xOwkvLyBkb24ndCB0cnVuY2F0ZSB0aGUgJzwnCisJCXJldHVybiAwOworCX0KK30KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKK3ZvaWQgVGlYbWxEZWNsYXJhdGlvbjo6U3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICkKK3sKKwl3aGlsZSAoIGluLT5nb29kKCkgKQorCXsKKwkJaW50IGMgPSBpbi0+Z2V0KCk7CisJCWlmICggYyA8PSAwICkKKwkJeworCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCQkJaWYgKCBkb2N1bWVudCApCisJCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCQlyZXR1cm47CisJCX0KKwkJKCp0YWcpICs9IChjaGFyKSBjOworCisJCWlmICggYyA9PSAnPicgKQorCQl7CisJCQkvLyBBbGwgaXMgd2VsbC4KKwkJCXJldHVybjsKKwkJfQorCX0KK30KKyNlbmRpZgorCitjb25zdCBjaGFyKiBUaVhtbERlY2xhcmF0aW9uOjpQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBfZW5jb2RpbmcgKQoreworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgX2VuY29kaW5nICk7CisJLy8gRmluZCB0aGUgYmVnaW5uaW5nLCBmaW5kIHRoZSBlbmQsIGFuZCBsb29rIGZvcgorCS8vIHRoZSBzdHVmZiBpbi1iZXR3ZWVuLgorCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKwlpZiAoICFwIHx8ICEqcCB8fCAhU3RyaW5nRXF1YWwoIHAsICI8P3htbCIsIHRydWUsIF9lbmNvZGluZyApICkKKwl7CisJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1BBUlNJTkdfREVDTEFSQVRJT04sIDAsIDAsIF9lbmNvZGluZyApOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKCBkYXRhICkKKwl7CisJCWRhdGEtPlN0YW1wKCBwLCBfZW5jb2RpbmcgKTsKKwkJbG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKKwl9CisJcCArPSA1OworCisJdmVyc2lvbiA9ICIiOworCWVuY29kaW5nID0gIiI7CisJc3RhbmRhbG9uZSA9ICIiOworCisJd2hpbGUgKCBwICYmICpwICkKKwl7CisJCWlmICggKnAgPT0gJz4nICkKKwkJeworCQkJKytwOworCQkJcmV0dXJuIHA7CisJCX0KKworCQlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIF9lbmNvZGluZyApOworCQlpZiAoIFN0cmluZ0VxdWFsKCBwLCAidmVyc2lvbiIsIHRydWUsIF9lbmNvZGluZyApICkKKwkJeworCQkJVGlYbWxBdHRyaWJ1dGUgYXR0cmliOworCQkJcCA9IGF0dHJpYi5QYXJzZSggcCwgZGF0YSwgX2VuY29kaW5nICk7CQkKKwkJCXZlcnNpb24gPSBhdHRyaWIuVmFsdWUoKTsKKwkJfQorCQllbHNlIGlmICggU3RyaW5nRXF1YWwoIHAsICJlbmNvZGluZyIsIHRydWUsIF9lbmNvZGluZyApICkKKwkJeworCQkJVGlYbWxBdHRyaWJ1dGUgYXR0cmliOworCQkJcCA9IGF0dHJpYi5QYXJzZSggcCwgZGF0YSwgX2VuY29kaW5nICk7CQkKKwkJCWVuY29kaW5nID0gYXR0cmliLlZhbHVlKCk7CisJCX0KKwkJZWxzZSBpZiAoIFN0cmluZ0VxdWFsKCBwLCAic3RhbmRhbG9uZSIsIHRydWUsIF9lbmNvZGluZyApICkKKwkJeworCQkJVGlYbWxBdHRyaWJ1dGUgYXR0cmliOworCQkJcCA9IGF0dHJpYi5QYXJzZSggcCwgZGF0YSwgX2VuY29kaW5nICk7CQkKKwkJCXN0YW5kYWxvbmUgPSBhdHRyaWIuVmFsdWUoKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8vIFJlYWQgb3ZlciB3aGF0ZXZlciBpdCBpcy4KKwkJCXdoaWxlKCBwICYmICpwICYmICpwICE9ICc+JyAmJiAhSXNXaGl0ZVNwYWNlKCAqcCApICkKKwkJCQkrK3A7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKK2Jvb2wgVGlYbWxUZXh0OjpCbGFuaygpIGNvbnN0Cit7CisJZm9yICggdW5zaWduZWQgaT0wOyBpPHZhbHVlLmxlbmd0aCgpOyBpKysgKQorCQlpZiAoICFJc1doaXRlU3BhY2UoIHZhbHVlW2ldICkgKQorCQkJcmV0dXJuIGZhbHNlOworCXJldHVybiB0cnVlOworfQorCmRpZmYgLS1naXQgYS91dGY4dGVzdC5naWYgYi91dGY4dGVzdC5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkxMTA3MAotLS0gL2Rldi9udWxsCisrKyBiL3V0Zjh0ZXN0LmdpZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS91dGY4dGVzdC54bWwgYi91dGY4dGVzdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZkNzFjZQotLS0gL2Rldi9udWxsCisrKyBiL3V0Zjh0ZXN0LnhtbApAQCAtMCwwICsxLDExIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGRvY3VtZW50PgorICAgIDxFbmdsaXNoIG5hbWU9Im5hbWUiIHZhbHVlPSJ2YWx1ZSI+VGhlIHdvcmxkIGhhcyBtYW55IGxhbmd1YWdlczwvRW5nbGlzaD4KKyAgICA8UnVzc2lhbiBuYW1lPSLQvdCw0LfQstCw0L3QuNC1KNC40LzRjykiIHZhbHVlPSLRhtC10L3QvdC+0YHRgtGMIj7QnNC40YAg0LjQvNC10LXRgiDQvNC90L7Qs9C+INGP0LfRi9C60L7QsjwvUnVzc2lhbj4KKyAgICA8U3BhbmlzaCBuYW1lPSJlbCBub21icmUiIHZhbHVlPSJlbCB2YWxvciI+ZWwgbXVuZG8gdGllbmUgbXVjaG9zIGlkaW9tYXM8L1NwYW5pc2g+CisgICAgPFNpbXBsaWZpZWRDaGluZXNlIG5hbWU9IuWQjeWtlyIgdmFsdWU9IuS7t+WAvCI+5LiW55WM5pyJ5b6I5aSa6K+t6KiAPC9TaW1wbGlmaWVkQ2hpbmVzZT4KKyAgICA80KDRg9GB0YHQutC40Lkg0L3QsNC30LLQsNC90LjQtT0ibmFtZSIg0YbQtdC90L3QvtGB0YLRjD0idmFsdWUiPiZsdDvQuNC80LXQtdGCJmd0Ozwv0KDRg9GB0YHQutC40Lk+CisgICAgPOaxieivrSDlkI3lrZc9Im5hbWUiIOS7t+WAvD0idmFsdWUiPuS4lueVjOacieW+iOWkmuivreiogDwv5rGJ6K+tPgorICAgIDxIZWF2eT4iTSYjeDBlQjt0JiMyMzA7bCEiPC9IZWF2eT4KKyAgICA8w6Q+VW1sYXV0IEVsZW1lbnQ8L8OkPgorPC9kb2N1bWVudD4KZGlmZiAtLWdpdCBhL3V0Zjh0ZXN0dmVyaWZ5LnhtbCBiL3V0Zjh0ZXN0dmVyaWZ5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWEzMTlkCi0tLSAvZGV2L251bGwKKysrIGIvdXRmOHRlc3R2ZXJpZnkueG1sCkBAIC0wLDAgKzEsMTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPGRvY3VtZW50PgorICAgIDxFbmdsaXNoIG5hbWU9Im5hbWUiIHZhbHVlPSJ2YWx1ZSI+VGhlIHdvcmxkIGhhcyBtYW55IGxhbmd1YWdlczwvRW5nbGlzaD4KKyAgICA8UnVzc2lhbiBuYW1lPSLQvdCw0LfQstCw0L3QuNC1KNC40LzRjykiIHZhbHVlPSLRhtC10L3QvdC+0YHRgtGMIj7QnNC40YAg0LjQvNC10LXRgiDQvNC90L7Qs9C+INGP0LfRi9C60L7QsjwvUnVzc2lhbj4KKyAgICA8U3BhbmlzaCBuYW1lPSJlbCBub21icmUiIHZhbHVlPSJlbCB2YWxvciI+ZWwgbXVuZG8gdGllbmUgbXVjaG9zIGlkaW9tYXM8L1NwYW5pc2g+CisgICAgPFNpbXBsaWZpZWRDaGluZXNlIG5hbWU9IuWQjeWtlyIgdmFsdWU9IuS7t+WAvCI+5LiW55WM5pyJ5b6I5aSa6K+t6KiAPC9TaW1wbGlmaWVkQ2hpbmVzZT4KKyAgICA80KDRg9GB0YHQutC40Lkg0L3QsNC30LLQsNC90LjQtT0ibmFtZSIg0YbQtdC90L3QvtGB0YLRjD0idmFsdWUiPiZsdDvQuNC80LXQtdGCJmd0Ozwv0KDRg9GB0YHQutC40Lk+CisgICAgPOaxieivrSDlkI3lrZc9Im5hbWUiIOS7t+WAvD0idmFsdWUiPuS4lueVjOacieW+iOWkmuivreiogDwv5rGJ6K+tPgorICAgIDxIZWF2eT4mcXVvdDtNw6t0w6ZsISZxdW90OzwvSGVhdnk+CisgICAgPMOkPlVtbGF1dCBFbGVtZW50PC/DpD4KKzwvZG9jdW1lbnQ+CmRpZmYgLS1naXQgYS94bWx0ZXN0LmNwcCBiL3htbHRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYTM1MGUKLS0tIC9kZXYvbnVsbAorKysgYi94bWx0ZXN0LmNwcApAQCAtMCwwICsxLDEwNTIgQEAKKy8qCisgICBUZXN0IHByb2dyYW0gZm9yIFRpbnlYTUwuCisqLworCisKKyNpbmNsdWRlICJ0aW55eG1sLmgiCisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisJI2luY2x1ZGUgPGlvc3RyZWFtPgorCSNpbmNsdWRlIDxzc3RyZWFtPgorCXVzaW5nIG5hbWVzcGFjZSBzdGQ7CisjZWxzZQorCSNpbmNsdWRlIDxzdGRpby5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKCBXSU4zMiApICYmIGRlZmluZWQoIFRVTkUgKQorCSNpbmNsdWRlIDx3aW5kb3dzLmg+CisJLy8gQXBvbG9naWVzIHRvIG5vbi13aW5kb3dzIHVzZXJzISBCdXQgSSBuZWVkIHNvbWUgZ29vZCB0aW1lcnMgZm9yCisJLy8gcHJvZmlsaW5nLCBhbmQgdGhlc2UgYXJlIHZlcnkgcGxhdGZvcm0gc3BlY2lmaWMuCisJX19pbnQ2NCBzdGFydDsKKwlfX2ludDY0IGVuZDsKKwlfX2ludDY0IGZyZXE7CisjZW5kaWYKKworc3RhdGljIGludCBnUGFzcyA9IDA7CitzdGF0aWMgaW50IGdGYWlsID0gMDsKKworCitib29sIFhtbFRlc3QgKGNvbnN0IGNoYXIqIHRlc3RTdHJpbmcsIGNvbnN0IGNoYXIqIGV4cGVjdGVkLCBjb25zdCBjaGFyKiBmb3VuZCwgYm9vbCBub0VjaG8gPSBmYWxzZSkKK3sKKwlib29sIHBhc3MgPSAhc3RyY21wKCBleHBlY3RlZCwgZm91bmQgKTsKKwlpZiAoIHBhc3MgKQorCQlwcmludGYgKCJbcGFzc10iKTsKKwllbHNlCisJCXByaW50ZiAoIltmYWlsXSIpOworCisJaWYgKCBub0VjaG8gKQorCQlwcmludGYgKCIgJXNcbiIsIHRlc3RTdHJpbmcpOworCWVsc2UKKwkJcHJpbnRmICgiICVzIFslc11bJXNdXG4iLCB0ZXN0U3RyaW5nLCBleHBlY3RlZCwgZm91bmQpOworCisJaWYgKCBwYXNzICkKKwkJKytnUGFzczsKKwllbHNlCisJCSsrZ0ZhaWw7CisJcmV0dXJuIHBhc3M7Cit9CisKKworYm9vbCBYbWxUZXN0KCBjb25zdCBjaGFyKiB0ZXN0U3RyaW5nLCBpbnQgZXhwZWN0ZWQsIGludCBmb3VuZCwgYm9vbCBub0VjaG8gPSBmYWxzZSApCit7CisJYm9vbCBwYXNzID0gKCBleHBlY3RlZCA9PSBmb3VuZCApOworCWlmICggcGFzcyApCisJCXByaW50ZiAoIltwYXNzXSIpOworCWVsc2UKKwkJcHJpbnRmICgiW2ZhaWxdIik7CisKKwlpZiAoIG5vRWNobyApCisJCXByaW50ZiAoIiAlc1xuIiwgdGVzdFN0cmluZyk7CisJZWxzZQorCQlwcmludGYgKCIgJXMgWyVkXVslZF1cbiIsIHRlc3RTdHJpbmcsIGV4cGVjdGVkLCBmb3VuZCk7CisKKwlpZiAoIHBhc3MgKQorCQkrK2dQYXNzOworCWVsc2UKKwkJKytnRmFpbDsKKwlyZXR1cm4gcGFzczsKK30KKworCisvLworLy8gVGhpcyBmaWxlIGRlbW9uc3RyYXRlcyBzb21lIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgVGlueVhtbC4KKy8vIE5vdGUgdGhhdCB0aGUgZXhhbXBsZSBpcyB2ZXJ5IGNvbnRyaXZlZC4gSXQgcHJlc3VtZXMgeW91IGtub3cKKy8vIHdoYXQgaXMgaW4gdGhlIFhNTCBmaWxlLiBCdXQgaXQgZG9lcyB0ZXN0IHRoZSBiYXNpYyBvcGVyYXRpb25zLAorLy8gYW5kIHNob3cgaG93IHRvIGFkZCBhbmQgcmVtb3ZlIG5vZGVzLgorLy8KKworaW50IG1haW4oKQoreworCS8vCisJLy8gV2Ugc3RhcnQgd2l0aCB0aGUgJ2RlbW9TdGFydCcgdG9kbyBsaXN0LiBQcm9jZXNzIGl0LiBBbmQKKwkvLyBzaG91bGQgaG9wZWZ1bGx5IGVuZCB1cCB3aXRoIHRoZSB0b2RvIGxpc3QgYXMgaWxsdXN0cmF0ZWQuCisJLy8KKwljb25zdCBjaGFyKiBkZW1vU3RhcnQgPQorCQkiPD94bWwgdmVyc2lvbj1cIjEuMFwiICBzdGFuZGFsb25lPSdubycgPlxuIgorCQkiPCEtLSBPdXIgdG8gZG8gbGlzdCBkYXRhIC0tPiIKKwkJIjxUb0RvPlxuIgorCQkiPCEtLSBEbyBJIG5lZWQgYSBzZWN1cmUgUERBPyAtLT5cbiIKKwkJIjxJdGVtIHByaW9yaXR5PVwiMVwiIGRpc3RhbmNlPSdjbG9zZSc+IEdvIHRvIHRoZSA8Ym9sZD5Ub3kgc3RvcmUhPC9ib2xkPjwvSXRlbT4iCisJCSI8SXRlbSBwcmlvcml0eT1cIjJcIiBkaXN0YW5jZT0nbm9uZSc+IERvIGJpbGxzICAgPC9JdGVtPiIKKwkJIjxJdGVtIHByaW9yaXR5PVwiMlwiIGRpc3RhbmNlPSdmYXIgJmFtcDsgYmFjayc+IExvb2sgZm9yIEV2aWwgRGlub3NhdXJzISA8L0l0ZW0+IgorCQkiPC9Ub0RvPiI7CisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisJLyoJV2hhdCB0aGUgdG9kbyBsaXN0IHNob3VsZCBsb29rIGxpa2UgYWZ0ZXIgcHJvY2Vzc2luZy4KKwkJSW4gc3RyZWFtIChubyBmb3JtYXR0aW5nKSByZXByZXNlbnRhdGlvbi4gKi8KKwljb25zdCBjaGFyKiBkZW1vRW5kID0KKwkJIjw/eG1sIHZlcnNpb249XCIxLjBcIiBzdGFuZGFsb25lPVwibm9cIiA/PiIKKwkJIjwhLS0gT3VyIHRvIGRvIGxpc3QgZGF0YSAtLT4iCisJCSI8VG9Ebz4iCisJCSI8IS0tIERvIEkgbmVlZCBhIHNlY3VyZSBQREE/IC0tPiIKKwkJIjxJdGVtIHByaW9yaXR5PVwiMlwiIGRpc3RhbmNlPVwiY2xvc2VcIj5HbyB0byB0aGUiCisJCSI8Ym9sZD5Ub3kgc3RvcmUhIgorCQkiPC9ib2xkPiIKKwkJIjwvSXRlbT4iCisJCSI8SXRlbSBwcmlvcml0eT1cIjFcIiBkaXN0YW5jZT1cImZhclwiPlRhbGsgdG86IgorCQkiPE1lZXRpbmcgd2hlcmU9XCJTY2hvb2xcIj4iCisJCSI8QXR0ZW5kZWUgbmFtZT1cIk1hcnBsZVwiIHBvc2l0aW9uPVwidGVhY2hlclwiIC8+IgorCQkiPEF0dGVuZGVlIG5hbWU9XCJWb2VsXCIgcG9zaXRpb249XCJjb3Vuc2Vsb3JcIiAvPiIKKwkJIjwvTWVldGluZz4iCisJCSI8TWVldGluZyB3aGVyZT1cIkx1bmNoXCIgLz4iCisJCSI8L0l0ZW0+IgorCQkiPEl0ZW0gcHJpb3JpdHk9XCIyXCIgZGlzdGFuY2U9XCJoZXJlXCI+RG8gYmlsbHMiCisJCSI8L0l0ZW0+IgorCQkiPC9Ub0RvPiI7CisjZW5kaWYKKworCS8vIFRoZSBleGFtcGxlIHBhcnNlcyBmcm9tIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIChhYm92ZSk6CisJI2lmIGRlZmluZWQoIFdJTjMyICkgJiYgZGVmaW5lZCggVFVORSApCisJUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoIChMQVJHRV9JTlRFR0VSKikgKCZzdGFydCkgKTsKKwkjZW5kaWYJCisKKwl7CisJCS8vIFdyaXRlIHRvIGEgZmlsZSBhbmQgcmVhZCBpdCBiYWNrLCB0byBjaGVjayBmaWxlIEkvTy4KKworCQlUaVhtbERvY3VtZW50IGRvYyggImRlbW90ZXN0LnhtbCIgKTsKKwkJZG9jLlBhcnNlKCBkZW1vU3RhcnQgKTsKKworCQlpZiAoIGRvYy5FcnJvcigpICkKKwkJeworCQkJcHJpbnRmKCAiRXJyb3IgaW4gJXM6ICVzXG4iLCBkb2MuVmFsdWUoKSwgZG9jLkVycm9yRGVzYygpICk7CisJCQlleGl0KCAxICk7CisJCX0KKwkJZG9jLlNhdmVGaWxlKCk7CisJfQorCisJVGlYbWxEb2N1bWVudCBkb2MoICJkZW1vdGVzdC54bWwiICk7CisJYm9vbCBsb2FkT2theSA9IGRvYy5Mb2FkRmlsZSgpOworCisJaWYgKCAhbG9hZE9rYXkgKQorCXsKKwkJcHJpbnRmKCAiQ291bGQgbm90IGxvYWQgdGVzdCBmaWxlICdkZW1vdGVzdC54bWwnLiBFcnJvcj0nJXMnLiBFeGl0aW5nLlxuIiwgZG9jLkVycm9yRGVzYygpICk7CisJCWV4aXQoIDEgKTsKKwl9CisKKwlwcmludGYoICIqKiBEZW1vIGRvYyByZWFkIGZyb20gZGlzazogKiogXG5cbiIgKTsKKwlkb2MuUHJpbnQoIHN0ZG91dCApOworCisJVGlYbWxOb2RlKiBub2RlID0gMDsKKwlUaVhtbEVsZW1lbnQqIHRvZG9FbGVtZW50ID0gMDsKKwlUaVhtbEVsZW1lbnQqIGl0ZW1FbGVtZW50ID0gMDsKKworCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkvLyBBbiBleGFtcGxlIG9mIGNoYW5naW5nIGV4aXN0aW5nIGF0dHJpYnV0ZXMsIGFuZCByZW1vdmluZworCS8vIGFuIGVsZW1lbnQgZnJvbSB0aGUgZG9jdW1lbnQuCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8vIEdldCB0aGUgIlRvRG8iIGVsZW1lbnQuCisJLy8gSXQgaXMgYSBjaGlsZCBvZiB0aGUgZG9jdW1lbnQsIGFuZCBjYW4gYmUgc2VsZWN0ZWQgYnkgbmFtZS4KKwlub2RlID0gZG9jLkZpcnN0Q2hpbGQoICJUb0RvIiApOworCWFzc2VydCggbm9kZSApOworCXRvZG9FbGVtZW50ID0gbm9kZS0+VG9FbGVtZW50KCk7CisJYXNzZXJ0KCB0b2RvRWxlbWVudCAgKTsKKworCS8vIEdvaW5nIHRvIHRoZSB0b3kgc3RvcmUgaXMgbm93IG91ciBzZWNvbmQgcHJpb3JpdHkuLi4KKwkvLyBTbyBzZXQgdGhlICJwcmlvcml0eSIgYXR0cmlidXRlIG9mIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LgorCW5vZGUgPSB0b2RvRWxlbWVudC0+Rmlyc3RDaGlsZEVsZW1lbnQoKTsJLy8gVGhpcyBza2lwcyB0aGUgIlBEQSIgY29tbWVudC4KKwlhc3NlcnQoIG5vZGUgKTsKKwlpdGVtRWxlbWVudCA9IG5vZGUtPlRvRWxlbWVudCgpOworCWFzc2VydCggaXRlbUVsZW1lbnQgICk7CisJaXRlbUVsZW1lbnQtPlNldEF0dHJpYnV0ZSggInByaW9yaXR5IiwgMiApOworCisJLy8gQ2hhbmdlIHRoZSBkaXN0YW5jZSB0byAiZG9pbmcgYmlsbHMiIGZyb20KKwkvLyAibm9uZSIgdG8gImhlcmUiLiBJdCdzIHRoZSBuZXh0IHNpYmxpbmcgZWxlbWVudC4KKwlpdGVtRWxlbWVudCA9IGl0ZW1FbGVtZW50LT5OZXh0U2libGluZ0VsZW1lbnQoKTsKKwlhc3NlcnQoIGl0ZW1FbGVtZW50ICk7CisJaXRlbUVsZW1lbnQtPlNldEF0dHJpYnV0ZSggImRpc3RhbmNlIiwgImhlcmUiICk7CisKKwkvLyBSZW1vdmUgdGhlICJMb29rIGZvciBFdmlsIERpbm9zYXVycyEiIGl0ZW0uCisJLy8gSXQgaXMgMSBtb3JlIHNpYmxpbmcgYXdheS4gV2UgYXNrIHRoZSBwYXJlbnQgdG8gcmVtb3ZlCisJLy8gYSBwYXJ0aWN1bGFyIGNoaWxkLgorCWl0ZW1FbGVtZW50ID0gaXRlbUVsZW1lbnQtPk5leHRTaWJsaW5nRWxlbWVudCgpOworCXRvZG9FbGVtZW50LT5SZW1vdmVDaGlsZCggaXRlbUVsZW1lbnQgKTsKKworCWl0ZW1FbGVtZW50ID0gMDsKKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJLy8gV2hhdCBmb2xsb3dzIGlzIGFuIGV4YW1wbGUgb2YgY3JlYXRlZCBlbGVtZW50cyBhbmQgdGV4dAorCS8vIG5vZGVzIGFuZCBhZGRpbmcgdGhlbSB0byB0aGUgZG9jdW1lbnQuCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8vIEFkZCBzb21lIG1lZXRpbmdzLgorCVRpWG1sRWxlbWVudCBpdGVtKCAiSXRlbSIgKTsKKwlpdGVtLlNldEF0dHJpYnV0ZSggInByaW9yaXR5IiwgIjEiICk7CisJaXRlbS5TZXRBdHRyaWJ1dGUoICJkaXN0YW5jZSIsICJmYXIiICk7CisKKwlUaVhtbFRleHQgdGV4dCggIlRhbGsgdG86IiApOworCisJVGlYbWxFbGVtZW50IG1lZXRpbmcxKCAiTWVldGluZyIgKTsKKwltZWV0aW5nMS5TZXRBdHRyaWJ1dGUoICJ3aGVyZSIsICJTY2hvb2wiICk7CisKKwlUaVhtbEVsZW1lbnQgbWVldGluZzIoICJNZWV0aW5nIiApOworCW1lZXRpbmcyLlNldEF0dHJpYnV0ZSggIndoZXJlIiwgIkx1bmNoIiApOworCisJVGlYbWxFbGVtZW50IGF0dGVuZGVlMSggIkF0dGVuZGVlIiApOworCWF0dGVuZGVlMS5TZXRBdHRyaWJ1dGUoICJuYW1lIiwgIk1hcnBsZSIgKTsKKwlhdHRlbmRlZTEuU2V0QXR0cmlidXRlKCAicG9zaXRpb24iLCAidGVhY2hlciIgKTsKKworCVRpWG1sRWxlbWVudCBhdHRlbmRlZTIoICJBdHRlbmRlZSIgKTsKKwlhdHRlbmRlZTIuU2V0QXR0cmlidXRlKCAibmFtZSIsICJWb2VsIiApOworCWF0dGVuZGVlMi5TZXRBdHRyaWJ1dGUoICJwb3NpdGlvbiIsICJjb3Vuc2Vsb3IiICk7CisKKwkvLyBBc3NlbWJsZSB0aGUgbm9kZXMgd2UndmUgY3JlYXRlZDoKKwltZWV0aW5nMS5JbnNlcnRFbmRDaGlsZCggYXR0ZW5kZWUxICk7CisJbWVldGluZzEuSW5zZXJ0RW5kQ2hpbGQoIGF0dGVuZGVlMiApOworCisJaXRlbS5JbnNlcnRFbmRDaGlsZCggdGV4dCApOworCWl0ZW0uSW5zZXJ0RW5kQ2hpbGQoIG1lZXRpbmcxICk7CisJaXRlbS5JbnNlcnRFbmRDaGlsZCggbWVldGluZzIgKTsKKworCS8vIEFuZCBhZGQgdGhlIG5vZGUgdG8gdGhlIGV4aXN0aW5nIGxpc3QgYWZ0ZXIgdGhlIGZpcnN0IGNoaWxkLgorCW5vZGUgPSB0b2RvRWxlbWVudC0+Rmlyc3RDaGlsZCggIkl0ZW0iICk7CisJYXNzZXJ0KCBub2RlICk7CisJaXRlbUVsZW1lbnQgPSBub2RlLT5Ub0VsZW1lbnQoKTsKKwlhc3NlcnQoIGl0ZW1FbGVtZW50ICk7CisKKwl0b2RvRWxlbWVudC0+SW5zZXJ0QWZ0ZXJDaGlsZCggaXRlbUVsZW1lbnQsIGl0ZW0gKTsKKworCXByaW50ZiggIlxuKiogRGVtbyBkb2MgcHJvY2Vzc2VkOiAqKiBcblxuIiApOworCWRvYy5QcmludCggc3Rkb3V0ICk7CisKKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwlwcmludGYoICIqKiBEZW1vIGRvYyBwcm9jZXNzZWQgdG8gc3RyZWFtOiAqKiBcblxuIiApOworCWNvdXQgPDwgZG9jIDw8IGVuZGwgPDwgZW5kbDsKKyNlbmRpZgorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkvLyBEaWZmZXJlbnQgdGVzdHMuLi5kbyB3ZSBoYXZlIHdoYXQgd2UgZXhwZWN0PworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlpbnQgY291bnQgPSAwOworCVRpWG1sRWxlbWVudCoJZWxlbWVudDsKKworCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCWNvdXQgPDwgIioqIEJhc2ljIHN0cnVjdHVyZS4gKipcbiI7CisJb3N0cmluZ3N0cmVhbSBvdXRwdXRTdHJlYW0oIG9zdHJpbmdzdHJlYW06Om91dCApOworCW91dHB1dFN0cmVhbSA8PCBkb2M7CisJWG1sVGVzdCggIk91dHB1dCBzdHJlYW0gY29ycmVjdC4iLAlzdHJpbmcoIGRlbW9FbmQgKS5jX3N0cigpLAorCQkJCQkJCQkJCW91dHB1dFN0cmVhbS5zdHIoKS5jX3N0cigpLCB0cnVlICk7CisjZW5kaWYKKworCW5vZGUgPSBkb2MuUm9vdEVsZW1lbnQoKTsKKwlYbWxUZXN0KCAiUm9vdCBlbGVtZW50IGV4aXN0cy4iLCB0cnVlLCAoIG5vZGUgIT0gMCAmJiBub2RlLT5Ub0VsZW1lbnQoKSApICk7CisJWG1sVGVzdCAoICJSb290IGVsZW1lbnQgdmFsdWUgaXMgJ1RvRG8nLiIsICJUb0RvIiwgIG5vZGUtPlZhbHVlKCkpOworCisJbm9kZSA9IG5vZGUtPkZpcnN0Q2hpbGQoKTsKKwlYbWxUZXN0KCAiRmlyc3QgY2hpbGQgZXhpc3RzICYgaXMgYSBjb21tZW50LiIsIHRydWUsICggbm9kZSAhPSAwICYmIG5vZGUtPlRvQ29tbWVudCgpICkgKTsKKwlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKTsKKwlYbWxUZXN0KCAiU2libGluZyBlbGVtZW50IGV4aXN0cyAmIGlzIGFuIGVsZW1lbnQuIiwgdHJ1ZSwgKCBub2RlICE9IDAgJiYgbm9kZS0+VG9FbGVtZW50KCkgKSApOworCVhtbFRlc3QgKCAiVmFsdWUgaXMgJ0l0ZW0nLiIsICJJdGVtIiwgbm9kZS0+VmFsdWUoKSApOworCisJbm9kZSA9IG5vZGUtPkZpcnN0Q2hpbGQoKTsKKwlYbWxUZXN0ICggIkZpcnN0IGNoaWxkIGV4aXN0cy4iLCB0cnVlLCAoIG5vZGUgIT0gMCAmJiBub2RlLT5Ub1RleHQoKSApICk7CisJWG1sVGVzdCAoICJWYWx1ZSBpcyAnR28gdG8gdGhlJy4iLCAiR28gdG8gdGhlIiwgbm9kZS0+VmFsdWUoKSApOworCisKKwkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwlwcmludGYgKCJcbioqIEl0ZXJhdG9ycy4gKipcbiIpOworCisJLy8gV2FsayBhbGwgdGhlIHRvcCBsZXZlbCBub2RlcyBvZiB0aGUgZG9jdW1lbnQuCisJY291bnQgPSAwOworCWZvciggbm9kZSA9IGRvYy5GaXJzdENoaWxkKCk7CisJCSBub2RlOworCQkgbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCkgKQorCXsKKwkJY291bnQrKzsKKwl9CisJWG1sVGVzdCggIlRvcCBsZXZlbCBub2RlcywgdXNpbmcgRmlyc3QgLyBOZXh0LiIsIDMsIGNvdW50ICk7CisKKwljb3VudCA9IDA7CisJZm9yKCBub2RlID0gZG9jLkxhc3RDaGlsZCgpOworCQkgbm9kZTsKKwkJIG5vZGUgPSBub2RlLT5QcmV2aW91c1NpYmxpbmcoKSApCisJeworCQljb3VudCsrOworCX0KKwlYbWxUZXN0KCAiVG9wIGxldmVsIG5vZGVzLCB1c2luZyBMYXN0IC8gUHJldmlvdXMuIiwgMywgY291bnQgKTsKKworCS8vIFdhbGsgYWxsIHRoZSB0b3AgbGV2ZWwgbm9kZXMgb2YgdGhlIGRvY3VtZW50LAorCS8vIHVzaW5nIGEgZGlmZmVyZW50IHN5bnRheC4KKwljb3VudCA9IDA7CisJZm9yKCBub2RlID0gZG9jLkl0ZXJhdGVDaGlsZHJlbiggMCApOworCQkgbm9kZTsKKwkJIG5vZGUgPSBkb2MuSXRlcmF0ZUNoaWxkcmVuKCBub2RlICkgKQorCXsKKwkJY291bnQrKzsKKwl9CisJWG1sVGVzdCggIlRvcCBsZXZlbCBub2RlcywgdXNpbmcgSXRlcmF0ZUNoaWxkcmVuLiIsIDMsIGNvdW50ICk7CisKKwkvLyBXYWxrIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBub2RlLgorCWNvdW50ID0gMDsKKwlmb3IoIGVsZW1lbnQgPSB0b2RvRWxlbWVudC0+Rmlyc3RDaGlsZEVsZW1lbnQoKTsKKwkJIGVsZW1lbnQ7CisJCSBlbGVtZW50ID0gZWxlbWVudC0+TmV4dFNpYmxpbmdFbGVtZW50KCkgKQorCXsKKwkJY291bnQrKzsKKwl9CisJWG1sVGVzdCggIkNoaWxkcmVuIG9mIHRoZSAnVG9EbycgZWxlbWVudCwgdXNpbmcgRmlyc3QgLyBOZXh0LiIsCisJCTMsIGNvdW50ICk7CisKKwkvLyBXYWxrIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBub2RlIGJ5IHZhbHVlLgorCWNvdW50ID0gMDsKKwlmb3IoIG5vZGUgPSB0b2RvRWxlbWVudC0+Rmlyc3RDaGlsZCggIkl0ZW0iICk7CisJCSBub2RlOworCQkgbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCAiSXRlbSIgKSApCisJeworCQljb3VudCsrOworCX0KKwlYbWxUZXN0KCAiJ0l0ZW0nIGNoaWxkcmVuIG9mIHRoZSAnVG9EbycgZWxlbWVudCwgdXNpbmcgRmlyc3QvTmV4dC4iLCAzLCBjb3VudCApOworCisJY291bnQgPSAwOworCWZvciggbm9kZSA9IHRvZG9FbGVtZW50LT5MYXN0Q2hpbGQoICJJdGVtIiApOworCQkgbm9kZTsKKwkJIG5vZGUgPSBub2RlLT5QcmV2aW91c1NpYmxpbmcoICJJdGVtIiApICkKKwl7CisJCWNvdW50Kys7CisJfQorCVhtbFRlc3QoICInSXRlbScgY2hpbGRyZW4gb2YgdGhlICdUb0RvJyBlbGVtZW50LCB1c2luZyBMYXN0L1ByZXZpb3VzLiIsIDMsIGNvdW50ICk7CisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisJeworCQljb3V0IDw8ICJcbioqIFBhcnNpbmcuICoqXG4iOworCQlpc3RyaW5nc3RyZWFtIHBhcnNlMCggIjxFbGVtZW50MCBhdHRyaWJ1dGUwPSdmb28wJyBhdHRyaWJ1dGUxPSBub3F1b3RlcyBhdHRyaWJ1dGUyID0gJyZndDsnIC8+IiApOworCQlUaVhtbEVsZW1lbnQgZWxlbWVudDAoICJkZWZhdWx0IiApOworCQlwYXJzZTAgPj4gZWxlbWVudDA7CisKKwkJWG1sVGVzdCAoICJFbGVtZW50IHBhcnNlZCwgdmFsdWUgaXMgJ0VsZW1lbnQwJy4iLCAiRWxlbWVudDAiLCBlbGVtZW50MC5WYWx1ZSgpICk7CisJCVhtbFRlc3QgKCAiUmVhZHMgYXR0cmlidXRlICdhdHRyaWJ1dGUwPVwiZm9vMFwiJy4iLCAiZm9vMCIsIGVsZW1lbnQwLkF0dHJpYnV0ZSggImF0dHJpYnV0ZTAiICkpOworCQlYbWxUZXN0ICggIlJlYWRzIGluY29ycmVjdGx5IGZvcm1hdHRlZCAnYXR0cmlidXRlMT1ub3F1b3RlcycuIiwgIm5vcXVvdGVzIiwgZWxlbWVudDAuQXR0cmlidXRlKCAiYXR0cmlidXRlMSIgKSApOworCQlYbWxUZXN0ICggIlJlYWQgYXR0cmlidXRlIHdpdGggZW50aXR5IHZhbHVlICc+Jy4iLCAiPiIsIGVsZW1lbnQwLkF0dHJpYnV0ZSggImF0dHJpYnV0ZTIiICkgKTsKKwl9CisjZW5kaWYKKworCXsKKwkJY29uc3QgY2hhciogZXJyb3IgPQkiPD94bWwgdmVyc2lvbj1cIjEuMFwiIHN0YW5kYWxvbmU9XCJub1wiID8+XG4iCisJCQkJCQkJIjxwYXNzYWdlcyBjb3VudD1cIjAwNlwiIGZvcm1hdHZlcnNpb249XCIyMDAyMDYyMFwiPlxuIgorCQkJCQkJCSIgICAgPHdyb25nIGVycm9yPlxuIgorCQkJCQkJCSI8L3Bhc3NhZ2VzPiI7CisKKyAgICAgICAgVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggZXJyb3IgKTsKKwkJWG1sVGVzdCggIkVycm9yIHJvdyIsIGRvYy5FcnJvclJvdygpLCAzICk7CisJCVhtbFRlc3QoICJFcnJvciBjb2x1bW4iLCBkb2MuRXJyb3JDb2woKSwgMTcgKTsKKwkJLy9wcmludGYoICJlcnJvcj0lZCBpZD0nJXMnIHJvdyAlZCBjb2wlZFxuIiwgKGludCkgZG9jLkVycm9yKCksIGRvYy5FcnJvckRlc2MoKSwgZG9jLkVycm9yUm93KCkrMSwgZG9jLkVycm9yQ29sKCkgKyAxICk7CisKKwl9CisJeworCQljb25zdCBjaGFyKiBzdHIgPQkiXHQ8P3htbCB2ZXJzaW9uPVwiMS4wXCIgc3RhbmRhbG9uZT1cIm5vXCIgPz5cdDxyb29tIGRvb3JzPScyJz5cbiIKKwkJCQkJCQkiICA8IS0tIFNpbGx5IGV4YW1wbGUgLS0+XG4iCisJCQkJCQkJIiAgICA8ZG9vciB3YWxsPSdub3J0aCc+QSBncmVhdCBkb29yITwvZG9vcj5cbiIKKwkJCQkJCQkiXHQ8ZG9vciB3YWxsPSdlYXN0Jy8+IgorCQkJCQkJCSI8L3Jvb20+IjsKKworICAgICAgICBUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlBhcnNlKCBzdHIgKTsKKworCQlUaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZkb2MgKTsKKwkJVGlYbWxIYW5kbGUgcm9vbUhhbmRsZSA9IGRvY0hhbmRsZS5GaXJzdENoaWxkRWxlbWVudCggInJvb20iICk7CisJCVRpWG1sSGFuZGxlIGNvbW1lbnRIYW5kbGUgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZEVsZW1lbnQoICJyb29tIiApLkZpcnN0Q2hpbGQoKTsKKwkJVGlYbWxIYW5kbGUgdGV4dEhhbmRsZSA9IGRvY0hhbmRsZS5GaXJzdENoaWxkRWxlbWVudCggInJvb20iICkuQ2hpbGRFbGVtZW50KCAiZG9vciIsIDAgKS5GaXJzdENoaWxkKCk7CisJCVRpWG1sSGFuZGxlIGRvb3IwSGFuZGxlID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGRFbGVtZW50KCAicm9vbSIgKS5DaGlsZEVsZW1lbnQoIDAgKTsKKwkJVGlYbWxIYW5kbGUgZG9vcjFIYW5kbGUgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZEVsZW1lbnQoICJyb29tIiApLkNoaWxkRWxlbWVudCggMSApOworCisJCWFzc2VydCggZG9jSGFuZGxlLk5vZGUoKSApOworCQlhc3NlcnQoIHJvb21IYW5kbGUuRWxlbWVudCgpICk7CisJCWFzc2VydCggY29tbWVudEhhbmRsZS5Ob2RlKCkgKTsKKwkJYXNzZXJ0KCB0ZXh0SGFuZGxlLlRleHQoKSApOworCQlhc3NlcnQoIGRvb3IwSGFuZGxlLkVsZW1lbnQoKSApOworCQlhc3NlcnQoIGRvb3IxSGFuZGxlLkVsZW1lbnQoKSApOworCisJCVRpWG1sRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uID0gZG9jLkZpcnN0Q2hpbGQoKS0+VG9EZWNsYXJhdGlvbigpOworCQlhc3NlcnQoIGRlY2xhcmF0aW9uICk7CisJCVRpWG1sRWxlbWVudCogcm9vbSA9IHJvb21IYW5kbGUuRWxlbWVudCgpOworCQlhc3NlcnQoIHJvb20gKTsKKwkJVGlYbWxBdHRyaWJ1dGUqIGRvb3JzID0gcm9vbS0+Rmlyc3RBdHRyaWJ1dGUoKTsKKwkJYXNzZXJ0KCBkb29ycyApOworCQlUaVhtbFRleHQqIHRleHQgPSB0ZXh0SGFuZGxlLlRleHQoKTsKKwkJVGlYbWxDb21tZW50KiBjb21tZW50ID0gY29tbWVudEhhbmRsZS5Ob2RlKCktPlRvQ29tbWVudCgpOworCQlhc3NlcnQoIGNvbW1lbnQgKTsKKwkJVGlYbWxFbGVtZW50KiBkb29yMCA9IGRvb3IwSGFuZGxlLkVsZW1lbnQoKTsKKwkJVGlYbWxFbGVtZW50KiBkb29yMSA9IGRvb3IxSGFuZGxlLkVsZW1lbnQoKTsKKworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IERlY2xhcmF0aW9uIHJvdyIsIGRlY2xhcmF0aW9uLT5Sb3coKSwgMSApOworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IERlY2xhcmF0aW9uIGNvbCIsIGRlY2xhcmF0aW9uLT5Db2x1bW4oKSwgNSApOworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IHJvb20gcm93Iiwgcm9vbS0+Um93KCksIDEgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiByb29tIGNvbCIsIHJvb20tPkNvbHVtbigpLCA0NSApOworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IGRvb3JzIHJvdyIsIGRvb3JzLT5Sb3coKSwgMSApOworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IGRvb3JzIGNvbCIsIGRvb3JzLT5Db2x1bW4oKSwgNTEgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBDb21tZW50IHJvdyIsIGNvbW1lbnQtPlJvdygpLCAyICk7CisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogQ29tbWVudCBjb2wiLCBjb21tZW50LT5Db2x1bW4oKSwgMyApOworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IHRleHQgcm93IiwgdGV4dC0+Um93KCksIDMgKTsgCisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogdGV4dCBjb2wiLCB0ZXh0LT5Db2x1bW4oKSwgMjQgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBkb29yMCByb3ciLCBkb29yMC0+Um93KCksIDMgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBkb29yMCBjb2wiLCBkb29yMC0+Q29sdW1uKCksIDUgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBkb29yMSByb3ciLCBkb29yMS0+Um93KCksIDQgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBkb29yMSBjb2wiLCBkb29yMS0+Q29sdW1uKCksIDUgKTsKKwl9CisJeworCQljb25zdCBjaGFyKiBzdHIgPQkiXHQ8P3htbCB2ZXJzaW9uPVwiMS4wXCIgc3RhbmRhbG9uZT1cIm5vXCIgPz5cdDxyb29tIGRvb3JzPScyJz5cbiIKKwkJCQkJCQkiPC9yb29tPiI7CisKKyAgICAgICAgVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5TZXRUYWJTaXplKCA4ICk7CisJCWRvYy5QYXJzZSggc3RyICk7CisKKwkJVGlYbWxIYW5kbGUgZG9jSGFuZGxlKCAmZG9jICk7CisJCVRpWG1sSGFuZGxlIHJvb21IYW5kbGUgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZEVsZW1lbnQoICJyb29tIiApOworCisJCWFzc2VydCggZG9jSGFuZGxlLk5vZGUoKSApOworCQlhc3NlcnQoIHJvb21IYW5kbGUuRWxlbWVudCgpICk7CisKKwkJVGlYbWxFbGVtZW50KiByb29tID0gcm9vbUhhbmRsZS5FbGVtZW50KCk7CisJCWFzc2VydCggcm9vbSApOworCQlUaVhtbEF0dHJpYnV0ZSogZG9vcnMgPSByb29tLT5GaXJzdEF0dHJpYnV0ZSgpOworCQlhc3NlcnQoIGRvb3JzICk7CisKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBUYWIgODogcm9vbSByb3ciLCByb29tLT5Sb3coKSwgMSApOworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IFRhYiA4OiByb29tIGNvbCIsIHJvb20tPkNvbHVtbigpLCA0OSApOworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IFRhYiA4OiBkb29ycyByb3ciLCBkb29ycy0+Um93KCksIDEgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBUYWIgODogZG9vcnMgY29sIiwgZG9vcnMtPkNvbHVtbigpLCA1NSApOworCX0KKworCXsKKwkJY29uc3QgY2hhciogc3RyID0gIjxkb2MgYXR0cjA9JzEnIGF0dHIxPScyLjAnIGF0dHIyPSdmb28nIC8+IjsKKworCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlBhcnNlKCBzdHIgKTsKKworCQlUaVhtbEVsZW1lbnQqIGVsZSA9IGRvYy5GaXJzdENoaWxkRWxlbWVudCgpOworCisJCWludCBpVmFsLCByZXN1bHQ7CisJCWRvdWJsZSBkVmFsOworCisJCXJlc3VsdCA9IGVsZS0+UXVlcnlEb3VibGVBdHRyaWJ1dGUoICJhdHRyMCIsICZkVmFsICk7CisJCVhtbFRlc3QoICJRdWVyeSBhdHRyaWJ1dGU6IGludCBhcyBkb3VibGUiLCByZXN1bHQsIFRJWE1MX1NVQ0NFU1MgKTsKKwkJWG1sVGVzdCggIlF1ZXJ5IGF0dHJpYnV0ZTogaW50IGFzIGRvdWJsZSIsIChpbnQpZFZhbCwgMSApOworCQlyZXN1bHQgPSBlbGUtPlF1ZXJ5RG91YmxlQXR0cmlidXRlKCAiYXR0cjEiLCAmZFZhbCApOworCQlYbWxUZXN0KCAiUXVlcnkgYXR0cmlidXRlOiBkb3VibGUgYXMgZG91YmxlIiwgKGludClkVmFsLCAyICk7CisJCXJlc3VsdCA9IGVsZS0+UXVlcnlJbnRBdHRyaWJ1dGUoICJhdHRyMSIsICZpVmFsICk7CisJCVhtbFRlc3QoICJRdWVyeSBhdHRyaWJ1dGU6IGRvdWJsZSBhcyBpbnQiLCByZXN1bHQsIFRJWE1MX1NVQ0NFU1MgKTsKKwkJWG1sVGVzdCggIlF1ZXJ5IGF0dHJpYnV0ZTogZG91YmxlIGFzIGludCIsIGlWYWwsIDIgKTsKKwkJcmVzdWx0ID0gZWxlLT5RdWVyeUludEF0dHJpYnV0ZSggImF0dHIyIiwgJmlWYWwgKTsKKwkJWG1sVGVzdCggIlF1ZXJ5IGF0dHJpYnV0ZTogbm90IGEgbnVtYmVyIiwgcmVzdWx0LCBUSVhNTF9XUk9OR19UWVBFICk7CisJCXJlc3VsdCA9IGVsZS0+UXVlcnlJbnRBdHRyaWJ1dGUoICJiYXIiLCAmaVZhbCApOworCQlYbWxUZXN0KCAiUXVlcnkgYXR0cmlidXRlOiBkb2VzIG5vdCBleGlzdCIsIHJlc3VsdCwgVElYTUxfTk9fQVRUUklCVVRFICk7CisJfQorCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCXsKKwkJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisJCWNvdXQgPDwgIlxuKiogU3RyZWFtaW5nLiAqKlxuIjsKKworCQkvLyBSb3VuZCB0cmlwIGNoZWNrOiBzdHJlYW0gaW4sIHRoZW4gc3RyZWFtIGJhY2sgb3V0IHRvIHZlcmlmeS4gVGhlIHN0cmVhbQorCQkvLyBvdXQgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkLCBhYm92ZS4gV2UgdXNlIHRoZSBvdXRwdXQKKworCQlpc3RyaW5nc3RyZWFtIGlucHV0U3RyaW5nU3RyZWFtKCBvdXRwdXRTdHJlYW0uc3RyKCkgKTsKKwkJVGlYbWxEb2N1bWVudCBkb2N1bWVudDA7CisKKwkJaW5wdXRTdHJpbmdTdHJlYW0gPj4gZG9jdW1lbnQwOworCisJCW9zdHJpbmdzdHJlYW0gb3V0cHV0U3RyZWFtMCggb3N0cmluZ3N0cmVhbTo6b3V0ICk7CisJCW91dHB1dFN0cmVhbTAgPDwgZG9jdW1lbnQwOworCisJCVhtbFRlc3QoICJTdHJlYW0gcm91bmQgdHJpcCBjb3JyZWN0LiIsCXN0cmluZyggZGVtb0VuZCApLmNfc3RyKCksIAorCQkJCQkJCQkJCQkJb3V0cHV0U3RyZWFtMC5zdHIoKS5jX3N0cigpLCB0cnVlICk7CisKKwkJc3RkOjpzdHJpbmcgc3RyOworCQlzdHIgPDwgZG9jdW1lbnQwOworCisJCVhtbFRlc3QoICJTdHJpbmcgcHJpbnRpbmcgY29ycmVjdC4iLCBzdHJpbmcoIGRlbW9FbmQgKS5jX3N0cigpLCAKKwkJCQkJCQkJCQkJIHN0ci5jX3N0cigpLCB0cnVlICk7CisJfQorI2VuZGlmCisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8vIFVURi04IHRlc3RpbmcuIEl0IGlzIGltcG9ydGFudCB0byB0ZXN0OgorCS8vCTEuIE1ha2luZyBzdXJlIG5hbWUsIHZhbHVlLCBhbmQgdGV4dCByZWFkIGNvcnJlY3RseQorCS8vCTIuIFJvdywgQ29sIGZ1bmN0aW9uYWxpdHkKKwkvLwkzLiBDb3JyZWN0IG91dHB1dAorCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHJpbnRmICgiXG4qKiBVVEYtOCAqKlxuIik7CisJeworCQlUaVhtbERvY3VtZW50IGRvYyggInV0Zjh0ZXN0LnhtbCIgKTsKKwkJZG9jLkxvYWRGaWxlKCk7CisJCWlmICggZG9jLkVycm9yKCkgJiYgZG9jLkVycm9ySWQoKSA9PSBUaVhtbEJhc2U6OlRJWE1MX0VSUk9SX09QRU5JTkdfRklMRSApIHsKKwkJCXByaW50ZiggIldBUk5JTkc6IEZpbGUgJ3V0Zjh0ZXN0LnhtbCcgbm90IGZvdW5kLlxuIgorCQkJCQkiKEFyZSB5b3UgcnVubmluZyB0aGUgdGVzdCBmcm9tIHRoZSB3cm9uZyBkaXJlY3Rvcnk/KVxuIgorCQkJCSAgICAiQ291bGQgbm90IHRlc3QgVVRGLTggZnVuY3Rpb25hbGl0eS5cbiIgKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVRpWG1sSGFuZGxlIGRvY0goICZkb2MgKTsKKwkJCS8vIEdldCB0aGUgYXR0cmlidXRlICJ2YWx1ZSIgZnJvbSB0aGUgIlJ1c3NpYW4iIGVsZW1lbnQgYW5kIGNoZWNrIGl0LgorCQkJVGlYbWxFbGVtZW50KiBlbGVtZW50ID0gZG9jSC5GaXJzdENoaWxkRWxlbWVudCggImRvY3VtZW50IiApLkZpcnN0Q2hpbGRFbGVtZW50KCAiUnVzc2lhbiIgKS5FbGVtZW50KCk7CisJCQljb25zdCB1bnNpZ25lZCBjaGFyIGNvcnJlY3RWYWx1ZVtdID0gewkweGQxVSwgMHg4NlUsIDB4ZDBVLCAweGI1VSwgMHhkMFUsIDB4YmRVLCAweGQwVSwgMHhiZFUsIAorCQkJCQkJCQkJCQkJCTB4ZDBVLCAweGJlVSwgMHhkMVUsIDB4ODFVLCAweGQxVSwgMHg4MlUsIDB4ZDFVLCAweDhjVSwgMCB9OworCisJCQlYbWxUZXN0KCAiVVRGLTg6IFJ1c3NpYW4gdmFsdWUuIiwgKGNvbnN0IGNoYXIqKWNvcnJlY3RWYWx1ZSwgZWxlbWVudC0+QXR0cmlidXRlKCAidmFsdWUiICksIHRydWUgKTsKKwkJCVhtbFRlc3QoICJVVEYtODogUnVzc2lhbiB2YWx1ZSByb3cuIiwgNCwgZWxlbWVudC0+Um93KCkgKTsKKwkJCVhtbFRlc3QoICJVVEYtODogUnVzc2lhbiB2YWx1ZSBjb2x1bW4uIiwgNSwgZWxlbWVudC0+Q29sdW1uKCkgKTsKKworCQkJY29uc3QgdW5zaWduZWQgY2hhciBydXNzaWFuRWxlbWVudE5hbWVbXSA9IHsJMHhkMFUsIDB4YTBVLCAweGQxVSwgMHg4M1UsCisJCQkJCQkJCQkJCQkJCQkweGQxVSwgMHg4MVUsIDB4ZDFVLCAweDgxVSwKKwkJCQkJCQkJCQkJCQkJCTB4ZDBVLCAweGJhVSwgMHhkMFUsIDB4YjhVLAorCQkJCQkJCQkJCQkJCQkJMHhkMFUsIDB4YjlVLCAwIH07CisJCQljb25zdCBjaGFyIHJ1c3NpYW5UZXh0W10gPSAiPFx4RDBceEI4XHhEMFx4QkNceEQwXHhCNVx4RDBceEI1XHhEMVx4ODI+IjsKKworCQkJVGlYbWxUZXh0KiB0ZXh0ID0gZG9jSC5GaXJzdENoaWxkRWxlbWVudCggImRvY3VtZW50IiApLkZpcnN0Q2hpbGRFbGVtZW50KCAoY29uc3QgY2hhciopIHJ1c3NpYW5FbGVtZW50TmFtZSApLkNoaWxkKCAwICkuVGV4dCgpOworCQkJWG1sVGVzdCggIlVURi04OiBCcm93c2luZyBydXNzaWFuIGVsZW1lbnQgbmFtZS4iLAorCQkJCQkgcnVzc2lhblRleHQsCisJCQkJCSB0ZXh0LT5WYWx1ZSgpLAorCQkJCQkgdHJ1ZSApOworCQkJWG1sVGVzdCggIlVURi04OiBSdXNzaWFuIGVsZW1lbnQgbmFtZSByb3cuIiwgNywgdGV4dC0+Um93KCkgKTsKKwkJCVhtbFRlc3QoICJVVEYtODogUnVzc2lhbiBlbGVtZW50IG5hbWUgY29sdW1uLiIsIDQ3LCB0ZXh0LT5Db2x1bW4oKSApOworCisJCQlUaVhtbERlY2xhcmF0aW9uKiBkZWMgPSBkb2NILkNoaWxkKCAwICkuTm9kZSgpLT5Ub0RlY2xhcmF0aW9uKCk7CisJCQlYbWxUZXN0KCAiVVRGLTg6IERlY2xhcmF0aW9uIGNvbHVtbi4iLCAxLCBkZWMtPkNvbHVtbigpICk7CisJCQlYbWxUZXN0KCAiVVRGLTg6IERvY3VtZW50IGNvbHVtbi4iLCAxLCBkb2MuQ29sdW1uKCkgKTsKKworCQkJLy8gTm93IHRyeSBmb3IgYSByb3VuZCB0cmlwLgorCQkJZG9jLlNhdmVGaWxlKCAidXRmOHRlc3RvdXQueG1sIiApOworCisJCQkvLyBDaGVjayB0aGUgcm91bmQgdHJpcC4KKwkJCWNoYXIgc2F2ZWRCdWZbMjU2XTsKKwkJCWNoYXIgdmVyaWZ5QnVmWzI1Nl07CisJCQlpbnQgb2theSA9IDE7CisKKwkJCUZJTEUqIHNhdmVkICA9IGZvcGVuKCAidXRmOHRlc3RvdXQueG1sIiwgInIiICk7CisJCQlGSUxFKiB2ZXJpZnkgPSBmb3BlbiggInV0Zjh0ZXN0dmVyaWZ5LnhtbCIsICJyIiApOworCQkJaWYgKCBzYXZlZCAmJiB2ZXJpZnkgKQorCQkJeworCQkJCXdoaWxlICggZmdldHMoIHZlcmlmeUJ1ZiwgMjU2LCB2ZXJpZnkgKSApCisJCQkJeworCQkJCQlmZ2V0cyggc2F2ZWRCdWYsIDI1Niwgc2F2ZWQgKTsKKwkJCQkJaWYgKCBzdHJjbXAoIHZlcmlmeUJ1Ziwgc2F2ZWRCdWYgKSApCisJCQkJCXsKKwkJCQkJCW9rYXkgPSAwOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJZmNsb3NlKCBzYXZlZCApOworCQkJCWZjbG9zZSggdmVyaWZ5ICk7CisJCQl9CisJCQlYbWxUZXN0KCAiVVRGLTg6IFZlcmlmaWVkIG11bHRpLWxhbmd1YWdlIHJvdW5kIHRyaXAuIiwgMSwgb2theSApOworCisJCQkvLyBPbiBtb3N0IFdlc3Rlcm4gbWFjaGluZXMsIHRoaXMgaXMgYW4gZWxlbWVudCB0aGF0IGNvbnRhaW5zCisJCQkvLyB0aGUgd29yZCAicmVzdW1lIiB3aXRoIHRoZSBjb3JyZWN0IGFjY2VudHMsIGluIGEgbGF0aW4gZW5jb2RpbmcuCisJCQkvLyBJdCB3aWxsIGJlIHNvbWV0aGluZyBlbHNlIGNvbXBsZXRlbHkgb24gbm9uLXdlc3RlciBtYWNoaW5lcywKKwkJCS8vIHdoaWNoIGlzIHdoeSBUaW55WG1sIGlzIHN3aXRjaGluZyB0byBVVEYtOC4KKwkJCWNvbnN0IGNoYXIgbGF0aW5bXSA9ICI8ZWxlbWVudD5yXHg4MnN1bVx4ODI8L2VsZW1lbnQ+IjsKKworCQkJVGlYbWxEb2N1bWVudCBsYXRpbkRvYzsKKwkJCWxhdGluRG9jLlBhcnNlKCBsYXRpbiwgMCwgVElYTUxfRU5DT0RJTkdfTEVHQUNZICk7CisKKwkJCXRleHQgPSBsYXRpbkRvYy5GaXJzdENoaWxkRWxlbWVudCgpLT5GaXJzdENoaWxkKCktPlRvVGV4dCgpOworCQkJWG1sVGVzdCggIkxlZ2FjeSBlbmNvZGluZzogVmVyaWZ5IHRleHQgZWxlbWVudC4iLCAiclx4ODJzdW1ceDgyIiwgdGV4dC0+VmFsdWUoKSApOworCQl9CisJfQkJCisKKwkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisJLy8gQ29weSBhbmQgYXNzaWdubWVudAorCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwlwcmludGYgKCJcbioqIENvcHkgYW5kIEFzc2lnbm1lbnQgKipcbiIpOworCXsKKwkJVGlYbWxFbGVtZW50IGVsZW1lbnQoICJmb28iICk7CisJCWVsZW1lbnQuUGFyc2UoICI8ZWxlbWVudCBuYW1lPSd2YWx1ZScgLz4iLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisKKwkJVGlYbWxFbGVtZW50IGVsZW1lbnRDb3B5KCBlbGVtZW50ICk7CisJCVRpWG1sRWxlbWVudCBlbGVtZW50QXNzaWduKCAiZm9vIiApOworCQllbGVtZW50QXNzaWduLlBhcnNlKCAiPGluY29ycmVjdCBmb289J2JhcicvPiIsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJZWxlbWVudEFzc2lnbiA9IGVsZW1lbnQ7CisKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBlbGVtZW50IGNvcHkgIzEuIiwgImVsZW1lbnQiLCBlbGVtZW50Q29weS5WYWx1ZSgpICk7CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogZWxlbWVudCBjb3B5ICMyLiIsICJ2YWx1ZSIsIGVsZW1lbnRDb3B5LkF0dHJpYnV0ZSggIm5hbWUiICkgKTsKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBlbGVtZW50IGFzc2lnbiAjMS4iLCAiZWxlbWVudCIsIGVsZW1lbnRBc3NpZ24uVmFsdWUoKSApOworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGVsZW1lbnQgYXNzaWduICMyLiIsICJ2YWx1ZSIsIGVsZW1lbnRBc3NpZ24uQXR0cmlidXRlKCAibmFtZSIgKSApOworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGVsZW1lbnQgYXNzaWduICMzLiIsIDAsIChpbnQpIGVsZW1lbnRBc3NpZ24uQXR0cmlidXRlKCAiZm9vIiApICk7CisKKwkJVGlYbWxDb21tZW50IGNvbW1lbnQ7CisJCWNvbW1lbnQuUGFyc2UoICI8IS0tY29tbWVudC0tPiIsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJVGlYbWxDb21tZW50IGNvbW1lbnRDb3B5KCBjb21tZW50ICk7CisJCVRpWG1sQ29tbWVudCBjb21tZW50QXNzaWduOworCQljb21tZW50QXNzaWduID0gY29tbWVudENvcHk7CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogY29tbWVudCBjb3B5LiIsICJjb21tZW50IiwgY29tbWVudENvcHkuVmFsdWUoKSApOworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGNvbW1lbnQgYXNzaWduLiIsICJjb21tZW50IiwgY29tbWVudEFzc2lnbi5WYWx1ZSgpICk7CisKKwkJVGlYbWxVbmtub3duIHVua25vd247CisJCXVua25vd24uUGFyc2UoICI8W3Vua25vd25dPiIsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJVGlYbWxVbmtub3duIHVua25vd25Db3B5KCB1bmtub3duICk7CisJCVRpWG1sVW5rbm93biB1bmtub3duQXNzaWduOworCQl1bmtub3duQXNzaWduLlBhcnNlKCAiaW5jb3JyZWN0IiwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQl1bmtub3duQXNzaWduID0gdW5rbm93bkNvcHk7CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogdW5rbm93biBjb3B5LiIsICJbdW5rbm93bl0iLCB1bmtub3duQ29weS5WYWx1ZSgpICk7CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogdW5rbm93biBhc3NpZ24uIiwgIlt1bmtub3duXSIsIHVua25vd25Bc3NpZ24uVmFsdWUoKSApOworCQkKKwkJVGlYbWxUZXh0IHRleHQoICJUZXh0Tm9kZSIgKTsKKwkJVGlYbWxUZXh0IHRleHRDb3B5KCB0ZXh0ICk7CisJCVRpWG1sVGV4dCB0ZXh0QXNzaWduKCAiaW5jb3JyZWN0IiApOworCQl0ZXh0QXNzaWduID0gdGV4dDsKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiB0ZXh0IGNvcHkuIiwgIlRleHROb2RlIiwgdGV4dENvcHkuVmFsdWUoKSApOworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IHRleHQgYXNzaWduLiIsICJUZXh0Tm9kZSIsIHRleHRBc3NpZ24uVmFsdWUoKSApOworCisJCVRpWG1sRGVjbGFyYXRpb24gZGVjOworCQlkZWMuUGFyc2UoICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PiIsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJVGlYbWxEZWNsYXJhdGlvbiBkZWNDb3B5KCBkZWMgKTsKKwkJVGlYbWxEZWNsYXJhdGlvbiBkZWNBc3NpZ247CisJCWRlY0Fzc2lnbiA9IGRlYzsKKworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGRlY2xhcmF0aW9uIGNvcHkuIiwgIlVURi04IiwgZGVjQ29weS5FbmNvZGluZygpICk7CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogdGV4dCBhc3NpZ24uIiwgIlVURi04IiwgZGVjQXNzaWduLkVuY29kaW5nKCkgKTsKKworCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZWxlbWVudENvcHkuSW5zZXJ0RW5kQ2hpbGQoIHRleHRDb3B5ICk7CisJCWRvYy5JbnNlcnRFbmRDaGlsZCggZGVjQXNzaWduICk7CisJCWRvYy5JbnNlcnRFbmRDaGlsZCggZWxlbWVudENvcHkgKTsKKwkJZG9jLkluc2VydEVuZENoaWxkKCB1bmtub3duQXNzaWduICk7CisKKwkJVGlYbWxEb2N1bWVudCBkb2NDb3B5KCBkb2MgKTsKKwkJVGlYbWxEb2N1bWVudCBkb2NBc3NpZ247CisJCWRvY0Fzc2lnbiA9IGRvY0NvcHk7CisKKwkJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkJc3RkOjpzdHJpbmcgb3JpZ2luYWwsIGNvcHksIGFzc2lnbjsKKwkJb3JpZ2luYWwgPDwgZG9jOworCQljb3B5IDw8IGRvY0NvcHk7CisJCWFzc2lnbiA8PCBkb2NBc3NpZ247CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogZG9jdW1lbnQgY29weS4iLCBvcmlnaW5hbC5jX3N0cigpLCBjb3B5LmNfc3RyKCksIHRydWUgKTsKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBkb2N1bWVudCBhc3NpZ24uIiwgb3JpZ2luYWwuY19zdHIoKSwgYXNzaWduLmNfc3RyKCksIHRydWUgKTsKKworCQkjZW5kaWYKKwl9CQorCisJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCXByaW50ZiAoIlxuKiogUGFyc2luZywgbm8gQ29uZGVuc2UgV2hpdGVzcGFjZSAqKlxuIik7CisJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGZhbHNlICk7CisKKwlpc3RyaW5nc3RyZWFtIHBhcnNlMSggIjxzdGFydD5UaGlzICBpcyAgICBcbnRleHQ8L3N0YXJ0PiIgKTsKKwlUaVhtbEVsZW1lbnQgdGV4dDEoICJ0ZXh0IiApOworCXBhcnNlMSA+PiB0ZXh0MTsKKworCVhtbFRlc3QgKCAiQ29uZGVuc2Ugd2hpdGUgc3BhY2UgT0ZGLiIsICJUaGlzICBpcyAgICBcbnRleHQiLAorCQkJCXRleHQxLkZpcnN0Q2hpbGQoKS0+VmFsdWUoKSwKKwkJCQl0cnVlICk7CisKKwlUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggdHJ1ZSApOworI2VuZGlmCisKKwkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwkvLyBHZXRUZXh0KCk7CisJeworCQljb25zdCBjaGFyKiBzdHIgPSAiPGZvbz5UaGlzIGlzIHRleHQ8L2Zvbz4iOworCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlBhcnNlKCBzdHIgKTsKKwkJY29uc3QgVGlYbWxFbGVtZW50KiBlbGVtZW50ID0gZG9jLlJvb3RFbGVtZW50KCk7CisKKwkJWG1sVGVzdCggIkdldFRleHQoKSBub3JtYWwgdXNlLiIsICJUaGlzIGlzIHRleHQiLCBlbGVtZW50LT5HZXRUZXh0KCkgKTsKKworCQlzdHIgPSAiPGZvbz48Yj5UaGlzIGlzIHRleHQ8L2I+PC9mb28+IjsKKwkJZG9jLkNsZWFyKCk7CisJCWRvYy5QYXJzZSggc3RyICk7CisJCWVsZW1lbnQgPSBkb2MuUm9vdEVsZW1lbnQoKTsKKworCQlYbWxUZXN0KCAiR2V0VGV4dCgpIGNvbnRhaW5lZCBlbGVtZW50LiIsIGVsZW1lbnQtPkdldFRleHQoKSA9PSAwLCB0cnVlICk7CisKKwkJc3RyID0gIjxmb28+VGhpcyBpcyA8Yj50ZXh0PC9iPjwvZm9vPiI7CisJCWRvYy5DbGVhcigpOworCQlUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggZmFsc2UgKTsKKwkJZG9jLlBhcnNlKCBzdHIgKTsKKwkJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIHRydWUgKTsKKwkJZWxlbWVudCA9IGRvYy5Sb290RWxlbWVudCgpOworCisJCVhtbFRlc3QoICJHZXRUZXh0KCkgcGFydGlhbC4iLCAiVGhpcyBpcyAiLCBlbGVtZW50LT5HZXRUZXh0KCkgKTsKKwl9CisKKworCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCS8vIENEQVRBCisJeworCQljb25zdCBjaGFyKiBzdHIgPQkiPHhtbEVsZW1lbnQ+IgorCQkJCQkJCQkiPCFbQ0RBVEFbIgorCQkJCQkJCQkJIkkgYW0gPiB0aGUgcnVsZXMhXG4iCisJCQkJCQkJCQkiLi4uc2luY2UgSSBtYWtlIHN5bWJvbGljIHB1bnMiCisJCQkJCQkJCSJdXT4iCisJCQkJCQkJIjwveG1sRWxlbWVudD4iOworCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlBhcnNlKCBzdHIgKTsKKwkJLy9kb2MuUHJpbnQoKTsKKworCQlYbWxUZXN0KCAiQ0RBVEEgcGFyc2UuIiwgZG9jLkZpcnN0Q2hpbGRFbGVtZW50KCktPkZpcnN0Q2hpbGQoKS0+VmFsdWUoKSwgCisJCQkJCQkJCSAiSSBhbSA+IHRoZSBydWxlcyFcbi4uLnNpbmNlIEkgbWFrZSBzeW1ib2xpYyBwdW5zIiwKKwkJCQkJCQkJIHRydWUgKTsKKworCQkjaWZkZWYgVElYTUxfVVNFX1NUTAorCQkvL2NvdXQgPDwgZG9jIDw8ICdcbic7CisKKwkJZG9jLkNsZWFyKCk7CisKKwkJaXN0cmluZ3N0cmVhbSBwYXJzZTAoIHN0ciApOworCQlwYXJzZTAgPj4gZG9jOworCQkvL2NvdXQgPDwgZG9jIDw8ICdcbic7CisKKwkJWG1sVGVzdCggIkNEQVRBIHN0cmVhbS4iLCBkb2MuRmlyc3RDaGlsZEVsZW1lbnQoKS0+Rmlyc3RDaGlsZCgpLT5WYWx1ZSgpLCAKKwkJCQkJCQkJICJJIGFtID4gdGhlIHJ1bGVzIVxuLi4uc2luY2UgSSBtYWtlIHN5bWJvbGljIHB1bnMiLAorCQkJCQkJCQkgdHJ1ZSApOworCQkjZW5kaWYKKworCQlUaVhtbERvY3VtZW50IGRvYzEgPSBkb2M7CisJCS8vZG9jLlByaW50KCk7CisKKwkJWG1sVGVzdCggIkNEQVRBIGNvcHkuIiwgZG9jMS5GaXJzdENoaWxkRWxlbWVudCgpLT5GaXJzdENoaWxkKCktPlZhbHVlKCksIAorCQkJCQkJCQkgIkkgYW0gPiB0aGUgcnVsZXMhXG4uLi5zaW5jZSBJIG1ha2Ugc3ltYm9saWMgcHVucyIsCisJCQkJCQkJCSB0cnVlICk7CisJfQorCisKKwkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwlwcmludGYgKCJcbioqIEJ1ZyByZWdyZXNzaW9uIHRlc3RzICoqXG4iKTsKKworCS8vIEluc2VydEJlZm9yZUNoaWxkIGFuZCBJbnNlcnRBZnRlckNoaWxkIGNhdXNlcyBjcmFzaC4KKwl7CisJCVRpWG1sRWxlbWVudCBwYXJlbnQoICJQYXJlbnQiICk7CisJCVRpWG1sRWxlbWVudCBjaGlsZFRleHQwKCAiY2hpbGRUZXh0MCIgKTsKKwkJVGlYbWxFbGVtZW50IGNoaWxkVGV4dDEoICJjaGlsZFRleHQxIiApOworCQlUaVhtbE5vZGUqIGNoaWxkTm9kZTAgPSBwYXJlbnQuSW5zZXJ0RW5kQ2hpbGQoIGNoaWxkVGV4dDAgKTsKKwkJVGlYbWxOb2RlKiBjaGlsZE5vZGUxID0gcGFyZW50Lkluc2VydEJlZm9yZUNoaWxkKCBjaGlsZE5vZGUwLCBjaGlsZFRleHQxICk7CisKKwkJWG1sVGVzdCggIlRlc3QgSW5zZXJ0QmVmb3JlQ2hpbGQgb24gZW1wdHkgbm9kZS4iLCAoIGNoaWxkTm9kZTEgPT0gcGFyZW50LkZpcnN0Q2hpbGQoKSApLCB0cnVlICk7CisJfQorCisJeworCQkvLyBJbnNlcnRCZWZvcmVDaGlsZCBhbmQgSW5zZXJ0QWZ0ZXJDaGlsZCBjYXVzZXMgY3Jhc2guCisJCVRpWG1sRWxlbWVudCBwYXJlbnQoICJQYXJlbnQiICk7CisJCVRpWG1sRWxlbWVudCBjaGlsZFRleHQwKCAiY2hpbGRUZXh0MCIgKTsKKwkJVGlYbWxFbGVtZW50IGNoaWxkVGV4dDEoICJjaGlsZFRleHQxIiApOworCQlUaVhtbE5vZGUqIGNoaWxkTm9kZTAgPSBwYXJlbnQuSW5zZXJ0RW5kQ2hpbGQoIGNoaWxkVGV4dDAgKTsKKwkJVGlYbWxOb2RlKiBjaGlsZE5vZGUxID0gcGFyZW50Lkluc2VydEFmdGVyQ2hpbGQoIGNoaWxkTm9kZTAsIGNoaWxkVGV4dDEgKTsKKworCQlYbWxUZXN0KCAiVGVzdCBJbnNlcnRBZnRlckNoaWxkIG9uIGVtcHR5IG5vZGUuICIsICggY2hpbGROb2RlMSA9PSBwYXJlbnQuTGFzdENoaWxkKCkgKSwgdHJ1ZSApOworCX0KKworCS8vIFJlcG9ydHMgb2YgbWlzc2luZyBjb25zdHJ1Y3RvcnMsIGlycmVndWxhciBzdHJpbmcgcHJvYmxlbXMuCisJeworCQkvLyBNaXNzaW5nIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uLiBObyB0ZXN0IC0tIGp1c3QgY29tcGlsZXMuCisJCVRpWG1sVGV4dCB0ZXh0KCAiTWlzc2luZyIgKTsKKworCQkjaWZkZWYgVElYTUxfVVNFX1NUTAorCQkJLy8gTWlzc2luZyBpbXBsZW1lbnRhdGlvbjoKKwkJCVRpWG1sRG9jdW1lbnQgZG9jOworCQkJc3RyaW5nIG5hbWUgPSAibWlzc2luZyI7CisJCQlkb2MuTG9hZEZpbGUoIG5hbWUgKTsKKworCQkJVGlYbWxUZXh0IHRleHRTVEwoIG5hbWUgKTsKKwkJI2Vsc2UKKwkJCS8vIHZlcmlmeWluZyBzb21lIGJhc2ljIHN0cmluZyBmdW5jdGlvbnM6CisJCQlUaVhtbFN0cmluZyBhOworCQkJVGlYbWxTdHJpbmcgYiggIkhlbGxvIiApOworCQkJVGlYbWxTdHJpbmcgYyggIm9vZ2EiICk7CisKKwkJCWMgPSAiIFdvcmxkISI7CisJCQlhID0gYjsKKwkJCWEgKz0gYzsKKwkJCWEgPSBhOworCisJCQlYbWxUZXN0KCAiQmFzaWMgVGlYbWxTdHJpbmcgdGVzdC4gIiwgIkhlbGxvIFdvcmxkISIsIGEuY19zdHIoKSApOworCQkjZW5kaWYKKyAJfQorCisJLy8gTG9uZyBmaWxlbmFtZXMgY3Jhc2hpbmcgU1RMIHZlcnNpb24KKwl7CisJCVRpWG1sRG9jdW1lbnQgZG9jKCAibWlkc3VtbWVyTmlnaHRzRHJlYW1XaXRoQVZlcnlMb25nRmlsZW5hbWVUb0NvbmZ1c2VUaGVTdHJpbmdIYW5kbGluZ1JvdXRpbmVzLnhtbCIgKTsKKwkJYm9vbCBsb2FkT2theSA9IGRvYy5Mb2FkRmlsZSgpOworCQlsb2FkT2theSA9IHRydWU7CS8vIGdldCByaWQgb2YgY29tcGlsZXIgd2FybmluZy4KKwkJLy8gV29uJ3QgcGFzcyBvbiBub24tZGV2IHN5c3RlbXMuIEp1c3QgYSAibm8gY3Jhc2giIGNoZWNrLgorCQkvL1htbFRlc3QoICJMb25nIGZpbGVuYW1lLiAiLCB0cnVlLCBsb2FkT2theSApOworCX0KKworCXsKKwkJLy8gRW50aXRpZXMgbm90IGJlaW5nIHdyaXR0ZW4gY29ycmVjdGx5LgorCQkvLyBGcm9tIEx5bm4gQWxsZW4KKworCQljb25zdCBjaGFyKiBwYXNzYWdlcyA9CisJCQkiPD94bWwgdmVyc2lvbj1cIjEuMFwiIHN0YW5kYWxvbmU9XCJub1wiID8+IgorCQkJIjxwYXNzYWdlcyBjb3VudD1cIjAwNlwiIGZvcm1hdHZlcnNpb249XCIyMDAyMDYyMFwiPiIKKwkJCQkiPHBzZyBjb250ZXh0PVwiTGluZSA1IGhhcyAmcXVvdDtxdW90YXRpb24gbWFya3MmcXVvdDsgYW5kICZhcG9zO2Fwb3N0cm9waGUgbWFya3MmYXBvczsuIgorCQkJCSIgSXQgYWxzbyBoYXMgJmx0OywgJmd0OywgYW5kICZhbXA7LCBhcyB3ZWxsIGFzIGEgZmFrZSBjb3B5cmlnaHQgJiN4QTk7LlwiPiA8L3BzZz4iCisJCQkiPC9wYXNzYWdlcz4iOworCisJCVRpWG1sRG9jdW1lbnQgZG9jKCAicGFzc2FnZXMueG1sIiApOworCQlkb2MuUGFyc2UoIHBhc3NhZ2VzICk7CisJCVRpWG1sRWxlbWVudCogcHNnID0gZG9jLlJvb3RFbGVtZW50KCktPkZpcnN0Q2hpbGRFbGVtZW50KCk7CisJCWNvbnN0IGNoYXIqIGNvbnRleHQgPSBwc2ctPkF0dHJpYnV0ZSggImNvbnRleHQiICk7CisJCWNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIkxpbmUgNSBoYXMgXCJxdW90YXRpb24gbWFya3NcIiBhbmQgJ2Fwb3N0cm9waGUgbWFya3MnLiBJdCBhbHNvIGhhcyA8LCA+LCBhbmQgJiwgYXMgd2VsbCBhcyBhIGZha2UgY29weXJpZ2h0IFx4QzJceEE5LiI7CisKKwkJWG1sVGVzdCggIkVudGl0eSB0cmFuc2Zvcm1hdGlvbjogcmVhZC4gIiwgZXhwZWN0ZWQsIGNvbnRleHQsIHRydWUgKTsKKworCQlGSUxFKiB0ZXh0ZmlsZSA9IGZvcGVuKCAidGV4dGZpbGUudHh0IiwgInciICk7CisJCWlmICggdGV4dGZpbGUgKQorCQl7CisJCQlwc2ctPlByaW50KCB0ZXh0ZmlsZSwgMCApOworCQkJZmNsb3NlKCB0ZXh0ZmlsZSApOworCQl9CisJCXRleHRmaWxlID0gZm9wZW4oICJ0ZXh0ZmlsZS50eHQiLCAiciIgKTsKKwkJYXNzZXJ0KCB0ZXh0ZmlsZSApOworCQlpZiAoIHRleHRmaWxlICkKKwkJeworCQkJY2hhciBidWZbIDEwMjQgXTsKKwkJCWZnZXRzKCBidWYsIDEwMjQsIHRleHRmaWxlICk7CisJCQlYbWxUZXN0KCAiRW50aXR5IHRyYW5zZm9ybWF0aW9uOiB3cml0ZS4gIiwKKwkJCQkJICI8cHNnIGNvbnRleHQ9XCdMaW5lIDUgaGFzICZxdW90O3F1b3RhdGlvbiBtYXJrcyZxdW90OyBhbmQgJmFwb3M7YXBvc3Ryb3BoZSBtYXJrcyZhcG9zOy4iCisJCQkJCSAiIEl0IGFsc28gaGFzICZsdDssICZndDssIGFuZCAmYW1wOywgYXMgd2VsbCBhcyBhIGZha2UgY29weXJpZ2h0IFx4QzJceEE5LicgLz4iLAorCQkJCQkgYnVmLAorCQkJCQkgdHJ1ZSApOworCQl9CisJCWZjbG9zZSggdGV4dGZpbGUgKTsKKwl9CisKKyAgICB7CisJCUZJTEUqIHRleHRmaWxlID0gZm9wZW4oICJ0ZXN0NS54bWwiLCAidyIgKTsKKwkJaWYgKCB0ZXh0ZmlsZSApCisJCXsKKyAgICAgICAgICAgIGZwdXRzKCI8P3htbCB2ZXJzaW9uPScxLjAnPz48YS5lbGVtIHhtaS52ZXJzaW9uPScyLjAnLz4iLCB0ZXh0ZmlsZSk7CisgICAgICAgICAgICBmY2xvc2UodGV4dGZpbGUpOworCisJCQlUaVhtbERvY3VtZW50IGRvYzsKKyAgICAgICAgICAgIGRvYy5Mb2FkRmlsZSggInRlc3Q1LnhtbCIgKTsKKyAgICAgICAgICAgIFhtbFRlc3QoICJkb3QgaW4gZWxlbWVudCBhdHRyaWJ1dGVzIGFuZCBuYW1lcyIsIGRvYy5FcnJvcigpLCAwKTsKKwkJfQorICAgIH0KKworCXsKKwkJRklMRSogdGV4dGZpbGUgPSBmb3BlbiggInRlc3Q2LnhtbCIsICJ3IiApOworCQlpZiAoIHRleHRmaWxlICkKKwkJeworICAgICAgICAgICAgZnB1dHMoIjxlbGVtZW50PjxOYW1lPjEuMSBTdGFydCBlYXN5IGlnbm9yZSBmaW4gdGhpY2tuZXNzJiN4QTs8L05hbWU+PC9lbGVtZW50PiIsIHRleHRmaWxlICk7CisgICAgICAgICAgICBmY2xvc2UodGV4dGZpbGUpOworCisgICAgICAgICAgICBUaVhtbERvY3VtZW50IGRvYzsKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gZG9jLkxvYWRGaWxlKCAidGVzdDYueG1sIiApOworICAgICAgICAgICAgWG1sVGVzdCggIkVudGl0eSB3aXRoIG9uZSBkaWdpdC4iLCByZXN1bHQsIHRydWUgKTsKKworCQkJVGlYbWxUZXh0KiB0ZXh0ID0gZG9jLkZpcnN0Q2hpbGRFbGVtZW50KCktPkZpcnN0Q2hpbGRFbGVtZW50KCktPkZpcnN0Q2hpbGQoKS0+VG9UZXh0KCk7CisJCQlYbWxUZXN0KCAiRW50aXR5IHdpdGggb25lIGRpZ2l0LiIsCisJCQkJCQl0ZXh0LT5WYWx1ZSgpLCAiMS4xIFN0YXJ0IGVhc3kgaWdub3JlIGZpbiB0aGlja25lc3NcbiIgKTsKKwkJfQorICAgIH0KKworCXsKKwkJLy8gRE9DVFlQRSBub3QgcHJlc2VydmVkICg5NTAxNzEpCisJCS8vIAorCQljb25zdCBjaGFyKiBkb2N0eXBlID0KKwkJCSI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgPz4iCisJCQkiPCFET0NUWVBFIFBMQVkgU1lTVEVNICdwbGF5LmR0ZCc+IgorCQkJIjwhRUxFTUVOVCB0aXRsZSAoI1BDREFUQSk+IgorCQkJIjwhRUxFTUVOVCBib29rcyAodGl0bGUsYXV0aG9ycyk+IgorCQkJIjxlbGVtZW50IC8+IjsKKworCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlBhcnNlKCBkb2N0eXBlICk7CisJCWRvYy5TYXZlRmlsZSggInRlc3Q3LnhtbCIgKTsKKwkJZG9jLkNsZWFyKCk7CisJCWRvYy5Mb2FkRmlsZSggInRlc3Q3LnhtbCIgKTsKKwkJCisJCVRpWG1sSGFuZGxlIGRvY0goICZkb2MgKTsKKwkJVGlYbWxVbmtub3duKiB1bmtub3duID0gZG9jSC5DaGlsZCggMSApLlVua25vd24oKTsKKwkJWG1sVGVzdCggIkNvcnJlY3QgdmFsdWUgb2YgdW5rbm93bi4iLCAiIURPQ1RZUEUgUExBWSBTWVNURU0gJ3BsYXkuZHRkJyIsIHVua25vd24tPlZhbHVlKCkgKTsKKwkJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkJVGlYbWxOb2RlKiBub2RlID0gZG9jSC5DaGlsZCggMiApLk5vZGUoKTsKKwkJc3RkOjpzdHJpbmcgc3RyOworCQlzdHIgPDwgKCpub2RlKTsKKwkJWG1sVGVzdCggIkNvcnJlY3Qgc3RyZWFtaW5nIG9mIHVua25vd24uIiwgIjwhRUxFTUVOVCB0aXRsZSAoI1BDREFUQSk+Iiwgc3RyLmNfc3RyKCkgKTsKKwkJI2VuZGlmCisJfQorCisJeworCQkvLyBbIDc5MTQxMSBdIEZvcm1hdHRpbmcgYnVnCisJCS8vIENvbW1lbnRzIGRvIG5vdCBzdHJlYW0gb3V0IGNvcnJlY3RseS4KKwkJY29uc3QgY2hhciogZG9jdHlwZSA9IAorCQkJIjwhLS0gU29tZXdoYXQ8ZXZpbD4gLS0+IjsKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggZG9jdHlwZSApOworCisJCVRpWG1sSGFuZGxlIGRvY0goICZkb2MgKTsKKwkJVGlYbWxDb21tZW50KiBjb21tZW50ID0gZG9jSC5DaGlsZCggMCApLk5vZGUoKS0+VG9Db21tZW50KCk7CisKKwkJWG1sVGVzdCggIkNvbW1lbnQgZm9ybWF0dGluZy4iLCAiIFNvbWV3aGF0PGV2aWw+ICIsIGNvbW1lbnQtPlZhbHVlKCkgKTsKKwkJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkJc3RkOjpzdHJpbmcgc3RyOworCQlzdHIgPDwgKCpjb21tZW50KTsKKwkJWG1sVGVzdCggIkNvbW1lbnQgc3RyZWFtaW5nLiIsICI8IS0tIFNvbWV3aGF0PGV2aWw+IC0tPiIsIHN0ci5jX3N0cigpICk7CisJCSNlbmRpZgorCX0KKworCXsKKwkJLy8gWyA4NzA1MDIgXSBXaGl0ZSBzcGFjZSBpc3N1ZXMKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCVRpWG1sVGV4dCogdGV4dDsKKwkJVGlYbWxIYW5kbGUgZG9jSCggJmRvYyApOworCQorCQljb25zdCBjaGFyKiBkb2N0eXBlMCA9ICI8ZWxlbWVudD4gVGhpcyBoYXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2UgPC9lbGVtZW50PiI7CisJCWNvbnN0IGNoYXIqIGRvY3R5cGUxID0gIjxlbGVtZW50PlRoaXMgaGFzICBpbnRlcm5hbCBzcGFjZTwvZWxlbWVudD4iOworCQljb25zdCBjaGFyKiBkb2N0eXBlMiA9ICI8ZWxlbWVudD4gVGhpcyBoYXMgbGVhZGluZywgdHJhaWxpbmcsIGFuZCAgaW50ZXJuYWwgc3BhY2UgPC9lbGVtZW50PiI7CisKKwkJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGZhbHNlICk7CisJCWRvYy5DbGVhcigpOworCQlkb2MuUGFyc2UoIGRvY3R5cGUwICk7CisJCXRleHQgPSBkb2NILkZpcnN0Q2hpbGRFbGVtZW50KCAiZWxlbWVudCIgKS5DaGlsZCggMCApLlRleHQoKTsKKwkJWG1sVGVzdCggIldoaXRlIHNwYWNlIGtlcHQuIiwgIiBUaGlzIGhhcyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZSAiLCB0ZXh0LT5WYWx1ZSgpICk7CisKKwkJZG9jLkNsZWFyKCk7CisJCWRvYy5QYXJzZSggZG9jdHlwZTEgKTsKKwkJdGV4dCA9IGRvY0guRmlyc3RDaGlsZEVsZW1lbnQoICJlbGVtZW50IiApLkNoaWxkKCAwICkuVGV4dCgpOworCQlYbWxUZXN0KCAiV2hpdGUgc3BhY2Uga2VwdC4iLCAiVGhpcyBoYXMgIGludGVybmFsIHNwYWNlIiwgdGV4dC0+VmFsdWUoKSApOworCisJCWRvYy5DbGVhcigpOworCQlkb2MuUGFyc2UoIGRvY3R5cGUyICk7CisJCXRleHQgPSBkb2NILkZpcnN0Q2hpbGRFbGVtZW50KCAiZWxlbWVudCIgKS5DaGlsZCggMCApLlRleHQoKTsKKwkJWG1sVGVzdCggIldoaXRlIHNwYWNlIGtlcHQuIiwgIiBUaGlzIGhhcyBsZWFkaW5nLCB0cmFpbGluZywgYW5kICBpbnRlcm5hbCBzcGFjZSAiLCB0ZXh0LT5WYWx1ZSgpICk7CisKKwkJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIHRydWUgKTsKKwkJZG9jLkNsZWFyKCk7CisJCWRvYy5QYXJzZSggZG9jdHlwZTAgKTsKKwkJdGV4dCA9IGRvY0guRmlyc3RDaGlsZEVsZW1lbnQoICJlbGVtZW50IiApLkNoaWxkKCAwICkuVGV4dCgpOworCQlYbWxUZXN0KCAiV2hpdGUgc3BhY2UgY29uZGVuc2VkLiIsICJUaGlzIGhhcyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZSIsIHRleHQtPlZhbHVlKCkgKTsKKworCQlkb2MuQ2xlYXIoKTsKKwkJZG9jLlBhcnNlKCBkb2N0eXBlMSApOworCQl0ZXh0ID0gZG9jSC5GaXJzdENoaWxkRWxlbWVudCggImVsZW1lbnQiICkuQ2hpbGQoIDAgKS5UZXh0KCk7CisJCVhtbFRlc3QoICJXaGl0ZSBzcGFjZSBjb25kZW5zZWQuIiwgIlRoaXMgaGFzIGludGVybmFsIHNwYWNlIiwgdGV4dC0+VmFsdWUoKSApOworCisJCWRvYy5DbGVhcigpOworCQlkb2MuUGFyc2UoIGRvY3R5cGUyICk7CisJCXRleHQgPSBkb2NILkZpcnN0Q2hpbGRFbGVtZW50KCAiZWxlbWVudCIgKS5DaGlsZCggMCApLlRleHQoKTsKKwkJWG1sVGVzdCggIldoaXRlIHNwYWNlIGNvbmRlbnNlZC4iLCAiVGhpcyBoYXMgbGVhZGluZywgdHJhaWxpbmcsIGFuZCBpbnRlcm5hbCBzcGFjZSIsIHRleHQtPlZhbHVlKCkgKTsKKwl9CisKKwl7CisJCS8vIERvdWJsZSBhdHRyaWJ1dGVzCisJCWNvbnN0IGNoYXIqIGRvY3R5cGUgPSAiPGVsZW1lbnQgYXR0cj0ncmVkJyBhdHRyPSdibHVlJyAvPiI7CisKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggZG9jdHlwZSApOworCQkKKwkJWG1sVGVzdCggIlBhcnNpbmcgcmVwZWF0ZWQgYXR0cmlidXRlcy4iLCAwLCAoaW50KWRvYy5FcnJvcigpICk7CS8vIG5vdCBhbiAgZXJyb3IgdG8gdGlueXhtbAorCQlYbWxUZXN0KCAiUGFyc2luZyByZXBlYXRlZCBhdHRyaWJ1dGVzLiIsICJibHVlIiwgZG9jLkZpcnN0Q2hpbGRFbGVtZW50KCAiZWxlbWVudCIgKS0+QXR0cmlidXRlKCAiYXR0ciIgKSApOworCX0KKworCXsKKwkJLy8gRW1iZWRkZWQgbnVsbCBpbiBzdHJlYW0uCisJCWNvbnN0IGNoYXIqIGRvY3R5cGUgPSAiPGVsZW1lbnQgYXR0XDByPSdyZWQnIGF0dHI9J2JsdWUnIC8+IjsKKworCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlBhcnNlKCBkb2N0eXBlICk7CisJCVhtbFRlc3QoICJFbWJlZGRlZCBudWxsIHRocm93cyBlcnJvci4iLCB0cnVlLCBkb2MuRXJyb3IoKSApOworCisJCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJCWlzdHJpbmdzdHJlYW0gc3RybSggZG9jdHlwZSApOworCQlkb2MuQ2xlYXIoKTsKKwkJZG9jLkNsZWFyRXJyb3IoKTsKKwkJc3RybSA+PiBkb2M7CisJCVhtbFRlc3QoICJFbWJlZGRlZCBudWxsIHRocm93cyBlcnJvci4iLCB0cnVlLCBkb2MuRXJyb3IoKSApOworCQkjZW5kaWYKKwl9CisKKyAgICB7CisgICAgICAgICAgICAvLyBMZWdhY3kgbW9kZSB0ZXN0LiAoVGhpcyB0ZXN0IG1heSBvbmx5IHBhc3Mgb24gYSB3ZXN0ZXJuIHN5c3RlbSkKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0ciA9CisgICAgICAgICAgICAgICAgICAgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiSVNPLTg4NTktMVwiPz4iCisgICAgICAgICAgICAgICAgICAgICAgICAiPOQ+IgorICAgICAgICAgICAgICAgICAgICAgICAgIkP2bnTkbnTf5Pb8xNbcIgorICAgICAgICAgICAgICAgICAgICAgICAgIjwv5D4iOworCisgICAgICAgICAgICBUaVhtbERvY3VtZW50IGRvYzsKKyAgICAgICAgICAgIGRvYy5QYXJzZSggc3RyICk7CisKKwkJCS8vZG9jLlByaW50KCBzdGRvdXQsIDAgKTsKKworICAgICAgICAgICAgVGlYbWxIYW5kbGUgZG9jSGFuZGxlKCAmZG9jICk7CisgICAgICAgICAgICBUaVhtbEhhbmRsZSBhSGFuZGxlID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGRFbGVtZW50KCAi5CIgKTsKKyAgICAgICAgICAgIFRpWG1sSGFuZGxlIHRIYW5kbGUgPSBhSGFuZGxlLkNoaWxkKCAwICk7CisgICAgICAgICAgICBhc3NlcnQoIGFIYW5kbGUuRWxlbWVudCgpICk7CisgICAgICAgICAgICBhc3NlcnQoIHRIYW5kbGUuVGV4dCgpICk7CisgICAgICAgICAgICBYbWxUZXN0KCAiSVNPLTg4NTktMSBQYXJzaW5nLiIsICJD9m505G503+T2/MTW3CIsIHRIYW5kbGUuVGV4dCgpLT5WYWx1ZSgpICk7CisgICAgfQorCisJeworCQkvLyBFbXB0eSBkb2N1bWVudHMgc2hvdWxkIHJldHVybiBUSVhNTF9FUlJPUl9QQVJTSU5HX0VNUFRZLCBidWcgMTA3MDcxNworCQljb25zdCBjaGFyKiBzdHIgPSAiICAgICI7CisJCVRpWG1sRG9jdW1lbnQgZG9jOworCQlkb2MuUGFyc2UoIHN0ciApOworCQlYbWxUZXN0KCAiRW1wdHkgZG9jdW1lbnQgZXJyb3IgVElYTUxfRVJST1JfRE9DVU1FTlRfRU1QVFkiLCBUaVhtbEJhc2U6OlRJWE1MX0VSUk9SX0RPQ1VNRU5UX0VNUFRZLCBkb2MuRXJyb3JJZCgpICk7CisJfQorCSNpZm5kZWYgVElYTUxfVVNFX1NUTAorCXsKKwkJLy8gU3RyaW5nIGVxdWFsaXR5LiBbIDEwMDY0MDkgXSBzdHJpbmcgb3BlcmF0b3I9PS8hPSBubyB3b3JreSBpbiBhbGwgY2FzZXMKKwkJVGlYbWxTdHJpbmcgdGVtcDsKKwkJWG1sVGVzdCggIkVtcHR5IHRpbnl4bWwgc3RyaW5nIGNvbXBhcmUgZXF1YWwiLCAoIHRlbXAgPT0gIiIgKSwgdHJ1ZSApOworCisJCVRpWG1sU3RyaW5nICAgIGZvbzsKKwkJVGlYbWxTdHJpbmcgICAgYmFyKCAiIiApOworCQlYbWxUZXN0KCAiRW1wdHkgdGlueXhtbCBzdHJpbmcgY29tcGFyZSBlcXVhbCIsICggZm9vID09IGJhciApLCB0cnVlICk7CisJfQorCisJI2VuZGlmCisJeworCQkvLyBCdWcgWyAxMTk1Njk2IF0gZnJvbSBtYXJsb25pc20KKwkJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoZmFsc2UpOyAKKwkJVGlYbWxEb2N1bWVudCB4bWw7IAorCQl4bWwuUGFyc2UoIjx0ZXh0PjxicmVhay8+VGhpcyBoYW5nczwvdGV4dD4iKTsgCisJCVhtbFRlc3QoICJUZXN0IHNhZmUgZXJyb3IgcmV0dXJuLiIsIHhtbC5FcnJvcigpLCBmYWxzZSApOworCX0KKworCXsKKwkJLy8gQnVnIFsgMTI0Mzk5MiBdIC0gYW5vdGhlciBpbmZpbml0ZSBsb29wCisJCVRpWG1sRG9jdW1lbnQgZG9jOworCQlkb2MuU2V0Q29uZGVuc2VXaGl0ZVNwYWNlKGZhbHNlKTsKKwkJZG9jLlBhcnNlKCI8cD48cGI+PC9wYj50ZXN0PC9wPiIpOworCX0gCisJeworCQkvLyBMb3cgZW50aXRpZXMKKwkJVGlYbWxEb2N1bWVudCB4bWw7CisJCXhtbC5QYXJzZSggIjx0ZXN0PiYjeDBlOzwvdGVzdD4iICk7CisJCWNvbnN0IGNoYXIgcmVzdWx0W10gPSB7IDB4MGUsIDAgfTsKKwkJWG1sVGVzdCggIkxvdyBlbnRpdGllcy4iLCB4bWwuRmlyc3RDaGlsZEVsZW1lbnQoKS0+R2V0VGV4dCgpLCByZXN1bHQgKTsKKwkJeG1sLlByaW50KCk7CisJfQorCisJI2lmIGRlZmluZWQoIFdJTjMyICkgJiYgZGVmaW5lZCggVFVORSApCisJUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoIChMQVJHRV9JTlRFR0VSKikgKCZlbmQpICk7CisJUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSggKExBUkdFX0lOVEVHRVIqKSAoJmZyZXEpICk7CisJcHJpbnRmKCAiVGltZSBmb3IgcnVuOiAlZlxuIiwgKCBkb3VibGUgKSggZW5kLXN0YXJ0ICkgLyAoZG91YmxlKSBmcmVxICk7CisJI2VuZGlmCisKKwlwcmludGYgKCJcblBhc3MgJWQsIEZhaWwgJWRcbiIsIGdQYXNzLCBnRmFpbCk7CisJcmV0dXJuIGdGYWlsOworfQorCisK