ZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvRnJlZVJUT1NDb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGFjZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0wLDAgKzEsMTM2IEBACisvKg0KKyAgICBGcmVlUlRPUyBWNi4xLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTAgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQorDQorICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiBJZiB5b3UgYXJlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICsgTmV3IHRvIEZyZWVSVE9TLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiAgICArIFdhbnRpbmcgdG8gbGVhcm4gRnJlZVJUT1Mgb3IgbXVsdGl0YXNraW5nIGluIGdlbmVyYWwgcXVpY2tseSAgICAgICAqDQorICAgICogICAgKyBMb29raW5nIGZvciBiYXNpYyB0cmFpbmluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICsgV2FudGluZyB0byBpbXByb3ZlIHlvdXIgRnJlZVJUT1Mgc2tpbGxzIGFuZCBwcm9kdWN0aXZpdHkgICAgICAgICAgICoNCisgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICogdGhlbiB0YWtlIGEgbG9vayBhdCB0aGUgRnJlZVJUT1MgYm9va3MgLSBhdmFpbGFibGUgYXMgUERGIG9yIHBhcGVyYmFjayAgKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiAgICAgICAgIlVzaW5nIHRoZSBGcmVlUlRPUyBSZWFsIFRpbWUgS2VybmVsIC0gYSBQcmFjdGljYWwgR3VpZGUiICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiBBIHBkZiByZWZlcmVuY2UgbWFudWFsIGlzIGFsc28gYXZhaWxhYmxlLiAgQm90aCBhcmUgdXN1YWxseSBkZWxpdmVyZWQgICAqDQorICAgICogdG8geW91ciBpbmJveCB3aXRoaW4gMjAgbWludXRlcyB0byB0d28gaG91cnMgd2hlbiBwdXJjaGFzZWQgYmV0d2VlbiA4YW0gKg0KKyAgICAqIGFuZCA4cG0gR01UIChhbHRob3VnaCBwbGVhc2UgYWxsb3cgdXAgdG8gMjQgaG91cnMgaW4gY2FzZSBvZiAgICAgICAgICAgICoNCisgICAgKiBleGNlcHRpb25hbCBjaXJjdW1zdGFuY2VzKS4gIFRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICAgICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisNCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCisNCisgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KKyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KKyAgICAqKipOT1RFKioqIFRoZSBleGNlcHRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZQ0KKyAgICBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUNCisgICAgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLg0KKyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVA0KKyAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCisgICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KKyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KKyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQorICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCisgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCisgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQorDQorICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KKw0KKyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCisgICAgY29udGFjdCBkZXRhaWxzLg0KKw0KKyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KKyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KKw0KKyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQorICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQorKi8NCisNCisjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQorI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgKiBBcHBsaWNhdGlvbiBzcGVjaWZpYyBkZWZpbml0aW9ucy4NCisgKg0KKyAqIFRoZXNlIGRlZmluaXRpb25zIHNob3VsZCBiZSBhZGp1c3RlZCBmb3IgeW91ciBwYXJ0aWN1bGFyIGhhcmR3YXJlIGFuZA0KKyAqIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cy4NCisgKg0KKyAqIFRIRVNFIFBBUkFNRVRFUlMgQVJFIERFU0NSSUJFRCBXSVRISU4gVEhFICdDT05GSUdVUkFUSU9OJyBTRUNUSU9OIE9GIFRIRQ0KKyAqIEZyZWVSVE9TIEFQSSBET0NVTUVOVEFUSU9OIEFWQUlMQUJMRSBPTiBUSEUgRnJlZVJUT1Mub3JnIFdFQiBTSVRFLg0KKyAqDQorICogU2VlIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMC5odG1sLg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2RlZmluZSBjb25maWdVU0VfUFJFRU1QVElPTgkJCTENCisjZGVmaW5lIGNvbmZpZ1VTRV9JRExFX0hPT0sJCQkJMQ0KKyNkZWZpbmUgY29uZmlnVVNFX1RJQ0tfSE9PSwkJCQkxDQorI2RlZmluZSBjb25maWdDUFVfQ0xPQ0tfSFoJCQkJKCAzMjAwMDAwMFVMICkJDQorI2RlZmluZSBjb25maWdUSUNLX1JBVEVfSFoJCQkJKCAoIHBvcnRUaWNrVHlwZSApIDEwMDAgKQ0KKyNkZWZpbmUgY29uZmlnTUFYX1BSSU9SSVRJRVMJCQkoICggdW5zaWduZWQgcG9ydEJBU0VfVFlQRSApIDUgKQ0KKyNkZWZpbmUgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFCQkoICggdW5zaWduZWQgc2hvcnQgKSA3MCApDQorI2RlZmluZSBjb25maWdUT1RBTF9IRUFQX1NJWkUJCQkoICggc2l6ZV90ICkgKCAxMCAqIDEwMjQgKSApDQorI2RlZmluZSBjb25maWdNQVhfVEFTS19OQU1FX0xFTgkJCSggMTYgKQ0KKyNkZWZpbmUgY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZCQkwDQorI2RlZmluZSBjb25maWdVU0VfMTZfQklUX1RJQ0tTCQkJMA0KKyNkZWZpbmUgY29uZmlnSURMRV9TSE9VTERfWUlFTEQJCQkxDQorI2RlZmluZSBjb25maWdVU0VfTVVURVhFUwkJCQkxDQorI2RlZmluZSBjb25maWdRVUVVRV9SRUdJU1RSWV9TSVpFCQk1DQorI2RlZmluZSBjb25maWdHRU5FUkFURV9SVU5fVElNRV9TVEFUUwkxDQorI2RlZmluZSBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cJMg0KKyNkZWZpbmUgY29uZmlnVVNFX1JFQ1VSU0lWRV9NVVRFWEVTCQkwDQorI2RlZmluZSBjb25maWdVU0VfTUFMTE9DX0ZBSUxFRF9IT09LCTENCisjZGVmaW5lIGNvbmZpZ1VTRV9BUFBMSUNBVElPTl9UQVNLX1RBRwkwDQorDQorLyogQ28tcm91dGluZSBkZWZpbml0aW9ucy4gKi8NCisjZGVmaW5lIGNvbmZpZ1VTRV9DT19ST1VUSU5FUyAJCTANCisjZGVmaW5lIGNvbmZpZ01BWF9DT19ST1VUSU5FX1BSSU9SSVRJRVMgKCAyICkNCisNCisvKiBTZXQgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyB0byAxIHRvIGluY2x1ZGUgdGhlIEFQSSBmdW5jdGlvbiwgb3IgemVybw0KK3RvIGV4Y2x1ZGUgdGhlIEFQSSBmdW5jdGlvbi4gKi8NCisNCisjZGVmaW5lIElOQ0xVREVfdlRhc2tQcmlvcml0eVNldAkJMQ0KKyNkZWZpbmUgSU5DTFVERV91eFRhc2tQcmlvcml0eUdldAkJMQ0KKyNkZWZpbmUgSU5DTFVERV92VGFza0RlbGV0ZQkJCQkxDQorI2RlZmluZSBJTkNMVURFX3ZUYXNrQ2xlYW5VcFJlc291cmNlcwkwDQorI2RlZmluZSBJTkNMVURFX3ZUYXNrU3VzcGVuZAkJCTENCisjZGVmaW5lIElOQ0xVREVfdlRhc2tEZWxheVVudGlsCQkJMQ0KKyNkZWZpbmUgSU5DTFVERV92VGFza0RlbGF5CQkJCTENCisNCisvKiBVc2UgdGhlIHN5c3RlbSBkZWZpbml0aW9uLCBpZiB0aGVyZSBpcyBvbmUgKi8NCisjaWZkZWYgX19OVklDX1BSSU9fQklUUw0KKwkjZGVmaW5lIGNvbmZpZ1BSSU9fQklUUyAgICAgICBfX05WSUNfUFJJT19CSVRTDQorI2Vsc2UNCisJI2RlZmluZSBjb25maWdQUklPX0JJVFMgICAgICAgNCAgICAgICAgLyogMTUgcHJpb3JpdHkgbGV2ZWxzICovDQorI2VuZGlmDQorDQorI2RlZmluZSBjb25maWdMSUJSQVJZX0xPV0VTVF9JTlRFUlJVUFRfUFJJT1JJVFkJCQkxNQ0KKyNkZWZpbmUgY29uZmlnTElCUkFSWV9NQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkJNQ0KKw0KKy8qIFRoZSBsb3dlc3QgcHJpb3JpdHkuICovDQorI2RlZmluZSBjb25maWdLRVJORUxfSU5URVJSVVBUX1BSSU9SSVRZIAkoIGNvbmZpZ0xJQlJBUllfTE9XRVNUX0lOVEVSUlVQVF9QUklPUklUWSA8PCAoOCAtIGNvbmZpZ1BSSU9fQklUUykgKQ0KKy8qIFByaW9yaXR5IDUsIG9yIDE2MCBhcyBvbmx5IHRoZSB0b3AgdGhyZWUgYml0cyBhcmUgaW1wbGVtZW50ZWQuICovDQorI2RlZmluZSBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgCSggY29uZmlnTElCUkFSWV9NQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgPDwgKDggLSBjb25maWdQUklPX0JJVFMpICkNCisNCisvKiBQcmV2ZW50IHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYmVpbmcgaW5jbHVkZWQgd2hlbiBGcmVlUlRPU0NvbmZpZy5oDQoraXMgaW5jbHVkZWQgZnJvbSBhbiBhc20gZmlsZS4gKi8NCisjaWZkZWYgX19JQ0NBUk1fXw0KKwkjaW5jbHVkZSAic3RtMzJsMXh4X3RpbS5oIg0KKwlleHRlcm4gdm9pZCB2Q29uZmlndXJlVGltZXJGb3JSdW5UaW1lU3RhdHMoIHZvaWQgKTsNCisJZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdWxUSU02X092ZXJmbG93Q291bnQ7DQorI2VuZGlmIC8qIF9fSUNDQVJNX18gKi8NCisNCisjZGVmaW5lIHBvcnRDT05GSUdVUkVfVElNRVJfRk9SX1JVTl9USU1FX1NUQVRTKCkgdkNvbmZpZ3VyZVRpbWVyRm9yUnVuVGltZVN0YXRzKCkNCisjZGVmaW5lIHBvcnRBTFRfR0VUX1JVTl9USU1FX0NPVU5URVJfVkFMVUUoIHVsQ291bnRWYWx1ZSApCQkJCQkJCQkJXA0KKwl7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCVRJTV9DbWQoIFRJTTYsIERJU0FCTEUgKTsJCQkJCQkJCQkJCQkJCQlcDQorCQl1bENvdW50VmFsdWUgPSAoICggdWxUSU02X092ZXJmbG93Q291bnQgPDwgMTZVTCApIHwgKCB1bnNpZ25lZCBsb25nICkgVElNNi0+Q05UICk7CVwNCisJCVRJTV9DbWQoIFRJTTYsIEVOQUJMRSApOwkJCQkJCQkJCQkJCQkJCVwNCisJfQ0KKw0KKyNlbmRpZiAvKiBGUkVFUlRPU19DT05GSUdfSCAqLw0KKw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvUGFyVGVzdC5jIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9QYXJUZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMzNTNkNgotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvUGFyVGVzdC5jCkBAIC0wLDAgKzEsMTQ5IEBACisvKg0KKyAgICBGcmVlUlRPUyBWNi4xLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTAgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQorDQorICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiBJZiB5b3UgYXJlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICsgTmV3IHRvIEZyZWVSVE9TLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiAgICArIFdhbnRpbmcgdG8gbGVhcm4gRnJlZVJUT1Mgb3IgbXVsdGl0YXNraW5nIGluIGdlbmVyYWwgcXVpY2tseSAgICAgICAqDQorICAgICogICAgKyBMb29raW5nIGZvciBiYXNpYyB0cmFpbmluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICsgV2FudGluZyB0byBpbXByb3ZlIHlvdXIgRnJlZVJUT1Mgc2tpbGxzIGFuZCBwcm9kdWN0aXZpdHkgICAgICAgICAgICoNCisgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICogdGhlbiB0YWtlIGEgbG9vayBhdCB0aGUgRnJlZVJUT1MgYm9va3MgLSBhdmFpbGFibGUgYXMgUERGIG9yIHBhcGVyYmFjayAgKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiAgICAgICAgIlVzaW5nIHRoZSBGcmVlUlRPUyBSZWFsIFRpbWUgS2VybmVsIC0gYSBQcmFjdGljYWwgR3VpZGUiICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiBBIHBkZiByZWZlcmVuY2UgbWFudWFsIGlzIGFsc28gYXZhaWxhYmxlLiAgQm90aCBhcmUgdXN1YWxseSBkZWxpdmVyZWQgICAqDQorICAgICogdG8geW91ciBpbmJveCB3aXRoaW4gMjAgbWludXRlcyB0byB0d28gaG91cnMgd2hlbiBwdXJjaGFzZWQgYmV0d2VlbiA4YW0gKg0KKyAgICAqIGFuZCA4cG0gR01UIChhbHRob3VnaCBwbGVhc2UgYWxsb3cgdXAgdG8gMjQgaG91cnMgaW4gY2FzZSBvZiAgICAgICAgICAgICoNCisgICAgKiBleGNlcHRpb25hbCBjaXJjdW1zdGFuY2VzKS4gIFRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICAgICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisNCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCisNCisgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KKyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KKyAgICAqKipOT1RFKioqIFRoZSBleGNlcHRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZQ0KKyAgICBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUNCisgICAgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLg0KKyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVA0KKyAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCisgICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KKyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KKyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQorICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCisgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCisgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQorDQorICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KKw0KKyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCisgICAgY29udGFjdCBkZXRhaWxzLg0KKw0KKyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KKyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KKw0KKyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQorICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQorKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJGcmVlUlRPUy5oIg0KKyNpbmNsdWRlICJ0YXNrLmgiDQorDQorLyogU1QgbGlicmFyeSBmdW5jdGlvbnMuICovDQorI2luY2x1ZGUgInN0bTMybDE1Ml9ldmFsLmgiDQorDQorI2RlZmluZSBwYXJ0c3RNQVhfT1VUUFVUX0xFRCA0DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2UGFyVGVzdEluaXRpYWxpc2UoIHZvaWQgKQ0KK3sNCisJLyogQ29uZmlndXJlIHRoZSBvdXRwdXQgTEVEcy4gICBOb3RlIHRoYXQgSlAxOCBhbmQgSlAxOSBtdXN0IGJlIGNsb3NlZCBvbg0KKwl0aGUgRXZhbCBib2FyZCBmb3IgTEVEMyBhbmQgTEVENCB0byB3b3JrLiAqLw0KKwlTVE1fRVZBTF9MRURJbml0KCBMRUQxICk7DQorCVNUTV9FVkFMX0xFREluaXQoIExFRDIgKTsNCisJU1RNX0VWQUxfTEVESW5pdCggTEVEMyApOw0KKwlTVE1fRVZBTF9MRURJbml0KCBMRUQ0ICk7DQorCVNUTV9FVkFMX0xFRE9mZiggTEVEMSApOw0KKwlTVE1fRVZBTF9MRURPZmYoIExFRDIgKTsNCisJU1RNX0VWQUxfTEVET2ZmKCBMRUQzICk7DQorCVNUTV9FVkFMX0xFRE9mZiggTEVENCApOwkNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2UGFyVGVzdFNldExFRCggdW5zaWduZWQgcG9ydEJBU0VfVFlQRSB1eExFRCwgc2lnbmVkIHBvcnRCQVNFX1RZUEUgeFZhbHVlICkNCit7DQorCXZUYXNrU3VzcGVuZEFsbCgpOw0KKwl7DQorCQlpZiggeFZhbHVlICE9IHBkRkFMU0UgKQ0KKwkJew0KKwkJCXN3aXRjaCggdXhMRUQgKQ0KKwkJCXsNCisJCQkJY2FzZSAwOiBTVE1fRVZBTF9MRURPbiggTEVEMSApOw0KKwkJCQkJCWJyZWFrOw0KKwkNCisJCQkJY2FzZSAxOiBTVE1fRVZBTF9MRURPbiggTEVEMiApOw0KKwkJCQkJCWJyZWFrOw0KKwkNCisJCQkJY2FzZSAyOiBTVE1fRVZBTF9MRURPbiggTEVEMyApOw0KKwkJCQkJCWJyZWFrOw0KKwkNCisJCQkJY2FzZSAzOiBTVE1fRVZBTF9MRURPbiggTEVENCApOw0KKwkJCQkJCWJyZWFrOwkJCQkJDQorCQkJfQ0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXN3aXRjaCggdXhMRUQgKQ0KKwkJCXsNCisJCQkJY2FzZSAwOiBTVE1fRVZBTF9MRURPZmYoIExFRDEgKTsNCisJCQkJCQlicmVhazsNCisJDQorCQkJCWNhc2UgMTogU1RNX0VWQUxfTEVET2ZmKCBMRUQyICk7DQorCQkJCQkJYnJlYWs7DQorCQ0KKwkJCQljYXNlIDI6IFNUTV9FVkFMX0xFRE9mZiggTEVEMyApOw0KKwkJCQkJCWJyZWFrOw0KKwkNCisJCQkJY2FzZSAzOiBTVE1fRVZBTF9MRURPZmYoIExFRDQgKTsNCisJCQkJCQlicmVhazsJCQkJCQ0KKwkJCX0NCisJCX0NCisJfQ0KKwl4VGFza1Jlc3VtZUFsbCgpOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZQYXJUZXN0VG9nZ2xlTEVEKCB1bnNpZ25lZCBwb3J0QkFTRV9UWVBFIHV4TEVEICkNCit7DQorCXZUYXNrU3VzcGVuZEFsbCgpOw0KKwl7DQorCQlzd2l0Y2goIHV4TEVEICkNCisJCXsNCisJCQljYXNlIDA6IFNUTV9FVkFMX0xFRFRvZ2dsZSggTEVEMSApOw0KKwkJCQkJYnJlYWs7DQorDQorCQkJY2FzZSAxOiBTVE1fRVZBTF9MRURUb2dnbGUoIExFRDIgKTsNCisJCQkJCWJyZWFrOw0KKw0KKwkJCWNhc2UgMjogU1RNX0VWQUxfTEVEVG9nZ2xlKCBMRUQzICk7DQorCQkJCQlicmVhazsNCisNCisJCQljYXNlIDM6IFNUTV9FVkFMX0xFRFRvZ2dsZSggTEVENCApOw0KKwkJCQkJYnJlYWs7CQkJCQkNCisJCX0NCisJfQ0KKwl4VGFza1Jlc3VtZUFsbCgpOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1JUT1NEZW1vLmV3ZCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvUlRPU0RlbW8uZXdkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNTU1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1JUT1NEZW1vLmV3ZApAQCAtMCwwICsxLDE2ODMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCisNCis8cHJvamVjdD4NCisgIDxmaWxlVmVyc2lvbj4yPC9maWxlVmVyc2lvbj4NCisgIDxjb25maWd1cmF0aW9uPg0KKyAgICA8bmFtZT5EZWJ1ZzwvbmFtZT4NCisgICAgPHRvb2xjaGFpbj4NCisgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgIDwvdG9vbGNoYWluPg0KKyAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4yMjwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXENPTkZJR1xkZWJ1Z2dlclxTVFxpb3N0bTMybDE1Mnh4LmRkZjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+Ni4xMC4xLjUyMTcwPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+SkxJTktfSUQ8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT42LjEwLjEuNTIxNzA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkQXR0YWNoVG9Qcm9ncmFtPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlVzZUZsYXNoTG9hZGVyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNMb3dMZXZlbDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0JFOFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk1hY0ZpbGUyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0RldmljZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5GbGFzaExvYWRlcnNWMzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcY29uZmlnXGZsYXNobG9hZGVyXFNUXEZsYXNoU1RNMzJMMTV4eEIuYm9hcmQ8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ1NpbURyaXZlckluZm88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NTaW1FbmFibGVQU1A8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NTaW1Qc3BPdmVycmlkZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ1NpbVBzcENvbmZpZ0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+QU5HRUxfSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NBbmdlbEhlYXJ0YmVhdDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tdW5pY2F0aW9uPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW1CYXVkPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW1Qb3J0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFOR0VMVENQSVA8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Eb0FuZ2VsTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BbmdlbExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+R0RCU0VSVkVSX0lEPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+SUFSUk9NX0lEPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNSb21Mb2dGaWxlQ2hlY2s8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1JvbUNvbW1Qb3J0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNSb21Db21tQmF1ZDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPkpMSU5LX0lEPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjEyPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5KTGlua1NwZWVkPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjMyPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0pMaW5rQXR0YWNoU2xhdmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0NhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0NhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0NhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NKTGlua1NjcmlwdEZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPkxNSUZURElfSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkxtaWZ0ZGlTcGVlZDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjUwMDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaURvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5NQUNSQUlHT1JfSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+anRhZzwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5FbXVTcGVlZDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Eb0VtdU11bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkVtdU11bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MEBBUk03VERNSTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkVtdUhXUmVzZXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0VtdUNvbW1CYXVkPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNFbXVDb21tUG9ydDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5qdGFnbzwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+VW51c2VkQWRkcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjB4MDA4MDAwMDA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5QRU1JQ1JPX0lEPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ1BFTWljcm9BdHRhY2hTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9JbnRlcmZhY2VMaXN0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9KdGFnU3BlZWQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4jVU5JTklUSUFMSVpFRCM8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvU2hvd1NldHRpbmdzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9VU0JEZXZpY2U8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvU2VyaWFsUG9ydDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvVENQSVBBdXRvU2Nhbk5ldHdvcms8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvVENQSVA8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xMC4wLjAuMTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0NvbW1DbWRMaW5lUHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPlJESV9JRDwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DUkRJRHJpdmVyRGxsPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNSRElMb2dGaWxlQ2hlY2s8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVFZGl0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUhXUmVzZXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElVc2VFVE08L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5TVExJTktfSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5USElSRFBBUlRZX0lEPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5RHJpdmVyRGxsPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPGRlYnVnZ2VyUGx1Z2lucz4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhUaW55QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcZW1iT1NcZW1iT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE1RWFxNUVhSdG9zUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xPcGVuUlRPU1xPcGVuUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcUG93ZXJQYWNcUG93ZXJQYWNSVE9TLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xRdWFkcm9zXFF1YWRyb3NfRVdCNl9QbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktMjg2LUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xDb2RlQ292ZXJhZ2VcQ29kZUNvdmVyYWdlLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcRnJlZVJUT1NcRnJlZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xQcm9maWxpbmdcUHJvZmlsaW5nLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcU3RhY2tcU3RhY2suRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xTeW1MaXN0XFN5bUxpc3QuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCisgIDwvY29uZmlndXJhdGlvbj4NCisgIDxjb25maWd1cmF0aW9uPg0KKyAgICA8bmFtZT5SZWxlYXNlPC9uYW1lPg0KKyAgICA8dG9vbGNoYWluPg0KKyAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCisgICAgPC90b29sY2hhaW4+DQorICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPkMtU1BZPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjIyPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DSW5wdXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0VuZGlhbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5NYWNPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5NYWNGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcQ09ORklHXGRlYnVnZ2VyXFNUXGlvc3RtMzJsMTUyeHguZGRmPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT42LjEwLjEuNTIxNzA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5KTElOS19JRDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjYuMTAuMS41MjE3MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRBdHRhY2hUb1Byb2dyYW08L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+VXNlRmxhc2hMb2FkZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0xvd0xldmVsPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TWFjRmlsZTI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcZmxhc2hsb2FkZXJcU1RcRmxhc2hTVE0zMkwxNXh4Qi5ib2FyZDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk92ZXJyaWRlRGVmRmxhc2hCb2FyZDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5BTkdFTF9JRDwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0FuZ2VsSGVhcnRiZWF0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW11bmljYXRpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbUJhdWQ8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbVBvcnQ8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QU5HRUxUQ1BJUDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkRvQW5nZWxMb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFuZ2VsTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5JQVJST01fSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DUm9tQ29tbVBvcnQ8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1JvbUNvbW1CYXVkPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MTI8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKTGlua0xvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkpMaW5rSW5pdGlhbFNwZWVkPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0RvSmxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1NjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKTGlua011bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtJUkxlbmd0aDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rQ29tbVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtUQ1BJUDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtTcGVlZFJhZGlvVjI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NVU0JEZXZpY2U8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DSkxpbmtBdHRhY2hTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0pMaW5rUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+TE1JRlRESV9JRDwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TG1pZnRkaVNwZWVkPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaUxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPk1BQ1JBSUdPUl9JRDwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5qdGFnPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkVtdVNwZWVkPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkRvRW11TXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RW11TXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wQEFSTTdURE1JPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RW11SFdSZXNldDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DRW11Q29tbUJhdWQ8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0VtdUNvbW1Qb3J0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPmp0YWdvPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5VbnVzZWRBZGRyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MHgwMDgwMDAwMDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DUEVNaWNyb0F0dGFjaFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0ludGVyZmFjZUxpc3Q8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0p0YWdTcGVlZDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiNVTklOSVRJQUxJWkVEIzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1VTQkRldmljZTwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9TZXJpYWxQb3J0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9UQ1BJUEF1dG9TY2FuTmV0d29yazwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9UQ1BJUDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjEwLjAuMC4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvQ29tbUNtZExpbmVQcm9kdWNlcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+UkRJX0lEPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNSRElEcml2ZXJEbGw8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUVkaXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJSFdSZXNldDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JESVVzZUVUTTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8ZGVidWdnZXJQbHVnaW5zPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteFRpbnlBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTVFYXE1RWFJ0b3NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xQb3dlclBhY1xQb3dlclBhY1JUT1MuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFF1YWRyb3NcUXVhZHJvc19FV0I2X1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcU2FmZVJUT1NcU2FmZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRocmVhZFhcVGhyZWFkWEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS0yODYtS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXENvZGVDb3ZlcmFnZVxDb2RlQ292ZXJhZ2UuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xGcmVlUlRPU1xGcmVlUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICA8L3BsdWdpbj4NCisgICAgICA8cGx1Z2luPg0KKyAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcT3BlblJUT1NcT3BlblJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXFByb2ZpbGluZ1xQcm9maWxpbmcuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgIDwvcGx1Z2luPg0KKyAgICAgIDxwbHVnaW4+DQorICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xTdGFja1xTdGFjay5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgICAgPHBsdWdpbj4NCisgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXFN5bUxpc3RcU3ltTGlzdC5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQorICAgICAgPC9wbHVnaW4+DQorICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KKyAgPC9jb25maWd1cmF0aW9uPg0KKzwvcHJvamVjdD4NCisNCisNCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1JUT1NEZW1vLmV3cCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvUlRPU0RlbW8uZXdwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NzUyNzQKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1JUT1NEZW1vLmV3cApAQCAtMCwwICsxLDE4MzggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCisNCis8cHJvamVjdD4NCisgIDxmaWxlVmVyc2lvbj4yPC9maWxlVmVyc2lvbj4NCisgIDxjb25maWd1cmF0aW9uPg0KKyAgICA8bmFtZT5EZWJ1ZzwvbmFtZT4NCisgICAgPHRvb2xjaGFpbj4NCisgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgIDwvdG9vbGNoYWluPg0KKyAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5HZW5lcmFsPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjE4PC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5FeGVQYXRoPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+RGVidWdcRXhlPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPkRlYnVnXE9iajwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkxpc3RQYXRoPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+RGVidWdcTGlzdDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjE3PC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+Mzc8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbnB1dCB2YXJpYW50PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklucHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIHNjYW4gc2V0LCBubyBhc3NpZ25tZW50IHN1cHByZXNzaW5nLjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk91dHB1dCB2YXJpYW50PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk91dHB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBhLCBBLCBubyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gZmxhZ3MuPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R091dHB1dEJpbmFyeTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5GUFU8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+UlREZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PR1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+NS4xMC4wLjE1OTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9HTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjYuMTAuMS41MjE3MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+U1RNMzJMMTUyeEIJU1QgU1RNMzJMMTUyeEI8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HZW5Mb3dMZXZlbEludGVyZmFjZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZUJFPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9HQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HZW5TdGRvdXRJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXMwNDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXElOQ1xjXERMaWJfQ29uZmlnX05vcm1hbC5oPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPklDQ0FSTTwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+VVNFX1NUTTMyTDE1Ml9FVkFMPC9zdGF0ZT4NCisgICAgICAgICAgPHN0YXRlPlVTRV9TVERQRVJJUEhfRFJJVkVSPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jRmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NDb21tZW50czwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NMaW5lPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTGlzdENGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTGlzdENNbmVtb25pY3M8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NMaXN0Q01lc3NhZ2VzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzU291cmNlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDRW5hYmxlUmVtYXJrczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0RpYWdTdXBwcmVzczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPlBhMDgyPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wMDAwMDAwPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NEZWJ1Z0luZm88L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SUVuZGlhbk1vZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTGFuZ0NvbmZvcm1hbmNlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDU2lnbmVkUGxhaW5DaGFyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUmVxdWlyZVByb3RvdHlwZXM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5BcmVFcnI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NDb21waWxlclJ1bnRpbWVJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NMaWJDb25maWdIZWFkZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+UHJlSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0luY2x1ZGVQYXRoMjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlPC9zdGF0ZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlXENNU0lTXENNM1xEZXZpY2VTdXBwb3J0XFNUXFNUTTMyTDF4eDwvc3RhdGU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxDTVNJU1xDTTNcQ29yZVN1cHBvcnQ8L3N0YXRlPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxzeXN0ZW1fYW5kX1NUX2NvZGVcU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXJcaW5jPC9zdGF0ZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlXFNUTTMyTDE1Ml9FVkFMPC9zdGF0ZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcaW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNMzwvc3RhdGU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NTdGRJbmNDaGVjazwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0NvZGVTZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+LnRleHQ8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JSW50ZXJ3b3JrMjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yTW9kZTI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWxTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXMwNDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUm9waTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJ3cGk8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQb3NJbmROb0R5bkluaXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWNjTGFuZzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JY2NDRGlhbGVjdDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JY2NBbGxvd1ZMQTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JY2NDcHBEaWFsZWN0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkljY0V4Y2VwdGlvbnM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWNjUlRUSTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JY2NTdGF0aWNEZXN0cjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JY2NSZWxheGVkRnBQcmVjaXNpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUxpc3Q8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUxpc3RIZWFkZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUxpc3Rpbmc8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SW5jbHVkZXM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TWFjRGVmczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5NYWNFeHBzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk1hY0V4ZWM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T25seUFzc2VkPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk11bHRpTGluZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoQ2hlY2s8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+VGFiU3BhY2luZzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BWFJlZjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BWFJlZkRlZmluZXM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVhSZWZJbnRlcm5hbDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BWFJlZkR1YWw8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNFZGl0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUlnbm9yZVN0ZEluY2x1ZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVVzZXJJbmNsdWRlczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQ8L3N0YXRlPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxzeXN0ZW1fYW5kX1NUX2NvZGVcQ01TSVNcQ00zXERldmljZVN1cHBvcnRcU1RcU1RNMzJMMXh4PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc0NoZWNrVjI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc1YyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9DT3V0cHV0T3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T09DT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPmMuc3JlYzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCisgICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5CSUNPTVA8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhLz4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPkJVSUxEQUNUSU9OPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4xPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDxwcmVidWlsZD48L3ByZWJ1aWxkPg0KKyAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5JTElOSzwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4xMTwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+Yy5vdXQ8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxzdG0zMmwxeHhfZmxhc2guaWNmPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0VuYWJsZVJlbWFya3M8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtTdXBwcmVzc0RpYWdzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzUmVtPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzV2FybjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc0VycjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rV2FybmluZ3NBcmVFcnJvcnM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtVc2VFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0xvd0xldmVsSW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtBdXRvTGliRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rQWRkaXRpb25hbExpYnM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua092ZXJyaWRlUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbFNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+X19pYXJfcHJvZ3JhbV9zdGFydDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MHhGRjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DcmNBbGlnbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DcmNBbGdvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNyY1BvbHk8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q3JjQ29tcGw8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q3JjSW5pdGlhbFZhbHVlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RG9DcmM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtCRThTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtTdGRvdXRJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DcmNGdWxsU2l6ZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0lFbGZUb29sUG9zdFByb2Nlc3M8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtMb2dBdXRvTGliU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rTG9nUmVkaXJTeW1ib2xzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rTG9nVW51c2VkRnJhZ21lbnRzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rQ3JjUmV2ZXJzZUJ5dGVPcmRlcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0NyY1VzZUFzSW5wdXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtPcHRJbmxpbmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zQWxsb3c8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zRm9yY2U8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPklBUkNISVZFPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklhcmNoaXZlSW5wdXRzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU91dHB1dDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPkJJTElOSzwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGEvPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgPC9jb25maWd1cmF0aW9uPg0KKyAgPGNvbmZpZ3VyYXRpb24+DQorICAgIDxuYW1lPlJlbGVhc2U8L25hbWU+DQorICAgIDx0b29sY2hhaW4+DQorICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICA8L3Rvb2xjaGFpbj4NCisgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+R2VuZXJhbDwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4xODwvdmVyc2lvbj4NCisgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RXhlUGF0aDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPlJlbGVhc2VcRXhlPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPlJlbGVhc2VcT2JqPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5SZWxlYXNlXExpc3Q8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5WYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4xNzwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjM3PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SW5wdXQgdmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbnB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBzY2FuIHNldCwgbm8gYXNzaWdubWVudCBzdXBwcmVzc2luZy48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PdXRwdXQgdmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PdXRwdXQgZGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgYSwgQSwgbm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIGZsYWdzLjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RlBVPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9HQ29yZU9yQ2hpcDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5Vc2UgdGhlIG5vcm1hbCBjb25maWd1cmF0aW9uIG9mIHRoZSBDL0MrKyBydW50aW1lIGxpYnJhcnkuIE5vIGxvY2FsZSBpbnRlcmZhY2UsIEMgbG9jYWxlLCBubyBmaWxlIGRlc2NyaXB0b3Igc3VwcG9ydCwgbm8gbXVsdGlieXRlcyBpbiBwcmludGYgYW5kIHNjYW5mLCBhbmQgbm8gaGV4IGZsb2F0cyBpbiBzdHJ0b2QuPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjUuMTAuMC4xNTk8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PR0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT42LjEwLjEuNTIxNzA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5HZW5lcmFsRW5hYmxlTWlzcmE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyYm9zZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PR0NoaXBTZWxlY3RFZGl0TWVudTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPlNUTTMyTDE1MnhCCVNUIFNUTTMyTDE1MnhCPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5JQ0NBUk08L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPlVTRV9TVE0zMkwxNTJfRVZBTDwvc3RhdGU+DQorICAgICAgICAgIDxzdGF0ZT5VU0VfU1REUEVSSVBIX0RSSVZFUjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0ZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jQ29tbWVudHM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jTGluZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0xpc3RDRmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0xpc3RDTW5lbW9uaWNzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTGlzdENNZXNzYWdlczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc1NvdXJjZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0VuYWJsZVJlbWFya3M8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NEaWFnU3VwcHJlc3M8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5QYTA4Mjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDRGlhZ1JlbWFyazwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5pbmc8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0RpYWdFcnJvcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDT2JqUHJlZml4PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQWxsb3dMaXN0PC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MTExMTExMTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZTwvc3RhdGU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxDTVNJU1xDTTNcRGV2aWNlU3VwcG9ydFxTVFxTVE0zMkwxeHg8L3N0YXRlPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxzeXN0ZW1fYW5kX1NUX2NvZGVcQ01TSVNcQ00zXENvcmVTdXBwb3J0PC9zdGF0ZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlXFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyXGluYzwvc3RhdGU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxTVE0zMkwxNTJfRVZBTDwvc3RhdGU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXENvbW1vblxpbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGluY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTM8L3N0YXRlPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPi50ZXh0PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SUludGVyd29yazI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWNjQ3BwRGlhbGVjdDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkljY1JUVEk8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWNjUmVsYXhlZEZwUHJlY2lzaW9uPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+QUFSTTwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj44PC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFXYXJuRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFXYXJuV2hhdDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BV2Fybk9uZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UxPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BRGVidWc8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QWx0UmVnaXN0ZXJOYW1lczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFMaXN0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFMaXN0SGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFMaXN0aW5nPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk1hY0RlZnM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+TWFjRXhwczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5NYWNFeGVjPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9ubHlBc3NlZDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5NdWx0aUxpbmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aENoZWNrPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGg8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT44MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPlRhYlNwYWNpbmc8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT44PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVhSZWY8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVhSZWZEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFYUmVmSW50ZXJuYWw8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QVhSZWZEdWFsPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5BT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QU11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzQ2hlY2s8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzRWRpdDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjEwMDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFJZ25vcmVTdGRJbmNsdWRlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFVc2VySW5jbHVkZXM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkPC9zdGF0ZT4NCisgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlXENNU0lTXENNM1xEZXZpY2VTdXBwb3J0XFNUXFNUTTMyTDF4eDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNDaGVja1YyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNWMjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5PQkpDT1BZPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YT4NCisgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZvcm1hdDwvbmFtZT4NCisgICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT5jLnNyZWM8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5PT0NDb21tYW5kTGluZVByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPk9PQ09iakNvcHlFbmFibGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgIDwvZGF0YT4NCisgICAgPC9zZXR0aW5ncz4NCisgICAgPHNldHRpbmdzPg0KKyAgICAgIDxuYW1lPkNVU1RPTTwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQorICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+QklDT01QPC9uYW1lPg0KKyAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICA8ZGF0YS8+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5CVUlMREFDVElPTjwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MTwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8cHJlYnVpbGQ+PC9wcmVidWlsZD4NCisgICAgICAgIDxwb3N0YnVpbGQ+PC9wb3N0YnVpbGQ+DQorICAgICAgPC9kYXRhPg0KKyAgICA8L3NldHRpbmdzPg0KKyAgICA8c2V0dGluZ3M+DQorICAgICAgPG5hbWU+SUxJTks8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhPg0KKyAgICAgICAgPHZlcnNpb24+MTE8L3ZlcnNpb24+DQorICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPmMub3V0PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rRGVidWdJbmZvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rS2VlcFN5bWJvbHM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVN5bWJvbDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U2VnbWVudDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5QWxpZ248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0RlZmluZXM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0NvbmZpZ0RlZmluZXM8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua01hcEZpbGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rTG9nSW5pdGlhbGl6YXRpb248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtMb2dNb2R1bGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtMb2dTZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rTG9nVmVuZWVyPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rSWNmT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxzeXN0ZW1fYW5kX1NUX2NvZGVcc3RtMzJsMXh4X2ZsYXNoLmljZjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPl9faWFyX3Byb2dyYW1fc3RhcnQ8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5Eb0ZpbGw8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+RmlsbGVyQnl0ZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5GaWxsZXJTdGFydDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkZpbGxlckVuZDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNyY1NpemU8L25hbWU+DQorICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q3JjQWxnbzwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5DcmNQb2x5PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNyY0NvbXBsPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KKyAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgPC9vcHRpb24+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KKyAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5JQVJDSElWRTwvbmFtZT4NCisgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgPGRhdGE+DQorICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICA8bmFtZT5JYXJjaGl2ZUlucHV0czwvbmFtZT4NCisgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdXRwdXQ8L25hbWU+DQorICAgICAgICAgIDxzdGF0ZT4jIyNVbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICA8L29wdGlvbj4NCisgICAgICA8L2RhdGE+DQorICAgIDwvc2V0dGluZ3M+DQorICAgIDxzZXR0aW5ncz4NCisgICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQorICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgIDxkYXRhLz4NCisgICAgPC9zZXR0aW5ncz4NCisgIDwvY29uZmlndXJhdGlvbj4NCisgIDxncm91cD4NCisgICAgPG5hbWU+RnJlZVJUT1NfU291cmNlPC9uYW1lPg0KKyAgICA8Z3JvdXA+DQorICAgICAgPG5hbWU+UG9ydGFibGU8L25hbWU+DQorICAgICAgPGZpbGU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfMi5jPC9uYW1lPg0KKyAgICAgIDwvZmlsZT4NCisgICAgICA8ZmlsZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ00zXHBvcnQuYzwvbmFtZT4NCisgICAgICA8L2ZpbGU+DQorICAgICAgPGZpbGU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNM1xwb3J0YXNtLnM8L25hbWU+DQorICAgICAgPC9maWxlPg0KKyAgICA8L2dyb3VwPg0KKyAgICA8ZmlsZT4NCisgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxsaXN0LmM8L25hbWU+DQorICAgIDwvZmlsZT4NCisgICAgPGZpbGU+DQorICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccXVldWUuYzwvbmFtZT4NCisgICAgPC9maWxlPg0KKyAgICA8ZmlsZT4NCisgICAgICA8bmFtZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlclxzcmNcc3RtMzJsMXh4X3NwaS5jPC9uYW1lPg0KKyAgICA8L2ZpbGU+DQorICAgIDxmaWxlPg0KKyAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRhc2tzLmM8L25hbWU+DQorICAgIDwvZmlsZT4NCisgIDwvZ3JvdXA+DQorICA8Z3JvdXA+DQorICAgIDxuYW1lPlN0YW5kYXJkX0RlbW9fQ29kZTwvbmFtZT4NCisgICAgPGZpbGU+DQorICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxjb210ZXN0LmM8L25hbWU+DQorICAgIDwvZmlsZT4NCisgICAgPGZpbGU+DQorICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkeW5hbWljLmM8L25hbWU+DQorICAgIDwvZmlsZT4NCisgICAgPGZpbGU+DQorICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxmbGFzaC5jPC9uYW1lPg0KKyAgICA8L2ZpbGU+DQorICAgIDxmaWxlPg0KKyAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcR2VuUVRlc3QuYzwvbmFtZT4NCisgICAgPC9maWxlPg0KKyAgPC9ncm91cD4NCisgIDxncm91cD4NCisgICAgPG5hbWU+U3lzdGVtX2FuZF9TVF9Db2RlPC9uYW1lPg0KKyAgICA8Z3JvdXA+DQorICAgICAgPG5hbWU+RXZhbF9Cb2FyZF9MaWJyYXJ5PC9uYW1lPg0KKyAgICAgIDxmaWxlPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxzeXN0ZW1fYW5kX1NUX2NvZGVcU1RNMzJMMTUyX0VWQUxcc3RtMzJsMTUyX2V2YWwuYzwvbmFtZT4NCisgICAgICA8L2ZpbGU+DQorICAgICAgPGZpbGU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxTVE0zMkwxNTJfRVZBTFxzdG0zMmwxNTJfZXZhbF9sY2QuYzwvbmFtZT4NCisgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICA8bmFtZT5QZXJpcGhlcmFsX0xpYnJhcnk8L25hbWU+DQorICAgICAgPGZpbGU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlclxzcmNcbWlzYy5jPC9uYW1lPg0KKyAgICAgIDwvZmlsZT4NCisgICAgICA8ZmlsZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlXFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyXHNyY1xzdG0zMmwxeHhfZXh0aS5jPC9uYW1lPg0KKyAgICAgIDwvZmlsZT4NCisgICAgICA8ZmlsZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlXFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyXHNyY1xzdG0zMmwxeHhfZ3Bpby5jPC9uYW1lPg0KKyAgICAgIDwvZmlsZT4NCisgICAgICA8ZmlsZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlXFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyXHNyY1xzdG0zMmwxeHhfcHdyLmM8L25hbWU+DQorICAgICAgPC9maWxlPg0KKyAgICAgIDxmaWxlPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxzeXN0ZW1fYW5kX1NUX2NvZGVcU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXJcc3JjXHN0bTMybDF4eF9yY2MuYzwvbmFtZT4NCisgICAgICA8L2ZpbGU+DQorICAgICAgPGZpbGU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlclxzcmNcc3RtMzJsMXh4X3N5c2NmZy5jPC9uYW1lPg0KKyAgICAgIDwvZmlsZT4NCisgICAgICA8ZmlsZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcc3lzdGVtX2FuZF9TVF9jb2RlXFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyXHNyY1xzdG0zMmwxeHhfdGltLmM8L25hbWU+DQorICAgICAgPC9maWxlPg0KKyAgICAgIDxmaWxlPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxzeXN0ZW1fYW5kX1NUX2NvZGVcU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXJcc3JjXHN0bTMybDF4eF91c2FydC5jPC9uYW1lPg0KKyAgICAgIDwvZmlsZT4NCisgICAgPC9ncm91cD4NCisgICAgPGZpbGU+DQorICAgICAgPG5hbWU+JFBST0pfRElSJFxzeXN0ZW1fYW5kX1NUX2NvZGVcc3RhcnR1cF9zdG0zMmwxeHhfbWQuczwvbmFtZT4NCisgICAgPC9maWxlPg0KKyAgICA8ZmlsZT4NCisgICAgICA8bmFtZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxzdG0zMmwxeHhfaXQuYzwvbmFtZT4NCisgICAgPC9maWxlPg0KKyAgICA8ZmlsZT4NCisgICAgICA8bmFtZT4kUFJPSl9ESVIkXHN5c3RlbV9hbmRfU1RfY29kZVxzeXN0ZW1fc3RtMzJsMXh4LmM8L25hbWU+DQorICAgIDwvZmlsZT4NCisgIDwvZ3JvdXA+DQorICA8ZmlsZT4NCisgICAgPG5hbWU+JFBST0pfRElSJFxtYWluLmM8L25hbWU+DQorICA8L2ZpbGU+DQorICA8ZmlsZT4NCisgICAgPG5hbWU+JFBST0pfRElSJFxQYXJUZXN0LmM8L25hbWU+DQorICA8L2ZpbGU+DQorICA8ZmlsZT4NCisgICAgPG5hbWU+JFBST0pfRElSJFxzZXJpYWwuYzwvbmFtZT4NCisgIDwvZmlsZT4NCis8L3Byb2plY3Q+DQorDQorDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9SVE9TRGVtby5ld3cgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1JUT1NEZW1vLmV3dwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzlhOTM4Ci0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9SVE9TRGVtby5ld3cKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KKw0KKzx3b3Jrc3BhY2U+DQorICA8cHJvamVjdD4NCisgICAgPHBhdGg+JFdTX0RJUiRcUlRPU0RlbW8uZXdwPC9wYXRoPg0KKyAgPC9wcm9qZWN0Pg0KKyAgPGJhdGNoQnVpbGQvPg0KKzwvd29ya3NwYWNlPg0KKw0KKw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvbWFpbi5jIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk0YThjMwotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvbWFpbi5jCkBAIC0wLDAgKzEsNTk5IEBACisvKg0KKyAgICBGcmVlUlRPUyBWNi4xLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTAgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQorDQorICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiBJZiB5b3UgYXJlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICsgTmV3IHRvIEZyZWVSVE9TLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiAgICArIFdhbnRpbmcgdG8gbGVhcm4gRnJlZVJUT1Mgb3IgbXVsdGl0YXNraW5nIGluIGdlbmVyYWwgcXVpY2tseSAgICAgICAqDQorICAgICogICAgKyBMb29raW5nIGZvciBiYXNpYyB0cmFpbmluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICsgV2FudGluZyB0byBpbXByb3ZlIHlvdXIgRnJlZVJUT1Mgc2tpbGxzIGFuZCBwcm9kdWN0aXZpdHkgICAgICAgICAgICoNCisgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICogdGhlbiB0YWtlIGEgbG9vayBhdCB0aGUgRnJlZVJUT1MgYm9va3MgLSBhdmFpbGFibGUgYXMgUERGIG9yIHBhcGVyYmFjayAgKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiAgICAgICAgIlVzaW5nIHRoZSBGcmVlUlRPUyBSZWFsIFRpbWUgS2VybmVsIC0gYSBQcmFjdGljYWwgR3VpZGUiICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiBBIHBkZiByZWZlcmVuY2UgbWFudWFsIGlzIGFsc28gYXZhaWxhYmxlLiAgQm90aCBhcmUgdXN1YWxseSBkZWxpdmVyZWQgICAqDQorICAgICogdG8geW91ciBpbmJveCB3aXRoaW4gMjAgbWludXRlcyB0byB0d28gaG91cnMgd2hlbiBwdXJjaGFzZWQgYmV0d2VlbiA4YW0gKg0KKyAgICAqIGFuZCA4cG0gR01UIChhbHRob3VnaCBwbGVhc2UgYWxsb3cgdXAgdG8gMjQgaG91cnMgaW4gY2FzZSBvZiAgICAgICAgICAgICoNCisgICAgKiBleGNlcHRpb25hbCBjaXJjdW1zdGFuY2VzKS4gIFRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICAgICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisNCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCisNCisgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KKyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KKyAgICAqKipOT1RFKioqIFRoZSBleGNlcHRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZQ0KKyAgICBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUNCisgICAgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLg0KKyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVA0KKyAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCisgICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KKyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KKyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQorICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCisgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCisgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQorDQorICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KKw0KKyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCisgICAgY29udGFjdCBkZXRhaWxzLg0KKw0KKyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KKyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KKw0KKyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQorICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQorKi8NCisNCisvKg0KKyAqIFRoZSBkb2N1bWVudGF0aW9uIHBhZ2UgZm9yIHRoaXMgZGVtbyBhdmFpbGFibGUgb24gaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBkb2N1bWVudHMgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgdG8gcnVuIHRoaXMgZGVtby4gIEl0IGFsc28NCisgKiBwcm92aWRlcyBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBleHBlY3RlZCBkZW1vIGFwcGxpY2F0aW9uIGJlaGF2aW91ci4NCisgKg0KKyAqIG1haW4oKSBjcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4NCisgKiBBIGxvdCBvZiB0aGUgY3JlYXRlZCB0YXNrcyBhcmUgZnJvbSB0aGUgcG9vbCBvZiAic3RhbmRhcmQgZGVtbyIgdGFza3MuICBUaGUNCisgKiB3ZWIgZG9jdW1lbnRhdGlvbiBwcm92aWRlcyBtb3JlIGRldGFpbHMgb2YgdGhlIHN0YW5kYXJkIGRlbW8gdGFza3MsIHdoaWNoDQorICogcHJvdmlkZSBubyBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHkgYnV0IGRvIHByb3ZpZGUgZ29vZCBleGFtcGxlcyBvZiBob3cgdG8NCisgKiB1c2UgdGhlIEZyZWVSVE9TIEFQSS4NCisgKg0KKyAqIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBkZW1vIHRhc2tzLCB0aGUgZm9sbG93aW5nIHRhc2tzLCBpbnRlcnJ1cHRzIGFuZA0KKyAqIHRlc3RzIGFyZSBkZWZpbmVkIGFuZC9vciBjcmVhdGVkIHdpdGhpbiB0aGlzIGZpbGU6DQorICoNCisgKiAiTENEIiB0YXNrIC0gVGhlIExDRCB0YXNrIGlzIGEgJ2dhdGVrZWVwZXInIHRhc2suICBJdCBpcyB0aGUgb25seSB0YXNrIHRoYXQNCisgKiBpcyBwZXJtaXR0ZWQgdG8gYWNjZXNzIHRoZSBMQ0QgYW5kIHRoZXJlZm9yZSBlbnN1cmVzIGFjY2VzcyB0byB0aGUgTENEIGlzDQorICogYWx3YXlzIHNlcmlhbGlzZWQgYW5kIHRoZXJlIGFyZSBubyBtdXR1YWwgZXhjbHVzaW9uIGlzc3Vlcy4gIFdoZW4gYSB0YXNrIG9yDQorICogYW4gaW50ZXJydXB0IHdhbnRzIHRvIHdyaXRlIHRvIHRoZSBMQ0QsIGl0IGRvZXMgbm90IGFjY2VzcyB0aGUgTENEIGRpcmVjdGx5DQorICogYnV0IGluc3RlYWQgc2VuZHMgdGhlIG1lc3NhZ2UgdG8gdGhlIExDRCB0YXNrLiAgVGhlIExDRCB0YXNrIHRoZW4gcGVyZm9ybXMNCisgKiB0aGUgYWN0dWFsIExDRCBvdXRwdXQuICBUaGlzIG1lY2hhbmlzbSBhbHNvIGFsbG93cyBpbnRlcnJ1cHRzIHRvLCBpbiBlZmZlY3QsDQorICogd3JpdGUgdG8gdGhlIExDRCBieSBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBMQ0QgdGFzay4NCisgKg0KKyAqIFRoZSBMQ0QgdGFzayBpcyBhbHNvIGEgZGVtb25zdHJhdGlvbiBvZiBhICdjb250cm9sbGVyJyB0YXNrIGRlc2lnbiBwYXR0ZXJuLg0KKyAqIFNvbWUgdGFza3MgZG8gbm90IGFjdHVhbGx5IHNlbmQgYSBzdHJpbmcgdG8gdGhlIExDRCB0YXNrIGRpcmVjdGx5LCBidXQNCisgKiBpbnN0ZWFkIHNlbmQgYSBjb21tYW5kIHRoYXQgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlIExDRCB0YXNrLiAgSW4gYSBub3JtYWwNCisgKiBhcHBsaWNhdGlvbiB0aGVzZSBjb21tYW5kcyBjYW4gYmUgY29udHJvbCB2YWx1ZXMgb3Igc2V0IHBvaW50cywgaW4gdGhpcw0KKyAqIHNpbXBsZSBleGFtcGxlIHRoZSBjb21tYW5kcyBqdXN0IHJlc3VsdCBpbiBtZXNzYWdlcyBiZWluZyBkaXNwbGF5ZWQgb24gdGhlDQorICogTENELg0KKyAqDQorICogIkJ1dHRvbiBQb2xsIiB0YXNrIC0gVGhpcyB0YXNrIHBvbGxzIHRoZSBzdGF0ZSBvZiB0aGUgJ3VwJyBrZXkgb24gdGhlDQorICogam95c3RpY2sgaW5wdXQgZGV2aWNlLiAgSXQgdXNlcyB0aGUgdlRhc2tEZWxheSgpIEFQSSBmdW5jdGlvbiB0byBjb250cm9sDQorICogdGhlIHBvbGwgcmF0ZSB0byBlbnN1cmUgZGVib3VuY2luZyBpcyBub3QgbmVjZXNzYXJ5IGFuZCB0aGF0IHRoZSB0YXNrIGRvZXMNCisgKiBub3QgdXNlIGFsbCB0aGUgYXZhaWxhYmxlIENQVSBwcm9jZXNzaW5nIHRpbWUuDQorICoNCisgKiBCdXR0b24gSW50ZXJydXB0IGFuZCBydW4gdGltZSBzdGF0cyBkaXNwbGF5IC0gVGhlIHNlbGVjdCBidXR0b24gb24gdGhlDQorICogam95c3RpY2sgaW5wdXQgZGV2aWNlIGlzIGNvbmZpZ3VyZWQgdG8gZ2VuZXJhdGUgYW4gZXh0ZXJuYWwgaW50ZXJydXB0LiAgVGhlDQorICogaGFuZGxlciBmb3IgdGhpcyBpbnRlcnJ1cHQgc2VuZHMgYSBtZXNzYWdlIHRvIExDRCB0YXNrLCB3aGljaCBpbnRlcnByZXRzIHRoZQ0KKyAqIG1lc3NhZ2UgdG8gbWVhbiwgZmlyc3RseSB3cml0ZSBhIG1lc3NhZ2UgdG8gdGhlIExDRCwgYW5kIHNlY29uZGx5LCBnZW5lcmF0ZQ0KKyAqIGEgdGFibGUgb2YgcnVuIHRpbWUgc3RhdGlzdGljcy4gIFRoZSBydW4gdGltZSBzdGF0aXN0aWNzIGFyZSBkaXNwbGF5ZWQgYXMgYQ0KKyAqIHRhYmxlIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gb24gaG93IG11Y2ggcHJvY2Vzc2luZyB0aW1lIGVhY2ggdGFzayBoYXMNCisgKiBiZWVuIGFsbG9jYXRlZCBzaW5jZSB0aGUgYXBwbGljYXRpb24gc3RhcnRlZCB0byBleGVjdXRlLiAgVGhpcyBpbmZvcm1hdGlvbg0KKyAqIGlzIHByb3ZpZGVkIGJvdGggYXMgYW4gYWJzb2x1dGUgdGltZSwgYW5kIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgdG90YWwgcnVuDQorICogdGltZS4gIFRoZSBpbmZvcm1hdGlvbiBpcyBkaXNwbGF5ZWQgaW4gdGhlIHRlcm1pbmFsIElPIHdpbmRvdyBvZiB0aGUgSUFSDQorICogZW1iZWRkZWQgd29ya2JlbmNoLiAgVGhlIG9ubGluZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGRlbW8gc2hvd3MgYSBzY3JlZW4NCisgKiBzaG90IGRlbW9uc3RyYXRpbmcgd2hlcmUgdGhlIHJ1biB0aW1lIHN0YXRzIGNhbiBiZSB2aWV3ZWQuDQorICoNCisgKiBJZGxlIEhvb2sgLSBUaGUgaWRsZSBob29rIGlzIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb24gZWFjaCBpdGVyYXRpb24gb2YNCisgKiB0aGUgaWRsZSB0YXNrLiAgSW4gdGhpcyBjYXNlIGl0IGlzIHVzZWQgdG8gcGxhY2UgdGhlIHByb2Nlc3NvciBpbnRvIGEgbG93DQorICogcG93ZXIgbW9kZS4gIE5vdGUgaG93ZXZlciB0aGF0IHRoaXMgYXBwbGljYXRpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgc3RhbmRhcmQNCisgKiBjb21wb25lbnRzLCBhbmQgaXMgdGhlcmVmb3JlIG5vdCBvcHRpbWlzZWQgZm9yIGxvdyBwb3dlciBvcGVyYXRpb24uICBMb3dlcg0KKyAqIHBvd2VyIGNvbnN1bXB0aW9uIHdvdWxkIGJlIGFjaGlldmVkIGJ5IGNvbnZlcnRpbmcgcG9sbGluZyB0YXNrcyBpbnRvIGV2ZW50DQorICogZHJpdmVuIHRhc2tzLCBhbmQgc2xvd2luZyB0aGUgdGljayBpbnRlcnJ1cHQgZnJlcXVlbmN5Lg0KKyAqDQorICogIkNoZWNrIiBmdW5jdGlvbiBjYWxsZWQgZnJvbSB0aGUgdGljayBob29rIC0gVGhlIHRpY2sgaG9vayBpcyBjYWxsZWQgZHVyaW5nDQorICogZWFjaCB0aWNrIGludGVycnVwdC4gIEl0IGlzIGNhbGxlZCBmcm9tIGFuIGludGVycnVwdCBjb250ZXh0IHNvIG11c3QgZXhlY3V0ZQ0KKyAqIHF1aWNrbHksIG5vdCBhdHRlbXB0IHRvIGJsb2NrLCBhbmQgbm90IGNhbGwgYW55IEZyZWVSVE9TIEFQSSBmdW5jdGlvbnMgdGhhdA0KKyAqIGRvIG5vdCBlbmQgaW4gIkZyb21JU1IiLiAgSW4gdGhpcyBjYXNlIHRoZSB0aWNrIGhvb2sgZXhlY3V0ZXMgYSAnY2hlY2snDQorICogZnVuY3Rpb24uICBUaGlzIG9ubHkgZXhlY3V0ZXMgZXZlcnkgZml2ZSBzZWNvbmRzLiAgSXRzIG1haW4gZnVuY3Rpb24gaXMgdG8NCisgKiBjaGVjayB0aGF0IGFsbCB0aGUgc3RhbmRhcmQgZGVtbyB0YXNrcyBhcmUgc3RpbGwgb3BlcmF0aW9uYWwuICBFYWNoIHRpbWUgaXQNCisgKiBleGVjdXRlcyBpdCBzZW5kcyBhIHN0YXR1cyBjb2RlIHRvIHRoZSBMQ0QgdGFzay4gIFRoZSBMQ0QgdGFzayBpbnRlcnByZXRzIHRoZQ0KKyAqIGNvZGUgYW5kIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2UgLSB3aGljaCB3aWxsIGJlIFBBU1MgaWYgbm8gdGFza3MNCisgKiBoYXZlIHJlcG9ydGVkIGFueSBlcnJvcnMsIG9yIGEgbWVzc2FnZSBzdGF0aW5nIHdoaWNoIHRhc2sgaGFzIHJlcG9ydGVkIGFuDQorICogZXJyb3IuDQorKi8NCisNCisvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSA8c3RkaW8uaD4NCisNCisvKiBLZXJuZWwgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQorI2luY2x1ZGUgInRhc2suaCINCisjaW5jbHVkZSAicXVldWUuaCINCisNCisvKiBEZW1vIGFwcGxpY2F0aW9uIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJwYXJ0ZXN0LmgiDQorI2luY2x1ZGUgImZsYXNoLmgiDQorI2luY2x1ZGUgImR5bmFtaWMuaCINCisjaW5jbHVkZSAiY29tdGVzdDIuaCINCisjaW5jbHVkZSAiR2VuUVRlc3QuaCINCisNCisvKiBFdmFsIGJvYXJkIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJzdG0zMl9ldmFsLmgiDQorI2luY2x1ZGUgInN0bTMybDE1Ml9ldmFsX2xjZC5oIg0KKw0KKy8qIFRoZSBwcmlvcml0aWVzIGFzc2lnbmVkIHRvIHRoZSB0YXNrcy4gKi8NCisjZGVmaW5lIG1haW5GTEFTSF9UQVNLX1BSSU9SSVRZCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMSApDQorI2RlZmluZSBtYWluTENEX1RBU0tfUFJJT1JJVFkJCQkoIHRza0lETEVfUFJJT1JJVFkgKyAxICkNCisjZGVmaW5lIG1haW5DT01fVEVTVF9QUklPUklUWQkJCSggdHNrSURMRV9QUklPUklUWSArIDIgKQ0KKyNkZWZpbmUgbWFpbkdFTkVSSUNfUVVFVUVfVEVTVF9QUklPUklUWQkoIHRza0lETEVfUFJJT1JJVFkgKQ0KKw0KKy8qIFRoZSBsZW5ndGggb2YgdGhlIHF1ZXVlICh0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoZSBxdWV1ZSBjYW4gaG9sZCkgdGhhdCBpcyB1c2VkDQordG8gc2VuZCBtZXNzYWdlcyBmcm9tIHRhc2tzIGFuZCBpbnRlcnJ1cHRzIHRoZSB0aGUgTENEIHRhc2suICovDQorI2RlZmluZSBtYWluUVVFVUVfTEVOR1RICQkJCSggNSApDQorDQorLyogQ29kZXMgc2VudCB3aXRoaW4gbWVzc2FnZXMgdG8gdGhlIExDRCB0YXNrIHNvIHRoZSBMQ0QgdGFzayBjYW4gaW50ZXJwcmV0DQorZXhhY3RseSB3aGF0IHRoZSBtZXNzYWdlIGl0IGp1c3QgcmVjZWl2ZWQgd2FzLiAgVGhlc2UgYXJlIHNlbnQgaW4gdGhlDQorY01lc3NhZ2VJRCBtZW1iZXIgb2YgdGhlIG1lc3NhZ2Ugc3RydWN0dXJlIChkZWZpbmVkIGJlbG93KS4gKi8NCisjZGVmaW5lIG1haW5NRVNTQUdFX0JVVFRPTl9VUAkJCSggMSApDQorI2RlZmluZSBtYWluTUVTU0FHRV9CVVRUT05fU0VMCQkJKCAyICkNCisjZGVmaW5lIG1haW5NRVNTQUdFX1NUQVRVUwkJCQkoIDMgKQ0KKw0KKy8qIFdoZW4gdGhlIGNNZXNzYWdlSUQgbWVtYmVyIG9mIHRoZSBtZXNzYWdlIHNlbnQgdG8gdGhlIExDRCB0YXNrIGlzDQorbWFpbk1FU1NBR0VfU1RBVFVTIHRoZW4gdGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNlbnQgaW4gdGhlIGxNZXNzYWdlVmFsdWUgbWVtYmVyDQorb2YgdGhlIHNhbWUgbWVzc2FnZSBhbmQgaW5kaWNhdGUgd2hhdCB0aGUgc3RhdHVzIGFjdHVhbGx5IGlzLiAqLw0KKyNkZWZpbmUgbWFpbkVSUk9SX0RZTkFNSUNfVEFTS1MJCQkoIHBkUEFTUyArIDEgKQ0KKyNkZWZpbmUgbWFpbkVSUk9SX0NPTV9URVNUCQkJCSggcGRQQVNTICsgMiApDQorI2RlZmluZSBtYWluRVJST1JfR0VOX1FVRVVFX1RFU1QJCSggcGRQQVNTICsgMyApDQorDQorLyogQmF1ZCByYXRlIHVzZWQgYnkgdGhlIGNvbXRlc3QgdGFza3MuICovDQorI2RlZmluZSBtYWluQ09NX1RFU1RfQkFVRF9SQVRFCQkJKCAxMTUyMDAgKQ0KKw0KKy8qIFRoZSBMRUQgdXNlZCBieSB0aGUgY29tdGVzdCB0YXNrcy4gU2VlIHRoZSBjb210ZXN0LmMgZmlsZSBmb3IgbW9yZQ0KK2luZm9ybWF0aW9uLiAqLw0KKyNkZWZpbmUgbWFpbkNPTV9URVNUX0xFRAkJCQkoIDMgKQ0KKw0KKy8qIFRoZSBMQ0QgdGFzayB1c2VzIHByaW50ZigpIHNvIHJlcXVpcmVzIG1vcmUgc3RhY2sgdGhhbiBtb3N0IG9mIHRoZSBvdGhlcg0KK3Rhc2tzLiAqLw0KKyNkZWZpbmUgbWFpbkxDRF9UQVNLX1NUQUNLX1NJWkUJCQkoIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSAqIDIgKQ0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qDQorICogU3lzdGVtIGNvbmZpZ3VyYXRpb24gaXMgcGVyZm9ybWVkIHByaW9yIHRvIG1haW4oKSBiZWluZyBjYWxsZWQsIHRoaXMgZnVuY3Rpb24NCisgKiBjb25maWd1cmVzIHRoZSBwZXJpcGhlcmFscyB1c2VkIGJ5IHRoZSBkZW1vIGFwcGxpY2F0aW9uLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKTsNCisNCisvKg0KKyAqIERlZmluaXRpb24gb2YgdGhlIExDRC9jb250cm9sbGVyIHRhc2sgZGVzY3JpYmVkIGluIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wDQorICogb2YgdGhpcyBmaWxlLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydkxDRFRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKy8qDQorICogRGVmaW5pdGlvbiBvZiB0aGUgYnV0dG9uIHBvbGwgdGFzayBkZXNjcmliZWQgaW4gdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YNCisgKiB0aGlzIGZpbGUuDQorICovDQorc3RhdGljIHZvaWQgcHJ2QnV0dG9uUG9sbFRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKy8qDQorICogQ29udmVydHMgYSBzdGF0dXMgbWVzc2FnZSB2YWx1ZSBpbnRvIGFuIGFwcHJvcHJpYXRlIHN0cmluZyBmb3IgZGlzcGxheSBvbg0KKyAqIHRoZSBMQ0QuICBUaGUgc3RyaW5nIGlzIHdyaXR0ZW4gdG8gcGNCdWZmZXIuDQorICovDQorc3RhdGljIHZvaWQgcHJ2R2VuZXJhdGVTdGF0dXNNZXNzYWdlKCBjaGFyICpwY0J1ZmZlciwgbG9uZyBsU3RhdHVzVmFsdWUgKTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBUaGUgdGltZSBiYXNlIGZvciB0aGUgcnVuIHRpbWUgc3RhdHMgaXMgZ2VuZXJhdGVkIGJ5IHRoZSAxNiBiaXQgdGltZXIgNi4NCitFYWNoIHRpbWUgdGhlIHRpbWVyIG92ZXJmbG93cyB1bFRJTTZfT3ZlcmZsb3dDb3VudCBpcyBpbmNyZW1lbnRlZC4gIFRoZXJlZm9yZSwNCit3aGVuIGNvbnZlcnRpbmcgdGhlIHRvdGFsIHJ1biB0aW1lIHRvIGEgMzIgYml0IG51bWJlciwgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgdHdvDQorYnl0ZXMgYXJlIGdpdmVuIGJ5IHVsVElNNl9PdmVyZmxvd0NvdW50IGFuZCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgdHdvIGJ5dGVzIGFyZQ0KK2dpdmVuIGJ5IHRoZSBjdXJyZW50IFRJTTYgY291bnRlciB2YWx1ZS4gIENhcmUgbXVzdCBiZSB0YWtlbiB3aXRoIGRhdGENCitjb25zaXN0ZW5jeSB3aGVuIGNvbWJpbmluZyB0aGUgdHdvIGluIGNhc2UgYSB0aW1lciBvdmVyZmxvdyBvY2N1cnMgYXMgdGhlDQordmFsdWUgaXMgYmVpbmcgcmVhZC4gKi8NCit1bnNpZ25lZCBsb25nIHVsVElNNl9PdmVyZmxvd0NvdW50ID0gMFVMOw0KKw0KKy8qIFRoZSBoYW5kbGUgb2YgdGhlIHF1ZXVlIHVzZWQgdG8gc2VuZCBtZXNzYWdlcyBmcm9tIHRhc2tzIGFuZCBpbnRlcnJ1cHRzIHRvDQordGhlIExDRCB0YXNrLiAqLw0KK3N0YXRpYyB4UXVldWVIYW5kbGUgeExDRFF1ZXVlID0gTlVMTDsNCisNCisvKiBUaGUgZGVmaW5pdGlvbiBvZiBlYWNoIG1lc3NhZ2Ugc2VudCBmcm9tIHRhc2tzIGFuZCBpbnRlcnJ1cHRzIHRvIHRoZSBMQ0QNCit0YXNrLiAqLw0KK3R5cGVkZWYgc3RydWN0DQorew0KKwljaGFyIGNNZXNzYWdlSUQ7CS8qIDw8IFN0YXRlcyB3aGF0IHRoZSBtZXNzYWdlIGlzLiAqLw0KKwlsb25nIGxNZXNzYWdlVmFsdWU7IC8qIDw8IFN0YXRlcyB0aGUgbWVzc2FnZSB2YWx1ZSAoY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZyBwb2ludGVyLCBldGMuIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgY01lc3NhZ2VJRCkuICovDQorfSB4UXVldWVNZXNzYWdlOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgbWFpbiggdm9pZCApDQorew0KKwkvKiBDb25maWd1cmUgdGhlIHBlcmlwaGVyYWxzIHVzZWQgYnkgdGhpcyBkZW1vIGFwcGxpY2F0aW9uLiAgVGhpcyBpbmNsdWRlcw0KKwljb25maWd1cmluZyB0aGUgam95c3RpY2sgaW5wdXQgc2VsZWN0IGJ1dHRvbiB0byBnZW5lcmF0ZSBpbnRlcnJ1cHRzLiAqLw0KKwlwcnZTZXR1cEhhcmR3YXJlKCk7DQorCQ0KKwkvKiBDcmVhdGUgdGhlIHF1ZXVlIHVzZWQgYnkgdGFza3MgYW5kIGludGVycnVwdHMgdG8gc2VuZCBzdHJpbmdzIHRvIHRoZSBMQ0QNCisJdGFzay4gKi8NCisJeExDRFF1ZXVlID0geFF1ZXVlQ3JlYXRlKCBtYWluUVVFVUVfTEVOR1RILCBzaXplb2YoIHhRdWV1ZU1lc3NhZ2UgKSApOw0KKwkNCisJLyogSWYgdGhlIHF1ZXVlIGNvdWxkIG5vdCBiZSBjcmVhdGVkIHRoZW4gZG9uJ3QgY3JlYXRlIGFueSB0YXNrcyB0aGF0IG1pZ2h0DQorCWF0dGVtcHQgdG8gdXNlIHRoZSBxdWV1ZS4gKi8NCisJaWYoIHhMQ0RRdWV1ZSAhPSBOVUxMICkNCisJew0KKwkJLyogQWRkIHRoZSBjcmVhdGVkIHF1ZXVlIHRvIHRoZSBxdWV1ZSByZWdpc3RyeSBzbyBpdCBjYW4gYmUgdmlld2VkIGluDQorCQl0aGUgSUFSIEZyZWVSVE9TIHN0YXRlIHZpZXdlciBwbHVnLWluLiAqLw0KKwkJdlF1ZXVlQWRkVG9SZWdpc3RyeSggeExDRFF1ZXVlLCAiTENEUXVldWUiICk7DQorCQkNCisJCS8qIENyZWF0ZSB0aGUgTENEIGFuZCBidXR0b24gcG9sbCB0YXNrcywgYXMgZGVzY3JpYmVkIGF0IHRoZSB0b3Agb2YgdGhpcw0KKwkJZmlsZS4gKi8NCisJCXhUYXNrQ3JlYXRlKCBwcnZMQ0RUYXNrLCAoIHNpZ25lZCBjaGFyICogKSAiTENEIiwgbWFpbkxDRF9UQVNLX1NUQUNLX1NJWkUsIE5VTEwsIG1haW5MQ0RfVEFTS19QUklPUklUWSwgTlVMTCApOw0KKwkJeFRhc2tDcmVhdGUoIHBydkJ1dHRvblBvbGxUYXNrLCAoIHNpZ25lZCBjaGFyICogKSAiQnV0UG9sbCIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgTlVMTCwgdHNrSURMRV9QUklPUklUWSwgTlVMTCApOw0KKwkJDQorCQkvKiBDcmVhdGUgYSBzdWJzZXQgb2YgdGhlIHN0YW5kYXJkIGRlbW8gdGFza3MuICovDQorCQl2U3RhcnREeW5hbWljUHJpb3JpdHlUYXNrcygpOw0KKwkJdlN0YXJ0TEVERmxhc2hUYXNrcyggbWFpbkZMQVNIX1RBU0tfUFJJT1JJVFkgKTsNCisJCXZBbHRTdGFydENvbVRlc3RUYXNrcyggbWFpbkNPTV9URVNUX1BSSU9SSVRZLCBtYWluQ09NX1RFU1RfQkFVRF9SQVRFLCBtYWluQ09NX1RFU1RfTEVEICk7DQorCQl2U3RhcnRHZW5lcmljUXVldWVUYXNrcyggbWFpbkdFTkVSSUNfUVVFVUVfVEVTVF9QUklPUklUWSApOw0KKwkJDQorCQkvKiBTdGFydCB0aGUgc2NoZWR1bGVyLiAqLw0KKwkJdlRhc2tTdGFydFNjaGVkdWxlcigpOw0KKwl9DQorCQ0KKwkvKiBJZiBhbGwgaXMgd2VsbCB0aGVuIHRoaXMgbGluZSB3aWxsIG5ldmVyIGJlIHJlYWNoZWQuICBJZiBpdCBpcyByZWFjaGVkDQorCXRoZW4gaXQgaXMgbGlrZWx5IHRoYXQgdGhlcmUgd2FzIGluc3VmZmljaWVudCAoRnJlZVJUT1MpIGhlYXAgbWVtb3J5IHNwYWNlDQorCXRvIGNyZWF0ZSB0aGUgaWRsZSB0YXNrLiAgVGhpcyBtYXkgaGF2ZSBiZWVuIHRyYXBwZWQgYnkgdGhlIG1hbGxvYygpIGZhaWxlZA0KKwlob29rIGZ1bmN0aW9uLCBpZiBvbmUgaXMgY29uZmlndXJlZC4gKi8NCisJZm9yKCA7OyApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZMQ0RUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCit4UXVldWVNZXNzYWdlIHhSZWNlaXZlZE1lc3NhZ2U7DQorbG9uZyBsTGluZSA9IExpbmUxOw0KK2NvbnN0IGxvbmcgbEZvbnRIZWlnaHQgPSAoKChzRk9OVCAqKUxDRF9HZXRGb250KCkpLT5IZWlnaHQpOw0KKw0KKy8qIEJ1ZmZlciBpbnRvIHdoaWNoIHN0cmluZ3MgYXJlIGZvcm1hdHRlZCBhbmQgcGxhY2VkIHJlYWR5IGZvciBkaXNwbGF5IG9uIHRoZQ0KK0xDRC4gIE5vdGUgdGhpcyBpcyBhIHN0YXRpYyB2YXJpYWJsZSB0byBwcmV2ZW50IGl0IGJlaW5nIGFsbG9jYXRlZCBvbiB0aGUgdGFzaw0KK3N0YWNrLCB3aGljaCBpcyB0b28gc21hbGwgdG8gaG9sZCBzdWNoIGEgdmFyaWFibGUuICBUaGUgc3RhY2sgc2l6ZSBpcyBjb25maWd1cmVkDQord2hlbiB0aGUgdGFzayBpcyBjcmVhdGVkLiAqLw0KK3N0YXRpYyBjaGFyIGNCdWZmZXJbIDUxMiBdOw0KKw0KKwkvKiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgdXNlcyBwcmludGYoKS4gIElmIHByaW50ZigpIGlzDQorCXVzZWQgZnJvbSBhbnkgb3RoZXIgZnVuY3Rpb24gdGhlbiBzb21lIHNvcnQgb2YgbXV0dWFsIGV4Y2x1c2lvbiBvbiBzdGRvdXQNCisJd2lsbCBiZSBuZWNlc3NhcnkuDQorCQ0KKwlUaGlzIGlzIGFsc28gdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBpcyBwZXJtaXR0ZWQgdG8gYWNjZXNzIHRoZSBMQ0QuDQorCQ0KKwlGaXJzdCBwcmludCBvdXQgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHJlbWFpbiBpbiB0aGUgRnJlZVJUT1MgaGVhcC4gIFRoaXMNCisJY2FuIGJlIHZpZXdlZCBpbiB0aGUgdGVybWluYWwgSU8gd2luZG93IHdpdGhpbiB0aGUgSUFSIEVtYmVkZGVkIFdvcmtiZW5jaC4gKi8NCisJcHJpbnRmKCAiJWQgYnl0ZXMgb2YgaGVhcCBzcGFjZSByZW1haW4gdW5hbGxvY2F0ZWRcbiIsIHhQb3J0R2V0RnJlZUhlYXBTaXplKCkgKTsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCS8qIFdhaXQgZm9yIGEgbWVzc2FnZSB0byBiZSByZWNlaXZlZC4gIFVzaW5nIHBvcnRNQVhfREVMQVkgYXMgdGhlIGJsb2NrDQorCQl0aW1lIHdpbGwgcmVzdWx0IGluIGFuIGluZGVmaW5pdGUgd2FpdCBwcm92aWRlZCBJTkNMVURFX3ZUYXNrU3VzcGVuZCBpcw0KKwkJc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaCwgdGhlcmVmb3JlIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgdGhlDQorCQlmdW5jdGlvbiByZXR1cm4gdmFsdWUgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHdoZW4gYSB2YWx1ZQ0KKwkJaGFzIGJlZW4gcmVjZWl2ZWQuICovDQorCQl4UXVldWVSZWNlaXZlKCB4TENEUXVldWUsICZ4UmVjZWl2ZWRNZXNzYWdlLCBwb3J0TUFYX0RFTEFZICk7DQorDQorCQkvKiBDbGVhciB0aGUgTENEIGlmIG5vIHJvb20gcmVtYWlucyBmb3IgYW55IG1vcmUgdGV4dCBvdXRwdXQuICovDQorCQlpZiggbExpbmUgPiBMaW5lOSApDQorCQl7DQorCQkJTENEX0NsZWFyKCBCbHVlICk7DQorCQkJbExpbmUgPSAwOw0KKwkJfQ0KKwkJCQkNCisJCS8qIFdoYXQgaXMgdGhpcyBtZXNzYWdlPyAgV2hhdCBkb2VzIGl0IGNvbnRhaW4/ICovDQorCQlzd2l0Y2goIHhSZWNlaXZlZE1lc3NhZ2UuY01lc3NhZ2VJRCApDQorCQl7DQorCQkJY2FzZSBtYWluTUVTU0FHRV9CVVRUT05fVVAJCToJLyogVGhlIGJ1dHRvbiBwb2xsIHRhc2sgaGFzIGp1c3QNCisJCQkJCQkJCQkJCQlpbmZvcm1lZCB0aGlzIHRhc2sgdGhhdCB0aGUgdXANCisJCQkJCQkJCQkJCQlidXR0b24gb24gdGhlIGpveXN0aWNrIGlucHV0IGhhcw0KKwkJCQkJCQkJCQkJCWJlZW4gcHJlc3NlZCBvciByZWxlYXNlZC4gKi8NCisJCQkJCQkJCQkJCQlzcHJpbnRmKCBjQnVmZmVyLCAiQnV0dG9uIHVwID0gJWQiLCB4UmVjZWl2ZWRNZXNzYWdlLmxNZXNzYWdlVmFsdWUgKTsNCisJCQkJCQkJCQkJCQlicmVhazsNCisNCisJCQljYXNlIG1haW5NRVNTQUdFX0JVVFRPTl9TRUwJCToJLyogVGhlIHNlbGVjdCBidXR0b24gaW50ZXJydXB0DQorCQkJCQkJCQkJCQkJanVzdCBpbmZvcm1lZCB0aGlzIHRhc2sgdGhhdCB0aGUNCisJCQkJCQkJCQkJCQlzZWxlY3QgYnV0dG9uIHdhcyBwcmVzc2VkLg0KKwkJCQkJCQkJCQkJCUdlbmVyYXRlIGEgdGFibGUgb2YgdGFzayBydW4gdGltZQ0KKwkJCQkJCQkJCQkJCXN0YXRpc3RpY3MgYW5kIG91dHB1dCB0aGlzIHRvDQorCQkJCQkJCQkJCQkJdGhlIHRlcm1pbmFsIElPIHdpbmRvdyBpbiB0aGUgSUFSDQorCQkJCQkJCQkJCQkJZW1iZWRkZWQgd29ya2JlbmNoLiAqLw0KKwkJCQkJCQkJCQkJCXByaW50ZiggIlxuVGFza1x0ICAgICBBYnMgVGltZVx0ICAgICAlJVRpbWVcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIiApOw0KKwkJCQkJCQkJCQkJCXZUYXNrR2V0UnVuVGltZVN0YXRzKCAoIHNpZ25lZCBjaGFyICogKSBjQnVmZmVyICk7DQorCQkJCQkJCQkJCQkJcHJpbnRmKCBjQnVmZmVyICk7DQorCQkJCQkJCQkJCQkJDQorCQkJCQkJCQkJCQkJLyogQWxzbyBwcmludCBvdXQgYSBtZXNzYWdlIHRvDQorCQkJCQkJCQkJCQkJdGhlIExDRCAtIGluIHRoaXMgY2FzZSB0aGUNCisJCQkJCQkJCQkJCQlwb2ludGVyIHRvIHRoZSBzdHJpbmcgdG8gcHJpbnQNCisJCQkJCQkJCQkJCQlpcyBzZW50IGRpcmVjdGx5IGluIHRoZQ0KKwkJCQkJCQkJCQkJCWxNZXNzYWdlVmFsdWUgbWVtYmVyIG9mIHRoZQ0KKwkJCQkJCQkJCQkJCW1lc3NhZ2UuICBUaGlzIGp1c3QgZGVtb25zdHJhdGVzDQorCQkJCQkJCQkJCQkJYSBkaWZmZXJlbnQgY29tbXVuaWNhdGlvbg0KKwkJCQkJCQkJCQkJCXRlY2huaXF1ZS4gKi8NCisJCQkJCQkJCQkJCQlzcHJpbnRmKCBjQnVmZmVyLCAiJXMiLCAoIGNoYXIgKiApIHhSZWNlaXZlZE1lc3NhZ2UubE1lc3NhZ2VWYWx1ZSApOw0KKwkJCQkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJCQkJCQ0KKwkJCWNhc2UgbWFpbk1FU1NBR0VfU1RBVFVTCQkJOgkvKiBUaGUgdGljayBpbnRlcnJ1cHQgaG9vaw0KKwkJCQkJCQkJCQkJCWZ1bmN0aW9uIGhhcyBqdXN0IGluZm9ybWVkIHRoaXMNCisJCQkJCQkJCQkJCQl0YXNrIG9mIHRoZSBzeXN0ZW0gc3RhdHVzLg0KKwkJCQkJCQkJCQkJCUdlbmVyYXRlIGEgc3RyaW5nIGluIGFjY29yZGFuY2UNCisJCQkJCQkJCQkJCQl3aXRoIHRoZSBzdGF0dXMgdmFsdWUuICovDQorCQkJCQkJCQkJCQkJcHJ2R2VuZXJhdGVTdGF0dXNNZXNzYWdlKCBjQnVmZmVyLCB4UmVjZWl2ZWRNZXNzYWdlLmxNZXNzYWdlVmFsdWUgKTsNCisJCQkJCQkJCQkJCQlicmVhazsNCisJCQkJCQkJCQkJCQkNCisJCQlkZWZhdWx0CQkJCQkJCToJc3ByaW50ZiggY0J1ZmZlciwgIlVua25vd24gbWVzc2FnZSIgKTsNCisJCQkJCQkJCQkJCQlicmVhazsNCisJCX0NCisJCQ0KKwkJLyogT3V0cHV0IHRoZSBtZXNzYWdlIHRoYXQgd2FzIHBsYWNlZCBpbnRvIHRoZSBjQnVmZmVyIGFycmF5IHdpdGhpbiB0aGUNCisJCXN3aXRjaCBzdGF0ZW1lbnQgYWJvdmUuICovDQorCQlMQ0RfRGlzcGxheVN0cmluZ0xpbmUoIGxMaW5lLCAoIHVpbnQ4X3QgKiApIGNCdWZmZXIgKTsNCisJCQ0KKwkJLyogTW92ZSBvbnRvIHRoZSBuZXh0IExDRCBsaW5lLCByZWFkeSBmb3IgdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoaXMNCisJCWxvb3AuICovDQorCQlsTGluZSArPSBsRm9udEhlaWdodDsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZHZW5lcmF0ZVN0YXR1c01lc3NhZ2UoIGNoYXIgKnBjQnVmZmVyLCBsb25nIGxTdGF0dXNWYWx1ZSApDQorew0KKwkvKiBKdXN0IGEgdXRpbGl0eSBmdW5jdGlvbiB0byBjb252ZXJ0IGEgc3RhdHVzIHZhbHVlIGludG8gYSBtZWFuaW5nZnVsDQorCXN0cmluZyBmb3Igb3V0cHV0IG9udG8gdGhlIExDRC4gKi8NCisJc3dpdGNoKCBsU3RhdHVzVmFsdWUgKQ0KKwl7DQorCQljYXNlIHBkUEFTUwkJCQkJCToJc3ByaW50ZiggcGNCdWZmZXIsICJUYXNrIHN0YXR1cyA9IFBBU1MiICk7DQorCQkJCQkJCQkJCQlicmVhazsNCisJCWNhc2UgbWFpbkVSUk9SX0RZTkFNSUNfVEFTS1MJOglzcHJpbnRmKCBwY0J1ZmZlciwgIkVycm9yOiBEeW5hbWljIHRhc2tzIiApOw0KKwkJCQkJCQkJCQkJYnJlYWs7DQorCQljYXNlIG1haW5FUlJPUl9DT01fVEVTVAkJCToJc3ByaW50ZiggcGNCdWZmZXIsICJFcnI6IGxvb3AgY29ubmVjdGVkPyIgKTsgLyogRXJyb3IgaW4gQ09NIHRlc3QgLSBpcyB0aGUgTG9vcGJhY2sgY29ubmVjdG9yIGNvbm5lY3RlZD8gKi8JCQkJCQkJCQkJCQkJCQ0KKwkJCQkJCQkJCQkJYnJlYWs7DQorCQljYXNlIG1haW5FUlJPUl9HRU5fUVVFVUVfVEVTVCAJOglzcHJpbnRmKCBwY0J1ZmZlciwgIkVycm9yOiBHZW4gUSB0ZXN0IiApOw0KKwkJCQkJCQkJCQkJYnJlYWs7DQorCQlkZWZhdWx0CQkJCQkJCToJc3ByaW50ZiggcGNCdWZmZXIsICJVbmtub3duIHN0YXR1cyIgKTsNCisJCQkJCQkJCQkJCWJyZWFrOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgRVhUSTlfNV9JUlFIYW5kbGVyKCB2b2lkICkNCit7DQorLyogRGVmaW5lIHRoZSBtZXNzYWdlIHNlbnQgdG8gdGhlIExDRCB0YXNrIGZyb20gdGhpcyBpbnRlcnJ1cHQuICovDQorY29uc3QgeFF1ZXVlTWVzc2FnZSB4TWVzc2FnZSA9IHsgbWFpbk1FU1NBR0VfQlVUVE9OX1NFTCwgKCB1bnNpZ25lZCBsb25nICkgIlNlbGVjdCBJbnRlcnJ1cHQhIiB9Ow0KK2xvbmcgbEhpZ2hlclByaW9yaXR5VGFza1dva2VuID0gcGRGQUxTRTsNCisNCisJLyogVGhpcyBpcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoZSBqb3lzdGljayBzZWxlY3QgYnV0dG9uIGlucHV0Lg0KKwlUaGUgYnV0dG9uIGhhcyBiZWVuIHB1c2hlZCwgd3JpdGUgYSBtZXNzYWdlIHRvIHRoZSBMQ0QgdmlhIHRoZSBMQ0QgdGFzay4gKi8NCisJeFF1ZXVlU2VuZEZyb21JU1IoIHhMQ0RRdWV1ZSwgJnhNZXNzYWdlLCAmbEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorCQ0KKwlFWFRJX0NsZWFySVRQZW5kaW5nQml0KCBTRUxfQlVUVE9OX0VYVElfTElORSApOw0KKwkNCisJLyogSWYgd3JpdGluZyB0byB4TENEUXVldWUgY2F1c2VkIGEgdGFzayB0byB1bmJsb2NrLCBhbmQgdGhlIHVuYmxvY2tlZCB0YXNrDQorCWhhcyBhIHByaW9yaXR5IGVxdWFsIHRvIG9yIGFib3ZlIHRoZSB0YXNrIHRoYXQgdGhpcyBpbnRlcnJ1cHQgaW50ZXJydXB0ZWQsDQorCXRoZW4gbEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHdpbGwgaGF2ZSBiZWVuIHNldCB0byBwZFRSVUUgaW50ZXJuYWxseSB3aXRoaW4NCisJeFF1ZXVlc2VuZEZyb21JU1IoKSwgYW5kIHBvcnRFTkRfU1dJVENISU5HX0lTUigpIHdpbGwgZW5zdXJlIHRoYXQgdGhpcw0KKwlpbnRlcnJ1cHQgcmV0dXJucyBkaXJlY3RseSB0byB0aGUgaGlnaGVyIHByaW9yaXR5IHVuYmxvY2tlZCB0YXNrLiAqLw0KKwlwb3J0RU5EX1NXSVRDSElOR19JU1IoIGxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZBcHBsaWNhdGlvblRpY2tIb29rKCB2b2lkICkNCit7DQorc3RhdGljIHVuc2lnbmVkIGxvbmcgdWxDb3VudGVyID0gMDsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyB1bENoZWNrRnJlcXVlbmN5ID0gNTAwMFVMIC8gcG9ydFRJQ0tfUkFURV9NUzsNCitsb25nIGxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7DQorDQorLyogRGVmaW5lIHRoZSBzdGF0dXMgbWVzc2FnZSB0aGF0IGlzIHNlbnQgdG8gdGhlIExDRCB0YXNrLiAgQnkgZGVmYXVsdCB0aGUNCitzdGF0dXMgaXMgUEFTUy4gKi8NCitzdGF0aWMgeFF1ZXVlTWVzc2FnZSB4U3RhdHVzTWVzc2FnZSA9IHsgbWFpbk1FU1NBR0VfU1RBVFVTLCBwZFBBU1MgfTsNCisNCisJLyogVGhpcyBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIHRpY2sgaW50ZXJydXB0IGFuZCBwZXJmb3JtcyB0aGUgJ2NoZWNrJw0KKwlmdW5jdGlvbmFsaXR5IGFzIGRlc2NyaWJlZCBpbiB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQorDQorCUlzIGl0IHRpbWUgdG8gcGVyZm9ybSB0aGUgJ2NoZWNrJyBmdW5jdGlvbmFsaXR5IGFnYWluPyAqLw0KKwl1bENvdW50ZXIrKzsNCisJaWYoIHVsQ291bnRlciA+PSB1bENoZWNrRnJlcXVlbmN5ICkNCisJew0KKwkJLyogU2VlIGlmIHRoZSBzdGFuZGFyZCBkZW1vIHRhc2tzIGFyZSBleGVjdXRpbmcgYXMgZXhwZWN0ZWQsIGNoYW5naW5nDQorCQl0aGUgbWVzc2FnZSB0aGF0IGlzIHNlbnQgdG8gdGhlIExDRCB0YXNrIGZyb20gUEFTUyB0byBhbiBlcnJvciBjb2RlIGlmDQorCQlhbnkgdGFza3Mgc2V0IHJlcG9ydHMgYW4gZXJyb3IuICovDQorCQlpZiggeEFyZUR5bmFtaWNQcmlvcml0eVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRQQVNTICkNCisJCXsNCisJCQl4U3RhdHVzTWVzc2FnZS5sTWVzc2FnZVZhbHVlID0gbWFpbkVSUk9SX0RZTkFNSUNfVEFTS1M7DQorCQl9DQorCQkNCisJCWlmKCB4QXJlQ29tVGVzdFRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRQQVNTICkNCisJCXsNCisJCQl4U3RhdHVzTWVzc2FnZS5sTWVzc2FnZVZhbHVlID0gbWFpbkVSUk9SX0NPTV9URVNUOw0KKwkJfQ0KKwkJDQorCQlpZiggeEFyZUdlbmVyaWNRdWV1ZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRQQVNTICkNCisJCXsNCisJCQl4U3RhdHVzTWVzc2FnZS5sTWVzc2FnZVZhbHVlID0gbWFpbkVSUk9SX0dFTl9RVUVVRV9URVNUOw0KKwkJfQ0KKwkJDQorCQkvKiBBcyB0aGlzIGlzIHRoZSB0aWNrIGhvb2sgdGhlIGxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBwYXJhbWV0ZXIgaXMgbm90DQorCQluZWVkZWQgKGEgY29udGV4dCBzd2l0Y2ggaXMgZ29pbmcgdG8gYmUgcGVyZm9ybWVkIGFueXdheSksIGJ1dCBpdCBtdXN0DQorCQlzdGlsbCBiZSBwcm92aWRlZC4gKi8NCisJCXhRdWV1ZVNlbmRGcm9tSVNSKCB4TENEUXVldWUsICZ4U3RhdHVzTWVzc2FnZSwgJmxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKwkJdWxDb3VudGVyID0gMDsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZCdXR0b25Qb2xsVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorbG9uZyBsTGFzdFN0YXRlID0gcGRUUlVFOw0KK2xvbmcgbFN0YXRlOw0KK3hRdWV1ZU1lc3NhZ2UgeE1lc3NhZ2U7DQorDQorCS8qIFRoaXMgdGFza3MgcGVyZm9ybXMgdGhlIGJ1dHRvbiBwb2xsaW5nIGZ1bmN0aW9uYWxpdHkgYXMgZGVzY3JpYmVkIGF0IHRoZQ0KKwl0b3Agb2YgdGhpcyBmaWxlLiAqLw0KKwlmb3IoIDs7ICkNCisJew0KKwkJLyogQ2hlY2sgdGhlIGJ1dHRvbiBzdGF0ZS4gKi8NCisJCWxTdGF0ZSA9IFNUTV9FVkFMX1BCR2V0U3RhdGUoIEJVVFRPTl9VUCApOw0KKwkJaWYoIGxTdGF0ZSAhPSBsTGFzdFN0YXRlICkNCisJCXsNCisJCQkvKiBUaGUgc3RhdGUgaGFzIGNoYW5nZWQsIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBMQ0QgdGFzay4gKi8NCisJCQl4TWVzc2FnZS5jTWVzc2FnZUlEID0gbWFpbk1FU1NBR0VfQlVUVE9OX1VQOw0KKwkJCXhNZXNzYWdlLmxNZXNzYWdlVmFsdWUgPSBsU3RhdGU7DQorCQkJbExhc3RTdGF0ZSA9IGxTdGF0ZTsNCisJCQl4UXVldWVTZW5kKCB4TENEUXVldWUsICZ4TWVzc2FnZSwgcG9ydE1BWF9ERUxBWSApOw0KKwkJfQ0KKwkJDQorCQkvKiBCbG9jayBmb3IgMTAgbWlsbGlzZWNvbmRzIHNvIHRoaXMgdGFzayBkb2VzIG5vdCB1dGlsaXNlIGFsbCB0aGUgQ1BVDQorCQl0aW1lIGFuZCBkZWJvdW5jaW5nIG9mIHRoZSBidXR0b24gaXMgbm90IG5lY2Vzc2FyeS4gKi8NCisJCXZUYXNrRGVsYXkoIDEwIC8gcG9ydFRJQ0tfUkFURV9NUyApOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKQ0KK3sNCisJLyogRW5zdXJlIHRoYXQgYWxsIDQgaW50ZXJydXB0IHByaW9yaXR5IGJpdHMgYXJlIHVzZWQgYXMgdGhlIHByZS1lbXB0aW9uDQorCXByaW9yaXR5LiAqLw0KKwlOVklDX1ByaW9yaXR5R3JvdXBDb25maWcoIE5WSUNfUHJpb3JpdHlHcm91cF80ICk7DQorCQ0KKwkvKiBJbml0aWFsaXNlIHRoZSBMRURzLiAqLw0KKwl2UGFyVGVzdEluaXRpYWxpc2UoKTsNCisNCisJLyogSW5pdGlhbGlzZSB0aGUgam95c3RpY2sgaW5wdXRzLiAqLw0KKwlTVE1fRVZBTF9QQkluaXQoIEJVVFRPTl9VUCwgQlVUVE9OX01PREVfR1BJTyApOw0KKwlTVE1fRVZBTF9QQkluaXQoIEJVVFRPTl9ET1dOLCBCVVRUT05fTU9ERV9HUElPICk7DQorCVNUTV9FVkFMX1BCSW5pdCggQlVUVE9OX0xFRlQsIEJVVFRPTl9NT0RFX0dQSU8gKTsNCisJU1RNX0VWQUxfUEJJbml0KCBCVVRUT05fUklHSFQsIEJVVFRPTl9NT0RFX0dQSU8gKTsNCisJDQorCS8qIFRoZSBzZWxlY3QgYnV0dG9uIGluIHRoZSBtaWRkbGUgb2YgdGhlIGpveXN0aWNrIGlzIGNvbmZpZ3VyZWQgdG8gZ2VuZXJhdGUNCisJYW4gaW50ZXJydXB0LiAgVGhlIEV2YWwgYm9hcmQgbGlicmFyeSB3aWxsIGNvbmZpZ3VyZSB0aGUgaW50ZXJydXB0DQorCXByaW9yaXR5IHRvIGJlIHRoZSBsb3dlc3QgcHJpb3JpdHkgYXZhaWxhYmxlIHNvIHRoZSBwcmlvcml0eSBuZWVkIG5vdCBiZQ0KKwlzZXQgaGVyZSBleHBsaWNpdGx5LiAgSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIHByaW9yaXR5IGlzIGVxdWFsIHRvIG9yDQorCWJlbG93IHRoYXQgc2V0IGJ5IHRoZSBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgdmFsdWUgc2V0IGluDQorCUZyZWVSVE9TQ29uZmlnLmguICovDQorCVNUTV9FVkFMX1BCSW5pdCggQlVUVE9OX1NFTCwgQlVUVE9OX01PREVfRVhUSSApOw0KKw0KKwkvKiBJbml0aWFsaXplIHRoZSBMQ0QgKi8NCisJU1RNMzJMMTUyX0xDRF9Jbml0KCk7CQ0KKwlMQ0RfQ2xlYXIoIEJsdWUgKTsNCisJTENEX1NldEJhY2tDb2xvciggQmx1ZSApOw0KKwlMQ0RfU2V0VGV4dENvbG9yKCBXaGl0ZSApOw0KKwlMQ0RfRGlzcGxheVN0cmluZ0xpbmUoIExpbmUwLCAiICB3d3cuRnJlZVJUT1Mub3JnIiApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZDb25maWd1cmVUaW1lckZvclJ1blRpbWVTdGF0cyggdm9pZCApDQorew0KK1RJTV9UaW1lQmFzZUluaXRUeXBlRGVmICBUSU1fVGltZUJhc2VTdHJ1Y3R1cmU7DQorTlZJQ19Jbml0VHlwZURlZiBOVklDX0luaXRTdHJ1Y3R1cmU7DQorDQorCS8qIFRoZSB0aW1lIGJhc2UgZm9yIHRoZSBydW4gdGltZSBzdGF0cyBpcyBnZW5lcmF0ZWQgYnkgdGhlIDE2IGJpdCB0aW1lciA2Lg0KKwlFYWNoIHRpbWUgdGhlIHRpbWVyIG92ZXJmbG93cyB1bFRJTTZfT3ZlcmZsb3dDb3VudCBpcyBpbmNyZW1lbnRlZC4NCisJVGhlcmVmb3JlLCB3aGVuIGNvbnZlcnRpbmcgdGhlIHRvdGFsIHJ1biB0aW1lIHRvIGEgMzIgYml0IG51bWJlciwgdGhlIG1vc3QNCisJc2lnbmlmaWNhbnQgdHdvIGJ5dGVzIGFyZSBnaXZlbiBieSB1bFRJTTZfT3ZlcmZsb3dDb3VudCBhbmQgdGhlIGxlYXN0DQorCXNpZ25pZmljYW50IHR3byBieXRlcyBhcmUgZ2l2ZW4gYnkgdGhlIGN1cnJlbnQgVElNNiBjb3VudGVyIHZhbHVlLiAgQ2FyZQ0KKwltdXN0IGJlIHRha2VuIHdpdGggZGF0YQljb25zaXN0ZW5jeSB3aGVuIGNvbWJpbmluZyB0aGUgdHdvIGluIGNhc2UgYSB0aW1lcg0KKwlvdmVyZmxvdyBvY2N1cnMgYXMgdGhlIHZhbHVlIGlzIGJlaW5nIHJlYWQuDQorCQ0KKwlUaGUgcG9ydENPTkZJR1VSRV9USU1FUl9GT1JfUlVOX1RJTUVfU1RBVFMoKSBtYWNybyAoaW4gRnJlZVJUT1NDb25maWcuaCkgaXMNCisJZGVmaW5lZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24sIHNvIHRoZSBrZXJuZWwgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24NCisJYXV0b21hdGljYWxseSBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4gKi8NCisNCisJLyogVElNNiBjbG9jayBlbmFibGUgKi8NCisJUkNDX0FQQjFQZXJpcGhDbG9ja0NtZCggUkNDX0FQQjFQZXJpcGhfVElNNiwgRU5BQkxFICk7DQorDQorCS8qIFRoZSAzMk1IeiBjbG9jayBkaXZpZGVkIGJ5IDUwMDAgc2hvdWxkIHRpY2sgKHZlcnkpIGFwcHJveGltYXRlbHkgZXZlcnkNCisJMTUwdVMgYW5kIG92ZXJmbG93IGEgMTZiaXQgdGltZXIgKHZlcnkpIGFwcHJveGltYXRlbHkgZXZlcnkgMTAgc2Vjb25kcy4gKi8NCisJVElNX1RpbWVCYXNlU3RydWN0dXJlLlRJTV9QZXJpb2QgPSA2NTUzNTsNCisJVElNX1RpbWVCYXNlU3RydWN0dXJlLlRJTV9QcmVzY2FsZXIgPSA1MDAwOw0KKwlUSU1fVGltZUJhc2VTdHJ1Y3R1cmUuVElNX0Nsb2NrRGl2aXNpb24gPSBUSU1fQ0tEX0RJVjE7DQorCVRJTV9UaW1lQmFzZVN0cnVjdHVyZS5USU1fQ291bnRlck1vZGUgPSBUSU1fQ291bnRlck1vZGVfVXA7DQorCQ0KKwlUSU1fVGltZUJhc2VJbml0KCBUSU02LCAmVElNX1RpbWVCYXNlU3RydWN0dXJlICk7DQorCQ0KKwkvKiBPbmx5IGludGVycnVwdCBvbiBvdmVyZmxvdyBldmVudHMuICovDQorCVRJTTYtPkNSMSB8PSBUSU1fQ1IxX1VSUzsNCisJDQorCS8qIEVuYWJsZSB0aGUgaW50ZXJydXB0LiAqLw0KKwlUSU1fSVRDb25maWcoIFRJTTYsIFRJTV9JVF9VcGRhdGUsIEVOQUJMRSApOw0KKwkNCisJLyogRW5hYmxlIHRoZSBUSU02IGdsb2JhbCBJbnRlcnJ1cHQgKi8NCisJTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbCA9IFRJTTZfSVJRbjsNCisJTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbFByZWVtcHRpb25Qcmlvcml0eSA9IGNvbmZpZ0xJQlJBUllfTE9XRVNUX0lOVEVSUlVQVF9QUklPUklUWTsNCisJTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbFN1YlByaW9yaXR5ID0gMHgwMDsgLyogTm90IHVzZWQgYXMgNCBiaXRzIGFyZSB1c2VkIGZvciB0aGUgcHJlLWVtcHRpb24gcHJpb3JpdHkuICovDQorCU5WSUNfSW5pdFN0cnVjdHVyZS5OVklDX0lSUUNoYW5uZWxDbWQgPSBFTkFCTEU7DQorCU5WSUNfSW5pdCgmTlZJQ19Jbml0U3RydWN0dXJlKTsNCisJDQorCVRJTV9DbGVhcklUUGVuZGluZ0JpdCggVElNNiwgVElNX0lUX1VwZGF0ZSApOw0KKwlUSU1fQ21kKCBUSU02LCBFTkFCTEUgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCBUSU02X0lSUUhhbmRsZXIoIHZvaWQgKQ0KK3sNCisJLyogSW50ZXJydXB0IGhhbmRsZXIgZm9yIFRJTSA2DQorCQ0KKwlUaGUgdGltZSBiYXNlIGZvciB0aGUgcnVuIHRpbWUgc3RhdHMgaXMgZ2VuZXJhdGVkIGJ5IHRoZSAxNiBiaXQgdGltZXIgNi4NCisJRWFjaCB0aW1lIHRoZSB0aW1lciBvdmVyZmxvd3MgdWxUSU02X092ZXJmbG93Q291bnQgaXMgaW5jcmVtZW50ZWQuDQorCVRoZXJlZm9yZSwgd2hlbiBjb252ZXJ0aW5nIHRoZSB0b3RhbCBydW4gdGltZSB0byBhIDMyIGJpdCBudW1iZXIsIHRoZSBtb3N0DQorCXNpZ25pZmljYW50IHR3byBieXRlcyBhcmUgZ2l2ZW4gYnkgdWxUSU02X092ZXJmbG93Q291bnQgYW5kIHRoZSBsZWFzdA0KKwlzaWduaWZpY2FudCB0d28gYnl0ZXMgYXJlIGdpdmVuIGJ5IHRoZSBjdXJyZW50IFRJTTYgY291bnRlciB2YWx1ZS4gIENhcmUNCisJbXVzdCBiZSB0YWtlbiB3aXRoIGRhdGEJY29uc2lzdGVuY3kgd2hlbiBjb21iaW5pbmcgdGhlIHR3byBpbiBjYXNlIGEgdGltZXINCisJb3ZlcmZsb3cgb2NjdXJzIGFzIHRoZSB2YWx1ZSBpcyBiZWluZyByZWFkLiAqLw0KKwlpZiggVElNX0dldElUU3RhdHVzKCBUSU02LCBUSU1fSVRfVXBkYXRlKSAhPSBSRVNFVCkNCisJew0KKwkJdWxUSU02X092ZXJmbG93Q291bnQrKzsNCisJCVRJTV9DbGVhcklUUGVuZGluZ0JpdCggVElNNiwgVElNX0lUX1VwZGF0ZSApOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soIHhUYXNrSGFuZGxlICpweFRhc2ssIHNpZ25lZCBjaGFyICpwY1Rhc2tOYW1lICkNCit7DQorCSggdm9pZCApIHBjVGFza05hbWU7DQorCSggdm9pZCApIHB4VGFzazsNCisJDQorCS8qIFJ1biB0aW1lIHN0YWNrIG92ZXJmbG93IGNoZWNraW5nIGlzIHBlcmZvcm1lZCBpZg0KKwljb25maWdjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgaXMgZGVmaW5lZCB0byAxIG9yIDIuICBUaGlzIGhvb2sNCisJZnVuY3Rpb24gaXMgY2FsbGVkIGlmIGEgc3RhY2sgb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQuICovDQorCWZvciggOzsgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2QXBwbGljYXRpb25NYWxsb2NGYWlsZWRIb29rKCB2b2lkICkNCit7DQorCS8qIENhbGxlZCBpZiBhIGNhbGwgdG8gcHZQb3J0TWFsbG9jKCkgZmFpbHMgYmVjYXVzZSB0aGVyZSBpcyBpbnN1ZmZpY2llbnQNCisJZnJlZSBtZW1vcnkgYXZhaWxhYmxlIGluIHRoZSBGcmVlUlRPUyBoZWFwLiAgcHZQb3J0TWFsbG9jKCkgaXMgY2FsbGVkDQorCWludGVybmFsbHkgYnkgRnJlZVJUT1MgQVBJIGZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSB0YXNrcywgcXVldWVzIG9yDQorCXNlbWFwaG9yZXMuICovDQorCWZvciggOzsgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2QXBwbGljYXRpb25JZGxlSG9vayggdm9pZCApDQorew0KKwkvKiBDYWxsZWQgb24gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGlkbGUgdGFzay4gIEluIHRoaXMgY2FzZSB0aGUgaWRsZSB0YXNrDQorCWp1c3QgZW50ZXJzIGEgbG93KGlzaCkgcG93ZXIgbW9kZS4gKi8NCisJUFdSX0VudGVyU2xlZXBNb2RlKCBQV1JfUmVndWxhdG9yX09OLCBQV1JfU0xFRVBFbnRyeV9XRkkgKTsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXJpYWwuYyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2VyaWFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2OGQ0OQotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2VyaWFsLmMKQEAgLTAsMCArMSwyNDYgQEAKKy8qDQorICAgIEZyZWVSVE9TIFY2LjEuMCAtIENvcHlyaWdodCAoQykgMjAxMCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCisNCisgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqIElmIHlvdSBhcmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICogICAgKyBOZXcgdG8gRnJlZVJUT1MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICsgV2FudGluZyB0byBsZWFybiBGcmVlUlRPUyBvciBtdWx0aXRhc2tpbmcgaW4gZ2VuZXJhbCBxdWlja2x5ICAgICAgICoNCisgICAgKiAgICArIExvb2tpbmcgZm9yIGJhc2ljIHRyYWluaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICogICAgKyBXYW50aW5nIHRvIGltcHJvdmUgeW91ciBGcmVlUlRPUyBza2lsbHMgYW5kIHByb2R1Y3Rpdml0eSAgICAgICAgICAgKg0KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgKiB0aGVuIHRha2UgYSBsb29rIGF0IHRoZSBGcmVlUlRPUyBib29rcyAtIGF2YWlsYWJsZSBhcyBQREYgb3IgcGFwZXJiYWNrICAqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqICAgICAgICAiVXNpbmcgdGhlIEZyZWVSVE9TIFJlYWwgVGltZSBLZXJuZWwgLSBhIFByYWN0aWNhbCBHdWlkZSIgICAgICAgICoNCisgICAgKiAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAqDQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAgICAqIEEgcGRmIHJlZmVyZW5jZSBtYW51YWwgaXMgYWxzbyBhdmFpbGFibGUuICBCb3RoIGFyZSB1c3VhbGx5IGRlbGl2ZXJlZCAgICoNCisgICAgKiB0byB5b3VyIGluYm94IHdpdGhpbiAyMCBtaW51dGVzIHRvIHR3byBob3VycyB3aGVuIHB1cmNoYXNlZCBiZXR3ZWVuIDhhbSAqDQorICAgICogYW5kIDhwbSBHTVQgKGFsdGhvdWdoIHBsZWFzZSBhbGxvdyB1cCB0byAyNCBob3VycyBpbiBjYXNlIG9mICAgICAgICAgICAgKg0KKyAgICAqIGV4Y2VwdGlvbmFsIGNpcmN1bXN0YW5jZXMpLiAgVGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgICAgICAgICAgICoNCisgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKw0KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KKw0KKyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQorICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KKyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQorICAgICoqKk5PVEUqKiogVGhlIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byBkaXN0cmlidXRlDQorICAgIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlIHRoZQ0KKyAgICBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuDQorICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUDQorICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcg0KKyAgICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQorICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQorICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCisgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KKyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KKyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCisNCisgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQorDQorICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KKyAgICBjb250YWN0IGRldGFpbHMuDQorDQorICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQorICAgIGNyaXRpY2FsIHN5c3RlbXMuDQorDQorICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCisgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCisqLw0KKw0KKy8qDQorCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCisJDQorCSoqKk5vdGUqKiogVGhpcyBleGFtcGxlIHVzZXMgcXVldWVzIHRvIHNlbmQgZWFjaCBjaGFyYWN0ZXIgaW50byBhbiBpbnRlcnJ1cHQNCisJc2VydmljZSByb3V0aW5lIGFuZCBvdXQgb2YgYW4gaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSBpbmRpdmlkdWFsbHkuICBUaGlzDQorCWlzIGRvbmUgdG8gZGVtb25zdHJhdGUgcXVldWVzIGJlaW5nIHVzZWQgaW4gYW4gaW50ZXJydXB0LCBhbmQgdG8gZGVsaWJlcmF0ZWx5DQorCWxvYWQgdGhlIHN5c3RlbSB0byB0ZXN0IHRoZSBGcmVlUlRPUyBwb3J0LiAgSXQgaXMgKk5PVCogbWVhbnQgdG8gYmUgYW4gDQorCWV4YW1wbGUgb2YgYW4gZWZmaWNpZW50IGltcGxlbWVudGF0aW9uLiAgQW4gZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIHNob3VsZA0KKwl1c2UgRklGTydzIG9yIERNQSBpZiBhdmFpbGFibGUsIGFuZCBvbmx5IHVzZSBGcmVlUlRPUyBBUEkgZnVuY3Rpb25zIHdoZW4gDQorCWVub3VnaCBoYXMgYmVlbiByZWNlaXZlZCB0byB3YXJyYW50IGEgdGFzayBiZWluZyB1bmJsb2NrZWQgdG8gcHJvY2VzcyB0aGUNCisJZGF0YS4NCisqLw0KKw0KKy8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAiRnJlZVJUT1MuaCINCisjaW5jbHVkZSAicXVldWUuaCINCisjaW5jbHVkZSAic2VtcGhyLmgiDQorI2luY2x1ZGUgImNvbXRlc3QyLmgiDQorDQorLyogTGlicmFyeSBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAic3RtMzJsMTUyX2V2YWwuaCINCisNCisvKiBEZW1vIGFwcGxpY2F0aW9uIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJzZXJpYWwuaCINCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBNaXNjIGRlZmluZXMuICovDQorI2RlZmluZSBzZXJJTlZBTElEX1FVRVVFCQkJCSggKCB4UXVldWVIYW5kbGUgKSAwICkNCisjZGVmaW5lIHNlck5PX0JMT0NLCQkJCQkJKCAoIHBvcnRUaWNrVHlwZSApIDAgKQ0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFRoZSBxdWV1ZSB1c2VkIHRvIGhvbGQgcmVjZWl2ZWQgY2hhcmFjdGVycy4gKi8NCitzdGF0aWMgeFF1ZXVlSGFuZGxlIHhSeGVkQ2hhcnM7DQorc3RhdGljIHhRdWV1ZUhhbmRsZSB4Q2hhcnNGb3JUeDsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKg0KKyAqIFNlZSB0aGUgc2VyaWFsMi5oIGhlYWRlciBmaWxlLg0KKyAqLw0KK3hDb21Qb3J0SGFuZGxlIHhTZXJpYWxQb3J0SW5pdE1pbmltYWwoIHVuc2lnbmVkIHBvcnRMT05HIHVsV2FudGVkQmF1ZCwgdW5zaWduZWQgcG9ydEJBU0VfVFlQRSB1eFF1ZXVlTGVuZ3RoICkNCit7DQorVVNBUlRfSW5pdFR5cGVEZWYgVVNBUlRfSW5pdFN0cnVjdHVyZTsNCit4Q29tUG9ydEhhbmRsZSB4UmV0dXJuOw0KK05WSUNfSW5pdFR5cGVEZWYgTlZJQ19Jbml0U3RydWN0dXJlOw0KKw0KKwkvKiBDcmVhdGUgdGhlIHF1ZXVlcyB1c2VkIHRvIGhvbGQgUngvVHggY2hhcmFjdGVycy4gKi8NCisJeFJ4ZWRDaGFycyA9IHhRdWV1ZUNyZWF0ZSggdXhRdWV1ZUxlbmd0aCwgKCB1bnNpZ25lZCBwb3J0QkFTRV9UWVBFICkgc2l6ZW9mKCBzaWduZWQgcG9ydENIQVIgKSApOw0KKwl4Q2hhcnNGb3JUeCA9IHhRdWV1ZUNyZWF0ZSggdXhRdWV1ZUxlbmd0aCArIDEsICggdW5zaWduZWQgcG9ydEJBU0VfVFlQRSApIHNpemVvZiggc2lnbmVkIHBvcnRDSEFSICkgKTsNCisJDQorCS8qIElmIHRoZSBxdWV1ZXMgd2VyZSBjcmVhdGVkIGNvcnJlY3RseSB0aGVuIHNldHVwIHRoZSBzZXJpYWwgcG9ydA0KKwloYXJkd2FyZS4gKi8NCisJaWYoICggeFJ4ZWRDaGFycyAhPSBzZXJJTlZBTElEX1FVRVVFICkgJiYgKCB4Q2hhcnNGb3JUeCAhPSBzZXJJTlZBTElEX1FVRVVFICkgKQ0KKwl7DQorCQlVU0FSVF9Jbml0U3RydWN0dXJlLlVTQVJUX0JhdWRSYXRlID0gdWxXYW50ZWRCYXVkOw0KKwkJVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9Xb3JkTGVuZ3RoID0gVVNBUlRfV29yZExlbmd0aF84YjsNCisJCVVTQVJUX0luaXRTdHJ1Y3R1cmUuVVNBUlRfU3RvcEJpdHMgPSBVU0FSVF9TdG9wQml0c18xOw0KKwkJVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9QYXJpdHkgPSBVU0FSVF9QYXJpdHlfTm87DQorCQlVU0FSVF9Jbml0U3RydWN0dXJlLlVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2wgPSBVU0FSVF9IYXJkd2FyZUZsb3dDb250cm9sX05vbmU7DQorCQlVU0FSVF9Jbml0U3RydWN0dXJlLlVTQVJUX01vZGUgPSBVU0FSVF9Nb2RlX1J4IHwgVVNBUlRfTW9kZV9UeDsNCisJCQ0KKwkJLyogVGhlIEV2YWwgYm9hcmQgQ09NMiBpcyBiZWluZyB1c2VkLCB3aGljaCBpbiByZWFsaXR5IGlzIHRoZSBTVE0zMg0KKwkJVVNBUlQzLiAqLw0KKwkJU1RNX0VWQUxfQ09NSW5pdCggQ09NMiwgJlVTQVJUX0luaXRTdHJ1Y3R1cmUgKTsNCisJCQ0KKwkJTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbCA9IFVTQVJUM19JUlFuOw0KKwkJTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbFByZWVtcHRpb25Qcmlvcml0eSA9IGNvbmZpZ0xJQlJBUllfTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZOw0KKwkJTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbFN1YlByaW9yaXR5ID0gMDsgLyogTm90IHVzZWQgYXMgNCBiaXRzIGFyZSB1c2VkIGZvciB0aGUgcHJlLWVtcHRpb24gcHJpb3JpdHkuICovOw0KKwkJTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbENtZCA9IEVOQUJMRTsNCisJCU5WSUNfSW5pdCggJk5WSUNfSW5pdFN0cnVjdHVyZSApOw0KKwkJVVNBUlRfSVRDb25maWcoIFVTQVJUMywgVVNBUlRfSVRfUlhORSwgRU5BQkxFICk7DQorCX0NCisJZWxzZQ0KKwl7DQorCQl4UmV0dXJuID0gKCB4Q29tUG9ydEhhbmRsZSApIDA7DQorCX0NCisNCisJLyogVGhpcyBkZW1vIGZpbGUgb25seSBzdXBwb3J0cyBhIHNpbmdsZSBwb3J0IGJ1dCB3ZSBoYXZlIHRvIHJldHVybg0KKwlzb21ldGhpbmcgdG8gY29tcGx5IHdpdGggdGhlIHN0YW5kYXJkIGRlbW8gaGVhZGVyIGZpbGUuICovDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzaWduZWQgcG9ydEJBU0VfVFlQRSB4U2VyaWFsR2V0Q2hhciggeENvbVBvcnRIYW5kbGUgcHhQb3J0LCBzaWduZWQgcG9ydENIQVIgKnBjUnhlZENoYXIsIHBvcnRUaWNrVHlwZSB4QmxvY2tUaW1lICkNCit7DQorCS8qIFRoZSBwb3J0IGhhbmRsZSBpcyBub3QgcmVxdWlyZWQgYXMgdGhpcyBkcml2ZXIgb25seSBzdXBwb3J0cyBvbmUgcG9ydC4gKi8NCisJKCB2b2lkICkgcHhQb3J0Ow0KKw0KKwkvKiBHZXQgdGhlIG5leHQgY2hhcmFjdGVyIGZyb20gdGhlIGJ1ZmZlci4gIFJldHVybiBmYWxzZSBpZiBubyBjaGFyYWN0ZXJzDQorCWFyZSBhdmFpbGFibGUsIG9yIGFycml2ZSBiZWZvcmUgeEJsb2NrVGltZSBleHBpcmVzLiAqLw0KKwlpZiggeFF1ZXVlUmVjZWl2ZSggeFJ4ZWRDaGFycywgcGNSeGVkQ2hhciwgeEJsb2NrVGltZSApICkNCisJew0KKwkJcmV0dXJuIHBkVFJVRTsNCisJfQ0KKwllbHNlDQorCXsNCisJCXJldHVybiBwZEZBTFNFOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdlNlcmlhbFB1dFN0cmluZyggeENvbVBvcnRIYW5kbGUgcHhQb3J0LCBjb25zdCBzaWduZWQgcG9ydENIQVIgKiBjb25zdCBwY1N0cmluZywgdW5zaWduZWQgcG9ydFNIT1JUIHVzU3RyaW5nTGVuZ3RoICkNCit7DQorc2lnbmVkIHBvcnRDSEFSICpweE5leHQ7DQorDQorCS8qIEEgY291cGxlIG9mIHBhcmFtZXRlcnMgdGhhdCB0aGlzIHBvcnQgZG9lcyBub3QgdXNlLiAqLw0KKwkoIHZvaWQgKSB1c1N0cmluZ0xlbmd0aDsNCisJKCB2b2lkICkgcHhQb3J0Ow0KKw0KKwkvKiBOT1RFOiBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGhhbmRsZSB0aGUgcXVldWUgYmVpbmcgZnVsbCBhcyBubw0KKwlibG9jayB0aW1lIGlzIHVzZWQhICovDQorDQorCS8qIFRoZSBwb3J0IGhhbmRsZSBpcyBub3QgcmVxdWlyZWQgYXMgdGhpcyBkcml2ZXIgb25seSBzdXBwb3J0cyBVQVJUMS4gKi8NCisJKCB2b2lkICkgcHhQb3J0Ow0KKw0KKwkvKiBTZW5kIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIG9uZSBhdCBhIHRpbWUuICovDQorCXB4TmV4dCA9ICggc2lnbmVkIHBvcnRDSEFSICogKSBwY1N0cmluZzsNCisJd2hpbGUoICpweE5leHQgKQ0KKwl7DQorCQl4U2VyaWFsUHV0Q2hhciggcHhQb3J0LCAqcHhOZXh0LCBzZXJOT19CTE9DSyApOw0KKwkJcHhOZXh0Kys7DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2lnbmVkIHBvcnRCQVNFX1RZUEUgeFNlcmlhbFB1dENoYXIoIHhDb21Qb3J0SGFuZGxlIHB4UG9ydCwgc2lnbmVkIHBvcnRDSEFSIGNPdXRDaGFyLCBwb3J0VGlja1R5cGUgeEJsb2NrVGltZSApDQorew0KK3NpZ25lZCBwb3J0QkFTRV9UWVBFIHhSZXR1cm47DQorDQorCWlmKCB4UXVldWVTZW5kKCB4Q2hhcnNGb3JUeCwgJmNPdXRDaGFyLCB4QmxvY2tUaW1lICkgPT0gcGRQQVNTICkNCisJew0KKwkJeFJldHVybiA9IHBkUEFTUzsNCisJCVVTQVJUX0lUQ29uZmlnKCBVU0FSVDMsIFVTQVJUX0lUX1RYRSwgRU5BQkxFICk7DQorCX0NCisJZWxzZQ0KKwl7DQorCQl4UmV0dXJuID0gcGRGQUlMOw0KKwl9DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZTZXJpYWxDbG9zZSggeENvbVBvcnRIYW5kbGUgeFBvcnQgKQ0KK3sNCisJLyogTm90IHN1cHBvcnRlZCBhcyBub3QgcmVxdWlyZWQgYnkgdGhlIGRlbW8gYXBwbGljYXRpb24uICovDQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgVVNBUlQzX0lSUUhhbmRsZXIoIHZvaWQgKQ0KK3sNCitwb3J0QkFTRV9UWVBFIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7DQorcG9ydENIQVIgY0NoYXI7DQorDQorCWlmKCBVU0FSVF9HZXRJVFN0YXR1cyggVVNBUlQzLCBVU0FSVF9JVF9UWEUgKSA9PSBTRVQgKQ0KKwl7DQorCQkvKiBUaGUgaW50ZXJydXB0IHdhcyBjYXVzZWQgYnkgdGhlIFRYIHJlZ2lzdGVyIGJlY29taW5nIGVtcHR5LiAgQXJlIA0KKwkJdGhlcmUgYW55IG1vcmUgY2hhcmFjdGVycyB0byB0cmFuc21pdD8gKi8NCisJCWlmKCB4UXVldWVSZWNlaXZlRnJvbUlTUiggeENoYXJzRm9yVHgsICZjQ2hhciwgJnhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApID09IHBkVFJVRSApDQorCQl7DQorCQkJLyogQSBjaGFyYWN0ZXIgd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBxdWV1ZSBzbyBjYW4gYmUgc2VudCB0byB0aGUNCisJCQlVU0FSVCBub3cuICovDQorCQkJVVNBUlRfU2VuZERhdGEoIFVTQVJUMywgY0NoYXIgKTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlVU0FSVF9JVENvbmZpZyggVVNBUlQzLCBVU0FSVF9JVF9UWEUsIERJU0FCTEUgKTsJCQ0KKwkJfQkJDQorCX0NCisJDQorCWlmKCBVU0FSVF9HZXRJVFN0YXR1cyggVVNBUlQzLCBVU0FSVF9JVF9SWE5FICkgPT0gU0VUICkNCisJew0KKwkJLyogQSBjaGFyYWN0ZXIgaGFzIGJlZW4gcmVjZWl2ZWQgb24gdGhlIFVTQVJULCBzZW5kIGl0IHRvIHRoZSBSeA0KKwkJaGFuZGxlciB0YXNrLiAqLw0KKwkJY0NoYXIgPSBVU0FSVF9SZWNlaXZlRGF0YSggVVNBUlQzICk7DQorCQl4UXVldWVTZW5kRnJvbUlTUiggeFJ4ZWRDaGFycywgJmNDaGFyLCAmeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorCX0JDQorDQorCS8qIElmIHNlbmRpbmcgb3IgcmVjZWl2aW5nIGZyb20gYSBxdWV1ZSBoYXMgY2F1c2VkIGEgdGFzayB0byB1bmJsb2NrLCBhbmQNCisJdGhlIHVuYmxvY2tlZCB0YXNrIGhhcyBhIHByaW9yaXR5IGVxdWFsIHRvIG9yIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50bHkgDQorCXJ1bm5pbmcgdGFzayAodGhlIHRhc2sgdGhpcyBJU1IgaW50ZXJydXB0ZWQpLCB0aGVuIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiANCisJd2lsbCBoYXZlIGF1dG9tYXRpY2FsbHkgYmVlbiBzZXQgdG8gcGRUUlVFIHdpdGhpbiB0aGUgcXVldWUgc2VuZCBvciByZWNlaXZlIA0KKwlmdW5jdGlvbi4gIHBvcnRFTkRfU1dJVENISU5HX0lTUigpIHdpbGwgdGhlbiBlbnN1cmUgdGhhdCB0aGlzIElTUiByZXR1cm5zIA0KKwlkaXJlY3RseSB0byB0aGUgaGlnaGVyIHByaW9yaXR5IHVuYmxvY2tlZCB0YXNrLiAqLw0KKwlwb3J0RU5EX1NXSVRDSElOR19JU1IoIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KK30NCisNCisNCisNCisNCisNCisJDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jc3B5LmJhdCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uY3NweS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRmMmEwYwotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uY3NweS5iYXQKQEAgLTAsMCArMSwxNSBAQAorQFJFTSBUaGlzIGJhdGNoIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBJQVIgRW1iZWRkZWQgV29ya2JlbmNoDQorQFJFTSBDLVNQWSBEZWJ1Z2dlciwgYXMgYW4gYWlkIHRvIHByZXBhcmluZyBhIGNvbW1hbmQgbGluZSBmb3IgcnVubmluZw0KK0BSRU0gdGhlIGNzcHliYXQgY29tbWFuZCBsaW5lIHV0aWxpdHkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIHNldHRpbmdzLg0KK0BSRU0NCitAUkVNIFlvdSBjYW4gbGF1bmNoIGNzcHliYXQgYnkgdHlwaW5nIHRoZSBuYW1lIG9mIHRoaXMgYmF0Y2ggZmlsZSBmb2xsb3dlZA0KK0BSRU0gYnkgdGhlIG5hbWUgb2YgdGhlIGRlYnVnIGZpbGUgKHVzdWFsbHkgYW4gRUxGL0RXQVJGIG9yIFVCUk9GIGZpbGUpLg0KK0BSRU0gTm90ZSB0aGF0IHRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgZXZlcnkgdGltZSBhIG5ldyBkZWJ1ZyBzZXNzaW9uDQorQFJFTSBpcyBpbml0aWFsaXplZCwgc28geW91IG1heSB3YW50IHRvIG1vdmUgb3IgcmVuYW1lIHRoZSBmaWxlIGJlZm9yZQ0KK0BSRU0gbWFraW5nIGNoYW5nZXMuDQorQFJFTSANCisNCisNCisiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDYuMFxjb21tb25cYmluXGNzcHliYXQiICJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNi4wXGFybVxiaW5cYXJtcHJvYy5kbGwiICJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNi4wXGFybVxiaW5cYXJtamxpbmsuZGxsIiAgJTEgLS1wbHVnaW4gIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA2LjBcYXJtXGJpblxhcm1iYXQuZGxsIiAtLWZsYXNoX2xvYWRlciAiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDYuMFxhcm1cY29uZmlnXGZsYXNobG9hZGVyXFNUXEZsYXNoU1RNMzJMMTV4eEIuYm9hcmQiIC0tYmFja2VuZCAtQiAiLS1lbmRpYW49bGl0dGxlIiAiLS1jcHU9Q29ydGV4LU0zIiAiLS1mcHU9Tm9uZSIgIi1wIiAiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDYuMFxhcm1cQ09ORklHXGRlYnVnZ2VyXFNUXGlvc3RtMzJsMTUyeHguZGRmIiAiLS1zZW1paG9zdGluZyIgIi0tZGV2aWNlPVNUTTMyTDE1MnhCIiAiLS1kcnZfY29tbXVuaWNhdGlvbj1VU0IwIiAiLS1qbGlua19zcGVlZD1hdXRvIiAiLS1qbGlua19pbml0aWFsX3NwZWVkPTMyIiAiLS1qbGlua19yZXNldF9zdHJhdGVneT0wLDAiICItLWpsaW5rX2ludGVyZmFjZT1TV0QiICItLWRydl9jYXRjaF9leGNlcHRpb25zPTB4MDAwIiANCisNCisNCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0IGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjIxNGNjCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdApAQCAtMCwwICsxLDY4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQorDQorPFByb2plY3Q+DQorICA8RGVza3RvcD4NCisgICAgPFN0YXRpYz4NCisgICAgICA8RGVidWctTG9nPg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICA8UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4zPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjE2MjI8L0NvbHVtbldpZHRoMT48L0RlYnVnLUxvZz4NCisgICAgICA8QnVpbGQ+DQorICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICA8Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT4NCisgICAgICAgIDxDb2x1bW5XaWR0aDI+MzI0PC9Db2x1bW5XaWR0aDI+DQorICAgICAgICA8Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgPFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzPjxXaW5kb3c+PEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5PjwvV2luZG93PjwvV2luZG93cz48L1ByZWZlcmVkV2luZG93cz48L0J1aWxkPg0KKyAgICAgIDxXb3Jrc3BhY2U+DQorICAgICAgICA8Q29sdW1uV2lkdGhzPg0KKyAgICAgICAgICANCisgICAgICAgICAgDQorICAgICAgICAgIA0KKyAgICAgICAgICANCisgICAgICAgIDxDb2x1bW4wPjMzMjwvQ29sdW1uMD48Q29sdW1uMT4yNzwvQ29sdW1uMT48Q29sdW1uMj4yNzwvQ29sdW1uMj48Q29sdW1uMz4yNzwvQ29sdW1uMz48L0NvbHVtbldpZHRocz4NCisgICAgICA8L1dvcmtzcGFjZT4NCisgICAgICA8RGlzYXNzZW1ibHk+DQorICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICANCisgICAgICAgICAgDQorICAgICAgICAgIA0KKyAgICAgICAgICANCisgICAgICAgIDxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgIDxNaXhlZE1vZGU+MTwvTWl4ZWRNb2RlPjxDb2RlQ292U2hvdz4xPC9Db2RlQ292U2hvdz48SW5zdHJQcm9mU2hvdz4xPC9JbnN0clByb2ZTaG93PjwvRGlzYXNzZW1ibHk+DQorICAgIDxXYXRjaD48Rm9ybWF0PjxzdHJ1Y3RfdHlwZXMvPjx3YXRjaF9mb3JtYXRzPjxGbXQ+PEtleT57V31XYXRjaC0wOnRtcHByZTwvS2V5PjxWYWx1ZT4xPC9WYWx1ZT48L0ZtdD48L3dhdGNoX2Zvcm1hdHM+PC9Gb3JtYXQ+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Q29sdW1uMD4xNTE8L0NvbHVtbjA+PENvbHVtbjE+MTQ4PC9Db2x1bW4xPjxDb2x1bW4yPjEwMDwvQ29sdW1uMj48Q29sdW1uMz4xMDA8L0NvbHVtbjM+PC9XYXRjaD48UXVpY2tXYXRjaD48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxDb2x1bW4wPjIwODwvQ29sdW1uMD48Q29sdW1uMT4xMDA8L0NvbHVtbjE+PENvbHVtbjI+MTAwPC9Db2x1bW4yPjxDb2x1bW4zPjEwMDwvQ29sdW1uMz48L1F1aWNrV2F0Y2g+PFRlcm1pbmFsSU8+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48SW5wdXRTb3VyY2U+MTwvSW5wdXRTb3VyY2U+PElucHV0TW9kZT4xMDwvSW5wdXRNb2RlPjxGaWxlbmFtZT4kUFJPSl9ESVIkXFRlcm1JT0lucHV0LnR4dDwvRmlsZW5hbWU+PElucHV0RWNobz4xPC9JbnB1dEVjaG8+PFNob3dSZXNldD4wPC9TaG93UmVzZXQ+PC9UZXJtaW5hbElPPjxUQVNLVklFVz48Q29sdW1uMD4yMDA8L0NvbHVtbjA+PENvbHVtbjE+MTAwPC9Db2x1bW4xPjxDb2x1bW4yPjEwMDwvQ29sdW1uMj48Q29sdW1uMz4xMDA8L0NvbHVtbjM+PENvbHVtbjQ+MTAwPC9Db2x1bW40PjxDb2x1bW41PjEwMDwvQ29sdW1uNT48Q29sdW1uNj4xMDA8L0NvbHVtbjY+PENvbHVtbjc+MTUwPC9Db2x1bW43PjwvVEFTS1ZJRVc+PFFVRVVFVklFVz48Q29sdW1uMD4zMDA8L0NvbHVtbjA+PENvbHVtbjE+MTAwPC9Db2x1bW4xPjxDb2x1bW4yPjEwMDwvQ29sdW1uMj48Q29sdW1uMz4xMDA8L0NvbHVtbjM+PENvbHVtbjQ+MTAwPC9Db2x1bW40PjxDb2x1bW41PjEwMDwvQ29sdW1uNT48Q29sdW1uNj4xMDA8L0NvbHVtbjY+PC9RVUVVRVZJRVc+PFJlZ2lzdGVyPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PC9SZWdpc3Rlcj48Q2FsbFN0YWNrPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjE8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PFZpZXdBcmdzPjE8L1ZpZXdBcmdzPjwvQ2FsbFN0YWNrPjwvU3RhdGljPg0KKyAgICA8V2luZG93cz4NCisgICAgICANCisgICAgICANCisgICAgPFduZDA+DQorICAgICAgICA8VGFicz4NCisgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTU1MzAtMjEzNjI8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCisgICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgPFNlc3Npb24+DQorICAgICAgICAgICAgICANCisgICAgICAgICAgICA8Tm9kZURpY3Q+PEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1NfU291cmNlPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPU19Tb3VyY2UvUG9ydGFibGU8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL1N0YW5kYXJkX0RlbW9fQ29kZTwvRXhwYW5kZWROb2RlPjwvTm9kZURpY3Q+PC9TZXNzaW9uPg0KKyAgICAgICAgICA8L1RhYj4NCisgICAgICAgIDwvVGFicz4NCisgICAgICAgIA0KKyAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDA+PFduZDE+PFRhYnM+PFRhYj48SWRlbnRpdHk+VGFiSUQtMTA0NjQtMjM1NzA8L0lkZW50aXR5PjxUYWJOYW1lPlRhc2tzPC9UYWJOYW1lPjxGYWN0b3J5PlRBU0tWSUVXPC9GYWN0b3J5PjxTZXNzaW9uLz48L1RhYj48L1RhYnM+PFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMT48V25kMj48VGFicz48VGFiPjxJZGVudGl0eT5UYWJJRC0zMTQzOC0yMzU4NjwvSWRlbnRpdHk+PFRhYk5hbWU+UXVldWVzPC9UYWJOYW1lPjxGYWN0b3J5PlFVRVVFVklFVzwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPjxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDI+PFduZDM+PFRhYnM+PFRhYj48SWRlbnRpdHk+VGFiSUQtMTU1NDEtODc1PC9JZGVudGl0eT48VGFiTmFtZT5UZXJtaW5hbCBJL088L1RhYk5hbWU+PEZhY3Rvcnk+VGVybWluYWxJTzwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPjxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDM+PC9XaW5kb3dzPg0KKyAgICA8RWRpdG9yPg0KKyAgICAgIA0KKyAgICAgIA0KKyAgICAgIA0KKyAgICAgIA0KKyAgICA8UGFuZT48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXG1haW4uYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4yMTk8L1lQb3M+PFNlbFN0YXJ0PjEwNzI4PC9TZWxTdGFydD48U2VsRW5kPjEwNzI4PC9TZWxFbmQ+PC9UYWI+PEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlwuLlxTb3VyY2VccXVldWUuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4xMDM1PC9ZUG9zPjxTZWxTdGFydD4zNTY0NzwvU2VsU3RhcnQ+PFNlbEVuZD4zNTY0NzwvU2VsRW5kPjwvVGFiPjwvUGFuZT48QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPjxTaXplcz48UGFuZT48WD4xMDAwMDAwPC9YPjxZPjEwMDAwMDA8L1k+PC9QYW5lPjwvU2l6ZXM+PFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+PC9FZGl0b3I+DQorICAgIDxQb3NpdGlvbnM+DQorICAgICAgDQorICAgICAgDQorICAgICAgDQorICAgICAgDQorICAgICAgDQorICAgIDxUb3A+PFJvdzA+PFNpemVzPjxUb29sYmFyLTAxMmFhZDYwPjxrZXk+aWFyaWRlcG0uZW51MTwva2V5PjwvVG9vbGJhci0wMTJhYWQ2MD48VG9vbGJhci0wOTk0NzI4OD48a2V5PmRlYnVnZ2VyZ3VpLmVudTE8L2tleT48L1Rvb2xiYXItMDk5NDcyODg+PC9TaXplcz48L1JvdzA+PFJvdzE+PFNpemVzPjxUb29sYmFyLTA2YWY3NGYwPjxrZXk+YXJtamxpbmsuZW51MTwva2V5PjwvVG9vbGJhci0wNmFmNzRmMD48L1NpemVzPjwvUm93MT48L1RvcD48TGVmdD48Um93MD48U2l6ZXM+PFduZDA+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+NjU5PC9Cb3R0b20+PFJpZ2h0PjQwNjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MjAwPC94c2NyZWVuPjx5c2NyZWVuPjIwMDwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMTkwNDg8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MjAzNjY2PC9zaXplSG9yekNZPjxzaXplVmVydENYPjI0Mjg1Nzwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT42NzMxMTY8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMD48L1NpemVzPjwvUm93MD48L0xlZnQ+PFJpZ2h0PjxSb3cwPjxTaXplcz48V25kMz48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT42NTk8L0JvdHRvbT48UmlnaHQ+NDM2PC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMDA8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjExOTA0ODwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDM2NjY8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MjYwNzE0PC9zaXplVmVydENYPjxzaXplVmVydENZPjY3MzExNjwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQzPjwvU2l6ZXM+PC9Sb3cwPjwvUmlnaHQ+PEJvdHRvbT48Um93MD48U2l6ZXM+PFduZDE+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+MTcyPC9Cb3R0b20+PFJpZ2h0PjE2ODI8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjE2ODQ8L3hzY3JlZW4+PHlzY3JlZW4+MTc0PC95c2NyZWVuPjxzaXplSG9yekNYPjEwMDIzODE8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MTc3MTg5PC9zaXplSG9yekNZPjxzaXplVmVydENYPjExOTA0ODwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT4yMDM2NjY8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMT48L1NpemVzPjwvUm93MD48Um93MT48U2l6ZXM+PFduZDI+PFJlY3Q+PFRvcD4xNzA8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjI1NTwvQm90dG9tPjxSaWdodD4xNjgyPC9SaWdodD48eD4tMjwveD48eT4xNzA8L3k+PHhzY3JlZW4+MTY4NDwveHNjcmVlbj48eXNjcmVlbj44NTwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMDAyMzgxPC9zaXplSG9yekNYPjxzaXplSG9yekNZPjg2NTU4PC9zaXplSG9yekNZPjxzaXplVmVydENYPjExOTA0ODwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT4yMDM2NjY8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMj48L1NpemVzPjwvUm93MT48L0JvdHRvbT48RmxvYXQ+PFNpemVzLz48L0Zsb2F0PjwvUG9zaXRpb25zPg0KKyAgPC9EZXNrdG9wPg0KKzwvUHJvamVjdD4NCisNCisNCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRuaSBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZG5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NjRkNDEKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRuaQpAQCAtMCwwICsxLDEwNSBAQAorW0RlYnVnQ2hlY2tzdW1dDQorQ2hlY2tzdW09MTgwMjQzMDIzOQ0KK1tEaXNBc3NlbWJseVdpbmRvd10NCitOdW1TdGF0ZXM9XyAxDQorU3RhdGUgMT1fIDENCitbSW5zdHJ1Y3Rpb25Qcm9maWxpbmddDQorRW5hYmxlZD1fIDANCitbQ29kZUNvdmVyYWdlXQ0KK0VuYWJsZWQ9XyAwDQorW1Byb2ZpbGluZ10NCitFbmFibGVkPTANCitbRXhjZXB0aW9uc10NCitTdG9wT25VbmNhdWdodD1fIDANCitTdG9wT25UaHJvdz1fIDANCitbU3RhY2tQbHVnaW5dDQorRW5hYmxlZD0xDQorT3ZlcmZsb3dXYXJuaW5nc0VuYWJsZWQ9MQ0KK1dhcm5pbmdUaHJlc2hvbGQ9OTANCitTcFdhcm5pbmdzRW5hYmxlZD0xDQorV2Fybkhvdz0wDQorVXNlVHJpZ2dlcj0xDQorVHJpZ2dlck5hbWU9bWFpbg0KK0xpbWl0U2l6ZT0wDQorQnl0ZUxpbWl0PTUwDQorW1NXT1RyYWNlSFdTZXR0aW5nc10NCitDcHVDbG9jaz0zMjAwMDAwMA0KK0Nsb2NrQXV0b0RldGVjdD0xDQorQ2xvY2tXYW50ZWQ9NjAwMDAwMA0KK0p0YWdTcGVlZD0yMDAwMDAwDQorUHJlc2NhbGVyPTE2DQorVGltZVN0YW1wUHJlc2NJbmRleD0wDQorVGltZVN0YW1wUHJlc2NEYXRhPTANCitQY1NhbXBDWUNUQVA9MQ0KK1BjU2FtcFBPU1RDTlQ9MTUNCitQY1NhbXBJbmRleD0wDQorRGF0YUxvZ01vZGU9MA0KK0lUTXBvcnRzRW5hYmxlPTENCitJVE1wb3J0c1Rlcm1JTz0xDQorSVRNcG9ydHNMb2dGaWxlPTANCitJVE1sb2dGaWxlPSRQUk9KX0RJUiRcSVRNLmxvZw0KK1tJbnRlcnJ1cHRzXQ0KK0VuYWJsZWQ9MQ0KK1tNZW1vcnlNYXBdDQorRW5hYmxlZD0wDQorQmFzZT0wDQorVXNlQXV0bz0wDQorVHlwZVZpb2xhdGlvbj0xDQorVW5zcGVjUmFuZ2U9MQ0KK0FjdGlvblN0YXRlPTENCitbVHJhY2VIZWxwZXJdDQorRW5hYmxlZD0wDQorU2hvd1NvdXJjZT0xDQorW0RhdGFMb2ddDQorTG9nRW5hYmxlZD0wDQorU3VtRW5hYmxlZD0wDQorR3JhcGhFbmFibGVkPTANCitTaG93VGltZUxvZz0xDQorU2hvd1RpbWVTdW09MQ0KK1tJbnRlcnJ1cHRMb2ddDQorTG9nRW5hYmxlZD0wDQorU3VtRW5hYmxlZD0wDQorR3JhcGhFbmFibGVkPTANCitTaG93VGltZUxvZz0xDQorU2hvd1RpbWVTdW09MQ0KK1N1bVNvcnRPcmRlcj0wDQorW1Bvd2VyTG9nXQ0KK0xvZ0VuYWJsZWQ9MA0KK0dyYXBoRW5hYmxlZD0wDQorU2hvd1RpbWVMb2c9MQ0KK1Nob3dUaW1lU3VtPTANCitUaXRsZTA9UG93ZXIgW21BXQ0KK1NldHVwMD0wIDEgMCA1MDAgMiAwIDQgMSAwDQorW0xvZyBmaWxlXQ0KK0xvZ2dpbmdFbmFibGVkPV8gMA0KK0xvZ0ZpbGU9XyAiIg0KK0NhdGVnb3J5PV8gMA0KK1tUZXJtSU9Mb2ddDQorTG9nZ2luZ0VuYWJsZWQ9XyAwDQorTG9nRmlsZT1fICIiDQorW1NXT1RyYWNlV2luZG93XQ0KK1BjU2FtcGxpbmc9MA0KK0ludGVycnVwdExvZ3M9MA0KK0ZvcmNlZFRpbWVTdGFtcHM9MA0KK0V2ZW50Q1BJPTANCitFdmVudEVYQz0wDQorRXZlbnRGT0xEPTANCitFdmVudExTVT0wDQorRXZlbnRTTEVFUD0wDQorW1RyYWNlSGVscGVyRXh0cmFdDQorRW5hYmxlZD0wDQorU2hvd1NvdXJjZT0xDQorW0NhbGxTdGFja0xvZ10NCitFbmFibGVkPTANCitbRHJpdmVyUHJvZmlsaW5nXQ0KK0VuYWJsZWQ9MA0KK01vZGU9Mw0KK0dyYXBoPTANCitTeW1iaW9udD0wDQorW0Rpc2Fzc2VtYmxlIG1vZGVdDQorbW9kZT0wDQorW0JyZWFrcG9pbnRzXQ0KK0NvdW50PTANCitbQWxpYXNlc10NCitDb3VudD0wDQorU3VwcHJlc3NEaWFsb2c9MA0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGY3ZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXR0aW5ncy9SVE9TRGVtby53c2R0CkBAIC0wLDAgKzEsNDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCisNCis8V29ya3NwYWNlPg0KKyAgPENvbmZpZ0RpY3Rpb25hcnk+DQorICAgIA0KKyAgPEN1cnJlbnRDb25maWdzPjxQcm9qZWN0PlJUT1NEZW1vL0RlYnVnPC9Qcm9qZWN0PjwvQ3VycmVudENvbmZpZ3M+PC9Db25maWdEaWN0aW9uYXJ5Pg0KKyAgPERlc2t0b3A+DQorICAgIDxTdGF0aWM+DQorICAgICAgPFdvcmtzcGFjZT4NCisgICAgICAgIDxDb2x1bW5XaWR0aHM+DQorICAgICAgICAgIA0KKyAgICAgICAgICANCisgICAgICAgICAgDQorICAgICAgICAgIA0KKyAgICAgICAgPENvbHVtbjA+MzY0PC9Db2x1bW4wPjxDb2x1bW4xPjI3PC9Db2x1bW4xPjxDb2x1bW4yPjI3PC9Db2x1bW4yPjxDb2x1bW4zPjI3PC9Db2x1bW4zPjwvQ29sdW1uV2lkdGhzPg0KKyAgICAgIDwvV29ya3NwYWNlPg0KKyAgICA8QnVpbGQ+PENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+MzI0PC9Db2x1bW5XaWR0aDI+PENvbHVtbldpZHRoMz44MTwvQ29sdW1uV2lkdGgzPjwvQnVpbGQ+PFRlcm1pbmFsSU8vPjxEZWJ1Zy1Mb2c+PENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPjwvRGVidWctTG9nPjwvU3RhdGljPg0KKyAgICA8V2luZG93cz4NCisgICAgICANCisgICAgPFduZDI+DQorICAgICAgICA8VGFicz4NCisgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjc2MzAtNDcxODwvSWRlbnRpdHk+DQorICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KKyAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCisgICAgICAgICAgICA8U2Vzc2lvbj4NCisgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIDxOb2RlRGljdD48RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+PC9Ob2RlRGljdD48L1Nlc3Npb24+DQorICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgDQorICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMj48V25kMz48VGFicz48VGFiPjxJZGVudGl0eT5UYWJJRC0xMDAwMi03NzA5PC9JZGVudGl0eT48VGFiTmFtZT5CdWlsZDwvVGFiTmFtZT48RmFjdG9yeT5CdWlsZDwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PFRhYj48SWRlbnRpdHk+VGFiSUQtMTg0MzctMjE1MTI8L0lkZW50aXR5PjxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT48RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+PFNlc3Npb24vPjwvVGFiPjwvVGFicz48U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQzPjwvV2luZG93cz4NCisgICAgPEVkaXRvcj4NCisgICAgICANCisgICAgICANCisgICAgICANCisgICAgICANCisgICAgPFBhbmU+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MjE5PC9ZUG9zPjxTZWxTdGFydD4xMDcyODwvU2VsU3RhcnQ+PFNlbEVuZD4xMDcyODwvU2VsRW5kPjwvVGFiPjxBY3RpdmVUYWI+MDwvQWN0aXZlVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MTAzNTwvWVBvcz48U2VsU3RhcnQ+MzU2NDc8L1NlbFN0YXJ0PjxTZWxFbmQ+MzU2NDc8L1NlbEVuZD48L1RhYj48L1BhbmU+PEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT48U2l6ZXM+PFBhbmU+PFg+MTAwMDAwMDwvWD48WT4xMDAwMDAwPC9ZPjwvUGFuZT48L1NpemVzPjxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPjwvRWRpdG9yPg0KKyAgICA8UG9zaXRpb25zPg0KKyAgICAgIA0KKyAgICAgIA0KKyAgICAgIA0KKyAgICAgIA0KKyAgICAgIA0KKyAgICA8VG9wPjxSb3cwPjxTaXplcz48VG9vbGJhci0wMTJhYWQ2MD48a2V5PmlhcmlkZXBtLmVudTE8L2tleT48L1Rvb2xiYXItMDEyYWFkNjA+PC9TaXplcz48L1JvdzA+PFJvdzE+PFNpemVzLz48L1JvdzE+PC9Ub3A+PExlZnQ+PFJvdzA+PFNpemVzPjxXbmQyPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjc0MDwvQm90dG9tPjxSaWdodD40Mzg8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjIwMDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzY2Njwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4yNjE5MDU8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+NzU1NjAxPC9zaXplVmVydENZPjwvUmVjdD48L1duZDI+PC9TaXplcz48L1JvdzA+PC9MZWZ0PjxSaWdodD48Um93MD48U2l6ZXMvPjwvUm93MD48L1JpZ2h0PjxCb3R0b20+PFJvdzA+PFNpemVzPjxXbmQzPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjE5ODwvQm90dG9tPjxSaWdodD4xNjgyPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4xNjg0PC94c2NyZWVuPjx5c2NyZWVuPjIwMDwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMDAyMzgxPC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzY2Njwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+MjAzNjY2PC9zaXplVmVydENZPjwvUmVjdD48L1duZDM+PC9TaXplcz48L1JvdzA+PC9Cb3R0b20+PEZsb2F0PjxTaXplcy8+PC9GbG9hdD48L1Bvc2l0aW9ucz4NCisgIDwvRGVza3RvcD4NCis8L1dvcmtzcGFjZT4NCisNCisNCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3NldHRpbmdzL1JUT1NEZW1vX0RlYnVnLmpsaW5rIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXR0aW5ncy9SVE9TRGVtb19EZWJ1Zy5qbGluawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjhmZjgyCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXR0aW5ncy9SVE9TRGVtb19EZWJ1Zy5qbGluawpAQCAtMCwwICsxLDIzIEBACitbQlJFQUtQT0lOVFNdDQorU2hvd0luZm9XaW4gPSAxDQorRW5hYmxlRmxhc2hCUCA9IDINCitCUER1cmluZ0V4ZWN1dGlvbiA9IDANCitbQ0ZJXQ0KK0NGSVNpemUgPSAweDAwDQorQ0ZJQWRkciA9IDB4MDANCitbQ1BVXQ0KK092ZXJyaWRlTWVtTWFwID0gMA0KK0FsbG93U2ltdWxhdGlvbiA9IDENCitTY3JpcHRGaWxlPSIiDQorW0ZMQVNIXQ0KK1NraXBQcm9nT25DUkNNYXRjaCA9IDENCitWZXJpZnlEb3dubG9hZCA9IDENCitBbGxvd0NhY2hpbmcgPSAxDQorRW5hYmxlRmxhc2hETCA9IDINCitPdmVycmlkZSA9IDANCitEZXZpY2U9IkFEVUM3MDIwWDYyIg0KK1tHRU5FUkFMXQ0KK1dvcmtSQU1TaXplID0gMHgwMA0KK1dvcmtSQU1BZGRyID0gMHgwMA0KK1tTV09dDQorU1dPTG9nRmlsZT0iIg0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNMy9Db3JlU3VwcG9ydC9jb3JlX2NtMy5jIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0NvcmVTdXBwb3J0L2NvcmVfY20zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZmZGRjNQotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNMy9Db3JlU3VwcG9ydC9jb3JlX2NtMy5jCkBAIC0wLDAgKzEsNzg0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQorICogQGZpbGUgICAgIGNvcmVfY20zLmMNCisgKiBAYnJpZWYgICAgQ01TSVMgQ29ydGV4LU0zIENvcmUgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXIgU291cmNlIEZpbGUNCisgKiBAdmVyc2lvbiAgVjEuMzANCisgKiBAZGF0ZSAgICAgMzAuIE9jdG9iZXIgMjAwOQ0KKyAqDQorICogQG5vdGUNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBAcGFyDQorICogQVJNIExpbWl0ZWQgKEFSTSkgaXMgc3VwcGx5aW5nIHRoaXMgc29mdHdhcmUgZm9yIHVzZSB3aXRoIENvcnRleC1NIA0KKyAqIHByb2Nlc3NvciBiYXNlZCBtaWNyb2NvbnRyb2xsZXJzLiAgVGhpcyBmaWxlIGNhbiBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgDQorICogd2l0aGluIGRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHN1cHBvcnRpbmcgc3VjaCBBUk0gYmFzZWQgcHJvY2Vzc29ycy4gDQorICoNCisgKiBAcGFyDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLiAgTk8gV0FSUkFOVElFUywgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEDQorICogT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU1QTElFRCBXQVJSQU5USUVTIE9GDQorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUFBMWSBUTyBUSElTIFNPRlRXQVJFLg0KKyAqIEFSTSBTSEFMTCBOT1QsIElOIEFOWSBDSVJDVU1TVEFOQ0VTLCBCRSBMSUFCTEUgRk9SIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SDQorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTLCBGT1IgQU5ZIFJFQVNPTiBXSEFUU09FVkVSLg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQorLyogZGVmaW5lIGNvbXBpbGVyIHNwZWNpZmljIHN5bWJvbHMgKi8NCisjaWYgZGVmaW5lZCAoIF9fQ0NfQVJNICAgKQ0KKyAgI2RlZmluZSBfX0FTTSAgICAgICAgICAgIF9fYXNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGFzbSBrZXl3b3JkIGZvciBBUk0gQ29tcGlsZXIgICAgICAgICAgKi8NCisgICNkZWZpbmUgX19JTkxJTkUgICAgICAgICBfX2lubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBpbmxpbmUga2V5d29yZCBmb3IgQVJNIENvbXBpbGVyICAgICAgICovDQorDQorI2VsaWYgZGVmaW5lZCAoIF9fSUNDQVJNX18gKQ0KKyAgI2RlZmluZSBfX0FTTSAgICAgICAgICAgX19hc20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGFzbSBrZXl3b3JkIGZvciBJQVIgQ29tcGlsZXIgICAgICAgICAgKi8NCisgICNkZWZpbmUgX19JTkxJTkUgICAgICAgIGlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBpbmxpbmUga2V5d29yZCBmb3IgSUFSIENvbXBpbGVyLiBPbmx5IGF2YWlhYmxlIGluIEhpZ2ggb3B0aW1pemF0aW9uIG1vZGUhICovDQorDQorI2VsaWYgZGVmaW5lZCAgICggIF9fR05VQ19fICApDQorICAjZGVmaW5lIF9fQVNNICAgICAgICAgICAgX19hc20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgYXNtIGtleXdvcmQgZm9yIEdOVSBDb21waWxlciAgICAgICAgICAqLw0KKyAgI2RlZmluZSBfX0lOTElORSAgICAgICAgIGlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGlubGluZSBrZXl3b3JkIGZvciBHTlUgQ29tcGlsZXIgICAgICAgKi8NCisNCisjZWxpZiBkZWZpbmVkICAgKCAgX19UQVNLSU5HX18gICkNCisgICNkZWZpbmUgX19BU00gICAgICAgICAgICBfX2FzbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBhc20ga2V5d29yZCBmb3IgVEFTS0lORyBDb21waWxlciAgICAgICovDQorICAjZGVmaW5lIF9fSU5MSU5FICAgICAgICAgaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgaW5saW5lIGtleXdvcmQgZm9yIFRBU0tJTkcgQ29tcGlsZXIgICAqLw0KKw0KKyNlbmRpZg0KKw0KKw0KKy8qICMjIyMjIyMjIyMjIyMjIyMjIyMgIENvbXBpbGVyIHNwZWNpZmljIEludHJpbnNpY3MgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLw0KKw0KKyNpZiBkZWZpbmVkICggX19DQ19BUk0gICApIC8qLS0tLS0tLS0tLS0tLS0tLS0tUmVhbFZpZXcgQ29tcGlsZXIgLS0tLS0tLS0tLS0tLS0tLS0qLw0KKy8qIEFSTSBhcm1jYyBzcGVjaWZpYyBmdW5jdGlvbnMgKi8NCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcmV0dXJuIFByb2Nlc3NTdGFja1BvaW50ZXINCisgKg0KKyAqIFJldHVybiB0aGUgYWN0dWFsIHByb2Nlc3Mgc3RhY2sgcG9pbnRlcg0KKyAqLw0KK19fQVNNIHVpbnQzMl90IF9fZ2V0X1BTUCh2b2lkKQ0KK3sNCisgIG1ycyByMCwgcHNwDQorICBieCBscg0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcGFyYW0gIHRvcE9mUHJvY1N0YWNrICBQcm9jZXNzIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEFzc2lnbiB0aGUgdmFsdWUgUHJvY2Vzc1N0YWNrUG9pbnRlciB0byB0aGUgTVNQIA0KKyAqIChwcm9jZXNzIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXINCisgKi8NCitfX0FTTSB2b2lkIF9fc2V0X1BTUCh1aW50MzJfdCB0b3BPZlByb2NTdGFjaykNCit7DQorICBtc3IgcHNwLCByMA0KKyAgYnggbHINCit9DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHJldHVybiBNYWluIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgTVNQIChtYWluIHN0YWNrIHBvaW50ZXIpDQorICogQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK19fQVNNIHVpbnQzMl90IF9fZ2V0X01TUCh2b2lkKQ0KK3sNCisgIG1ycyByMCwgbXNwDQorICBieCBscg0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgTWFpbiBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcGFyYW0gIHRvcE9mTWFpblN0YWNrICBNYWluIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEFzc2lnbiB0aGUgdmFsdWUgbWFpblN0YWNrUG9pbnRlciB0byB0aGUgTVNQIA0KKyAqIChtYWluIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXINCisgKi8NCitfX0FTTSB2b2lkIF9fc2V0X01TUCh1aW50MzJfdCBtYWluU3RhY2tQb2ludGVyKQ0KK3sNCisgIG1zciBtc3AsIHIwDQorICBieCBscg0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UNCisgKiBAcmV0dXJuICAgICAgICAgcmV2ZXJzZWQgdmFsdWUNCisgKg0KKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQ0KKyAqLw0KK19fQVNNIHVpbnQzMl90IF9fUkVWMTYodWludDE2X3QgdmFsdWUpDQorew0KKyAgcmV2MTYgcjAsIHIwDQorICBieCBscg0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBzaWduZWQgc2hvcnQgdmFsdWUgd2l0aCBzaWduIGV4dGVuc2lvbiB0byBpbnRlZ2VyDQorICoNCisgKiBAcGFyYW0gICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQ0KKyAqIEByZXR1cm4gICAgICAgICByZXZlcnNlZCB2YWx1ZQ0KKyAqDQorICogUmV2ZXJzZSBieXRlIG9yZGVyIGluIHNpZ25lZCBzaG9ydCB2YWx1ZSB3aXRoIHNpZ24gZXh0ZW5zaW9uIHRvIGludGVnZXINCisgKi8NCitfX0FTTSBpbnQzMl90IF9fUkVWU0goaW50MTZfdCB2YWx1ZSkNCit7DQorICByZXZzaCByMCwgcjANCisgIGJ4IGxyDQorfQ0KKw0KKw0KKyNpZiAoX19BUk1DQ19WRVJTSU9OIDwgNDAwMDAwKQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmVtb3ZlIHRoZSBleGNsdXNpdmUgbG9jayBjcmVhdGVkIGJ5IGxkcmV4DQorICoNCisgKiBSZW1vdmVzIHRoZSBleGNsdXNpdmUgbG9jayB3aGljaCBpcyBjcmVhdGVkIGJ5IGxkcmV4Lg0KKyAqLw0KK19fQVNNIHZvaWQgX19DTFJFWCh2b2lkKQ0KK3sNCisgIGNscmV4DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBCYXNlIFByaW9yaXR5IHZhbHVlDQorICoNCisgKiBAcmV0dXJuIEJhc2VQcmlvcml0eQ0KKyAqDQorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBiYXNlIHByaW9yaXR5IHJlZ2lzdGVyDQorICovDQorX19BU00gdWludDMyX3QgIF9fZ2V0X0JBU0VQUkkodm9pZCkNCit7DQorICBtcnMgcjAsIGJhc2VwcmkNCisgIGJ4IGxyDQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBCYXNlIFByaW9yaXR5IHZhbHVlDQorICoNCisgKiBAcGFyYW0gIGJhc2VQcmkgIEJhc2VQcmlvcml0eQ0KKyAqDQorICogU2V0IHRoZSBiYXNlIHByaW9yaXR5IHJlZ2lzdGVyDQorICovDQorX19BU00gdm9pZCBfX3NldF9CQVNFUFJJKHVpbnQzMl90IGJhc2VQcmkpDQorew0KKyAgbXNyIGJhc2VwcmksIHIwDQorICBieCBscg0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBQcmlNYXNrDQorICoNCisgKiBSZXR1cm4gc3RhdGUgb2YgdGhlIHByaW9yaXR5IG1hc2sgYml0IGZyb20gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXINCisgKi8NCitfX0FTTSB1aW50MzJfdCBfX2dldF9QUklNQVNLKHZvaWQpDQorew0KKyAgbXJzIHIwLCBwcmltYXNrDQorICBieCBscg0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICBwcmlNYXNrICBQcmlNYXNrDQorICoNCisgKiBTZXQgdGhlIHByaW9yaXR5IG1hc2sgYml0IGluIHRoZSBwcmlvcml0eSBtYXNrIHJlZ2lzdGVyDQorICovDQorX19BU00gdm9pZCBfX3NldF9QUklNQVNLKHVpbnQzMl90IHByaU1hc2spDQorew0KKyAgbXNyIHByaW1hc2ssIHIwDQorICBieCBscg0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgRmF1bHQgTWFzayB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBGYXVsdE1hc2sNCisgKg0KKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgZmF1bHQgbWFzayByZWdpc3Rlcg0KKyAqLw0KK19fQVNNIHVpbnQzMl90ICBfX2dldF9GQVVMVE1BU0sodm9pZCkNCit7DQorICBtcnMgcjAsIGZhdWx0bWFzaw0KKyAgYnggbHINCit9DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIEZhdWx0IE1hc2sgdmFsdWUNCisgKg0KKyAqIEBwYXJhbSAgZmF1bHRNYXNrICBmYXVsdE1hc2sgdmFsdWUNCisgKg0KKyAqIFNldCB0aGUgZmF1bHQgbWFzayByZWdpc3Rlcg0KKyAqLw0KK19fQVNNIHZvaWQgX19zZXRfRkFVTFRNQVNLKHVpbnQzMl90IGZhdWx0TWFzaykNCit7DQorICBtc3IgZmF1bHRtYXNrLCByMA0KKyAgYnggbHINCit9DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUNCisgKiANCisgKiBAcmV0dXJuIENvbnRyb2wgdmFsdWUNCisgKg0KKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgY29udHJvbCByZWdpc3Rlcg0KKyAqLw0KK19fQVNNIHVpbnQzMl90IF9fZ2V0X0NPTlRST0wodm9pZCkNCit7DQorICBtcnMgcjAsIGNvbnRyb2wNCisgIGJ4IGxyDQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIGNvbnRyb2wgIENvbnRyb2wgdmFsdWUNCisgKg0KKyAqIFNldCB0aGUgY29udHJvbCByZWdpc3Rlcg0KKyAqLw0KK19fQVNNIHZvaWQgX19zZXRfQ09OVFJPTCh1aW50MzJfdCBjb250cm9sKQ0KK3sNCisgIG1zciBjb250cm9sLCByMA0KKyAgYnggbHINCit9DQorDQorI2VuZGlmIC8qIF9fQVJNQ0NfVkVSU0lPTiAgKi8gDQorDQorDQorDQorI2VsaWYgKGRlZmluZWQgKF9fSUNDQVJNX18pKSAvKi0tLS0tLS0tLS0tLS0tLS0tLSBJQ0MgQ29tcGlsZXIgLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLyogSUFSIGljY2FybSBzcGVjaWZpYyBmdW5jdGlvbnMgKi8NCisjcHJhZ21hIGRpYWdfc3VwcHJlc3M9UGU5NDANCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcmV0dXJuIFByb2Nlc3NTdGFja1BvaW50ZXINCisgKg0KKyAqIFJldHVybiB0aGUgYWN0dWFsIHByb2Nlc3Mgc3RhY2sgcG9pbnRlcg0KKyAqLw0KK3VpbnQzMl90IF9fZ2V0X1BTUCh2b2lkKQ0KK3sNCisgIF9fQVNNKCJtcnMgcjAsIHBzcCIpOw0KKyAgX19BU00oImJ4IGxyIik7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEBwYXJhbSAgdG9wT2ZQcm9jU3RhY2sgIFByb2Nlc3MgU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQXNzaWduIHRoZSB2YWx1ZSBQcm9jZXNzU3RhY2tQb2ludGVyIHRvIHRoZSBNU1AgDQorICogKHByb2Nlc3Mgc3RhY2sgcG9pbnRlcikgQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK3ZvaWQgX19zZXRfUFNQKHVpbnQzMl90IHRvcE9mUHJvY1N0YWNrKQ0KK3sNCisgIF9fQVNNKCJtc3IgcHNwLCByMCIpOw0KKyAgX19BU00oImJ4IGxyIik7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBNYWluIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEByZXR1cm4gTWFpbiBTdGFjayBQb2ludGVyDQorICoNCisgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIE1TUCAobWFpbiBzdGFjayBwb2ludGVyKQ0KKyAqIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXINCisgKi8NCit1aW50MzJfdCBfX2dldF9NU1Aodm9pZCkNCit7DQorICBfX0FTTSgibXJzIHIwLCBtc3AiKTsNCisgIF9fQVNNKCJieCBsciIpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgTWFpbiBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcGFyYW0gIHRvcE9mTWFpblN0YWNrICBNYWluIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEFzc2lnbiB0aGUgdmFsdWUgbWFpblN0YWNrUG9pbnRlciB0byB0aGUgTVNQIA0KKyAqIChtYWluIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXINCisgKi8NCit2b2lkIF9fc2V0X01TUCh1aW50MzJfdCB0b3BPZk1haW5TdGFjaykNCit7DQorICBfX0FTTSgibXNyIG1zcCwgcjAiKTsNCisgIF9fQVNNKCJieCBsciIpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQ0KKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlDQorICoNCisgKiBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gdW5zaWduZWQgc2hvcnQgdmFsdWUNCisgKi8NCit1aW50MzJfdCBfX1JFVjE2KHVpbnQxNl90IHZhbHVlKQ0KK3sNCisgIF9fQVNNKCJyZXYxNiByMCwgcjAiKTsNCisgIF9fQVNNKCJieCBsciIpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYml0IG9yZGVyIG9mIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlDQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUNCisgKg0KKyAqIFJldmVyc2UgYml0IG9yZGVyIG9mIHZhbHVlDQorICovDQordWludDMyX3QgX19SQklUKHVpbnQzMl90IHZhbHVlKQ0KK3sNCisgIF9fQVNNKCJyYml0IHIwLCByMCIpOw0KKyAgX19BU00oImJ4IGxyIik7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgTERSIEV4Y2x1c2l2ZSAoOCBiaXQpDQorICoNCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXINCisgKiBAcmV0dXJuICAgICAgICB2YWx1ZSBvZiAoKmFkZHJlc3MpDQorICoNCisgKiBFeGNsdXNpdmUgTERSIGNvbW1hbmQgZm9yIDggYml0IHZhbHVlcykNCisgKi8NCit1aW50OF90IF9fTERSRVhCKHVpbnQ4X3QgKmFkZHIpDQorew0KKyAgX19BU00oImxkcmV4YiByMCwgW3IwXSIpOw0KKyAgX19BU00oImJ4IGxyIik7IA0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDE2IGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHZhbHVlIG9mICgqYWRkcmVzcykNCisgKg0KKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgMTYgYml0IHZhbHVlcw0KKyAqLw0KK3VpbnQxNl90IF9fTERSRVhIKHVpbnQxNl90ICphZGRyKQ0KK3sNCisgIF9fQVNNKCJsZHJleGggcjAsIFtyMF0iKTsNCisgIF9fQVNNKCJieCBsciIpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDMyIGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHZhbHVlIG9mICgqYWRkcmVzcykNCisgKg0KKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgMzIgYml0IHZhbHVlcw0KKyAqLw0KK3VpbnQzMl90IF9fTERSRVhXKHVpbnQzMl90ICphZGRyKQ0KK3sNCisgIF9fQVNNKCJsZHJleCByMCwgW3IwXSIpOw0KKyAgX19BU00oImJ4IGxyIik7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoOCBiaXQpDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byBzdG9yZQ0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHN1Y2Nlc3NmdWwgLyBmYWlsZWQNCisgKg0KKyAqIEV4Y2x1c2l2ZSBTVFIgY29tbWFuZCBmb3IgOCBiaXQgdmFsdWVzDQorICovDQordWludDMyX3QgX19TVFJFWEIodWludDhfdCB2YWx1ZSwgdWludDhfdCAqYWRkcikNCit7DQorICBfX0FTTSgic3RyZXhiIHIwLCByMCwgW3IxXSIpOw0KKyAgX19BU00oImJ4IGxyIik7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoMTYgYml0KQ0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gc3RvcmUNCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXINCisgKiBAcmV0dXJuICAgICAgICBzdWNjZXNzZnVsIC8gZmFpbGVkDQorICoNCisgKiBFeGNsdXNpdmUgU1RSIGNvbW1hbmQgZm9yIDE2IGJpdCB2YWx1ZXMNCisgKi8NCit1aW50MzJfdCBfX1NUUkVYSCh1aW50MTZfdCB2YWx1ZSwgdWludDE2X3QgKmFkZHIpDQorew0KKyAgX19BU00oInN0cmV4aCByMCwgcjAsIFtyMV0iKTsNCisgIF9fQVNNKCJieCBsciIpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFNUUiBFeGNsdXNpdmUgKDMyIGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHN0b3JlDQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyDQorICogQHJldHVybiAgICAgICAgc3VjY2Vzc2Z1bCAvIGZhaWxlZA0KKyAqDQorICogRXhjbHVzaXZlIFNUUiBjb21tYW5kIGZvciAzMiBiaXQgdmFsdWVzDQorICovDQordWludDMyX3QgX19TVFJFWFcodWludDMyX3QgdmFsdWUsIHVpbnQzMl90ICphZGRyKQ0KK3sNCisgIF9fQVNNKCJzdHJleCByMCwgcjAsIFtyMV0iKTsNCisgIF9fQVNNKCJieCBsciIpOw0KK30NCisNCisjcHJhZ21hIGRpYWdfZGVmYXVsdD1QZTk0MA0KKw0KKw0KKyNlbGlmIChkZWZpbmVkIChfX0dOVUNfXykpIC8qLS0tLS0tLS0tLS0tLS0tLS0tIEdOVSBDb21waWxlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKy8qIEdOVSBnY2Mgc3BlY2lmaWMgZnVuY3Rpb25zICovDQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIFByb2Nlc3MgU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHJldHVybiBQcm9jZXNzU3RhY2tQb2ludGVyDQorICoNCisgKiBSZXR1cm4gdGhlIGFjdHVhbCBwcm9jZXNzIHN0YWNrIHBvaW50ZXINCisgKi8NCit1aW50MzJfdCBfX2dldF9QU1Aodm9pZCkgX19hdHRyaWJ1dGVfXyggKCBuYWtlZCApICk7DQordWludDMyX3QgX19nZXRfUFNQKHZvaWQpDQorew0KKyAgdWludDMyX3QgcmVzdWx0PTA7DQorDQorICBfX0FTTSB2b2xhdGlsZSAoIk1SUyAlMCwgcHNwXG5cdCIgDQorICAgICAgICAgICAgICAgICAgIk1PViByMCwgJTAgXG5cdCINCisgICAgICAgICAgICAgICAgICAiQlggIGxyICAgICBcblx0IiAgOiAiPXIiIChyZXN1bHQpICk7DQorICByZXR1cm4ocmVzdWx0KTsNCit9DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIFByb2Nlc3MgU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHBhcmFtICB0b3BPZlByb2NTdGFjayAgUHJvY2VzcyBTdGFjayBQb2ludGVyDQorICoNCisgKiBBc3NpZ24gdGhlIHZhbHVlIFByb2Nlc3NTdGFja1BvaW50ZXIgdG8gdGhlIE1TUCANCisgKiAocHJvY2VzcyBzdGFjayBwb2ludGVyKSBDb3J0ZXggcHJvY2Vzc29yIHJlZ2lzdGVyDQorICovDQordm9pZCBfX3NldF9QU1AodWludDMyX3QgdG9wT2ZQcm9jU3RhY2spIF9fYXR0cmlidXRlX18oICggbmFrZWQgKSApOw0KK3ZvaWQgX19zZXRfUFNQKHVpbnQzMl90IHRvcE9mUHJvY1N0YWNrKQ0KK3sNCisgIF9fQVNNIHZvbGF0aWxlICgiTVNSIHBzcCwgJTBcblx0Ig0KKyAgICAgICAgICAgICAgICAgICJCWCAgbHIgICAgIFxuXHQiIDogOiAiciIgKHRvcE9mUHJvY1N0YWNrKSApOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgTWFpbiBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcmV0dXJuIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBNU1AgKG1haW4gc3RhY2sgcG9pbnRlcikNCisgKiBDb3J0ZXggcHJvY2Vzc29yIHJlZ2lzdGVyDQorICovDQordWludDMyX3QgX19nZXRfTVNQKHZvaWQpIF9fYXR0cmlidXRlX18oICggbmFrZWQgKSApOw0KK3VpbnQzMl90IF9fZ2V0X01TUCh2b2lkKQ0KK3sNCisgIHVpbnQzMl90IHJlc3VsdD0wOw0KKw0KKyAgX19BU00gdm9sYXRpbGUgKCJNUlMgJTAsIG1zcFxuXHQiIA0KKyAgICAgICAgICAgICAgICAgICJNT1YgcjAsICUwIFxuXHQiDQorICAgICAgICAgICAgICAgICAgIkJYICBsciAgICAgXG5cdCIgIDogIj1yIiAocmVzdWx0KSApOw0KKyAgcmV0dXJuKHJlc3VsdCk7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBNYWluIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEBwYXJhbSAgdG9wT2ZNYWluU3RhY2sgIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQXNzaWduIHRoZSB2YWx1ZSBtYWluU3RhY2tQb2ludGVyIHRvIHRoZSBNU1AgDQorICogKG1haW4gc3RhY2sgcG9pbnRlcikgQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK3ZvaWQgX19zZXRfTVNQKHVpbnQzMl90IHRvcE9mTWFpblN0YWNrKSBfX2F0dHJpYnV0ZV9fKCAoIG5ha2VkICkgKTsNCit2b2lkIF9fc2V0X01TUCh1aW50MzJfdCB0b3BPZk1haW5TdGFjaykNCit7DQorICBfX0FTTSB2b2xhdGlsZSAoIk1TUiBtc3AsICUwXG5cdCINCisgICAgICAgICAgICAgICAgICAiQlggIGxyICAgICBcblx0IiA6IDogInIiICh0b3BPZk1haW5TdGFjaykgKTsNCit9DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIEJhc2UgUHJpb3JpdHkgdmFsdWUNCisgKg0KKyAqIEByZXR1cm4gQmFzZVByaW9yaXR5DQorICoNCisgKiBSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGJhc2UgcHJpb3JpdHkgcmVnaXN0ZXINCisgKi8NCit1aW50MzJfdCBfX2dldF9CQVNFUFJJKHZvaWQpDQorew0KKyAgdWludDMyX3QgcmVzdWx0PTA7DQorICANCisgIF9fQVNNIHZvbGF0aWxlICgiTVJTICUwLCBiYXNlcHJpX21heCIgOiAiPXIiIChyZXN1bHQpICk7DQorICByZXR1cm4ocmVzdWx0KTsNCit9DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIEJhc2UgUHJpb3JpdHkgdmFsdWUNCisgKg0KKyAqIEBwYXJhbSAgYmFzZVByaSAgQmFzZVByaW9yaXR5DQorICoNCisgKiBTZXQgdGhlIGJhc2UgcHJpb3JpdHkgcmVnaXN0ZXINCisgKi8NCit2b2lkIF9fc2V0X0JBU0VQUkkodWludDMyX3QgdmFsdWUpDQorew0KKyAgX19BU00gdm9sYXRpbGUgKCJNU1IgYmFzZXByaSwgJTAiIDogOiAiciIgKHZhbHVlKSApOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBQcmlNYXNrDQorICoNCisgKiBSZXR1cm4gc3RhdGUgb2YgdGhlIHByaW9yaXR5IG1hc2sgYml0IGZyb20gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXINCisgKi8NCit1aW50MzJfdCBfX2dldF9QUklNQVNLKHZvaWQpDQorew0KKyAgdWludDMyX3QgcmVzdWx0PTA7DQorDQorICBfX0FTTSB2b2xhdGlsZSAoIk1SUyAlMCwgcHJpbWFzayIgOiAiPXIiIChyZXN1bHQpICk7DQorICByZXR1cm4ocmVzdWx0KTsNCit9DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIFByaW9yaXR5IE1hc2sgdmFsdWUNCisgKg0KKyAqIEBwYXJhbSAgcHJpTWFzayAgUHJpTWFzaw0KKyAqDQorICogU2V0IHRoZSBwcmlvcml0eSBtYXNrIGJpdCBpbiB0aGUgcHJpb3JpdHkgbWFzayByZWdpc3Rlcg0KKyAqLw0KK3ZvaWQgX19zZXRfUFJJTUFTSyh1aW50MzJfdCBwcmlNYXNrKQ0KK3sNCisgIF9fQVNNIHZvbGF0aWxlICgiTVNSIHByaW1hc2ssICUwIiA6IDogInIiIChwcmlNYXNrKSApOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgRmF1bHQgTWFzayB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBGYXVsdE1hc2sNCisgKg0KKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgZmF1bHQgbWFzayByZWdpc3Rlcg0KKyAqLw0KK3VpbnQzMl90IF9fZ2V0X0ZBVUxUTUFTSyh2b2lkKQ0KK3sNCisgIHVpbnQzMl90IHJlc3VsdD0wOw0KKyAgDQorICBfX0FTTSB2b2xhdGlsZSAoIk1SUyAlMCwgZmF1bHRtYXNrIiA6ICI9ciIgKHJlc3VsdCkgKTsNCisgIHJldHVybihyZXN1bHQpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgRmF1bHQgTWFzayB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICBmYXVsdE1hc2sgIGZhdWx0TWFzayB2YWx1ZQ0KKyAqDQorICogU2V0IHRoZSBmYXVsdCBtYXNrIHJlZ2lzdGVyDQorICovDQordm9pZCBfX3NldF9GQVVMVE1BU0sodWludDMyX3QgZmF1bHRNYXNrKQ0KK3sNCisgIF9fQVNNIHZvbGF0aWxlICgiTVNSIGZhdWx0bWFzaywgJTAiIDogOiAiciIgKGZhdWx0TWFzaykgKTsNCit9DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUNCisqIA0KKyogIEByZXR1cm4gQ29udHJvbCB2YWx1ZQ0KKyAqDQorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyDQorICovDQordWludDMyX3QgX19nZXRfQ09OVFJPTCh2b2lkKQ0KK3sNCisgIHVpbnQzMl90IHJlc3VsdD0wOw0KKw0KKyAgX19BU00gdm9sYXRpbGUgKCJNUlMgJTAsIGNvbnRyb2wiIDogIj1yIiAocmVzdWx0KSApOw0KKyAgcmV0dXJuKHJlc3VsdCk7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIGNvbnRyb2wgIENvbnRyb2wgdmFsdWUNCisgKg0KKyAqIFNldCB0aGUgY29udHJvbCByZWdpc3Rlcg0KKyAqLw0KK3ZvaWQgX19zZXRfQ09OVFJPTCh1aW50MzJfdCBjb250cm9sKQ0KK3sNCisgIF9fQVNNIHZvbGF0aWxlICgiTVNSIGNvbnRyb2wsICUwIiA6IDogInIiIChjb250cm9sKSApOw0KK30NCisNCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBpbnRlZ2VyIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlDQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUNCisgKg0KKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBpbnRlZ2VyIHZhbHVlDQorICovDQordWludDMyX3QgX19SRVYodWludDMyX3QgdmFsdWUpDQorew0KKyAgdWludDMyX3QgcmVzdWx0PTA7DQorICANCisgIF9fQVNNIHZvbGF0aWxlICgicmV2ICUwLCAlMSIgOiAiPXIiIChyZXN1bHQpIDogInIiICh2YWx1ZSkgKTsNCisgIHJldHVybihyZXN1bHQpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQ0KKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlDQorICoNCisgKiBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gdW5zaWduZWQgc2hvcnQgdmFsdWUNCisgKi8NCit1aW50MzJfdCBfX1JFVjE2KHVpbnQxNl90IHZhbHVlKQ0KK3sNCisgIHVpbnQzMl90IHJlc3VsdD0wOw0KKyAgDQorICBfX0FTTSB2b2xhdGlsZSAoInJldjE2ICUwLCAlMSIgOiAiPXIiIChyZXN1bHQpIDogInIiICh2YWx1ZSkgKTsNCisgIHJldHVybihyZXN1bHQpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBzaWduZWQgc2hvcnQgdmFsdWUgd2l0aCBzaWduIGV4dGVuc2lvbiB0byBpbnRlZ2VyDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlDQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUNCisgKg0KKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBzaWduZWQgc2hvcnQgdmFsdWUgd2l0aCBzaWduIGV4dGVuc2lvbiB0byBpbnRlZ2VyDQorICovDQoraW50MzJfdCBfX1JFVlNIKGludDE2X3QgdmFsdWUpDQorew0KKyAgdWludDMyX3QgcmVzdWx0PTA7DQorICANCisgIF9fQVNNIHZvbGF0aWxlICgicmV2c2ggJTAsICUxIiA6ICI9ciIgKHJlc3VsdCkgOiAiciIgKHZhbHVlKSApOw0KKyAgcmV0dXJuKHJlc3VsdCk7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV2ZXJzZSBiaXQgb3JkZXIgb2YgdmFsdWUNCisgKg0KKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UNCisgKiBAcmV0dXJuICAgICAgICByZXZlcnNlZCB2YWx1ZQ0KKyAqDQorICogUmV2ZXJzZSBiaXQgb3JkZXIgb2YgdmFsdWUNCisgKi8NCit1aW50MzJfdCBfX1JCSVQodWludDMyX3QgdmFsdWUpDQorew0KKyAgdWludDMyX3QgcmVzdWx0PTA7DQorICANCisgICBfX0FTTSB2b2xhdGlsZSAoInJiaXQgJTAsICUxIiA6ICI9ciIgKHJlc3VsdCkgOiAiciIgKHZhbHVlKSApOw0KKyAgIHJldHVybihyZXN1bHQpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDggYml0KQ0KKyAqDQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyDQorICogQHJldHVybiAgICAgICAgdmFsdWUgb2YgKCphZGRyZXNzKQ0KKyAqDQorICogRXhjbHVzaXZlIExEUiBjb21tYW5kIGZvciA4IGJpdCB2YWx1ZQ0KKyAqLw0KK3VpbnQ4X3QgX19MRFJFWEIodWludDhfdCAqYWRkcikNCit7DQorICAgIHVpbnQ4X3QgcmVzdWx0PTA7DQorICANCisgICBfX0FTTSB2b2xhdGlsZSAoImxkcmV4YiAlMCwgWyUxXSIgOiAiPXIiIChyZXN1bHQpIDogInIiIChhZGRyKSApOw0KKyAgIHJldHVybihyZXN1bHQpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDE2IGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHZhbHVlIG9mICgqYWRkcmVzcykNCisgKg0KKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgMTYgYml0IHZhbHVlcw0KKyAqLw0KK3VpbnQxNl90IF9fTERSRVhIKHVpbnQxNl90ICphZGRyKQ0KK3sNCisgICAgdWludDE2X3QgcmVzdWx0PTA7DQorICANCisgICBfX0FTTSB2b2xhdGlsZSAoImxkcmV4aCAlMCwgWyUxXSIgOiAiPXIiIChyZXN1bHQpIDogInIiIChhZGRyKSApOw0KKyAgIHJldHVybihyZXN1bHQpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDMyIGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHZhbHVlIG9mICgqYWRkcmVzcykNCisgKg0KKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgMzIgYml0IHZhbHVlcw0KKyAqLw0KK3VpbnQzMl90IF9fTERSRVhXKHVpbnQzMl90ICphZGRyKQ0KK3sNCisgICAgdWludDMyX3QgcmVzdWx0PTA7DQorICANCisgICBfX0FTTSB2b2xhdGlsZSAoImxkcmV4ICUwLCBbJTFdIiA6ICI9ciIgKHJlc3VsdCkgOiAiciIgKGFkZHIpICk7DQorICAgcmV0dXJuKHJlc3VsdCk7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoOCBiaXQpDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byBzdG9yZQ0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHN1Y2Nlc3NmdWwgLyBmYWlsZWQNCisgKg0KKyAqIEV4Y2x1c2l2ZSBTVFIgY29tbWFuZCBmb3IgOCBiaXQgdmFsdWVzDQorICovDQordWludDMyX3QgX19TVFJFWEIodWludDhfdCB2YWx1ZSwgdWludDhfdCAqYWRkcikNCit7DQorICAgdWludDMyX3QgcmVzdWx0PTA7DQorICANCisgICBfX0FTTSB2b2xhdGlsZSAoInN0cmV4YiAlMCwgJTIsIFslMV0iIDogIj1yIiAocmVzdWx0KSA6ICJyIiAoYWRkciksICJyIiAodmFsdWUpICk7DQorICAgcmV0dXJuKHJlc3VsdCk7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoMTYgYml0KQ0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gc3RvcmUNCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXINCisgKiBAcmV0dXJuICAgICAgICBzdWNjZXNzZnVsIC8gZmFpbGVkDQorICoNCisgKiBFeGNsdXNpdmUgU1RSIGNvbW1hbmQgZm9yIDE2IGJpdCB2YWx1ZXMNCisgKi8NCit1aW50MzJfdCBfX1NUUkVYSCh1aW50MTZfdCB2YWx1ZSwgdWludDE2X3QgKmFkZHIpDQorew0KKyAgIHVpbnQzMl90IHJlc3VsdD0wOw0KKyAgDQorICAgX19BU00gdm9sYXRpbGUgKCJzdHJleGggJTAsICUyLCBbJTFdIiA6ICI9ciIgKHJlc3VsdCkgOiAiciIgKGFkZHIpLCAiciIgKHZhbHVlKSApOw0KKyAgIHJldHVybihyZXN1bHQpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFNUUiBFeGNsdXNpdmUgKDMyIGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHN0b3JlDQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyDQorICogQHJldHVybiAgICAgICAgc3VjY2Vzc2Z1bCAvIGZhaWxlZA0KKyAqDQorICogRXhjbHVzaXZlIFNUUiBjb21tYW5kIGZvciAzMiBiaXQgdmFsdWVzDQorICovDQordWludDMyX3QgX19TVFJFWFcodWludDMyX3QgdmFsdWUsIHVpbnQzMl90ICphZGRyKQ0KK3sNCisgICB1aW50MzJfdCByZXN1bHQ9MDsNCisgIA0KKyAgIF9fQVNNIHZvbGF0aWxlICgic3RyZXggJTAsICUyLCBbJTFdIiA6ICI9ciIgKHJlc3VsdCkgOiAiciIgKGFkZHIpLCAiciIgKHZhbHVlKSApOw0KKyAgIHJldHVybihyZXN1bHQpOw0KK30NCisNCisNCisjZWxpZiAoZGVmaW5lZCAoX19UQVNLSU5HX18pKSAvKi0tLS0tLS0tLS0tLS0tLS0tLSBUQVNLSU5HIENvbXBpbGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLyogVEFTS0lORyBjYXJtIHNwZWNpZmljIGZ1bmN0aW9ucyAqLw0KKw0KKy8qDQorICogVGhlIENNU0lTIGZ1bmN0aW9ucyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgYXMgaW50cmluc2ljcyBpbiB0aGUgY29tcGlsZXIuDQorICogUGxlYXNlIHVzZSAiY2FybSAtP2kiIHRvIGdldCBhbiB1cCB0byBkYXRlIGxpc3Qgb2YgYWxsIGluc3RyaW5zaWNzLA0KKyAqIEluY2x1ZGluZyB0aGUgQ01TSVMgb25lcy4NCisgKi8NCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9DTTMvQ29yZVN1cHBvcnQvY29yZV9jbTMuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNMy9Db3JlU3VwcG9ydC9jb3JlX2NtMy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNDYwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9DTTMvQ29yZVN1cHBvcnQvY29yZV9jbTMuaApAQCAtMCwwICsxLDE4MTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCisgKiBAZmlsZSAgICAgY29yZV9jbTMuaA0KKyAqIEBicmllZiAgICBDTVNJUyBDb3J0ZXgtTTMgQ29yZSBQZXJpcGhlcmFsIEFjY2VzcyBMYXllciBIZWFkZXIgRmlsZQ0KKyAqIEB2ZXJzaW9uICBWMS4zMA0KKyAqIEBkYXRlICAgICAzMC4gT2N0b2JlciAyMDA5DQorICoNCisgKiBAbm90ZQ0KKyAqIENvcHlyaWdodCAoQykgMjAwOSBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIEBwYXINCisgKiBBUk0gTGltaXRlZCAoQVJNKSBpcyBzdXBwbHlpbmcgdGhpcyBzb2Z0d2FyZSBmb3IgdXNlIHdpdGggQ29ydGV4LU0NCisgKiBwcm9jZXNzb3IgYmFzZWQgbWljcm9jb250cm9sbGVycy4gIFRoaXMgZmlsZSBjYW4gYmUgZnJlZWx5IGRpc3RyaWJ1dGVkDQorICogd2l0aGluIGRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHN1cHBvcnRpbmcgc3VjaCBBUk0gYmFzZWQgcHJvY2Vzc29ycy4NCisgKg0KKyAqIEBwYXINCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIuICBOTyBXQVJSQU5USUVTLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQNCisgKiBPUiBTVEFUVVRPUlksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFQUExZIFRPIFRISVMgU09GVFdBUkUuDQorICogQVJNIFNIQUxMIE5PVCwgSU4gQU5ZIENJUkNVTVNUQU5DRVMsIEJFIExJQUJMRSBGT1IgU1BFQ0lBTCwgSU5DSURFTlRBTCwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMsIEZPUiBBTlkgUkVBU09OIFdIQVRTT0VWRVIuDQorICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX19DTTNfQ09SRV9IX18NCisjZGVmaW5lIF9fQ00zX0NPUkVfSF9fDQorDQorLyoqIEBhZGR0b2dyb3VwIENNU0lTX0NNM19jb3JlX0xpbnRDaW5maWd1cmF0aW9uIENNU0lTIENNMyBDb3JlIExpbnQgQ29uZmlndXJhdGlvbg0KKyAqDQorICogTGlzdCBvZiBMaW50IG1lc3NhZ2VzIHdoaWNoIHdpbGwgYmUgc3VwcHJlc3NlZCBhbmQgbm90IHNob3duOg0KKyAqICAgLSBFcnJvciAxMDogXG4NCisgKiAgICAgcmVnaXN0ZXIgdWludDMyX3QgX19yZWdCYXNlUHJpICAgICAgICAgX19hc20oImJhc2VwcmkiKTsgXG4NCisgKiAgICAgRXJyb3IgMTA6IEV4cGVjdGluZyAnOycNCisgKiAuDQorICogICAtIEVycm9yIDUzMDogXG4NCisgKiAgICAgcmV0dXJuKF9fcmVnQmFzZVByaSk7IFxuDQorICogICAgIFdhcm5pbmcgNTMwOiBTeW1ib2wgJ19fcmVnQmFzZVByaScgKGxpbmUgMjY0KSBub3QgaW5pdGlhbGl6ZWQNCisgKiAuDQorICogICAtIEVycm9yIDU1MDogXG4NCisgKiAgICAgX19yZWdCYXNlUHJpID0gKGJhc2VQcmkgJiAweDFmZik7IFxuDQorICogICAgIFdhcm5pbmcgNTUwOiBTeW1ib2wgJ19fcmVnQmFzZVByaScgKGxpbmUgMjcxKSBub3QgYWNjZXNzZWQNCisgKiAuDQorICogICAtIEVycm9yIDc1NDogXG4NCisgKiAgICAgdWludDMyX3QgUkVTRVJWRUQwWzI0XTsgXG4NCisgKiAgICAgSW5mbyA3NTQ6IGxvY2FsIHN0cnVjdHVyZSBtZW1iZXIgJzxzb21lLCBub3QgdXNlZCBpbiB0aGUgSEFMPicgKGxpbmUgMTA5LCBmaWxlIC4vY20zX2NvcmUuaCkgbm90IHJlZmVyZW5jZWQNCisgKiAuDQorICogICAtIEVycm9yIDc1MDogXG4NCisgKiAgICAgI2RlZmluZSBfX0NNM19DT1JFX0hfXyBcbg0KKyAqICAgICBJbmZvIDc1MDogbG9jYWwgbWFjcm8gJ19fQ00zX0NPUkVfSF9fJyAobGluZSA0MywgZmlsZS4vY20zX2NvcmUuaCkgbm90IHJlZmVyZW5jZWQNCisgKiAuDQorICogICAtIEVycm9yIDUyODogXG4NCisgKiAgICAgc3RhdGljIF9fSU5MSU5FIHZvaWQgTlZJQ19EaXNhYmxlSVJRKHVpbnQzMl90IElSUW4pIFxuDQorICogICAgIFdhcm5pbmcgNTI4OiBTeW1ib2wgJ05WSUNfRGlzYWJsZUlSUSh1bnNpZ25lZCBpbnQpJyAobGluZSA0MTksIGZpbGUgLi9jbTNfY29yZS5oKSBub3QgcmVmZXJlbmNlZA0KKyAqIC4NCisgKiAgIC0gRXJyb3IgNzUxOiBcbg0KKyAqICAgICB9IEludGVycnVwdFR5cGVfVHlwZTsgXG4NCisgKiAgICAgSW5mbyA3NTE6IGxvY2FsIHR5cGVkZWYgJ0ludGVycnVwdFR5cGVfVHlwZScgKGxpbmUgMTcwLCBmaWxlIC4vY20zX2NvcmUuaCkgbm90IHJlZmVyZW5jZWQNCisgKiAuDQorICogTm90ZTogIFRvIHJlLWVuYWJsZSBhIE1lc3NhZ2UsIGluc2VydCBhIHNwYWNlIGJlZm9yZSAnbGludCcgKg0KKyAqDQorICovDQorDQorLypsaW50IC1zYXZlICovDQorLypsaW50IC1lMTAgICovDQorLypsaW50IC1lNTMwICovDQorLypsaW50IC1lNTUwICovDQorLypsaW50IC1lNzU0ICovDQorLypsaW50IC1lNzUwICovDQorLypsaW50IC1lNTI4ICovDQorLypsaW50IC1lNzUxICovDQorDQorDQorLyoqIEBhZGR0b2dyb3VwIENNU0lTX0NNM19jb3JlX2RlZmluaXRpb25zIENNMyBDb3JlIERlZmluaXRpb25zDQorICBUaGlzIGZpbGUgZGVmaW5lcyBhbGwgc3RydWN0dXJlcyBhbmQgc3ltYm9scyBmb3IgQ01TSVMgY29yZToNCisgICAgLSBDTVNJUyB2ZXJzaW9uIG51bWJlcg0KKyAgICAtIENvcnRleC1NIGNvcmUgcmVnaXN0ZXJzIGFuZCBiaXRmaWVsZHMNCisgICAgLSBDb3J0ZXgtTSBjb3JlIHBlcmlwaGVyYWwgYmFzZSBhZGRyZXNzDQorICBAew0KKyAqLw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyBleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisjZGVmaW5lIF9fQ00zX0NNU0lTX1ZFUlNJT05fTUFJTiAgKDB4MDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgWzMxOjE2XSBDTVNJUyBIQUwgbWFpbiB2ZXJzaW9uICovDQorI2RlZmluZSBfX0NNM19DTVNJU19WRVJTSU9OX1NVQiAgICgweDMwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFsxNTowXSAgQ01TSVMgSEFMIHN1YiB2ZXJzaW9uICAqLw0KKyNkZWZpbmUgX19DTTNfQ01TSVNfVkVSU0lPTiAgICAgICAoKF9fQ00zX0NNU0lTX1ZFUlNJT05fTUFJTiA8PCAxNikgfCBfX0NNM19DTVNJU19WRVJTSU9OX1NVQikgLyohPCBDTVNJUyBIQUwgdmVyc2lvbiBudW1iZXIgICAgICAgKi8NCisNCisjZGVmaW5lIF9fQ09SVEVYX00gICAgICAgICAgICAgICAgKDB4MDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29ydGV4IGNvcmUgICAgICAgICAgICAgICAgICAgICovDQorDQorI2luY2x1ZGUgPHN0ZGludC5oPiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluY2x1ZGUgc3RhbmRhcmQgdHlwZXMgKi8NCisNCisjaWYgZGVmaW5lZCAoX19JQ0NBUk1fXykNCisgICNpbmNsdWRlIDxpbnRyaW5zaWNzLmg+ICAgICAgICAgICAgICAgICAgICAgLyogSUFSIEludHJpbnNpY3MgICAqLw0KKyNlbmRpZg0KKw0KKw0KKyNpZm5kZWYgX19OVklDX1BSSU9fQklUUw0KKyAgI2RlZmluZSBfX05WSUNfUFJJT19CSVRTICAgIDQgICAgICAgICAgICAgICAvKiE8IHN0YW5kYXJkIGRlZmluaXRpb24gZm9yIE5WSUMgUHJpb3JpdHkgQml0cyAqLw0KKyNlbmRpZg0KKw0KKw0KKw0KKw0KKy8qKg0KKyAqIElPIGRlZmluaXRpb25zDQorICoNCisgKiBkZWZpbmUgYWNjZXNzIHJlc3RyaWN0aW9ucyB0byBwZXJpcGhlcmFsIHJlZ2lzdGVycw0KKyAqLw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyAgI2RlZmluZSAgICAgX19JICAgICB2b2xhdGlsZSAgICAgICAgICAgICAgICAvKiE8IGRlZmluZXMgJ3JlYWQgb25seScgcGVybWlzc2lvbnMgICAgICAqLw0KKyNlbHNlDQorICAjZGVmaW5lICAgICBfX0kgICAgIHZvbGF0aWxlIGNvbnN0ICAgICAgICAgIC8qITwgZGVmaW5lcyAncmVhZCBvbmx5JyBwZXJtaXNzaW9ucyAgICAgICovDQorI2VuZGlmDQorI2RlZmluZSAgICAgX19PICAgICB2b2xhdGlsZSAgICAgICAgICAgICAgICAgIC8qITwgZGVmaW5lcyAnd3JpdGUgb25seScgcGVybWlzc2lvbnMgICAgICovDQorI2RlZmluZSAgICAgX19JTyAgICB2b2xhdGlsZSAgICAgICAgICAgICAgICAgIC8qITwgZGVmaW5lcyAncmVhZCAvIHdyaXRlJyBwZXJtaXNzaW9ucyAgICovDQorDQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgQWJzdHJhY3Rpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfY29yZV9yZWdpc3RlciBDTVNJUyBDTTMgQ29yZSBSZWdpc3Rlcg0KKyBAew0KKyovDQorDQorDQorLyoqIEBhZGR0b2dyb3VwIENNU0lTX0NNM19OVklDIENNU0lTIENNMyBOVklDDQorICBtZW1vcnkgbWFwcGVkIHN0cnVjdHVyZSBmb3IgTmVzdGVkIFZlY3RvcmVkIEludGVycnVwdCBDb250cm9sbGVyIChOVklDKQ0KKyAgQHsNCisgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgSVNFUls4XTsgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDAwICBJbnRlcnJ1cHQgU2V0IEVuYWJsZSBSZWdpc3RlciAgICAgICAgICAgKi8NCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQwWzI0XTsNCisgIF9fSU8gdWludDMyX3QgSUNFUls4XTsgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDgwICBJbnRlcnJ1cHQgQ2xlYXIgRW5hYmxlIFJlZ2lzdGVyICAgICAgICAgKi8NCisgICAgICAgdWludDMyX3QgUlNFUlZFRDFbMjRdOw0KKyAgX19JTyB1aW50MzJfdCBJU1BSWzhdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxMDAgIEludGVycnVwdCBTZXQgUGVuZGluZyBSZWdpc3RlciAgICAgICAgICAqLw0KKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDJbMjRdOw0KKyAgX19JTyB1aW50MzJfdCBJQ1BSWzhdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxODAgIEludGVycnVwdCBDbGVhciBQZW5kaW5nIFJlZ2lzdGVyICAgICAgICAqLw0KKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDNbMjRdOw0KKyAgX19JTyB1aW50MzJfdCBJQUJSWzhdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyMDAgIEludGVycnVwdCBBY3RpdmUgYml0IFJlZ2lzdGVyICAgICAgICAgICAqLw0KKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDRbNTZdOw0KKyAgX19JTyB1aW50OF90ICBJUFsyNDBdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgzMDAgIEludGVycnVwdCBQcmlvcml0eSBSZWdpc3RlciAoOEJpdCB3aWRlKSAqLw0KKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDVbNjQ0XTsNCisgIF9fTyAgdWludDMyX3QgU1RJUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4RTAwICBTb2Z0d2FyZSBUcmlnZ2VyIEludGVycnVwdCBSZWdpc3RlciAgICAgKi8NCit9ICBOVklDX1R5cGU7DQorLypAfSovIC8qIGVuZCBvZiBncm91cCBDTVNJU19DTTNfTlZJQyAqLw0KKw0KKw0KKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfU0NCIENNU0lTIENNMyBTQ0INCisgIG1lbW9yeSBtYXBwZWQgc3RydWN0dXJlIGZvciBTeXN0ZW0gQ29udHJvbCBCbG9jayAoU0NCKQ0KKyAgQHsNCisgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSSAgdWludDMyX3QgQ1BVSUQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDAgIENQVSBJRCBCYXNlIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBfX0lPIHVpbnQzMl90IElDU1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDA0ICBJbnRlcnJ1cHQgQ29udHJvbCBTdGF0ZSBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBWVE9SOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwOCAgVmVjdG9yIFRhYmxlIE9mZnNldCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIF9fSU8gdWludDMyX3QgQUlSQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MEMgIEFwcGxpY2F0aW9uIEludGVycnVwdCAvIFJlc2V0IENvbnRyb2wgUmVnaXN0ZXIgICAgICAgICovDQorICBfX0lPIHVpbnQzMl90IFNDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDEwICBTeXN0ZW0gQ29udHJvbCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBDQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxNCAgQ29uZmlndXJhdGlvbiBDb250cm9sIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIF9fSU8gdWludDhfdCAgU0hQWzEyXTsgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MTggIFN5c3RlbSBIYW5kbGVycyBQcmlvcml0eSBSZWdpc3RlcnMgKDQtNywgOC0xMSwgMTItMTUpICovDQorICBfX0lPIHVpbnQzMl90IFNIQ1NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDI0ICBTeXN0ZW0gSGFuZGxlciBDb250cm9sIGFuZCBTdGF0ZSBSZWdpc3RlciAgICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBDRlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyOCAgQ29uZmlndXJhYmxlIEZhdWx0IFN0YXR1cyBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgKi8NCisgIF9fSU8gdWludDMyX3QgSEZTUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MkMgIEhhcmQgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBfX0lPIHVpbnQzMl90IERGU1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDMwICBEZWJ1ZyBGYXVsdCBTdGF0dXMgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBNTUZBUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgzNCAgTWVtIE1hbmFnZSBBZGRyZXNzIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIF9fSU8gdWludDMyX3QgQkZBUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MzggIEJ1cyBGYXVsdCBBZGRyZXNzIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBfX0lPIHVpbnQzMl90IEFGU1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDNDICBBdXhpbGlhcnkgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgX19JICB1aW50MzJfdCBQRlJbMl07ICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHg0MCAgUHJvY2Vzc29yIEZlYXR1cmUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIF9fSSAgdWludDMyX3QgREZSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4NDggIERlYnVnIEZlYXR1cmUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBfX0kgIHVpbnQzMl90IEFEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDRDICBBdXhpbGlhcnkgRmVhdHVyZSBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgX19JICB1aW50MzJfdCBNTUZSWzRdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHg1MCAgTWVtb3J5IE1vZGVsIEZlYXR1cmUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIF9fSSAgdWludDMyX3QgSVNBUls1XTsgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4NjAgIElTQSBGZWF0dXJlIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorfSBTQ0JfVHlwZTsNCisNCisvKiBTQ0IgQ1BVSUQgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIFNDQl9DUFVJRF9JTVBMRU1FTlRFUl9Qb3MgICAgICAgICAgMjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogSU1QTEVNRU5URVIgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9DUFVJRF9JTVBMRU1FTlRFUl9Nc2sgICAgICAgICAgKDB4RkZ1bCA8PCBTQ0JfQ1BVSURfSU1QTEVNRU5URVJfUG9zKSAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogSU1QTEVNRU5URVIgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0NQVUlEX1ZBUklBTlRfUG9zICAgICAgICAgICAgICAyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIENQVUlEOiBWQVJJQU5UIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfQ1BVSURfVkFSSUFOVF9Nc2sgICAgICAgICAgICAgICgweEZ1bCA8PCBTQ0JfQ1BVSURfVkFSSUFOVF9Qb3MpICAgICAgICAgICAgICAgLyohPCBTQ0IgQ1BVSUQ6IFZBUklBTlQgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0NQVUlEX1BBUlROT19Qb3MgICAgICAgICAgICAgICAgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIENQVUlEOiBQQVJUTk8gUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9DUFVJRF9QQVJUTk9fTXNrICAgICAgICAgICAgICAgKDB4RkZGdWwgPDwgU0NCX0NQVUlEX1BBUlROT19Qb3MpICAgICAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogUEFSVE5PIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9DUFVJRF9SRVZJU0lPTl9Qb3MgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogUkVWSVNJT04gUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9DUFVJRF9SRVZJU0lPTl9Nc2sgICAgICAgICAgICAgKDB4RnVsIDw8IFNDQl9DUFVJRF9SRVZJU0lPTl9Qb3MpICAgICAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogUkVWSVNJT04gTWFzayAqLw0KKw0KKy8qIFNDQiBJbnRlcnJ1cHQgQ29udHJvbCBTdGF0ZSBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgU0NCX0lDU1JfTk1JUEVORFNFVF9Qb3MgICAgICAgICAgICAzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IE5NSVBFTkRTRVQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9JQ1NSX05NSVBFTkRTRVRfTXNrICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSUNTUl9OTUlQRU5EU0VUX1BvcykgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBOTUlQRU5EU0VUIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9JQ1NSX1BFTkRTVlNFVF9Qb3MgICAgICAgICAgICAgMjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBQRU5EU1ZTRVQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9JQ1NSX1BFTkRTVlNFVF9Nc2sgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSUNTUl9QRU5EU1ZTRVRfUG9zKSAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBQRU5EU1ZTRVQgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0lDU1JfUEVORFNWQ0xSX1BvcyAgICAgICAgICAgICAyNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IFBFTkRTVkNMUiBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0lDU1JfUEVORFNWQ0xSX01zayAgICAgICAgICAgICAoMXVsIDw8IFNDQl9JQ1NSX1BFTkRTVkNMUl9Qb3MpICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IFBFTkRTVkNMUiBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfSUNTUl9QRU5EU1RTRVRfUG9zICAgICAgICAgICAgIDI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogUEVORFNUU0VUIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfSUNTUl9QRU5EU1RTRVRfTXNrICAgICAgICAgICAgICgxdWwgPDwgU0NCX0lDU1JfUEVORFNUU0VUX1BvcykgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogUEVORFNUU0VUIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9JQ1NSX1BFTkRTVENMUl9Qb3MgICAgICAgICAgICAgMjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBQRU5EU1RDTFIgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9JQ1NSX1BFTkRTVENMUl9Nc2sgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSUNTUl9QRU5EU1RDTFJfUG9zKSAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBQRU5EU1RDTFIgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0lDU1JfSVNSUFJFRU1QVF9Qb3MgICAgICAgICAgICAyMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IElTUlBSRUVNUFQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9JQ1NSX0lTUlBSRUVNUFRfTXNrICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSUNTUl9JU1JQUkVFTVBUX1BvcykgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBJU1JQUkVFTVBUIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9JQ1NSX0lTUlBFTkRJTkdfUG9zICAgICAgICAgICAgMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBJU1JQRU5ESU5HIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfSUNTUl9JU1JQRU5ESU5HX01zayAgICAgICAgICAgICgxdWwgPDwgU0NCX0lDU1JfSVNSUEVORElOR19Qb3MpICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogSVNSUEVORElORyBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfSUNTUl9WRUNUUEVORElOR19Qb3MgICAgICAgICAgIDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogVkVDVFBFTkRJTkcgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9JQ1NSX1ZFQ1RQRU5ESU5HX01zayAgICAgICAgICAgKDB4MUZGdWwgPDwgU0NCX0lDU1JfVkVDVFBFTkRJTkdfUG9zKSAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBWRUNUUEVORElORyBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfSUNTUl9SRVRUT0JBU0VfUG9zICAgICAgICAgICAgIDExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogUkVUVE9CQVNFIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfSUNTUl9SRVRUT0JBU0VfTXNrICAgICAgICAgICAgICgxdWwgPDwgU0NCX0lDU1JfUkVUVE9CQVNFX1BvcykgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogUkVUVE9CQVNFIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9JQ1NSX1ZFQ1RBQ1RJVkVfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBWRUNUQUNUSVZFIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfSUNTUl9WRUNUQUNUSVZFX01zayAgICAgICAgICAgICgweDFGRnVsIDw8IFNDQl9JQ1NSX1ZFQ1RBQ1RJVkVfUG9zKSAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogVkVDVEFDVElWRSBNYXNrICovDQorDQorLyogU0NCIEludGVycnVwdCBDb250cm9sIFN0YXRlIFJlZ2lzdGVyIERlZmluaXRpb25zICovDQorI2RlZmluZSBTQ0JfVlRPUl9UQkxCQVNFX1BvcyAgICAgICAgICAgICAgIDI5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgVlRPUjogVEJMQkFTRSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX1ZUT1JfVEJMQkFTRV9Nc2sgICAgICAgICAgICAgICAoMHgxRkZ1bCA8PCBTQ0JfVlRPUl9UQkxCQVNFX1BvcykgICAgICAgICAgICAgIC8qITwgU0NCIFZUT1I6IFRCTEJBU0UgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX1ZUT1JfVEJMT0ZGX1BvcyAgICAgICAgICAgICAgICAgNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFZUT1I6IFRCTE9GRiBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX1ZUT1JfVEJMT0ZGX01zayAgICAgICAgICAgICAgICAoMHgzRkZGRkZ1bCA8PCBTQ0JfVlRPUl9UQkxPRkZfUG9zKSAgICAgICAgICAgIC8qITwgU0NCIFZUT1I6IFRCTE9GRiBNYXNrICovDQorDQorLyogU0NCIEFwcGxpY2F0aW9uIEludGVycnVwdCBhbmQgUmVzZXQgQ29udHJvbCBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgU0NCX0FJUkNSX1ZFQ1RLRVlfUG9zICAgICAgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBWRUNUS0VZIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfQUlSQ1JfVkVDVEtFWV9Nc2sgICAgICAgICAgICAgICgweEZGRkZ1bCA8PCBTQ0JfQUlSQ1JfVkVDVEtFWV9Qb3MpICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFZFQ1RLRVkgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0FJUkNSX1ZFQ1RLRVlTVEFUX1BvcyAgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBWRUNUS0VZU1RBVCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0FJUkNSX1ZFQ1RLRVlTVEFUX01zayAgICAgICAgICAoMHhGRkZGdWwgPDwgU0NCX0FJUkNSX1ZFQ1RLRVlTVEFUX1BvcykgICAgICAgIC8qITwgU0NCIEFJUkNSOiBWRUNUS0VZU1RBVCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfQUlSQ1JfRU5ESUFORVNTX1BvcyAgICAgICAgICAgIDE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IEVORElBTkVTUyBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0FJUkNSX0VORElBTkVTU19Nc2sgICAgICAgICAgICAoMXVsIDw8IFNDQl9BSVJDUl9FTkRJQU5FU1NfUG9zKSAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBFTkRJQU5FU1MgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0FJUkNSX1BSSUdST1VQX1BvcyAgICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBQUklHUk9VUCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0FJUkNSX1BSSUdST1VQX01zayAgICAgICAgICAgICAoN3VsIDw8IFNDQl9BSVJDUl9QUklHUk9VUF9Qb3MpICAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBQUklHUk9VUCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfQUlSQ1JfU1lTUkVTRVRSRVFfUG9zICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFNZU1JFU0VUUkVRIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfQUlSQ1JfU1lTUkVTRVRSRVFfTXNrICAgICAgICAgICgxdWwgPDwgU0NCX0FJUkNSX1NZU1JFU0VUUkVRX1BvcykgICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFNZU1JFU0VUUkVRIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9BSVJDUl9WRUNUQ0xSQUNUSVZFX1BvcyAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBBSVJDUjogVkVDVENMUkFDVElWRSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0FJUkNSX1ZFQ1RDTFJBQ1RJVkVfTXNrICAgICAgICAoMXVsIDw8IFNDQl9BSVJDUl9WRUNUQ0xSQUNUSVZFX1BvcykgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBWRUNUQ0xSQUNUSVZFIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9BSVJDUl9WRUNUUkVTRVRfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBBSVJDUjogVkVDVFJFU0VUIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfQUlSQ1JfVkVDVFJFU0VUX01zayAgICAgICAgICAgICgxdWwgPDwgU0NCX0FJUkNSX1ZFQ1RSRVNFVF9Qb3MpICAgICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFZFQ1RSRVNFVCBNYXNrICovDQorDQorLyogU0NCIFN5c3RlbSBDb250cm9sIFJlZ2lzdGVyIERlZmluaXRpb25zICovDQorI2RlZmluZSBTQ0JfU0NSX1NFVk9OUEVORF9Qb3MgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0NSOiBTRVZPTlBFTkQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9TQ1JfU0VWT05QRU5EX01zayAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfU0NSX1NFVk9OUEVORF9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTQ1I6IFNFVk9OUEVORCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfU0NSX1NMRUVQREVFUF9Qb3MgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0NSOiBTTEVFUERFRVAgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9TQ1JfU0xFRVBERUVQX01zayAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfU0NSX1NMRUVQREVFUF9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTQ1I6IFNMRUVQREVFUCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfU0NSX1NMRUVQT05FWElUX1BvcyAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0NSOiBTTEVFUE9ORVhJVCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX1NDUl9TTEVFUE9ORVhJVF9Nc2sgICAgICAgICAgICAoMXVsIDw8IFNDQl9TQ1JfU0xFRVBPTkVYSVRfUG9zKSAgICAgICAgICAgICAgIC8qITwgU0NCIFNDUjogU0xFRVBPTkVYSVQgTWFzayAqLw0KKw0KKy8qIFNDQiBDb25maWd1cmF0aW9uIENvbnRyb2wgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIFNDQl9DQ1JfU1RLQUxJR05fUG9zICAgICAgICAgICAgICAgIDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDQ1I6IFNUS0FMSUdOIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfQ0NSX1NUS0FMSUdOX01zayAgICAgICAgICAgICAgICgxdWwgPDwgU0NCX0NDUl9TVEtBTElHTl9Qb3MpICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBTVEtBTElHTiBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfQ0NSX0JGSEZOTUlHTl9Qb3MgICAgICAgICAgICAgICA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBCRkhGTk1JR04gUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9DQ1JfQkZIRk5NSUdOX01zayAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfQ0NSX0JGSEZOTUlHTl9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDQ1I6IEJGSEZOTUlHTiBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfQ0NSX0RJVl8wX1RSUF9Qb3MgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBESVZfMF9UUlAgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9DQ1JfRElWXzBfVFJQX01zayAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfQ0NSX0RJVl8wX1RSUF9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDQ1I6IERJVl8wX1RSUCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfQ0NSX1VOQUxJR05fVFJQX1BvcyAgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBVTkFMSUdOX1RSUCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0NDUl9VTkFMSUdOX1RSUF9Nc2sgICAgICAgICAgICAoMXVsIDw8IFNDQl9DQ1JfVU5BTElHTl9UUlBfUG9zKSAgICAgICAgICAgICAgIC8qITwgU0NCIENDUjogVU5BTElHTl9UUlAgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0NDUl9VU0VSU0VUTVBFTkRfUG9zICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIENDUjogVVNFUlNFVE1QRU5EIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfQ0NSX1VTRVJTRVRNUEVORF9Nc2sgICAgICAgICAgICgxdWwgPDwgU0NCX0NDUl9VU0VSU0VUTVBFTkRfUG9zKSAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBVU0VSU0VUTVBFTkQgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0NDUl9OT05CQVNFVEhSREVOQV9Qb3MgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIENDUjogTk9OQkFTRVRIUkRFTkEgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9DQ1JfTk9OQkFTRVRIUkRFTkFfTXNrICAgICAgICAgKDF1bCA8PCBTQ0JfQ0NSX05PTkJBU0VUSFJERU5BX1BvcykgICAgICAgICAgICAvKiE8IFNDQiBDQ1I6IE5PTkJBU0VUSFJERU5BIE1hc2sgKi8NCisNCisvKiBTQ0IgU3lzdGVtIEhhbmRsZXIgQ29udHJvbCBhbmQgU3RhdGUgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIFNDQl9TSENTUl9VU0dGQVVMVEVOQV9Qb3MgICAgICAgICAgMTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogVVNHRkFVTFRFTkEgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9TSENTUl9VU0dGQVVMVEVOQV9Nc2sgICAgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfVVNHRkFVTFRFTkFfUG9zKSAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogVVNHRkFVTFRFTkEgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX1NIQ1NSX0JVU0ZBVUxURU5BX1BvcyAgICAgICAgICAxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBCVVNGQVVMVEVOQSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX1NIQ1NSX0JVU0ZBVUxURU5BX01zayAgICAgICAgICAoMXVsIDw8IFNDQl9TSENTUl9CVVNGQVVMVEVOQV9Qb3MpICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBCVVNGQVVMVEVOQSBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfU0hDU1JfTUVNRkFVTFRFTkFfUG9zICAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IE1FTUZBVUxURU5BIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfU0hDU1JfTUVNRkFVTFRFTkFfTXNrICAgICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX01FTUZBVUxURU5BX1BvcykgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IE1FTUZBVUxURU5BIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9TSENTUl9TVkNBTExQRU5ERURfUG9zICAgICAgICAgMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogU1ZDQUxMUEVOREVEIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfU0hDU1JfU1ZDQUxMUEVOREVEX01zayAgICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX1NWQ0FMTFBFTkRFRF9Qb3MpICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IFNWQ0FMTFBFTkRFRCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfU0hDU1JfQlVTRkFVTFRQRU5ERURfUG9zICAgICAgIDE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IEJVU0ZBVUxUUEVOREVEIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfU0hDU1JfQlVTRkFVTFRQRU5ERURfTXNrICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX0JVU0ZBVUxUUEVOREVEX1BvcykgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IEJVU0ZBVUxUUEVOREVEIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9TSENTUl9NRU1GQVVMVFBFTkRFRF9Qb3MgICAgICAgMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogTUVNRkFVTFRQRU5ERUQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9TSENTUl9NRU1GQVVMVFBFTkRFRF9Nc2sgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfTUVNRkFVTFRQRU5ERURfUG9zKSAgICAgICAgICAvKiE8IFNDQiBTSENTUjogTUVNRkFVTFRQRU5ERUQgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX1NIQ1NSX1VTR0ZBVUxUUEVOREVEX1BvcyAgICAgICAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBVU0dGQVVMVFBFTkRFRCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX1NIQ1NSX1VTR0ZBVUxUUEVOREVEX01zayAgICAgICAoMXVsIDw8IFNDQl9TSENTUl9VU0dGQVVMVFBFTkRFRF9Qb3MpICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBVU0dGQVVMVFBFTkRFRCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfU0hDU1JfU1lTVElDS0FDVF9Qb3MgICAgICAgICAgIDExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IFNZU1RJQ0tBQ1QgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9TSENTUl9TWVNUSUNLQUNUX01zayAgICAgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfU1lTVElDS0FDVF9Qb3MpICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogU1lTVElDS0FDVCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfU0hDU1JfUEVORFNWQUNUX1BvcyAgICAgICAgICAgIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IFBFTkRTVkFDVCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX1NIQ1NSX1BFTkRTVkFDVF9Nc2sgICAgICAgICAgICAoMXVsIDw8IFNDQl9TSENTUl9QRU5EU1ZBQ1RfUG9zKSAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBQRU5EU1ZBQ1QgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX1NIQ1NSX01PTklUT1JBQ1RfUG9zICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBNT05JVE9SQUNUIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfU0hDU1JfTU9OSVRPUkFDVF9Nc2sgICAgICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX01PTklUT1JBQ1RfUG9zKSAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IE1PTklUT1JBQ1QgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX1NIQ1NSX1NWQ0FMTEFDVF9Qb3MgICAgICAgICAgICAgNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBTVkNBTExBQ1QgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9TSENTUl9TVkNBTExBQ1RfTXNrICAgICAgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfU1ZDQUxMQUNUX1BvcykgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogU1ZDQUxMQUNUIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9TSENTUl9VU0dGQVVMVEFDVF9Qb3MgICAgICAgICAgIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogVVNHRkFVTFRBQ1QgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9TSENTUl9VU0dGQVVMVEFDVF9Nc2sgICAgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfVVNHRkFVTFRBQ1RfUG9zKSAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogVVNHRkFVTFRBQ1QgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX1NIQ1NSX0JVU0ZBVUxUQUNUX1BvcyAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBCVVNGQVVMVEFDVCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX1NIQ1NSX0JVU0ZBVUxUQUNUX01zayAgICAgICAgICAoMXVsIDw8IFNDQl9TSENTUl9CVVNGQVVMVEFDVF9Qb3MpICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBCVVNGQVVMVEFDVCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfU0hDU1JfTUVNRkFVTFRBQ1RfUG9zICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IE1FTUZBVUxUQUNUIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfU0hDU1JfTUVNRkFVTFRBQ1RfTXNrICAgICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX01FTUZBVUxUQUNUX1BvcykgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IE1FTUZBVUxUQUNUIE1hc2sgKi8NCisNCisvKiBTQ0IgQ29uZmlndXJhYmxlIEZhdWx0IFN0YXR1cyBSZWdpc3RlcnMgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIFNDQl9DRlNSX1VTR0ZBVUxUU1JfUG9zICAgICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDRlNSOiBVc2FnZSBGYXVsdCBTdGF0dXMgUmVnaXN0ZXIgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9DRlNSX1VTR0ZBVUxUU1JfTXNrICAgICAgICAgICAgKDB4RkZGRnVsIDw8IFNDQl9DRlNSX1VTR0ZBVUxUU1JfUG9zKSAgICAgICAgICAvKiE8IFNDQiBDRlNSOiBVc2FnZSBGYXVsdCBTdGF0dXMgUmVnaXN0ZXIgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0NGU1JfQlVTRkFVTFRTUl9Qb3MgICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIENGU1I6IEJ1cyBGYXVsdCBTdGF0dXMgUmVnaXN0ZXIgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9DRlNSX0JVU0ZBVUxUU1JfTXNrICAgICAgICAgICAgKDB4RkZ1bCA8PCBTQ0JfQ0ZTUl9CVVNGQVVMVFNSX1BvcykgICAgICAgICAgICAvKiE8IFNDQiBDRlNSOiBCdXMgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9DRlNSX01FTUZBVUxUU1JfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDRlNSOiBNZW1vcnkgTWFuYWdlIEZhdWx0IFN0YXR1cyBSZWdpc3RlciBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0NGU1JfTUVNRkFVTFRTUl9Nc2sgICAgICAgICAgICAoMHhGRnVsIDw8IFNDQl9DRlNSX01FTUZBVUxUU1JfUG9zKSAgICAgICAgICAgIC8qITwgU0NCIENGU1I6IE1lbW9yeSBNYW5hZ2UgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyIE1hc2sgKi8NCisNCisvKiBTQ0IgSGFyZCBGYXVsdCBTdGF0dXMgUmVnaXN0ZXJzIERlZmluaXRpb25zICovDQorI2RlZmluZSBTQ0JfSEZTUl9ERUJVR0VWVF9Qb3MgICAgICAgICAgICAgIDMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSEZTUjogREVCVUdFVlQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9IRlNSX0RFQlVHRVZUX01zayAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSEZTUl9ERUJVR0VWVF9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IFNDQiBIRlNSOiBERUJVR0VWVCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfSEZTUl9GT1JDRURfUG9zICAgICAgICAgICAgICAgIDMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSEZTUjogRk9SQ0VEIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfSEZTUl9GT1JDRURfTXNrICAgICAgICAgICAgICAgICgxdWwgPDwgU0NCX0hGU1JfRk9SQ0VEX1BvcykgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSEZTUjogRk9SQ0VEIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9IRlNSX1ZFQ1RUQkxfUG9zICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBIRlNSOiBWRUNUVEJMIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfSEZTUl9WRUNUVEJMX01zayAgICAgICAgICAgICAgICgxdWwgPDwgU0NCX0hGU1JfVkVDVFRCTF9Qb3MpICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSEZTUjogVkVDVFRCTCBNYXNrICovDQorDQorLyogU0NCIERlYnVnIEZhdWx0IFN0YXR1cyBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgU0NCX0RGU1JfRVhURVJOQUxfUG9zICAgICAgICAgICAgICAgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIERGU1I6IEVYVEVSTkFMIFBvc2l0aW9uICovDQorI2RlZmluZSBTQ0JfREZTUl9FWFRFUk5BTF9Nc2sgICAgICAgICAgICAgICgxdWwgPDwgU0NCX0RGU1JfRVhURVJOQUxfUG9zKSAgICAgICAgICAgICAgICAgLyohPCBTQ0IgREZTUjogRVhURVJOQUwgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0RGU1JfVkNBVENIX1BvcyAgICAgICAgICAgICAgICAgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIERGU1I6IFZDQVRDSCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0RGU1JfVkNBVENIX01zayAgICAgICAgICAgICAgICAoMXVsIDw8IFNDQl9ERlNSX1ZDQVRDSF9Qb3MpICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIERGU1I6IFZDQVRDSCBNYXNrICovDQorDQorI2RlZmluZSBTQ0JfREZTUl9EV1RUUkFQX1BvcyAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgREZTUjogRFdUVFJBUCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU0NCX0RGU1JfRFdUVFJBUF9Nc2sgICAgICAgICAgICAgICAoMXVsIDw8IFNDQl9ERlNSX0RXVFRSQVBfUG9zKSAgICAgICAgICAgICAgICAgIC8qITwgU0NCIERGU1I6IERXVFRSQVAgTWFzayAqLw0KKw0KKyNkZWZpbmUgU0NCX0RGU1JfQktQVF9Qb3MgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIERGU1I6IEJLUFQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9ERlNSX0JLUFRfTXNrICAgICAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfREZTUl9CS1BUX1BvcykgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBERlNSOiBCS1BUIE1hc2sgKi8NCisNCisjZGVmaW5lIFNDQl9ERlNSX0hBTFRFRF9Qb3MgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBERlNSOiBIQUxURUQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFNDQl9ERlNSX0hBTFRFRF9Nc2sgICAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfREZTUl9IQUxURURfUG9zKSAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBERlNSOiBIQUxURUQgTWFzayAqLw0KKy8qQH0qLyAvKiBlbmQgb2YgZ3JvdXAgQ01TSVNfQ00zX1NDQiAqLw0KKw0KKw0KKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfU3lzVGljayBDTVNJUyBDTTMgU3lzVGljaw0KKyAgbWVtb3J5IG1hcHBlZCBzdHJ1Y3R1cmUgZm9yIFN5c1RpY2sNCisgIEB7DQorICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IENUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDAwICBTeXNUaWNrIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlciAqLw0KKyAgX19JTyB1aW50MzJfdCBMT0FEOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwNCAgU3lzVGljayBSZWxvYWQgVmFsdWUgUmVnaXN0ZXIgICAgICAgKi8NCisgIF9fSU8gdWludDMyX3QgVkFMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDggIFN5c1RpY2sgQ3VycmVudCBWYWx1ZSBSZWdpc3RlciAgICAgICovDQorICBfX0kgIHVpbnQzMl90IENBTElCOyAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDBDICBTeXNUaWNrIENhbGlicmF0aW9uIFJlZ2lzdGVyICAgICAgICAqLw0KK30gU3lzVGlja19UeXBlOw0KKw0KKy8qIFN5c1RpY2sgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgU3lzVGlja19DVFJMX0NPVU5URkxBR19Qb3MgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBDT1VOVEZMQUcgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9DT1VOVEZMQUdfTXNrICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NUUkxfQ09VTlRGTEFHX1BvcykgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogQ09VTlRGTEFHIE1hc2sgKi8NCisNCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9DTEtTT1VSQ0VfUG9zICAgICAgICAgIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogQ0xLU09VUkNFIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX0NUUkxfQ0xLU09VUkNFX01zayAgICAgICAgICgxdWwgPDwgU3lzVGlja19DVFJMX0NMS1NPVVJDRV9Qb3MpICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IENMS1NPVVJDRSBNYXNrICovDQorDQorI2RlZmluZSBTeXNUaWNrX0NUUkxfVElDS0lOVF9Qb3MgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IFRJQ0tJTlQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9USUNLSU5UX01zayAgICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NUUkxfVElDS0lOVF9Qb3MpICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogVElDS0lOVCBNYXNrICovDQorDQorI2RlZmluZSBTeXNUaWNrX0NUUkxfRU5BQkxFX1BvcyAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IEVOQUJMRSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19DVFJMX0VOQUJMRV9Nc2sgICAgICAgICAgICAoMXVsIDw8IFN5c1RpY2tfQ1RSTF9FTkFCTEVfUG9zKSAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBFTkFCTEUgTWFzayAqLw0KKw0KKy8qIFN5c1RpY2sgUmVsb2FkIFJlZ2lzdGVyIERlZmluaXRpb25zICovDQorI2RlZmluZSBTeXNUaWNrX0xPQURfUkVMT0FEX1BvcyAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIExPQUQ6IFJFTE9BRCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19MT0FEX1JFTE9BRF9Nc2sgICAgICAgICAgICAoMHhGRkZGRkZ1bCA8PCBTeXNUaWNrX0xPQURfUkVMT0FEX1BvcykgICAgICAgIC8qITwgU3lzVGljayBMT0FEOiBSRUxPQUQgTWFzayAqLw0KKw0KKy8qIFN5c1RpY2sgQ3VycmVudCBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgU3lzVGlja19WQUxfQ1VSUkVOVF9Qb3MgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBWQUw6IENVUlJFTlQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfVkFMX0NVUlJFTlRfTXNrICAgICAgICAgICAgKDB4RkZGRkZGdWwgPDwgU3lzVGlja19WQUxfQ1VSUkVOVF9Qb3MpICAgICAgICAvKiE8IFN5c1RpY2sgVkFMOiBDVVJSRU5UIE1hc2sgKi8NCisNCisvKiBTeXNUaWNrIENhbGlicmF0aW9uIFJlZ2lzdGVyIERlZmluaXRpb25zICovDQorI2RlZmluZSBTeXNUaWNrX0NBTElCX05PUkVGX1BvcyAgICAgICAgICAgIDMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENBTElCOiBOT1JFRiBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19DQUxJQl9OT1JFRl9Nc2sgICAgICAgICAgICAoMXVsIDw8IFN5c1RpY2tfQ0FMSUJfTk9SRUZfUG9zKSAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDQUxJQjogTk9SRUYgTWFzayAqLw0KKw0KKyNkZWZpbmUgU3lzVGlja19DQUxJQl9TS0VXX1BvcyAgICAgICAgICAgICAzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDQUxJQjogU0tFVyBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19DQUxJQl9TS0VXX01zayAgICAgICAgICAgICAoMXVsIDw8IFN5c1RpY2tfQ0FMSUJfU0tFV19Qb3MpICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDQUxJQjogU0tFVyBNYXNrICovDQorDQorI2RlZmluZSBTeXNUaWNrX0NBTElCX1RFTk1TX1BvcyAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENBTElCOiBURU5NUyBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19DQUxJQl9URU5NU19Nc2sgICAgICAgICAgICAoMHhGRkZGRkZ1bCA8PCBTeXNUaWNrX1ZBTF9DVVJSRU5UX1BvcykgICAgICAgIC8qITwgU3lzVGljayBDQUxJQjogVEVOTVMgTWFzayAqLw0KKy8qQH0qLyAvKiBlbmQgb2YgZ3JvdXAgQ01TSVNfQ00zX1N5c1RpY2sgKi8NCisNCisNCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX0lUTSBDTVNJUyBDTTMgSVRNDQorICBtZW1vcnkgbWFwcGVkIHN0cnVjdHVyZSBmb3IgSW5zdHJ1bWVudGF0aW9uIFRyYWNlIE1hY3JvY2VsbCAoSVRNKQ0KKyAgQHsNCisgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fTyAgdW5pb24NCisgIHsNCisgICAgX19PICB1aW50OF90ICAgIHU4OyAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBTdGltdWx1cyBQb3J0IDgtYml0ICAgICAgICAgICAgICAgICAgICovDQorICAgIF9fTyAgdWludDE2X3QgICB1MTY7ICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAgICAgICBJVE0gU3RpbXVsdXMgUG9ydCAxNi1iaXQgICAgICAgICAgICAgICAgICAqLw0KKyAgICBfX08gIHVpbnQzMl90ICAgdTMyOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogICAgICAgSVRNIFN0aW11bHVzIFBvcnQgMzItYml0ICAgICAgICAgICAgICAgICAgKi8NCisgIH0gIFBPUlQgWzMyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDAgIElUTSBTdGltdWx1cyBQb3J0IFJlZ2lzdGVycyAgICAgICAgICAgICAgICovDQorICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMFs4NjRdOw0KKyAgX19JTyB1aW50MzJfdCBURVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogICAgICAgSVRNIFRyYWNlIEVuYWJsZSBSZWdpc3RlciAgICAgICAgICAgICAgICAgKi8NCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQxWzE1XTsNCisgIF9fSU8gdWludDMyX3QgVFBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBUcmFjZSBQcml2aWxlZ2UgUmVnaXN0ZXIgICAgICAgICAgICAgICovDQorICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMlsxNV07DQorICBfX0lPIHVpbnQzMl90IFRDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAgICAgICBJVE0gVHJhY2UgQ29udHJvbCBSZWdpc3RlciAgICAgICAgICAgICAgICAqLw0KKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDNbMjldOw0KKyAgX19JTyB1aW50MzJfdCBJV1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogICAgICAgSVRNIEludGVncmF0aW9uIFdyaXRlIFJlZ2lzdGVyICAgICAgICAgICAgKi8NCisgIF9fSU8gdWludDMyX3QgSVJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBJbnRlZ3JhdGlvbiBSZWFkIFJlZ2lzdGVyICAgICAgICAgICAgICovDQorICBfX0lPIHVpbnQzMl90IElNQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAgICAgICBJVE0gSW50ZWdyYXRpb24gTW9kZSBDb250cm9sIFJlZ2lzdGVyICAgICAqLw0KKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDRbNDNdOw0KKyAgX19JTyB1aW50MzJfdCBMQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogICAgICAgSVRNIExvY2sgQWNjZXNzIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgKi8NCisgIF9fSU8gdWludDMyX3QgTFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBMb2NrIFN0YXR1cyBSZWdpc3RlciAgICAgICAgICAgICAgICAgICovDQorICAgICAgIHVpbnQzMl90IFJFU0VSVkVENVs2XTsNCisgIF9fSSAgdWludDMyX3QgUElENDsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICM0ICovDQorICBfX0kgIHVpbnQzMl90IFBJRDU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAgICAgICBJVE0gUGVyaXBoZXJhbCBJZGVudGlmaWNhdGlvbiBSZWdpc3RlciAjNSAqLw0KKyAgX19JICB1aW50MzJfdCBQSUQ2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogICAgICAgSVRNIFBlcmlwaGVyYWwgSWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgIzYgKi8NCisgIF9fSSAgdWludDMyX3QgUElENzsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICM3ICovDQorICBfX0kgIHVpbnQzMl90IFBJRDA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAgICAgICBJVE0gUGVyaXBoZXJhbCBJZGVudGlmaWNhdGlvbiBSZWdpc3RlciAjMCAqLw0KKyAgX19JICB1aW50MzJfdCBQSUQxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogICAgICAgSVRNIFBlcmlwaGVyYWwgSWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgIzEgKi8NCisgIF9fSSAgdWludDMyX3QgUElEMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMyICovDQorICBfX0kgIHVpbnQzMl90IFBJRDM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAgICAgICBJVE0gUGVyaXBoZXJhbCBJZGVudGlmaWNhdGlvbiBSZWdpc3RlciAjMyAqLw0KKyAgX19JICB1aW50MzJfdCBDSUQwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogICAgICAgSVRNIENvbXBvbmVudCAgSWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgIzAgKi8NCisgIF9fSSAgdWludDMyX3QgQ0lEMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBDb21wb25lbnQgIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMxICovDQorICBfX0kgIHVpbnQzMl90IENJRDI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAgICAgICBJVE0gQ29tcG9uZW50ICBJZGVudGlmaWNhdGlvbiBSZWdpc3RlciAjMiAqLw0KKyAgX19JICB1aW50MzJfdCBDSUQzOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogICAgICAgSVRNIENvbXBvbmVudCAgSWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgIzMgKi8NCit9IElUTV9UeXBlOw0KKw0KKy8qIElUTSBUcmFjZSBQcml2aWxlZ2UgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIElUTV9UUFJfUFJJVk1BU0tfUG9zICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUUFI6IFBSSVZNQVNLIFBvc2l0aW9uICovDQorI2RlZmluZSBJVE1fVFBSX1BSSVZNQVNLX01zayAgICAgICAgICAgICAgICgweEZ1bCA8PCBJVE1fVFBSX1BSSVZNQVNLX1BvcykgICAgICAgICAgICAgICAgLyohPCBJVE0gVFBSOiBQUklWTUFTSyBNYXNrICovDQorDQorLyogSVRNIFRyYWNlIENvbnRyb2wgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIElUTV9UQ1JfQlVTWV9Qb3MgICAgICAgICAgICAgICAgICAgMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IEJVU1kgUG9zaXRpb24gKi8NCisjZGVmaW5lIElUTV9UQ1JfQlVTWV9Nc2sgICAgICAgICAgICAgICAgICAgKDF1bCA8PCBJVE1fVENSX0JVU1lfUG9zKSAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IEJVU1kgTWFzayAqLw0KKw0KKyNkZWZpbmUgSVRNX1RDUl9BVEJJRF9Qb3MgICAgICAgICAgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogQVRCSUQgUG9zaXRpb24gKi8NCisjZGVmaW5lIElUTV9UQ1JfQVRCSURfTXNrICAgICAgICAgICAgICAgICAgKDB4N0Z1bCA8PCBJVE1fVENSX0FUQklEX1BvcykgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IEFUQklEIE1hc2sgKi8NCisNCisjZGVmaW5lIElUTV9UQ1JfVFNQcmVzY2FsZV9Qb3MgICAgICAgICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IFRTUHJlc2NhbGUgUG9zaXRpb24gKi8NCisjZGVmaW5lIElUTV9UQ1JfVFNQcmVzY2FsZV9Nc2sgICAgICAgICAgICAgKDN1bCA8PCBJVE1fVENSX1RTUHJlc2NhbGVfUG9zKSAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IFRTUHJlc2NhbGUgTWFzayAqLw0KKw0KKyNkZWZpbmUgSVRNX1RDUl9TV09FTkFfUG9zICAgICAgICAgICAgICAgICAgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogU1dPRU5BIFBvc2l0aW9uICovDQorI2RlZmluZSBJVE1fVENSX1NXT0VOQV9Nc2sgICAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX1RDUl9TV09FTkFfUG9zKSAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBTV09FTkEgTWFzayAqLw0KKw0KKyNkZWZpbmUgSVRNX1RDUl9EV1RFTkFfUG9zICAgICAgICAgICAgICAgICAgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogRFdURU5BIFBvc2l0aW9uICovDQorI2RlZmluZSBJVE1fVENSX0RXVEVOQV9Nc2sgICAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX1RDUl9EV1RFTkFfUG9zKSAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBEV1RFTkEgTWFzayAqLw0KKw0KKyNkZWZpbmUgSVRNX1RDUl9TWU5DRU5BX1BvcyAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogU1lOQ0VOQSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgSVRNX1RDUl9TWU5DRU5BX01zayAgICAgICAgICAgICAgICAoMXVsIDw8IElUTV9UQ1JfU1lOQ0VOQV9Qb3MpICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogU1lOQ0VOQSBNYXNrICovDQorDQorI2RlZmluZSBJVE1fVENSX1RTRU5BX1BvcyAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBUU0VOQSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgSVRNX1RDUl9UU0VOQV9Nc2sgICAgICAgICAgICAgICAgICAoMXVsIDw8IElUTV9UQ1JfVFNFTkFfUG9zKSAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogVFNFTkEgTWFzayAqLw0KKw0KKyNkZWZpbmUgSVRNX1RDUl9JVE1FTkFfUG9zICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogSVRNIEVuYWJsZSBiaXQgUG9zaXRpb24gKi8NCisjZGVmaW5lIElUTV9UQ1JfSVRNRU5BX01zayAgICAgICAgICAgICAgICAgKDF1bCA8PCBJVE1fVENSX0lUTUVOQV9Qb3MpICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IElUTSBFbmFibGUgYml0IE1hc2sgKi8NCisNCisvKiBJVE0gSW50ZWdyYXRpb24gV3JpdGUgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIElUTV9JV1JfQVRWQUxJRE1fUG9zICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBJV1I6IEFUVkFMSURNIFBvc2l0aW9uICovDQorI2RlZmluZSBJVE1fSVdSX0FUVkFMSURNX01zayAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX0lXUl9BVFZBTElETV9Qb3MpICAgICAgICAgICAgICAgICAgLyohPCBJVE0gSVdSOiBBVFZBTElETSBNYXNrICovDQorDQorLyogSVRNIEludGVncmF0aW9uIFJlYWQgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIElUTV9JUlJfQVRSRUFEWU1fUG9zICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBJUlI6IEFUUkVBRFlNIFBvc2l0aW9uICovDQorI2RlZmluZSBJVE1fSVJSX0FUUkVBRFlNX01zayAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX0lSUl9BVFJFQURZTV9Qb3MpICAgICAgICAgICAgICAgICAgLyohPCBJVE0gSVJSOiBBVFJFQURZTSBNYXNrICovDQorDQorLyogSVRNIEludGVncmF0aW9uIE1vZGUgQ29udHJvbCBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgSVRNX0lNQ1JfSU5URUdSQVRJT05fUG9zICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIElNQ1I6IElOVEVHUkFUSU9OIFBvc2l0aW9uICovDQorI2RlZmluZSBJVE1fSU1DUl9JTlRFR1JBVElPTl9Nc2sgICAgICAgICAgICgxdWwgPDwgSVRNX0lNQ1JfSU5URUdSQVRJT05fUG9zKSAgICAgICAgICAgICAgLyohPCBJVE0gSU1DUjogSU5URUdSQVRJT04gTWFzayAqLw0KKw0KKy8qIElUTSBMb2NrIFN0YXR1cyBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgSVRNX0xTUl9CeXRlQWNjX1BvcyAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIExTUjogQnl0ZUFjYyBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgSVRNX0xTUl9CeXRlQWNjX01zayAgICAgICAgICAgICAgICAoMXVsIDw8IElUTV9MU1JfQnl0ZUFjY19Qb3MpICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIExTUjogQnl0ZUFjYyBNYXNrICovDQorDQorI2RlZmluZSBJVE1fTFNSX0FjY2Vzc19Qb3MgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gTFNSOiBBY2Nlc3MgUG9zaXRpb24gKi8NCisjZGVmaW5lIElUTV9MU1JfQWNjZXNzX01zayAgICAgICAgICAgICAgICAgKDF1bCA8PCBJVE1fTFNSX0FjY2Vzc19Qb3MpICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBMU1I6IEFjY2VzcyBNYXNrICovDQorDQorI2RlZmluZSBJVE1fTFNSX1ByZXNlbnRfUG9zICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gTFNSOiBQcmVzZW50IFBvc2l0aW9uICovDQorI2RlZmluZSBJVE1fTFNSX1ByZXNlbnRfTXNrICAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX0xTUl9QcmVzZW50X1BvcykgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gTFNSOiBQcmVzZW50IE1hc2sgKi8NCisvKkB9Ki8gLyogZW5kIG9mIGdyb3VwIENNU0lTX0NNM19JVE0gKi8NCisNCisNCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX0ludGVycnVwdFR5cGUgQ01TSVMgQ00zIEludGVycnVwdCBUeXBlDQorICBtZW1vcnkgbWFwcGVkIHN0cnVjdHVyZSBmb3IgSW50ZXJydXB0IFR5cGUNCisgIEB7DQorICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMDsNCisgIF9fSSAgdWludDMyX3QgSUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDQgIEludGVycnVwdCBDb250cm9sIFR5cGUgUmVnaXN0ZXIgKi8NCisjaWYgKChkZWZpbmVkIF9fQ00zX1JFVikgJiYgKF9fQ00zX1JFViA+PSAweDIwMCkpDQorICBfX0lPIHVpbnQzMl90IEFDVExSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDA4ICBBdXhpbGlhcnkgQ29udHJvbCBSZWdpc3RlciAgICAgICovDQorI2Vsc2UNCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQxOw0KKyNlbmRpZg0KK30gSW50ZXJydXB0VHlwZV9UeXBlOw0KKw0KKy8qIEludGVycnVwdCBDb250cm9sbGVyIFR5cGUgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIEludGVycnVwdFR5cGVfSUNUUl9JTlRMSU5FU05VTV9Qb3MgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdFR5cGUgSUNUUjogSU5UTElORVNOVU0gUG9zaXRpb24gKi8NCisjZGVmaW5lIEludGVycnVwdFR5cGVfSUNUUl9JTlRMSU5FU05VTV9Nc2sgKDB4MUZ1bCA8PCBJbnRlcnJ1cHRUeXBlX0lDVFJfSU5UTElORVNOVU1fUG9zKSAvKiE8IEludGVycnVwdFR5cGUgSUNUUjogSU5UTElORVNOVU0gTWFzayAqLw0KKw0KKy8qIEF1eGlsaWFyeSBDb250cm9sIFJlZ2lzdGVyIERlZmluaXRpb25zICovDQorI2RlZmluZSBJbnRlcnJ1cHRUeXBlX0FDVExSX0RJU0ZPTERfUG9zICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHRUeXBlIEFDVExSOiBESVNGT0xEIFBvc2l0aW9uICovDQorI2RlZmluZSBJbnRlcnJ1cHRUeXBlX0FDVExSX0RJU0ZPTERfTXNrICAgICgxdWwgPDwgSW50ZXJydXB0VHlwZV9BQ1RMUl9ESVNGT0xEX1BvcykgICAgICAgLyohPCBJbnRlcnJ1cHRUeXBlIEFDVExSOiBESVNGT0xEIE1hc2sgKi8NCisNCisjZGVmaW5lIEludGVycnVwdFR5cGVfQUNUTFJfRElTREVGV0JVRl9Qb3MgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdFR5cGUgQUNUTFI6IERJU0RFRldCVUYgUG9zaXRpb24gKi8NCisjZGVmaW5lIEludGVycnVwdFR5cGVfQUNUTFJfRElTREVGV0JVRl9Nc2sgKDF1bCA8PCBJbnRlcnJ1cHRUeXBlX0FDVExSX0RJU0RFRldCVUZfUG9zKSAgICAvKiE8IEludGVycnVwdFR5cGUgQUNUTFI6IERJU0RFRldCVUYgTWFzayAqLw0KKw0KKyNkZWZpbmUgSW50ZXJydXB0VHlwZV9BQ1RMUl9ESVNNQ1lDSU5UX1BvcyAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSW50ZXJydXB0VHlwZSBBQ1RMUjogRElTTUNZQ0lOVCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgSW50ZXJydXB0VHlwZV9BQ1RMUl9ESVNNQ1lDSU5UX01zayAoMXVsIDw8IEludGVycnVwdFR5cGVfQUNUTFJfRElTTUNZQ0lOVF9Qb3MpICAgIC8qITwgSW50ZXJydXB0VHlwZSBBQ1RMUjogRElTTUNZQ0lOVCBNYXNrICovDQorLypAfSovIC8qIGVuZCBvZiBncm91cCBDTVNJU19DTTNfSW50ZXJydXB0VHlwZSAqLw0KKw0KKw0KKyNpZiBkZWZpbmVkIChfX01QVV9QUkVTRU5UKSAmJiAoX19NUFVfUFJFU0VOVCA9PSAxKQ0KKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfTVBVIENNU0lTIENNMyBNUFUNCisgIG1lbW9yeSBtYXBwZWQgc3RydWN0dXJlIGZvciBNZW1vcnkgUHJvdGVjdGlvbiBVbml0IChNUFUpDQorICBAew0KKyAqLw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgX19JICB1aW50MzJfdCBUWVBFOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMCAgTVBVIFR5cGUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBDVFJMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwNCAgTVBVIENvbnRyb2wgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBSTlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwOCAgTVBVIFJlZ2lvbiBSTlJiZXIgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBSQkFSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwQyAgTVBVIFJlZ2lvbiBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgICAgICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBSQVNSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxMCAgTVBVIFJlZ2lvbiBBdHRyaWJ1dGUgYW5kIFNpemUgUmVnaXN0ZXIgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBSQkFSX0ExOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxNCAgTVBVIEFsaWFzIDEgUmVnaW9uIEJhc2UgQWRkcmVzcyBSZWdpc3RlciAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBSQVNSX0ExOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxOCAgTVBVIEFsaWFzIDEgUmVnaW9uIEF0dHJpYnV0ZSBhbmQgU2l6ZSBSZWdpc3RlciAqLw0KKyAgX19JTyB1aW50MzJfdCBSQkFSX0EyOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxQyAgTVBVIEFsaWFzIDIgUmVnaW9uIEJhc2UgQWRkcmVzcyBSZWdpc3RlciAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBSQVNSX0EyOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyMCAgTVBVIEFsaWFzIDIgUmVnaW9uIEF0dHJpYnV0ZSBhbmQgU2l6ZSBSZWdpc3RlciAqLw0KKyAgX19JTyB1aW50MzJfdCBSQkFSX0EzOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyNCAgTVBVIEFsaWFzIDMgUmVnaW9uIEJhc2UgQWRkcmVzcyBSZWdpc3RlciAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBSQVNSX0EzOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyOCAgTVBVIEFsaWFzIDMgUmVnaW9uIEF0dHJpYnV0ZSBhbmQgU2l6ZSBSZWdpc3RlciAqLw0KK30gTVBVX1R5cGU7DQorDQorLyogTVBVIFR5cGUgUmVnaXN0ZXIgKi8NCisjZGVmaW5lIE1QVV9UWVBFX0lSRUdJT05fUG9zICAgICAgICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBUWVBFOiBJUkVHSU9OIFBvc2l0aW9uICovDQorI2RlZmluZSBNUFVfVFlQRV9JUkVHSU9OX01zayAgICAgICAgICAgICAgICgweEZGdWwgPDwgTVBVX1RZUEVfSVJFR0lPTl9Qb3MpICAgICAgICAgICAgICAgLyohPCBNUFUgVFlQRTogSVJFR0lPTiBNYXNrICovDQorDQorI2RlZmluZSBNUFVfVFlQRV9EUkVHSU9OX1BvcyAgICAgICAgICAgICAgICA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgVFlQRTogRFJFR0lPTiBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgTVBVX1RZUEVfRFJFR0lPTl9Nc2sgICAgICAgICAgICAgICAoMHhGRnVsIDw8IE1QVV9UWVBFX0RSRUdJT05fUG9zKSAgICAgICAgICAgICAgIC8qITwgTVBVIFRZUEU6IERSRUdJT04gTWFzayAqLw0KKw0KKyNkZWZpbmUgTVBVX1RZUEVfU0VQQVJBVEVfUG9zICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFRZUEU6IFNFUEFSQVRFIFBvc2l0aW9uICovDQorI2RlZmluZSBNUFVfVFlQRV9TRVBBUkFURV9Nc2sgICAgICAgICAgICAgICgxdWwgPDwgTVBVX1RZUEVfU0VQQVJBVEVfUG9zKSAgICAgICAgICAgICAgICAgLyohPCBNUFUgVFlQRTogU0VQQVJBVEUgTWFzayAqLw0KKw0KKy8qIE1QVSBDb250cm9sIFJlZ2lzdGVyICovDQorI2RlZmluZSBNUFVfQ1RSTF9QUklWREVGRU5BX1BvcyAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgQ1RSTDogUFJJVkRFRkVOQSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgTVBVX0NUUkxfUFJJVkRFRkVOQV9Nc2sgICAgICAgICAgICAoMXVsIDw8IE1QVV9DVFJMX1BSSVZERUZFTkFfUG9zKSAgICAgICAgICAgICAgIC8qITwgTVBVIENUUkw6IFBSSVZERUZFTkEgTWFzayAqLw0KKw0KKyNkZWZpbmUgTVBVX0NUUkxfSEZOTUlFTkFfUG9zICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIENUUkw6IEhGTk1JRU5BIFBvc2l0aW9uICovDQorI2RlZmluZSBNUFVfQ1RSTF9IRk5NSUVOQV9Nc2sgICAgICAgICAgICAgICgxdWwgPDwgTVBVX0NUUkxfSEZOTUlFTkFfUG9zKSAgICAgICAgICAgICAgICAgLyohPCBNUFUgQ1RSTDogSEZOTUlFTkEgTWFzayAqLw0KKw0KKyNkZWZpbmUgTVBVX0NUUkxfRU5BQkxFX1BvcyAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIENUUkw6IEVOQUJMRSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgTVBVX0NUUkxfRU5BQkxFX01zayAgICAgICAgICAgICAgICAoMXVsIDw8IE1QVV9DVFJMX0VOQUJMRV9Qb3MpICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIENUUkw6IEVOQUJMRSBNYXNrICovDQorDQorLyogTVBVIFJlZ2lvbiBOdW1iZXIgUmVnaXN0ZXIgKi8NCisjZGVmaW5lIE1QVV9STlJfUkVHSU9OX1BvcyAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSTlI6IFJFR0lPTiBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgTVBVX1JOUl9SRUdJT05fTXNrICAgICAgICAgICAgICAgICAoMHhGRnVsIDw8IE1QVV9STlJfUkVHSU9OX1BvcykgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJOUjogUkVHSU9OIE1hc2sgKi8NCisNCisvKiBNUFUgUmVnaW9uIEJhc2UgQWRkcmVzcyBSZWdpc3RlciAqLw0KKyNkZWZpbmUgTVBVX1JCQVJfQUREUl9Qb3MgICAgICAgICAgICAgICAgICAgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJCQVI6IEFERFIgUG9zaXRpb24gKi8NCisjZGVmaW5lIE1QVV9SQkFSX0FERFJfTXNrICAgICAgICAgICAgICAgICAgKDB4N0ZGRkZGRnVsIDw8IE1QVV9SQkFSX0FERFJfUG9zKSAgICAgICAgICAgICAvKiE8IE1QVSBSQkFSOiBBRERSIE1hc2sgKi8NCisNCisjZGVmaW5lIE1QVV9SQkFSX1ZBTElEX1BvcyAgICAgICAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQkFSOiBWQUxJRCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgTVBVX1JCQVJfVkFMSURfTXNrICAgICAgICAgICAgICAgICAoMXVsIDw8IE1QVV9SQkFSX1ZBTElEX1BvcykgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJCQVI6IFZBTElEIE1hc2sgKi8NCisNCisjZGVmaW5lIE1QVV9SQkFSX1JFR0lPTl9Qb3MgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQkFSOiBSRUdJT04gUG9zaXRpb24gKi8NCisjZGVmaW5lIE1QVV9SQkFSX1JFR0lPTl9Nc2sgICAgICAgICAgICAgICAgKDB4RnVsIDw8IE1QVV9SQkFSX1JFR0lPTl9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQkFSOiBSRUdJT04gTWFzayAqLw0KKw0KKy8qIE1QVSBSZWdpb24gQXR0cmlidXRlIGFuZCBTaXplIFJlZ2lzdGVyICovDQorI2RlZmluZSBNUFVfUkFTUl9YTl9Qb3MgICAgICAgICAgICAgICAgICAgIDI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogWE4gUG9zaXRpb24gKi8NCisjZGVmaW5lIE1QVV9SQVNSX1hOX01zayAgICAgICAgICAgICAgICAgICAgKDF1bCA8PCBNUFVfUkFTUl9YTl9Qb3MpICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBYTiBNYXNrICovDQorDQorI2RlZmluZSBNUFVfUkFTUl9BUF9Qb3MgICAgICAgICAgICAgICAgICAgIDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogQVAgUG9zaXRpb24gKi8NCisjZGVmaW5lIE1QVV9SQVNSX0FQX01zayAgICAgICAgICAgICAgICAgICAgKDd1bCA8PCBNUFVfUkFTUl9BUF9Qb3MpICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBBUCBNYXNrICovDQorDQorI2RlZmluZSBNUFVfUkFTUl9URVhfUG9zICAgICAgICAgICAgICAgICAgIDE5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogVEVYIFBvc2l0aW9uICovDQorI2RlZmluZSBNUFVfUkFTUl9URVhfTXNrICAgICAgICAgICAgICAgICAgICg3dWwgPDwgTVBVX1JBU1JfVEVYX1BvcykgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogVEVYIE1hc2sgKi8NCisNCisjZGVmaW5lIE1QVV9SQVNSX1NfUG9zICAgICAgICAgICAgICAgICAgICAgMTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBTaGFyZWFibGUgYml0IFBvc2l0aW9uICovDQorI2RlZmluZSBNUFVfUkFTUl9TX01zayAgICAgICAgICAgICAgICAgICAgICgxdWwgPDwgTVBVX1JBU1JfU19Qb3MpICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogU2hhcmVhYmxlIGJpdCBNYXNrICovDQorDQorI2RlZmluZSBNUFVfUkFTUl9DX1BvcyAgICAgICAgICAgICAgICAgICAgIDE3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogQ2FjaGVhYmxlIGJpdCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgTVBVX1JBU1JfQ19Nc2sgICAgICAgICAgICAgICAgICAgICAoMXVsIDw8IE1QVV9SQVNSX0NfUG9zKSAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IENhY2hlYWJsZSBiaXQgTWFzayAqLw0KKw0KKyNkZWZpbmUgTVBVX1JBU1JfQl9Qb3MgICAgICAgICAgICAgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IEJ1ZmZlcmFibGUgYml0IFBvc2l0aW9uICovDQorI2RlZmluZSBNUFVfUkFTUl9CX01zayAgICAgICAgICAgICAgICAgICAgICgxdWwgPDwgTVBVX1JBU1JfQl9Qb3MpICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogQnVmZmVyYWJsZSBiaXQgTWFzayAqLw0KKw0KKyNkZWZpbmUgTVBVX1JBU1JfU1JEX1BvcyAgICAgICAgICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IFN1Yi1SZWdpb24gRGlzYWJsZSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgTVBVX1JBU1JfU1JEX01zayAgICAgICAgICAgICAgICAgICAoMHhGRnVsIDw8IE1QVV9SQVNSX1NSRF9Qb3MpICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IFN1Yi1SZWdpb24gRGlzYWJsZSBNYXNrICovDQorDQorI2RlZmluZSBNUFVfUkFTUl9TSVpFX1BvcyAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogUmVnaW9uIFNpemUgRmllbGQgUG9zaXRpb24gKi8NCisjZGVmaW5lIE1QVV9SQVNSX1NJWkVfTXNrICAgICAgICAgICAgICAgICAgKDB4MUZ1bCA8PCBNUFVfUkFTUl9TSVpFX1BvcykgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBSZWdpb24gU2l6ZSBGaWVsZCBNYXNrICovDQorDQorI2RlZmluZSBNUFVfUkFTUl9FTkFfUG9zICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogUmVnaW9uIGVuYWJsZSBiaXQgUG9zaXRpb24gKi8NCisjZGVmaW5lIE1QVV9SQVNSX0VOQV9Nc2sgICAgICAgICAgICAgICAgICAgICgweDFGdWwgPDwgTVBVX1JBU1JfRU5BX1BvcykgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBSZWdpb24gZW5hYmxlIGJpdCBEaXNhYmxlIE1hc2sgKi8NCisNCisvKkB9Ki8gLyogZW5kIG9mIGdyb3VwIENNU0lTX0NNM19NUFUgKi8NCisjZW5kaWYNCisNCisNCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX0NvcmVEZWJ1ZyBDTVNJUyBDTTMgQ29yZSBEZWJ1Zw0KKyAgbWVtb3J5IG1hcHBlZCBzdHJ1Y3R1cmUgZm9yIENvcmUgRGVidWcgUmVnaXN0ZXINCisgIEB7DQorICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IERIQ1NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDAwICBEZWJ1ZyBIYWx0aW5nIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlciAgICAqLw0KKyAgX19PICB1aW50MzJfdCBEQ1JTUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwNCAgRGVidWcgQ29yZSBSZWdpc3RlciBTZWxlY3RvciBSZWdpc3RlciAgICAgICAgKi8NCisgIF9fSU8gdWludDMyX3QgRENSRFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDggIERlYnVnIENvcmUgUmVnaXN0ZXIgRGF0YSBSZWdpc3RlciAgICAgICAgICAgICovDQorICBfX0lPIHVpbnQzMl90IERFTUNSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDBDICBEZWJ1ZyBFeGNlcHRpb24gYW5kIE1vbml0b3IgQ29udHJvbCBSZWdpc3RlciAqLw0KK30gQ29yZURlYnVnX1R5cGU7DQorDQorLyogRGVidWcgSGFsdGluZyBDb250cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXIgKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9EQkdLRVlfUG9zICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogREJHS0VZIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfREhDU1JfREJHS0VZX01zayAgICAgICAgICgweEZGRkZ1bCA8PCBDb3JlRGVidWdfREhDU1JfREJHS0VZX1BvcykgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IERCR0tFWSBNYXNrICovDQorDQorI2RlZmluZSBDb3JlRGVidWdfREhDU1JfU19SRVNFVF9TVF9Qb3MgICAgIDI1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IFNfUkVTRVRfU1QgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX1JFU0VUX1NUX01zayAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfU19SRVNFVF9TVF9Qb3MpICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19SRVNFVF9TVCBNYXNrICovDQorDQorI2RlZmluZSBDb3JlRGVidWdfREhDU1JfU19SRVRJUkVfU1RfUG9zICAgIDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IFNfUkVUSVJFX1NUIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfREhDU1JfU19SRVRJUkVfU1RfTXNrICAgICgxdWwgPDwgQ29yZURlYnVnX0RIQ1NSX1NfUkVUSVJFX1NUX1BvcykgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IFNfUkVUSVJFX1NUIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX0xPQ0tVUF9Qb3MgICAgICAgMTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19MT0NLVVAgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX0xPQ0tVUF9Nc2sgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfU19MT0NLVVBfUG9zKSAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19MT0NLVVAgTWFzayAqLw0KKw0KKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX1NfU0xFRVBfUG9zICAgICAgICAxOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBTX1NMRUVQIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfREhDU1JfU19TTEVFUF9Nc2sgICAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RIQ1NSX1NfU0xFRVBfUG9zKSAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IFNfU0xFRVAgTWFzayAqLw0KKw0KKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX1NfSEFMVF9Qb3MgICAgICAgICAxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBTX0hBTFQgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX0hBTFRfTXNrICAgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfU19IQUxUX1BvcykgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19IQUxUIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX1JFR1JEWV9Qb3MgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19SRUdSRFkgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX1JFR1JEWV9Nc2sgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfU19SRUdSRFlfUG9zKSAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19SRUdSRFkgTWFzayAqLw0KKw0KKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX0NfU05BUFNUQUxMX1BvcyAgICAgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBDX1NOQVBTVEFMTCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX0NfU05BUFNUQUxMX01zayAgICAoMXVsIDw8IENvcmVEZWJ1Z19ESENTUl9DX1NOQVBTVEFMTF9Qb3MpICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBDX1NOQVBTVEFMTCBNYXNrICovDQorDQorI2RlZmluZSBDb3JlRGVidWdfREhDU1JfQ19NQVNLSU5UU19Qb3MgICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IENfTUFTS0lOVFMgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9DX01BU0tJTlRTX01zayAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfQ19NQVNLSU5UU19Qb3MpICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogQ19NQVNLSU5UUyBNYXNrICovDQorDQorI2RlZmluZSBDb3JlRGVidWdfREhDU1JfQ19TVEVQX1BvcyAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IENfU1RFUCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX0NfU1RFUF9Nc2sgICAgICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ESENTUl9DX1NURVBfUG9zKSAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBDX1NURVAgTWFzayAqLw0KKw0KKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX0NfSEFMVF9Qb3MgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBDX0hBTFQgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9DX0hBTFRfTXNrICAgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfQ19IQUxUX1BvcykgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogQ19IQUxUIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9DX0RFQlVHRU5fUG9zICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogQ19ERUJVR0VOIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfREhDU1JfQ19ERUJVR0VOX01zayAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RIQ1NSX0NfREVCVUdFTl9Qb3MpICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IENfREVCVUdFTiBNYXNrICovDQorDQorLyogRGVidWcgQ29yZSBSZWdpc3RlciBTZWxlY3RvciBSZWdpc3RlciAqLw0KKyNkZWZpbmUgQ29yZURlYnVnX0RDUlNSX1JFR1duUl9Qb3MgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERDUlNSOiBSRUdXblIgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19EQ1JTUl9SRUdXblJfTXNrICAgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfRENSU1JfUkVHV25SX1BvcykgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBEQ1JTUjogUkVHV25SIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19EQ1JTUl9SRUdTRUxfUG9zICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBEQ1JTUjogUkVHU0VMIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfRENSU1JfUkVHU0VMX01zayAgICAgICAgICgweDFGdWwgPDwgQ29yZURlYnVnX0RDUlNSX1JFR1NFTF9Qb3MpICAgICAgICAgLyohPCBDb3JlRGVidWcgRENSU1I6IFJFR1NFTCBNYXNrICovDQorDQorLyogRGVidWcgRXhjZXB0aW9uIGFuZCBNb25pdG9yIENvbnRyb2wgUmVnaXN0ZXIgKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9UUkNFTkFfUG9zICAgICAgICAgMjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVFJDRU5BIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVFJDRU5BX01zayAgICAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX1RSQ0VOQV9Qb3MpICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFRSQ0VOQSBNYXNrICovDQorDQorI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfTU9OX1JFUV9Qb3MgICAgICAgIDE5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IE1PTl9SRVEgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9NT05fUkVRX01zayAgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfTU9OX1JFUV9Qb3MpICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogTU9OX1JFUSBNYXNrICovDQorDQorI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfTU9OX1NURVBfUG9zICAgICAgIDE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IE1PTl9TVEVQIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfTU9OX1NURVBfTXNrICAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX01PTl9TVEVQX1BvcykgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IE1PTl9TVEVQIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9NT05fUEVORF9Qb3MgICAgICAgMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogTU9OX1BFTkQgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9NT05fUEVORF9Nc2sgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfTU9OX1BFTkRfUG9zKSAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogTU9OX1BFTkQgTWFzayAqLw0KKw0KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX01PTl9FTl9Qb3MgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBNT05fRU4gUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9NT05fRU5fTXNrICAgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfTU9OX0VOX1BvcykgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogTU9OX0VOIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19IQVJERVJSX1BvcyAgICAgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfSEFSREVSUiBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX0hBUkRFUlJfTXNrICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ERU1DUl9WQ19IQVJERVJSX1BvcykgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19IQVJERVJSIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19JTlRFUlJfUG9zICAgICAgIDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfSU5URVJSIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfSU5URVJSX01zayAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX1ZDX0lOVEVSUl9Qb3MpICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX0lOVEVSUiBNYXNrICovDQorDQorI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfQlVTRVJSX1BvcyAgICAgICA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX0JVU0VSUiBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX0JVU0VSUl9Nc2sgICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ERU1DUl9WQ19CVVNFUlJfUG9zKSAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19CVVNFUlIgTWFzayAqLw0KKw0KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX1NUQVRFUlJfUG9zICAgICAgNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19TVEFURVJSIFBvc2l0aW9uICovDQorI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfU1RBVEVSUl9Nc2sgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX1ZDX1NUQVRFUlJfUG9zKSAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX1NUQVRFUlIgTWFzayAqLw0KKw0KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX0NIS0VSUl9Qb3MgICAgICAgNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19DSEtFUlIgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19DSEtFUlJfTXNrICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfVkNfQ0hLRVJSX1BvcykgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfQ0hLRVJSIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19OT0NQRVJSX1BvcyAgICAgIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfTk9DUEVSUiBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX05PQ1BFUlJfTXNrICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ERU1DUl9WQ19OT0NQRVJSX1BvcykgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19OT0NQRVJSIE1hc2sgKi8NCisNCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19NTUVSUl9Qb3MgICAgICAgIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfTU1FUlIgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19NTUVSUl9Nc2sgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfVkNfTU1FUlJfUG9zKSAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfTU1FUlIgTWFzayAqLw0KKw0KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX0NPUkVSRVNFVF9Qb3MgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19DT1JFUkVTRVQgUG9zaXRpb24gKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19DT1JFUkVTRVRfTXNrICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfVkNfQ09SRVJFU0VUX1BvcykgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfQ09SRVJFU0VUIE1hc2sgKi8NCisvKkB9Ki8gLyogZW5kIG9mIGdyb3VwIENNU0lTX0NNM19Db3JlRGVidWcgKi8NCisNCisNCisvKiBNZW1vcnkgbWFwcGluZyBvZiBDb3J0ZXgtTTMgSGFyZHdhcmUgKi8NCisjZGVmaW5lIFNDU19CQVNFICAgICAgICAgICAgKDB4RTAwMEUwMDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXN0ZW0gQ29udHJvbCBTcGFjZSBCYXNlIEFkZHJlc3MgKi8NCisjZGVmaW5lIElUTV9CQVNFICAgICAgICAgICAgKDB4RTAwMDAwMDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gQmFzZSBBZGRyZXNzICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIENvcmVEZWJ1Z19CQVNFICAgICAgKDB4RTAwMEVERjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlIERlYnVnIEJhc2UgQWRkcmVzcyAgICAgICAgICAgKi8NCisjZGVmaW5lIFN5c1RpY2tfQkFTRSAgICAgICAgKFNDU19CQVNFICsgIDB4MDAxMCkgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIEJhc2UgQWRkcmVzcyAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIE5WSUNfQkFTRSAgICAgICAgICAgKFNDU19CQVNFICsgIDB4MDEwMCkgICAgICAgICAgICAgICAgICAgICAgLyohPCBOVklDIEJhc2UgQWRkcmVzcyAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIFNDQl9CQVNFICAgICAgICAgICAgKFNDU19CQVNFICsgIDB4MEQwMCkgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXN0ZW0gQ29udHJvbCBCbG9jayBCYXNlIEFkZHJlc3MgKi8NCisNCisjZGVmaW5lIEludGVycnVwdFR5cGUgICAgICAgKChJbnRlcnJ1cHRUeXBlX1R5cGUgKikgU0NTX0JBU0UpICAgICAgICAgLyohPCBJbnRlcnJ1cHQgVHlwZSBSZWdpc3RlciAgICAgICAgICAgKi8NCisjZGVmaW5lIFNDQiAgICAgICAgICAgICAgICAgKChTQ0JfVHlwZSAqKSAgICAgICAgICAgU0NCX0JBU0UpICAgICAgICAgLyohPCBTQ0IgY29uZmlndXJhdGlvbiBzdHJ1Y3QgICAgICAgICAgKi8NCisjZGVmaW5lIFN5c1RpY2sgICAgICAgICAgICAgKChTeXNUaWNrX1R5cGUgKikgICAgICAgU3lzVGlja19CQVNFKSAgICAgLyohPCBTeXNUaWNrIGNvbmZpZ3VyYXRpb24gc3RydWN0ICAgICAgKi8NCisjZGVmaW5lIE5WSUMgICAgICAgICAgICAgICAgKChOVklDX1R5cGUgKikgICAgICAgICAgTlZJQ19CQVNFKSAgICAgICAgLyohPCBOVklDIGNvbmZpZ3VyYXRpb24gc3RydWN0ICAgICAgICAgKi8NCisjZGVmaW5lIElUTSAgICAgICAgICAgICAgICAgKChJVE1fVHlwZSAqKSAgICAgICAgICAgSVRNX0JBU0UpICAgICAgICAgLyohPCBJVE0gY29uZmlndXJhdGlvbiBzdHJ1Y3QgICAgICAgICAgKi8NCisjZGVmaW5lIENvcmVEZWJ1ZyAgICAgICAgICAgKChDb3JlRGVidWdfVHlwZSAqKSAgICAgQ29yZURlYnVnX0JBU0UpICAgLyohPCBDb3JlIERlYnVnIGNvbmZpZ3VyYXRpb24gc3RydWN0ICAgKi8NCisNCisjaWYgZGVmaW5lZCAoX19NUFVfUFJFU0VOVCkgJiYgKF9fTVBVX1BSRVNFTlQgPT0gMSkNCisgICNkZWZpbmUgTVBVX0JBU0UgICAgICAgICAgKFNDU19CQVNFICsgIDB4MEQ5MCkgICAgICAgICAgICAgICAgICAgICAgLyohPCBNZW1vcnkgUHJvdGVjdGlvbiBVbml0ICAgICAgICAgICAgKi8NCisgICNkZWZpbmUgTVBVICAgICAgICAgICAgICAgKChNUFVfVHlwZSopICAgICAgICAgICAgTVBVX0JBU0UpICAgICAgICAgLyohPCBNZW1vcnkgUHJvdGVjdGlvbiBVbml0ICAgICAgICAgICAgKi8NCisjZW5kaWYNCisNCisvKkB9Ki8gLyogZW5kIG9mIGdyb3VwIENNU0lTX0NNM19jb3JlX3JlZ2lzdGVyICovDQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllcg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmIGRlZmluZWQgKCBfX0NDX0FSTSAgICkNCisgICNkZWZpbmUgX19BU00gICAgICAgICAgICBfX2FzbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBhc20ga2V5d29yZCBmb3IgQVJNIENvbXBpbGVyICAgICAgICAgICovDQorICAjZGVmaW5lIF9fSU5MSU5FICAgICAgICAgX19pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgaW5saW5lIGtleXdvcmQgZm9yIEFSTSBDb21waWxlciAgICAgICAqLw0KKw0KKyNlbGlmIGRlZmluZWQgKCBfX0lDQ0FSTV9fICkNCisgICNkZWZpbmUgX19BU00gICAgICAgICAgIF9fYXNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBhc20ga2V5d29yZCBmb3IgSUFSIENvbXBpbGVyICAgICAgICAgICovDQorICAjZGVmaW5lIF9fSU5MSU5FICAgICAgICBpbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgaW5saW5lIGtleXdvcmQgZm9yIElBUiBDb21waWxlci4gT25seSBhdmFpYWJsZSBpbiBIaWdoIG9wdGltaXphdGlvbiBtb2RlISAqLw0KKw0KKyNlbGlmIGRlZmluZWQgICAoICBfX0dOVUNfXyAgKQ0KKyAgI2RlZmluZSBfX0FTTSAgICAgICAgICAgIF9fYXNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGFzbSBrZXl3b3JkIGZvciBHTlUgQ29tcGlsZXIgICAgICAgICAgKi8NCisgICNkZWZpbmUgX19JTkxJTkUgICAgICAgICBpbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBpbmxpbmUga2V5d29yZCBmb3IgR05VIENvbXBpbGVyICAgICAgICovDQorDQorI2VsaWYgZGVmaW5lZCAgICggIF9fVEFTS0lOR19fICApDQorICAjZGVmaW5lIF9fQVNNICAgICAgICAgICAgX19hc20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgYXNtIGtleXdvcmQgZm9yIFRBU0tJTkcgQ29tcGlsZXIgICAgICAqLw0KKyAgI2RlZmluZSBfX0lOTElORSAgICAgICAgIGlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGlubGluZSBrZXl3b3JkIGZvciBUQVNLSU5HIENvbXBpbGVyICAgKi8NCisNCisjZW5kaWYNCisNCisNCisvKiAjIyMjIyMjIyMjIyMjIyMjIyMjICBDb21waWxlciBzcGVjaWZpYyBJbnRyaW5zaWNzICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgKi8NCisNCisjaWYgZGVmaW5lZCAoIF9fQ0NfQVJNICAgKSAvKi0tLS0tLS0tLS0tLS0tLS0tLVJlYWxWaWV3IENvbXBpbGVyIC0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiBBUk0gYXJtY2Mgc3BlY2lmaWMgZnVuY3Rpb25zICovDQorDQorI2RlZmluZSBfX2VuYWJsZV9mYXVsdF9pcnEgICAgICAgICAgICAgICAgX19lbmFibGVfZmlxDQorI2RlZmluZSBfX2Rpc2FibGVfZmF1bHRfaXJxICAgICAgICAgICAgICAgX19kaXNhYmxlX2ZpcQ0KKw0KKyNkZWZpbmUgX19OT1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbm9wDQorI2RlZmluZSBfX1dGSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX193ZmkNCisjZGVmaW5lIF9fV0ZFICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3dmZQ0KKyNkZWZpbmUgX19TRVYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc2V2DQorI2RlZmluZSBfX0lTQigpICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pc2IoMCkNCisjZGVmaW5lIF9fRFNCKCkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RzYigwKQ0KKyNkZWZpbmUgX19ETUIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZG1iKDApDQorI2RlZmluZSBfX1JFViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXYNCisjZGVmaW5lIF9fUkJJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JiaXQNCisjZGVmaW5lIF9fTERSRVhCKHB0cikgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKSBfX2xkcmV4KHB0cikpDQorI2RlZmluZSBfX0xEUkVYSChwdHIpICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9ydCkgX19sZHJleChwdHIpKQ0KKyNkZWZpbmUgX19MRFJFWFcocHRyKSAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgaW50ICApIF9fbGRyZXgocHRyKSkNCisjZGVmaW5lIF9fU1RSRVhCKHZhbHVlLCBwdHIpICAgICAgICAgICAgICBfX3N0cmV4KHZhbHVlLCBwdHIpDQorI2RlZmluZSBfX1NUUkVYSCh2YWx1ZSwgcHRyKSAgICAgICAgICAgICAgX19zdHJleCh2YWx1ZSwgcHRyKQ0KKyNkZWZpbmUgX19TVFJFWFcodmFsdWUsIHB0cikgICAgICAgICAgICAgIF9fc3RyZXgodmFsdWUsIHB0cikNCisNCisNCisvKiBpbnRyaW5zaWMgdW5zaWduZWQgbG9uZyBsb25nIF9fbGRyZXhkKHZvbGF0aWxlIHZvaWQgKnB0cikgKi8NCisvKiBpbnRyaW5zaWMgaW50IF9fc3RyZXhkKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWwsIHZvbGF0aWxlIHZvaWQgKnB0cikgKi8NCisvKiBpbnRyaW5zaWMgdm9pZCBfX2VuYWJsZV9pcnEoKTsgICAgICovDQorLyogaW50cmluc2ljIHZvaWQgX19kaXNhYmxlX2lycSgpOyAgICAqLw0KKw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEByZXR1cm4gUHJvY2Vzc1N0YWNrUG9pbnRlcg0KKyAqDQorICogUmV0dXJuIHRoZSBhY3R1YWwgcHJvY2VzcyBzdGFjayBwb2ludGVyDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fZ2V0X1BTUCh2b2lkKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcGFyYW0gIHRvcE9mUHJvY1N0YWNrICBQcm9jZXNzIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEFzc2lnbiB0aGUgdmFsdWUgUHJvY2Vzc1N0YWNrUG9pbnRlciB0byB0aGUgTVNQDQorICogKHByb2Nlc3Mgc3RhY2sgcG9pbnRlcikgQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB2b2lkIF9fc2V0X1BTUCh1aW50MzJfdCB0b3BPZlByb2NTdGFjayk7DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHJldHVybiBNYWluIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgTVNQIChtYWluIHN0YWNrIHBvaW50ZXIpDQorICogQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX2dldF9NU1Aodm9pZCk7DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHBhcmFtICB0b3BPZk1haW5TdGFjayAgTWFpbiBTdGFjayBQb2ludGVyDQorICoNCisgKiBBc3NpZ24gdGhlIHZhbHVlIG1haW5TdGFja1BvaW50ZXIgdG8gdGhlIE1TUA0KKyAqIChtYWluIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXINCisgKi8NCitleHRlcm4gdm9pZCBfX3NldF9NU1AodWludDMyX3QgdG9wT2ZNYWluU3RhY2spOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV2ZXJzZSBieXRlIG9yZGVyIGluIHVuc2lnbmVkIHNob3J0IHZhbHVlDQorICoNCisgKiBAcGFyYW0gICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQ0KKyAqIEByZXR1cm4gICAgICAgICByZXZlcnNlZCB2YWx1ZQ0KKyAqDQorICogUmV2ZXJzZSBieXRlIG9yZGVyIGluIHVuc2lnbmVkIHNob3J0IHZhbHVlDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fUkVWMTYodWludDE2X3QgdmFsdWUpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV2ZXJzZSBieXRlIG9yZGVyIGluIHNpZ25lZCBzaG9ydCB2YWx1ZSB3aXRoIHNpZ24gZXh0ZW5zaW9uIHRvIGludGVnZXINCisgKg0KKyAqIEBwYXJhbSAgIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlDQorICogQHJldHVybiAgICAgICAgIHJldmVyc2VkIHZhbHVlDQorICoNCisgKiBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gc2lnbmVkIHNob3J0IHZhbHVlIHdpdGggc2lnbiBleHRlbnNpb24gdG8gaW50ZWdlcg0KKyAqLw0KK2V4dGVybiBpbnQzMl90IF9fUkVWU0goaW50MTZfdCB2YWx1ZSk7DQorDQorDQorI2lmIChfX0FSTUNDX1ZFUlNJT04gPCA0MDAwMDApDQorDQorLyoqDQorICogQGJyaWVmICBSZW1vdmUgdGhlIGV4Y2x1c2l2ZSBsb2NrIGNyZWF0ZWQgYnkgbGRyZXgNCisgKg0KKyAqIFJlbW92ZXMgdGhlIGV4Y2x1c2l2ZSBsb2NrIHdoaWNoIGlzIGNyZWF0ZWQgYnkgbGRyZXguDQorICovDQorZXh0ZXJuIHZvaWQgX19DTFJFWCh2b2lkKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgQmFzZSBQcmlvcml0eSB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBCYXNlUHJpb3JpdHkNCisgKg0KKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgYmFzZSBwcmlvcml0eSByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX2dldF9CQVNFUFJJKHZvaWQpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBCYXNlIFByaW9yaXR5IHZhbHVlDQorICoNCisgKiBAcGFyYW0gIGJhc2VQcmkgIEJhc2VQcmlvcml0eQ0KKyAqDQorICogU2V0IHRoZSBiYXNlIHByaW9yaXR5IHJlZ2lzdGVyDQorICovDQorZXh0ZXJuIHZvaWQgX19zZXRfQkFTRVBSSSh1aW50MzJfdCBiYXNlUHJpKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBQcmlNYXNrDQorICoNCisgKiBSZXR1cm4gc3RhdGUgb2YgdGhlIHByaW9yaXR5IG1hc2sgYml0IGZyb20gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXINCisgKi8NCitleHRlcm4gdWludDMyX3QgX19nZXRfUFJJTUFTSyh2b2lkKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICAgcHJpTWFzayAgUHJpTWFzaw0KKyAqDQorICogU2V0IHRoZSBwcmlvcml0eSBtYXNrIGJpdCBpbiB0aGUgcHJpb3JpdHkgbWFzayByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB2b2lkIF9fc2V0X1BSSU1BU0sodWludDMyX3QgcHJpTWFzayk7DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIEZhdWx0IE1hc2sgdmFsdWUNCisgKg0KKyAqIEByZXR1cm4gRmF1bHRNYXNrDQorICoNCisgKiBSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGZhdWx0IG1hc2sgcmVnaXN0ZXINCisgKi8NCitleHRlcm4gdWludDMyX3QgX19nZXRfRkFVTFRNQVNLKHZvaWQpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBGYXVsdCBNYXNrIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIGZhdWx0TWFzayBmYXVsdE1hc2sgdmFsdWUNCisgKg0KKyAqIFNldCB0aGUgZmF1bHQgbWFzayByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB2b2lkIF9fc2V0X0ZBVUxUTUFTSyh1aW50MzJfdCBmYXVsdE1hc2spOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlDQorICoNCisgKiBAcmV0dXJuIENvbnRyb2wgdmFsdWUNCisgKg0KKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgY29udHJvbCByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX2dldF9DT05UUk9MKHZvaWQpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIGNvbnRyb2wgIENvbnRyb2wgdmFsdWUNCisgKg0KKyAqIFNldCB0aGUgY29udHJvbCByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB2b2lkIF9fc2V0X0NPTlRST0wodWludDMyX3QgY29udHJvbCk7DQorDQorI2Vsc2UgIC8qIChfX0FSTUNDX1ZFUlNJT04gPj0gNDAwMDAwKSAgKi8NCisNCisvKioNCisgKiBAYnJpZWYgIFJlbW92ZSB0aGUgZXhjbHVzaXZlIGxvY2sgY3JlYXRlZCBieSBsZHJleA0KKyAqDQorICogUmVtb3ZlcyB0aGUgZXhjbHVzaXZlIGxvY2sgd2hpY2ggaXMgY3JlYXRlZCBieSBsZHJleC4NCisgKi8NCisjZGVmaW5lIF9fQ0xSRVggICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NscmV4DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIEJhc2UgUHJpb3JpdHkgdmFsdWUNCisgKg0KKyAqIEByZXR1cm4gQmFzZVByaW9yaXR5DQorICoNCisgKiBSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGJhc2UgcHJpb3JpdHkgcmVnaXN0ZXINCisgKi8NCitzdGF0aWMgX19JTkxJTkUgdWludDMyX3QgIF9fZ2V0X0JBU0VQUkkodm9pZCkNCit7DQorICByZWdpc3RlciB1aW50MzJfdCBfX3JlZ0Jhc2VQcmkgICAgICAgICBfX0FTTSgiYmFzZXByaSIpOw0KKyAgcmV0dXJuKF9fcmVnQmFzZVByaSk7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBCYXNlIFByaW9yaXR5IHZhbHVlDQorICoNCisgKiBAcGFyYW0gIGJhc2VQcmkgIEJhc2VQcmlvcml0eQ0KKyAqDQorICogU2V0IHRoZSBiYXNlIHByaW9yaXR5IHJlZ2lzdGVyDQorICovDQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19zZXRfQkFTRVBSSSh1aW50MzJfdCBiYXNlUHJpKQ0KK3sNCisgIHJlZ2lzdGVyIHVpbnQzMl90IF9fcmVnQmFzZVByaSAgICAgICAgIF9fQVNNKCJiYXNlcHJpIik7DQorICBfX3JlZ0Jhc2VQcmkgPSAoYmFzZVByaSAmIDB4ZmYpOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBQcmlNYXNrDQorICoNCisgKiBSZXR1cm4gc3RhdGUgb2YgdGhlIHByaW9yaXR5IG1hc2sgYml0IGZyb20gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXINCisgKi8NCitzdGF0aWMgX19JTkxJTkUgdWludDMyX3QgX19nZXRfUFJJTUFTSyh2b2lkKQ0KK3sNCisgIHJlZ2lzdGVyIHVpbnQzMl90IF9fcmVnUHJpTWFzayAgICAgICAgIF9fQVNNKCJwcmltYXNrIik7DQorICByZXR1cm4oX19yZWdQcmlNYXNrKTsNCit9DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIFByaW9yaXR5IE1hc2sgdmFsdWUNCisgKg0KKyAqIEBwYXJhbSAgcHJpTWFzayAgUHJpTWFzaw0KKyAqDQorICogU2V0IHRoZSBwcmlvcml0eSBtYXNrIGJpdCBpbiB0aGUgcHJpb3JpdHkgbWFzayByZWdpc3Rlcg0KKyAqLw0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fc2V0X1BSSU1BU0sodWludDMyX3QgcHJpTWFzaykNCit7DQorICByZWdpc3RlciB1aW50MzJfdCBfX3JlZ1ByaU1hc2sgICAgICAgICBfX0FTTSgicHJpbWFzayIpOw0KKyAgX19yZWdQcmlNYXNrID0gKHByaU1hc2spOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgRmF1bHQgTWFzayB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBGYXVsdE1hc2sNCisgKg0KKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgZmF1bHQgbWFzayByZWdpc3Rlcg0KKyAqLw0KK3N0YXRpYyBfX0lOTElORSB1aW50MzJfdCBfX2dldF9GQVVMVE1BU0sodm9pZCkNCit7DQorICByZWdpc3RlciB1aW50MzJfdCBfX3JlZ0ZhdWx0TWFzayAgICAgICBfX0FTTSgiZmF1bHRtYXNrIik7DQorICByZXR1cm4oX19yZWdGYXVsdE1hc2spOw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgRmF1bHQgTWFzayB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICBmYXVsdE1hc2sgIGZhdWx0TWFzayB2YWx1ZQ0KKyAqDQorICogU2V0IHRoZSBmYXVsdCBtYXNrIHJlZ2lzdGVyDQorICovDQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19zZXRfRkFVTFRNQVNLKHVpbnQzMl90IGZhdWx0TWFzaykNCit7DQorICByZWdpc3RlciB1aW50MzJfdCBfX3JlZ0ZhdWx0TWFzayAgICAgICBfX0FTTSgiZmF1bHRtYXNrIik7DQorICBfX3JlZ0ZhdWx0TWFzayA9IChmYXVsdE1hc2sgJiAxKTsNCit9DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUNCisgKg0KKyAqIEByZXR1cm4gQ29udHJvbCB2YWx1ZQ0KKyAqDQorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyDQorICovDQorc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IF9fZ2V0X0NPTlRST0wodm9pZCkNCit7DQorICByZWdpc3RlciB1aW50MzJfdCBfX3JlZ0NvbnRyb2wgICAgICAgICBfX0FTTSgiY29udHJvbCIpOw0KKyAgcmV0dXJuKF9fcmVnQ29udHJvbCk7DQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIGNvbnRyb2wgIENvbnRyb2wgdmFsdWUNCisgKg0KKyAqIFNldCB0aGUgY29udHJvbCByZWdpc3Rlcg0KKyAqLw0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fc2V0X0NPTlRST0wodWludDMyX3QgY29udHJvbCkNCit7DQorICByZWdpc3RlciB1aW50MzJfdCBfX3JlZ0NvbnRyb2wgICAgICAgICBfX0FTTSgiY29udHJvbCIpOw0KKyAgX19yZWdDb250cm9sID0gY29udHJvbDsNCit9DQorDQorI2VuZGlmIC8qIF9fQVJNQ0NfVkVSU0lPTiAgKi8NCisNCisNCisNCisjZWxpZiAoZGVmaW5lZCAoX19JQ0NBUk1fXykpIC8qLS0tLS0tLS0tLS0tLS0tLS0tIElDQyBDb21waWxlciAtLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiBJQVIgaWNjYXJtIHNwZWNpZmljIGZ1bmN0aW9ucyAqLw0KKw0KKyNkZWZpbmUgX19lbmFibGVfaXJxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19lbmFibGVfaW50ZXJydXB0ICAgICAgICAvKiE8IGdsb2JhbCBJbnRlcnJ1cHQgZW5hYmxlICovDQorI2RlZmluZSBfX2Rpc2FibGVfaXJxICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Rpc2FibGVfaW50ZXJydXB0ICAgICAgIC8qITwgZ2xvYmFsIEludGVycnVwdCBkaXNhYmxlICovDQorDQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19lbmFibGVfZmF1bHRfaXJxKCkgICAgICAgICB7IF9fQVNNICgiY3BzaWUgZiIpOyB9DQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19kaXNhYmxlX2ZhdWx0X2lycSgpICAgICAgICB7IF9fQVNNICgiY3BzaWQgZiIpOyB9DQorDQorI2RlZmluZSBfX05PUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25vX29wZXJhdGlvbiAgICAgICAgICAgIC8qITwgbm8gb3BlcmF0aW9uIGludHJpbnNpYyBpbiBJQVIgQ29tcGlsZXIgKi8NCitzdGF0aWMgX19JTkxJTkUgIHZvaWQgX19XRkkoKSAgICAgICAgICAgICAgICAgICAgIHsgX19BU00gKCJ3ZmkiKTsgfQ0KK3N0YXRpYyBfX0lOTElORSAgdm9pZCBfX1dGRSgpICAgICAgICAgICAgICAgICAgICAgeyBfX0FTTSAoIndmZSIpOyB9DQorc3RhdGljIF9fSU5MSU5FICB2b2lkIF9fU0VWKCkgICAgICAgICAgICAgICAgICAgICB7IF9fQVNNICgic2V2Iik7IH0NCitzdGF0aWMgX19JTkxJTkUgIHZvaWQgX19DTFJFWCgpICAgICAgICAgICAgICAgICAgIHsgX19BU00gKCJjbHJleCIpOyB9DQorDQorLyogaW50cmluc2ljIHZvaWQgX19JU0Iodm9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiBpbnRyaW5zaWMgdm9pZCBfX0RTQih2b2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qIGludHJpbnNpYyB2b2lkIF9fRE1CKHZvaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogaW50cmluc2ljIHZvaWQgX19zZXRfUFJJTUFTSygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiBpbnRyaW5zaWMgdm9pZCBfX2dldF9QUklNQVNLKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qIGludHJpbnNpYyB2b2lkIF9fc2V0X0ZBVUxUTUFTSygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogaW50cmluc2ljIHZvaWQgX19nZXRfRkFVTFRNQVNLKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiBpbnRyaW5zaWMgdWludDMyX3QgX19SRVYodWludDMyX3QgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qIGludHJpbnNpYyB1aW50MzJfdCBfX1JFVlNIKHVpbnQzMl90IHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICovDQorLyogaW50cmluc2ljIHVuc2lnbmVkIGxvbmcgX19TVFJFWCh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsgKi8NCisvKiBpbnRyaW5zaWMgdW5zaWduZWQgbG9uZyBfX0xEUkVYKHVuc2lnbmVkIGxvbmcgKik7ICAgICAgICAgICAgICAqLw0KKw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEByZXR1cm4gUHJvY2Vzc1N0YWNrUG9pbnRlcg0KKyAqDQorICogUmV0dXJuIHRoZSBhY3R1YWwgcHJvY2VzcyBzdGFjayBwb2ludGVyDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fZ2V0X1BTUCh2b2lkKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcGFyYW0gIHRvcE9mUHJvY1N0YWNrICBQcm9jZXNzIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEFzc2lnbiB0aGUgdmFsdWUgUHJvY2Vzc1N0YWNrUG9pbnRlciB0byB0aGUgTVNQDQorICogKHByb2Nlc3Mgc3RhY2sgcG9pbnRlcikgQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB2b2lkIF9fc2V0X1BTUCh1aW50MzJfdCB0b3BPZlByb2NTdGFjayk7DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHJldHVybiBNYWluIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgTVNQIChtYWluIHN0YWNrIHBvaW50ZXIpDQorICogQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX2dldF9NU1Aodm9pZCk7DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHBhcmFtICB0b3BPZk1haW5TdGFjayAgTWFpbiBTdGFjayBQb2ludGVyDQorICoNCisgKiBBc3NpZ24gdGhlIHZhbHVlIG1haW5TdGFja1BvaW50ZXIgdG8gdGhlIE1TUA0KKyAqIChtYWluIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXINCisgKi8NCitleHRlcm4gdm9pZCBfX3NldF9NU1AodWludDMyX3QgdG9wT2ZNYWluU3RhY2spOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV2ZXJzZSBieXRlIG9yZGVyIGluIHVuc2lnbmVkIHNob3J0IHZhbHVlDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlDQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUNCisgKg0KKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQ0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX1JFVjE2KHVpbnQxNl90IHZhbHVlKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYml0IG9yZGVyIG9mIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlDQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUNCisgKg0KKyAqIFJldmVyc2UgYml0IG9yZGVyIG9mIHZhbHVlDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fUkJJVCh1aW50MzJfdCB2YWx1ZSk7DQorDQorLyoqDQorICogQGJyaWVmICBMRFIgRXhjbHVzaXZlICg4IGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHZhbHVlIG9mICgqYWRkcmVzcykNCisgKg0KKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgOCBiaXQgdmFsdWVzKQ0KKyAqLw0KK2V4dGVybiB1aW50OF90IF9fTERSRVhCKHVpbnQ4X3QgKmFkZHIpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgTERSIEV4Y2x1c2l2ZSAoMTYgYml0KQ0KKyAqDQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyDQorICogQHJldHVybiAgICAgICAgdmFsdWUgb2YgKCphZGRyZXNzKQ0KKyAqDQorICogRXhjbHVzaXZlIExEUiBjb21tYW5kIGZvciAxNiBiaXQgdmFsdWVzDQorICovDQorZXh0ZXJuIHVpbnQxNl90IF9fTERSRVhIKHVpbnQxNl90ICphZGRyKTsNCisNCisvKioNCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDMyIGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHZhbHVlIG9mICgqYWRkcmVzcykNCisgKg0KKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgMzIgYml0IHZhbHVlcw0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX0xEUkVYVyh1aW50MzJfdCAqYWRkcik7DQorDQorLyoqDQorICogQGJyaWVmICBTVFIgRXhjbHVzaXZlICg4IGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHN0b3JlDQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyDQorICogQHJldHVybiAgICAgICAgc3VjY2Vzc2Z1bCAvIGZhaWxlZA0KKyAqDQorICogRXhjbHVzaXZlIFNUUiBjb21tYW5kIGZvciA4IGJpdCB2YWx1ZXMNCisgKi8NCitleHRlcm4gdWludDMyX3QgX19TVFJFWEIodWludDhfdCB2YWx1ZSwgdWludDhfdCAqYWRkcik7DQorDQorLyoqDQorICogQGJyaWVmICBTVFIgRXhjbHVzaXZlICgxNiBiaXQpDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byBzdG9yZQ0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHN1Y2Nlc3NmdWwgLyBmYWlsZWQNCisgKg0KKyAqIEV4Y2x1c2l2ZSBTVFIgY29tbWFuZCBmb3IgMTYgYml0IHZhbHVlcw0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX1NUUkVYSCh1aW50MTZfdCB2YWx1ZSwgdWludDE2X3QgKmFkZHIpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoMzIgYml0KQ0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gc3RvcmUNCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXINCisgKiBAcmV0dXJuICAgICAgICBzdWNjZXNzZnVsIC8gZmFpbGVkDQorICoNCisgKiBFeGNsdXNpdmUgU1RSIGNvbW1hbmQgZm9yIDMyIGJpdCB2YWx1ZXMNCisgKi8NCitleHRlcm4gdWludDMyX3QgX19TVFJFWFcodWludDMyX3QgdmFsdWUsIHVpbnQzMl90ICphZGRyKTsNCisNCisNCisNCisjZWxpZiAoZGVmaW5lZCAoX19HTlVDX18pKSAvKi0tLS0tLS0tLS0tLS0tLS0tLSBHTlUgQ29tcGlsZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiBHTlUgZ2NjIHNwZWNpZmljIGZ1bmN0aW9ucyAqLw0KKw0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fZW5hYmxlX2lycSgpICAgICAgICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoImNwc2llIGkiKTsgfQ0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fZGlzYWJsZV9pcnEoKSAgICAgICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoImNwc2lkIGkiKTsgfQ0KKw0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fZW5hYmxlX2ZhdWx0X2lycSgpICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoImNwc2llIGYiKTsgfQ0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fZGlzYWJsZV9mYXVsdF9pcnEoKSAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoImNwc2lkIGYiKTsgfQ0KKw0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fTk9QKCkgICAgICAgICAgICAgICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoIm5vcCIpOyB9DQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19XRkkoKSAgICAgICAgICAgICAgICAgICAgICB7IF9fQVNNIHZvbGF0aWxlICgid2ZpIik7IH0NCitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX1dGRSgpICAgICAgICAgICAgICAgICAgICAgIHsgX19BU00gdm9sYXRpbGUgKCJ3ZmUiKTsgfQ0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fU0VWKCkgICAgICAgICAgICAgICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoInNldiIpOyB9DQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19JU0IoKSAgICAgICAgICAgICAgICAgICAgICB7IF9fQVNNIHZvbGF0aWxlICgiaXNiIik7IH0NCitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX0RTQigpICAgICAgICAgICAgICAgICAgICAgIHsgX19BU00gdm9sYXRpbGUgKCJkc2IiKTsgfQ0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fRE1CKCkgICAgICAgICAgICAgICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoImRtYiIpOyB9DQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19DTFJFWCgpICAgICAgICAgICAgICAgICAgICB7IF9fQVNNIHZvbGF0aWxlICgiY2xyZXgiKTsgfQ0KKw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEByZXR1cm4gUHJvY2Vzc1N0YWNrUG9pbnRlcg0KKyAqDQorICogUmV0dXJuIHRoZSBhY3R1YWwgcHJvY2VzcyBzdGFjayBwb2ludGVyDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fZ2V0X1BTUCh2b2lkKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyDQorICoNCisgKiBAcGFyYW0gIHRvcE9mUHJvY1N0YWNrICBQcm9jZXNzIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIEFzc2lnbiB0aGUgdmFsdWUgUHJvY2Vzc1N0YWNrUG9pbnRlciB0byB0aGUgTVNQDQorICogKHByb2Nlc3Mgc3RhY2sgcG9pbnRlcikgQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB2b2lkIF9fc2V0X1BTUCh1aW50MzJfdCB0b3BPZlByb2NTdGFjayk7DQorDQorLyoqDQorICogQGJyaWVmICBSZXR1cm4gdGhlIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHJldHVybiBNYWluIFN0YWNrIFBvaW50ZXINCisgKg0KKyAqIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgTVNQIChtYWluIHN0YWNrIHBvaW50ZXIpDQorICogQ29ydGV4IHByb2Nlc3NvciByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX2dldF9NU1Aodm9pZCk7DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIE1haW4gU3RhY2sgUG9pbnRlcg0KKyAqDQorICogQHBhcmFtICB0b3BPZk1haW5TdGFjayAgTWFpbiBTdGFjayBQb2ludGVyDQorICoNCisgKiBBc3NpZ24gdGhlIHZhbHVlIG1haW5TdGFja1BvaW50ZXIgdG8gdGhlIE1TUA0KKyAqIChtYWluIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXINCisgKi8NCitleHRlcm4gdm9pZCBfX3NldF9NU1AodWludDMyX3QgdG9wT2ZNYWluU3RhY2spOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBCYXNlIFByaW9yaXR5IHZhbHVlDQorICoNCisgKiBAcmV0dXJuIEJhc2VQcmlvcml0eQ0KKyAqDQorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBiYXNlIHByaW9yaXR5IHJlZ2lzdGVyDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fZ2V0X0JBU0VQUkkodm9pZCk7DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIEJhc2UgUHJpb3JpdHkgdmFsdWUNCisgKg0KKyAqIEBwYXJhbSAgYmFzZVByaSAgQmFzZVByaW9yaXR5DQorICoNCisgKiBTZXQgdGhlIGJhc2UgcHJpb3JpdHkgcmVnaXN0ZXINCisgKi8NCitleHRlcm4gdm9pZCBfX3NldF9CQVNFUFJJKHVpbnQzMl90IGJhc2VQcmkpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBQcmlvcml0eSBNYXNrIHZhbHVlDQorICoNCisgKiBAcmV0dXJuIFByaU1hc2sNCisgKg0KKyAqIFJldHVybiBzdGF0ZSBvZiB0aGUgcHJpb3JpdHkgbWFzayBiaXQgZnJvbSB0aGUgcHJpb3JpdHkgbWFzayByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCAgX19nZXRfUFJJTUFTSyh2b2lkKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFNldCB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICBwcmlNYXNrICBQcmlNYXNrDQorICoNCisgKiBTZXQgdGhlIHByaW9yaXR5IG1hc2sgYml0IGluIHRoZSBwcmlvcml0eSBtYXNrIHJlZ2lzdGVyDQorICovDQorZXh0ZXJuIHZvaWQgX19zZXRfUFJJTUFTSyh1aW50MzJfdCBwcmlNYXNrKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFJldHVybiB0aGUgRmF1bHQgTWFzayB2YWx1ZQ0KKyAqDQorICogQHJldHVybiBGYXVsdE1hc2sNCisgKg0KKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgZmF1bHQgbWFzayByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX2dldF9GQVVMVE1BU0sodm9pZCk7DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIEZhdWx0IE1hc2sgdmFsdWUNCisgKg0KKyAqIEBwYXJhbSAgZmF1bHRNYXNrICBmYXVsdE1hc2sgdmFsdWUNCisgKg0KKyAqIFNldCB0aGUgZmF1bHQgbWFzayByZWdpc3Rlcg0KKyAqLw0KK2V4dGVybiB2b2lkIF9fc2V0X0ZBVUxUTUFTSyh1aW50MzJfdCBmYXVsdE1hc2spOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgUmV0dXJuIHRoZSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlDQorKg0KKyogIEByZXR1cm4gQ29udHJvbCB2YWx1ZQ0KKyAqDQorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fZ2V0X0NPTlRST0wodm9pZCk7DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUNCisgKg0KKyAqIEBwYXJhbSAgY29udHJvbCAgQ29udHJvbCB2YWx1ZQ0KKyAqDQorICogU2V0IHRoZSBjb250cm9sIHJlZ2lzdGVyDQorICovDQorZXh0ZXJuIHZvaWQgX19zZXRfQ09OVFJPTCh1aW50MzJfdCBjb250cm9sKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBpbnRlZ2VyIHZhbHVlDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlDQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUNCisgKg0KKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBpbnRlZ2VyIHZhbHVlDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fUkVWKHVpbnQzMl90IHZhbHVlKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQ0KKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlDQorICoNCisgKiBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gdW5zaWduZWQgc2hvcnQgdmFsdWUNCisgKi8NCitleHRlcm4gdWludDMyX3QgX19SRVYxNih1aW50MTZfdCB2YWx1ZSk7DQorDQorLyoqDQorICogQGJyaWVmICBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gc2lnbmVkIHNob3J0IHZhbHVlIHdpdGggc2lnbiBleHRlbnNpb24gdG8gaW50ZWdlcg0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQ0KKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlDQorICoNCisgKiBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gc2lnbmVkIHNob3J0IHZhbHVlIHdpdGggc2lnbiBleHRlbnNpb24gdG8gaW50ZWdlcg0KKyAqLw0KK2V4dGVybiBpbnQzMl90IF9fUkVWU0goaW50MTZfdCB2YWx1ZSk7DQorDQorLyoqDQorICogQGJyaWVmICBSZXZlcnNlIGJpdCBvcmRlciBvZiB2YWx1ZQ0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQ0KKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlDQorICoNCisgKiBSZXZlcnNlIGJpdCBvcmRlciBvZiB2YWx1ZQ0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX1JCSVQodWludDMyX3QgdmFsdWUpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgTERSIEV4Y2x1c2l2ZSAoOCBiaXQpDQorICoNCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXINCisgKiBAcmV0dXJuICAgICAgICB2YWx1ZSBvZiAoKmFkZHJlc3MpDQorICoNCisgKiBFeGNsdXNpdmUgTERSIGNvbW1hbmQgZm9yIDggYml0IHZhbHVlDQorICovDQorZXh0ZXJuIHVpbnQ4X3QgX19MRFJFWEIodWludDhfdCAqYWRkcik7DQorDQorLyoqDQorICogQGJyaWVmICBMRFIgRXhjbHVzaXZlICgxNiBiaXQpDQorICoNCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXINCisgKiBAcmV0dXJuICAgICAgICB2YWx1ZSBvZiAoKmFkZHJlc3MpDQorICoNCisgKiBFeGNsdXNpdmUgTERSIGNvbW1hbmQgZm9yIDE2IGJpdCB2YWx1ZXMNCisgKi8NCitleHRlcm4gdWludDE2X3QgX19MRFJFWEgodWludDE2X3QgKmFkZHIpOw0KKw0KKy8qKg0KKyAqIEBicmllZiAgTERSIEV4Y2x1c2l2ZSAoMzIgYml0KQ0KKyAqDQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyDQorICogQHJldHVybiAgICAgICAgdmFsdWUgb2YgKCphZGRyZXNzKQ0KKyAqDQorICogRXhjbHVzaXZlIExEUiBjb21tYW5kIGZvciAzMiBiaXQgdmFsdWVzDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fTERSRVhXKHVpbnQzMl90ICphZGRyKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFNUUiBFeGNsdXNpdmUgKDggYml0KQ0KKyAqDQorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gc3RvcmUNCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXINCisgKiBAcmV0dXJuICAgICAgICBzdWNjZXNzZnVsIC8gZmFpbGVkDQorICoNCisgKiBFeGNsdXNpdmUgU1RSIGNvbW1hbmQgZm9yIDggYml0IHZhbHVlcw0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX1NUUkVYQih1aW50OF90IHZhbHVlLCB1aW50OF90ICphZGRyKTsNCisNCisvKioNCisgKiBAYnJpZWYgIFNUUiBFeGNsdXNpdmUgKDE2IGJpdCkNCisgKg0KKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHN0b3JlDQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyDQorICogQHJldHVybiAgICAgICAgc3VjY2Vzc2Z1bCAvIGZhaWxlZA0KKyAqDQorICogRXhjbHVzaXZlIFNUUiBjb21tYW5kIGZvciAxNiBiaXQgdmFsdWVzDQorICovDQorZXh0ZXJuIHVpbnQzMl90IF9fU1RSRVhIKHVpbnQxNl90IHZhbHVlLCB1aW50MTZfdCAqYWRkcik7DQorDQorLyoqDQorICogQGJyaWVmICBTVFIgRXhjbHVzaXZlICgzMiBiaXQpDQorICoNCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byBzdG9yZQ0KKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcg0KKyAqIEByZXR1cm4gICAgICAgIHN1Y2Nlc3NmdWwgLyBmYWlsZWQNCisgKg0KKyAqIEV4Y2x1c2l2ZSBTVFIgY29tbWFuZCBmb3IgMzIgYml0IHZhbHVlcw0KKyAqLw0KK2V4dGVybiB1aW50MzJfdCBfX1NUUkVYVyh1aW50MzJfdCB2YWx1ZSwgdWludDMyX3QgKmFkZHIpOw0KKw0KKw0KKyNlbGlmIChkZWZpbmVkIChfX1RBU0tJTkdfXykpIC8qLS0tLS0tLS0tLS0tLS0tLS0tIFRBU0tJTkcgQ29tcGlsZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiBUQVNLSU5HIGNhcm0gc3BlY2lmaWMgZnVuY3Rpb25zICovDQorDQorLyoNCisgKiBUaGUgQ01TSVMgZnVuY3Rpb25zIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCBhcyBpbnRyaW5zaWNzIGluIHRoZSBjb21waWxlci4NCisgKiBQbGVhc2UgdXNlICJjYXJtIC0/aSIgdG8gZ2V0IGFuIHVwIHRvIGRhdGUgbGlzdCBvZiBhbGwgaW5zdHJpbnNpY3MsDQorICogSW5jbHVkaW5nIHRoZSBDTVNJUyBvbmVzLg0KKyAqLw0KKw0KKyNlbmRpZg0KKw0KKw0KKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfQ29yZV9GdW5jdGlvbkludGVyZmFjZSBDTVNJUyBDTTMgQ29yZSBGdW5jdGlvbiBJbnRlcmZhY2UNCisgIENvcmUgIEZ1bmN0aW9uIEludGVyZmFjZSBjb250YWluaW5nOg0KKyAgLSBDb3JlIE5WSUMgRnVuY3Rpb25zDQorICAtIENvcmUgU3lzVGljayBGdW5jdGlvbnMNCisgIC0gQ29yZSBSZXNldCBGdW5jdGlvbnMNCisqLw0KKy8qQHsqLw0KKw0KKy8qICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgTlZJQyBmdW5jdGlvbnMgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLw0KKw0KKy8qKg0KKyAqIEBicmllZiAgU2V0IHRoZSBQcmlvcml0eSBHcm91cGluZyBpbiBOVklDIEludGVycnVwdCBDb250cm9sbGVyDQorICoNCisgKiBAcGFyYW0gIFByaW9yaXR5R3JvdXAgaXMgcHJpb3JpdHkgZ3JvdXBpbmcgZmllbGQNCisgKg0KKyAqIFNldCB0aGUgcHJpb3JpdHkgZ3JvdXBpbmcgZmllbGQgdXNpbmcgdGhlIHJlcXVpcmVkIHVubG9jayBzZXF1ZW5jZS4NCisgKiBUaGUgcGFyYW1ldGVyIHByaW9yaXR5X2dyb3VwaW5nIGlzIGFzc2lnbmVkIHRvIHRoZSBmaWVsZA0KKyAqIFNDQi0+QUlSQ1IgWzEwOjhdIFBSSUdST1VQIGZpZWxkLiBPbmx5IHZhbHVlcyBmcm9tIDAuLjcgYXJlIHVzZWQuDQorICogSW4gY2FzZSBvZiBhIGNvbmZsaWN0IGJldHdlZW4gcHJpb3JpdHkgZ3JvdXBpbmcgYW5kIGF2YWlsYWJsZQ0KKyAqIHByaW9yaXR5IGJpdHMgKF9fTlZJQ19QUklPX0JJVFMpIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBwcmlvcml0eSBncm91cCBpcyBzZXQuDQorICovDQorc3RhdGljIF9fSU5MSU5FIHZvaWQgTlZJQ19TZXRQcmlvcml0eUdyb3VwaW5nKHVpbnQzMl90IFByaW9yaXR5R3JvdXApDQorew0KKyAgdWludDMyX3QgcmVnX3ZhbHVlOw0KKyAgdWludDMyX3QgUHJpb3JpdHlHcm91cFRtcCA9IChQcmlvcml0eUdyb3VwICYgMHgwNyk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9ubHkgdmFsdWVzIDAuLjcgYXJlIHVzZWQgICAgICAgICAgKi8NCisNCisgIHJlZ192YWx1ZSAgPSAgU0NCLT5BSVJDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZWFkIG9sZCByZWdpc3RlciBjb25maWd1cmF0aW9uICAgICovDQorICByZWdfdmFsdWUgJj0gfihTQ0JfQUlSQ1JfVkVDVEtFWV9Nc2sgfCBTQ0JfQUlSQ1JfUFJJR1JPVVBfTXNrKTsgICAgICAgICAgICAgLyogY2xlYXIgYml0cyB0byBjaGFuZ2UgICAgICAgICAgICAgICAqLw0KKyAgcmVnX3ZhbHVlICA9ICAocmVnX3ZhbHVlICAgICAgICAgICAgICAgICAgICAgICB8DQorICAgICAgICAgICAgICAgICgweDVGQSA8PCBTQ0JfQUlSQ1JfVkVDVEtFWV9Qb3MpIHwNCisgICAgICAgICAgICAgICAgKFByaW9yaXR5R3JvdXBUbXAgPDwgOCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnNlcnQgd3JpdGUga2V5IGFuZCBwcmlvcnR5IGdyb3VwICovDQorICBTQ0ItPkFJUkNSID0gIHJlZ192YWx1ZTsNCit9DQorDQorLyoqDQorICogQGJyaWVmICBHZXQgdGhlIFByaW9yaXR5IEdyb3VwaW5nIGZyb20gTlZJQyBJbnRlcnJ1cHQgQ29udHJvbGxlcg0KKyAqDQorICogQHJldHVybiBwcmlvcml0eSBncm91cGluZyBmaWVsZA0KKyAqDQorICogR2V0IHRoZSBwcmlvcml0eSBncm91cGluZyBmcm9tIE5WSUMgSW50ZXJydXB0IENvbnRyb2xsZXIuDQorICogcHJpb3JpdHkgZ3JvdXBpbmcgaXMgU0NCLT5BSVJDUiBbMTA6OF0gUFJJR1JPVVAgZmllbGQuDQorICovDQorc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IE5WSUNfR2V0UHJpb3JpdHlHcm91cGluZyh2b2lkKQ0KK3sNCisgIHJldHVybiAoKFNDQi0+QUlSQ1IgJiBTQ0JfQUlSQ1JfUFJJR1JPVVBfTXNrKSA+PiBTQ0JfQUlSQ1JfUFJJR1JPVVBfUG9zKTsgICAvKiByZWFkIHByaW9yaXR5IGdyb3VwaW5nIGZpZWxkICovDQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgRW5hYmxlIEludGVycnVwdCBpbiBOVklDIEludGVycnVwdCBDb250cm9sbGVyDQorICoNCisgKiBAcGFyYW0gIElSUW4gICBUaGUgcG9zaXRpdmUgbnVtYmVyIG9mIHRoZSBleHRlcm5hbCBpbnRlcnJ1cHQgdG8gZW5hYmxlDQorICoNCisgKiBFbmFibGUgYSBkZXZpY2Ugc3BlY2lmaWMgaW50ZXJ1cHQgaW4gdGhlIE5WSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIuDQorICogVGhlIGludGVycnVwdCBudW1iZXIgY2Fubm90IGJlIGEgbmVnYXRpdmUgdmFsdWUuDQorICovDQorc3RhdGljIF9fSU5MSU5FIHZvaWQgTlZJQ19FbmFibGVJUlEoSVJRbl9UeXBlIElSUW4pDQorew0KKyAgTlZJQy0+SVNFUlsoKHVpbnQzMl90KShJUlFuKSA+PiA1KV0gPSAoMSA8PCAoKHVpbnQzMl90KShJUlFuKSAmIDB4MUYpKTsgLyogZW5hYmxlIGludGVycnVwdCAqLw0KK30NCisNCisvKioNCisgKiBAYnJpZWYgIERpc2FibGUgdGhlIGludGVycnVwdCBsaW5lIGZvciBleHRlcm5hbCBpbnRlcnJ1cHQgc3BlY2lmaWVkDQorICoNCisgKiBAcGFyYW0gIElSUW4gICBUaGUgcG9zaXRpdmUgbnVtYmVyIG9mIHRoZSBleHRlcm5hbCBpbnRlcnJ1cHQgdG8gZGlzYWJsZQ0KKyAqDQorICogRGlzYWJsZSBhIGRldmljZSBzcGVjaWZpYyBpbnRlcnVwdCBpbiB0aGUgTlZJQyBpbnRlcnJ1cHQgY29udHJvbGxlci4NCisgKiBUaGUgaW50ZXJydXB0IG51bWJlciBjYW5ub3QgYmUgYSBuZWdhdGl2ZSB2YWx1ZS4NCisgKi8NCitzdGF0aWMgX19JTkxJTkUgdm9pZCBOVklDX0Rpc2FibGVJUlEoSVJRbl9UeXBlIElSUW4pDQorew0KKyAgTlZJQy0+SUNFUlsoKHVpbnQzMl90KShJUlFuKSA+PiA1KV0gPSAoMSA8PCAoKHVpbnQzMl90KShJUlFuKSAmIDB4MUYpKTsgLyogZGlzYWJsZSBpbnRlcnJ1cHQgKi8NCit9DQorDQorLyoqDQorICogQGJyaWVmICBSZWFkIHRoZSBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgZm9yIGEgZGV2aWNlIHNwZWNpZmljIGludGVycnVwdCBzb3VyY2UNCisgKg0KKyAqIEBwYXJhbSAgSVJRbiAgICBUaGUgbnVtYmVyIG9mIHRoZSBkZXZpY2Ugc3BlY2lmYyBpbnRlcnJ1cHQNCisgKiBAcmV0dXJuICAgICAgICAgMSA9IGludGVycnVwdCBwZW5kaW5nLCAwID0gaW50ZXJydXB0IG5vdCBwZW5kaW5nDQorICoNCisgKiBSZWFkIHRoZSBwZW5kaW5nIHJlZ2lzdGVyIGluIE5WSUMgYW5kIHJldHVybiAxIGlmIGl0cyBzdGF0dXMgaXMgcGVuZGluZywNCisgKiBvdGhlcndpc2UgaXQgcmV0dXJucyAwDQorICovDQorc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IE5WSUNfR2V0UGVuZGluZ0lSUShJUlFuX1R5cGUgSVJRbikNCit7DQorICByZXR1cm4oKHVpbnQzMl90KSAoKE5WSUMtPklTUFJbKHVpbnQzMl90KShJUlFuKSA+PiA1XSAmICgxIDw8ICgodWludDMyX3QpKElSUW4pICYgMHgxRikpKT8xOjApKTsgLyogUmV0dXJuIDEgaWYgcGVuZGluZyBlbHNlIDAgKi8NCit9DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIHBlbmRpbmcgYml0IGZvciBhbiBleHRlcm5hbCBpbnRlcnJ1cHQNCisgKg0KKyAqIEBwYXJhbSAgSVJRbiAgICBUaGUgbnVtYmVyIG9mIHRoZSBpbnRlcnJ1cHQgZm9yIHNldCBwZW5kaW5nDQorICoNCisgKiBTZXQgdGhlIHBlbmRpbmcgYml0IGZvciB0aGUgc3BlY2lmaWVkIGludGVycnVwdC4NCisgKiBUaGUgaW50ZXJydXB0IG51bWJlciBjYW5ub3QgYmUgYSBuZWdhdGl2ZSB2YWx1ZS4NCisgKi8NCitzdGF0aWMgX19JTkxJTkUgdm9pZCBOVklDX1NldFBlbmRpbmdJUlEoSVJRbl9UeXBlIElSUW4pDQorew0KKyAgTlZJQy0+SVNQUlsoKHVpbnQzMl90KShJUlFuKSA+PiA1KV0gPSAoMSA8PCAoKHVpbnQzMl90KShJUlFuKSAmIDB4MUYpKTsgLyogc2V0IGludGVycnVwdCBwZW5kaW5nICovDQorfQ0KKw0KKy8qKg0KKyAqIEBicmllZiAgQ2xlYXIgdGhlIHBlbmRpbmcgYml0IGZvciBhbiBleHRlcm5hbCBpbnRlcnJ1cHQNCisgKg0KKyAqIEBwYXJhbSAgSVJRbiAgICBUaGUgbnVtYmVyIG9mIHRoZSBpbnRlcnJ1cHQgZm9yIGNsZWFyIHBlbmRpbmcNCisgKg0KKyAqIENsZWFyIHRoZSBwZW5kaW5nIGJpdCBmb3IgdGhlIHNwZWNpZmllZCBpbnRlcnJ1cHQuDQorICogVGhlIGludGVycnVwdCBudW1iZXIgY2Fubm90IGJlIGEgbmVnYXRpdmUgdmFsdWUuDQorICovDQorc3RhdGljIF9fSU5MSU5FIHZvaWQgTlZJQ19DbGVhclBlbmRpbmdJUlEoSVJRbl9UeXBlIElSUW4pDQorew0KKyAgTlZJQy0+SUNQUlsoKHVpbnQzMl90KShJUlFuKSA+PiA1KV0gPSAoMSA8PCAoKHVpbnQzMl90KShJUlFuKSAmIDB4MUYpKTsgLyogQ2xlYXIgcGVuZGluZyBpbnRlcnJ1cHQgKi8NCit9DQorDQorLyoqDQorICogQGJyaWVmICBSZWFkIHRoZSBhY3RpdmUgYml0IGZvciBhbiBleHRlcm5hbCBpbnRlcnJ1cHQNCisgKg0KKyAqIEBwYXJhbSAgSVJRbiAgICBUaGUgbnVtYmVyIG9mIHRoZSBpbnRlcnJ1cHQgZm9yIHJlYWQgYWN0aXZlIGJpdA0KKyAqIEByZXR1cm4gICAgICAgICAxID0gaW50ZXJydXB0IGFjdGl2ZSwgMCA9IGludGVycnVwdCBub3QgYWN0aXZlDQorICoNCisgKiBSZWFkIHRoZSBhY3RpdmUgcmVnaXN0ZXIgaW4gTlZJQyBhbmQgcmV0dXJucyAxIGlmIGl0cyBzdGF0dXMgaXMgYWN0aXZlLA0KKyAqIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQorICovDQorc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IE5WSUNfR2V0QWN0aXZlKElSUW5fVHlwZSBJUlFuKQ0KK3sNCisgIHJldHVybigodWludDMyX3QpKChOVklDLT5JQUJSWyh1aW50MzJfdCkoSVJRbikgPj4gNV0gJiAoMSA8PCAoKHVpbnQzMl90KShJUlFuKSAmIDB4MUYpKSk/MTowKSk7IC8qIFJldHVybiAxIGlmIGFjdGl2ZSBlbHNlIDAgKi8NCit9DQorDQorLyoqDQorICogQGJyaWVmICBTZXQgdGhlIHByaW9yaXR5IGZvciBhbiBpbnRlcnJ1cHQNCisgKg0KKyAqIEBwYXJhbSAgSVJRbiAgICAgIFRoZSBudW1iZXIgb2YgdGhlIGludGVycnVwdCBmb3Igc2V0IHByaW9yaXR5DQorICogQHBhcmFtICBwcmlvcml0eSAgVGhlIHByaW9yaXR5IHRvIHNldA0KKyAqDQorICogU2V0IHRoZSBwcmlvcml0eSBmb3IgdGhlIHNwZWNpZmllZCBpbnRlcnJ1cHQuIFRoZSBpbnRlcnJ1cHQNCisgKiBudW1iZXIgY2FuIGJlIHBvc2l0aXZlIHRvIHNwZWNpZnkgYW4gZXh0ZXJuYWwgKGRldmljZSBzcGVjaWZpYykNCisgKiBpbnRlcnJ1cHQsIG9yIG5lZ2F0aXZlIHRvIHNwZWNpZnkgYW4gaW50ZXJuYWwgKGNvcmUpIGludGVycnVwdC4NCisgKg0KKyAqIE5vdGU6IFRoZSBwcmlvcml0eSBjYW5ub3QgYmUgc2V0IGZvciBldmVyeSBjb3JlIGludGVycnVwdC4NCisgKi8NCitzdGF0aWMgX19JTkxJTkUgdm9pZCBOVklDX1NldFByaW9yaXR5KElSUW5fVHlwZSBJUlFuLCB1aW50MzJfdCBwcmlvcml0eSkNCit7DQorICBpZihJUlFuIDwgMCkgew0KKyAgICBTQ0ItPlNIUFsoKHVpbnQzMl90KShJUlFuKSAmIDB4RiktNF0gPSAoKHByaW9yaXR5IDw8ICg4IC0gX19OVklDX1BSSU9fQklUUykpICYgMHhmZik7IH0gLyogc2V0IFByaW9yaXR5IGZvciBDb3J0ZXgtTTMgU3lzdGVtIEludGVycnVwdHMgKi8NCisgIGVsc2Ugew0KKyAgICBOVklDLT5JUFsodWludDMyX3QpKElSUW4pXSA9ICgocHJpb3JpdHkgPDwgKDggLSBfX05WSUNfUFJJT19CSVRTKSkgJiAweGZmKTsgICAgfSAgICAgICAgLyogc2V0IFByaW9yaXR5IGZvciBkZXZpY2Ugc3BlY2lmaWMgSW50ZXJydXB0cyAgKi8NCit9DQorDQorLyoqDQorICogQGJyaWVmICBSZWFkIHRoZSBwcmlvcml0eSBmb3IgYW4gaW50ZXJydXB0DQorICoNCisgKiBAcGFyYW0gIElSUW4gICAgICBUaGUgbnVtYmVyIG9mIHRoZSBpbnRlcnJ1cHQgZm9yIGdldCBwcmlvcml0eQ0KKyAqIEByZXR1cm4gICAgICAgICAgIFRoZSBwcmlvcml0eSBmb3IgdGhlIGludGVycnVwdA0KKyAqDQorICogUmVhZCB0aGUgcHJpb3JpdHkgZm9yIHRoZSBzcGVjaWZpZWQgaW50ZXJydXB0LiBUaGUgaW50ZXJydXB0DQorICogbnVtYmVyIGNhbiBiZSBwb3NpdGl2ZSB0byBzcGVjaWZ5IGFuIGV4dGVybmFsIChkZXZpY2Ugc3BlY2lmaWMpDQorICogaW50ZXJydXB0LCBvciBuZWdhdGl2ZSB0byBzcGVjaWZ5IGFuIGludGVybmFsIChjb3JlKSBpbnRlcnJ1cHQuDQorICoNCisgKiBUaGUgcmV0dXJuZWQgcHJpb3JpdHkgdmFsdWUgaXMgYXV0b21hdGljYWxseSBhbGlnbmVkIHRvIHRoZSBpbXBsZW1lbnRlZA0KKyAqIHByaW9yaXR5IGJpdHMgb2YgdGhlIG1pY3JvY29udHJvbGxlci4NCisgKg0KKyAqIE5vdGU6IFRoZSBwcmlvcml0eSBjYW5ub3QgYmUgc2V0IGZvciBldmVyeSBjb3JlIGludGVycnVwdC4NCisgKi8NCitzdGF0aWMgX19JTkxJTkUgdWludDMyX3QgTlZJQ19HZXRQcmlvcml0eShJUlFuX1R5cGUgSVJRbikNCit7DQorDQorICBpZihJUlFuIDwgMCkgew0KKyAgICByZXR1cm4oKHVpbnQzMl90KShTQ0ItPlNIUFsoKHVpbnQzMl90KShJUlFuKSAmIDB4RiktNF0gPj4gKDggLSBfX05WSUNfUFJJT19CSVRTKSkpOyAgfSAvKiBnZXQgcHJpb3JpdHkgZm9yIENvcnRleC1NMyBzeXN0ZW0gaW50ZXJydXB0cyAqLw0KKyAgZWxzZSB7DQorICAgIHJldHVybigodWludDMyX3QpKE5WSUMtPklQWyh1aW50MzJfdCkoSVJRbildICAgICAgICAgICA+PiAoOCAtIF9fTlZJQ19QUklPX0JJVFMpKSk7ICB9IC8qIGdldCBwcmlvcml0eSBmb3IgZGV2aWNlIHNwZWNpZmljIGludGVycnVwdHMgICovDQorfQ0KKw0KKw0KKy8qKg0KKyAqIEBicmllZiAgRW5jb2RlIHRoZSBwcmlvcml0eSBmb3IgYW4gaW50ZXJydXB0DQorICoNCisgKiBAcGFyYW0gIFByaW9yaXR5R3JvdXAgICAgVGhlIHVzZWQgcHJpb3JpdHkgZ3JvdXANCisgKiBAcGFyYW0gIFByZWVtcHRQcmlvcml0eSAgVGhlIHByZWVtcHRpdmUgcHJpb3JpdHkgdmFsdWUgKHN0YXJ0aW5nIGZyb20gMCkNCisgKiBAcGFyYW0gIFN1YlByaW9yaXR5ICAgICAgVGhlIHN1YiBwcmlvcml0eSB2YWx1ZSAoc3RhcnRpbmcgZnJvbSAwKQ0KKyAqIEByZXR1cm4gICAgICAgICAgICAgICAgICBUaGUgZW5jb2RlZCBwcmlvcml0eSBmb3IgdGhlIGludGVycnVwdA0KKyAqDQorICogRW5jb2RlIHRoZSBwcmlvcml0eSBmb3IgYW4gaW50ZXJydXB0IHdpdGggdGhlIGdpdmVuIHByaW9yaXR5IGdyb3VwLA0KKyAqIHByZWVtcHRpdmUgcHJpb3JpdHkgdmFsdWUgYW5kIHN1YiBwcmlvcml0eSB2YWx1ZS4NCisgKiBJbiBjYXNlIG9mIGEgY29uZmxpY3QgYmV0d2VlbiBwcmlvcml0eSBncm91cGluZyBhbmQgYXZhaWxhYmxlDQorICogcHJpb3JpdHkgYml0cyAoX19OVklDX1BSSU9fQklUUykgdGhlIHNhbWxsZXN0IHBvc3NpYmxlIHByaW9yaXR5IGdyb3VwIGlzIHNldC4NCisgKg0KKyAqIFRoZSByZXR1cm5lZCBwcmlvcml0eSB2YWx1ZSBjYW4gYmUgdXNlZCBmb3IgTlZJQ19TZXRQcmlvcml0eSguLi4pIGZ1bmN0aW9uDQorICovDQorc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IE5WSUNfRW5jb2RlUHJpb3JpdHkgKHVpbnQzMl90IFByaW9yaXR5R3JvdXAsIHVpbnQzMl90IFByZWVtcHRQcmlvcml0eSwgdWludDMyX3QgU3ViUHJpb3JpdHkpDQorew0KKyAgdWludDMyX3QgUHJpb3JpdHlHcm91cFRtcCA9IChQcmlvcml0eUdyb3VwICYgMHgwNyk7ICAgICAgICAgIC8qIG9ubHkgdmFsdWVzIDAuLjcgYXJlIHVzZWQgICAgICAgICAgKi8NCisgIHVpbnQzMl90IFByZWVtcHRQcmlvcml0eUJpdHM7DQorICB1aW50MzJfdCBTdWJQcmlvcml0eUJpdHM7DQorDQorICBQcmVlbXB0UHJpb3JpdHlCaXRzID0gKCg3IC0gUHJpb3JpdHlHcm91cFRtcCkgPiBfX05WSUNfUFJJT19CSVRTKSA/IF9fTlZJQ19QUklPX0JJVFMgOiA3IC0gUHJpb3JpdHlHcm91cFRtcDsNCisgIFN1YlByaW9yaXR5Qml0cyAgICAgPSAoKFByaW9yaXR5R3JvdXBUbXAgKyBfX05WSUNfUFJJT19CSVRTKSA8IDcpID8gMCA6IFByaW9yaXR5R3JvdXBUbXAgLSA3ICsgX19OVklDX1BSSU9fQklUUzsNCisNCisgIHJldHVybiAoDQorICAgICAgICAgICAoKFByZWVtcHRQcmlvcml0eSAmICgoMSA8PCAoUHJlZW1wdFByaW9yaXR5Qml0cykpIC0gMSkpIDw8IFN1YlByaW9yaXR5Qml0cykgfA0KKyAgICAgICAgICAgKChTdWJQcmlvcml0eSAgICAgJiAoKDEgPDwgKFN1YlByaW9yaXR5Qml0cyAgICApKSAtIDEpKSkNCisgICAgICAgICApOw0KK30NCisNCisNCisvKioNCisgKiBAYnJpZWYgIERlY29kZSB0aGUgcHJpb3JpdHkgb2YgYW4gaW50ZXJydXB0DQorICoNCisgKiBAcGFyYW0gIFByaW9yaXR5ICAgICAgICAgICBUaGUgcHJpb3JpdHkgZm9yIHRoZSBpbnRlcnJ1cHQNCisgKiBAcGFyYW0gIFByaW9yaXR5R3JvdXAgICAgICBUaGUgdXNlZCBwcmlvcml0eSBncm91cA0KKyAqIEBwYXJhbSAgcFByZWVtcHRQcmlvcml0eSAgIFRoZSBwcmVlbXB0aXZlIHByaW9yaXR5IHZhbHVlIChzdGFydGluZyBmcm9tIDApDQorICogQHBhcmFtICBwU3ViUHJpb3JpdHkgICAgICAgVGhlIHN1YiBwcmlvcml0eSB2YWx1ZSAoc3RhcnRpbmcgZnJvbSAwKQ0KKyAqDQorICogRGVjb2RlIGFuIGludGVycnVwdCBwcmlvcml0eSB2YWx1ZSB3aXRoIHRoZSBnaXZlbiBwcmlvcml0eSBncm91cCB0bw0KKyAqIHByZWVtcHRpdmUgcHJpb3JpdHkgdmFsdWUgYW5kIHN1YiBwcmlvcml0eSB2YWx1ZS4NCisgKiBJbiBjYXNlIG9mIGEgY29uZmxpY3QgYmV0d2VlbiBwcmlvcml0eSBncm91cGluZyBhbmQgYXZhaWxhYmxlDQorICogcHJpb3JpdHkgYml0cyAoX19OVklDX1BSSU9fQklUUykgdGhlIHNhbWxsZXN0IHBvc3NpYmxlIHByaW9yaXR5IGdyb3VwIGlzIHNldC4NCisgKg0KKyAqIFRoZSBwcmlvcml0eSB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIHdpdGggTlZJQ19HZXRQcmlvcml0eSguLi4pIGZ1bmN0aW9uDQorICovDQorc3RhdGljIF9fSU5MSU5FIHZvaWQgTlZJQ19EZWNvZGVQcmlvcml0eSAodWludDMyX3QgUHJpb3JpdHksIHVpbnQzMl90IFByaW9yaXR5R3JvdXAsIHVpbnQzMl90KiBwUHJlZW1wdFByaW9yaXR5LCB1aW50MzJfdCogcFN1YlByaW9yaXR5KQ0KK3sNCisgIHVpbnQzMl90IFByaW9yaXR5R3JvdXBUbXAgPSAoUHJpb3JpdHlHcm91cCAmIDB4MDcpOyAgICAgICAgICAvKiBvbmx5IHZhbHVlcyAwLi43IGFyZSB1c2VkICAgICAgICAgICovDQorICB1aW50MzJfdCBQcmVlbXB0UHJpb3JpdHlCaXRzOw0KKyAgdWludDMyX3QgU3ViUHJpb3JpdHlCaXRzOw0KKw0KKyAgUHJlZW1wdFByaW9yaXR5Qml0cyA9ICgoNyAtIFByaW9yaXR5R3JvdXBUbXApID4gX19OVklDX1BSSU9fQklUUykgPyBfX05WSUNfUFJJT19CSVRTIDogNyAtIFByaW9yaXR5R3JvdXBUbXA7DQorICBTdWJQcmlvcml0eUJpdHMgICAgID0gKChQcmlvcml0eUdyb3VwVG1wICsgX19OVklDX1BSSU9fQklUUykgPCA3KSA/IDAgOiBQcmlvcml0eUdyb3VwVG1wIC0gNyArIF9fTlZJQ19QUklPX0JJVFM7DQorDQorICAqcFByZWVtcHRQcmlvcml0eSA9IChQcmlvcml0eSA+PiBTdWJQcmlvcml0eUJpdHMpICYgKCgxIDw8IChQcmVlbXB0UHJpb3JpdHlCaXRzKSkgLSAxKTsNCisgICpwU3ViUHJpb3JpdHkgICAgID0gKFByaW9yaXR5ICAgICAgICAgICAgICAgICAgICkgJiAoKDEgPDwgKFN1YlByaW9yaXR5Qml0cyAgICApKSAtIDEpOw0KK30NCisNCisNCisNCisvKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgIFN5c1RpY2sgZnVuY3Rpb24gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICovDQorDQorI2lmICghZGVmaW5lZCAoX19WZW5kb3JfU3lzVGlja0NvbmZpZykpIHx8IChfX1ZlbmRvcl9TeXNUaWNrQ29uZmlnID09IDApDQorDQorLyoqDQorICogQGJyaWVmICBJbml0aWFsaXplIGFuZCBzdGFydCB0aGUgU3lzVGljayBjb3VudGVyIGFuZCBpdHMgaW50ZXJydXB0Lg0KKyAqDQorICogQHBhcmFtICAgdGlja3MgICBudW1iZXIgb2YgdGlja3MgYmV0d2VlbiB0d28gaW50ZXJydXB0cw0KKyAqIEByZXR1cm4gIDEgPSBmYWlsZWQsIDAgPSBzdWNjZXNzZnVsDQorICoNCisgKiBJbml0aWFsaXNlIHRoZSBzeXN0ZW0gdGljayB0aW1lciBhbmQgaXRzIGludGVycnVwdCBhbmQgc3RhcnQgdGhlDQorICogc3lzdGVtIHRpY2sgdGltZXIgLyBjb3VudGVyIGluIGZyZWUgcnVubmluZyBtb2RlIHRvIGdlbmVyYXRlDQorICogcGVyaW9kaWNhbCBpbnRlcnJ1cHRzLg0KKyAqLw0KK3N0YXRpYyBfX0lOTElORSB1aW50MzJfdCBTeXNUaWNrX0NvbmZpZyh1aW50MzJfdCB0aWNrcykNCit7DQorICBpZiAodGlja3MgPiBTeXNUaWNrX0xPQURfUkVMT0FEX01zaykgIHJldHVybiAoMSk7ICAgICAgICAgICAgLyogUmVsb2FkIHZhbHVlIGltcG9zc2libGUgKi8NCisNCisgIFN5c1RpY2stPkxPQUQgID0gKHRpY2tzICYgU3lzVGlja19MT0FEX1JFTE9BRF9Nc2spIC0gMTsgICAgICAvKiBzZXQgcmVsb2FkIHJlZ2lzdGVyICovDQorICBOVklDX1NldFByaW9yaXR5IChTeXNUaWNrX0lSUW4sICgxPDxfX05WSUNfUFJJT19CSVRTKSAtIDEpOyAgLyogc2V0IFByaW9yaXR5IGZvciBDb3J0ZXgtTTAgU3lzdGVtIEludGVycnVwdHMgKi8NCisgIFN5c1RpY2stPlZBTCAgID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMb2FkIHRoZSBTeXNUaWNrIENvdW50ZXIgVmFsdWUgKi8NCisgIFN5c1RpY2stPkNUUkwgID0gU3lzVGlja19DVFJMX0NMS1NPVVJDRV9Nc2sgfA0KKyAgICAgICAgICAgICAgICAgICBTeXNUaWNrX0NUUkxfVElDS0lOVF9Nc2sgICB8DQorICAgICAgICAgICAgICAgICAgIFN5c1RpY2tfQ1RSTF9FTkFCTEVfTXNrOyAgICAgICAgICAgICAgICAgICAgLyogRW5hYmxlIFN5c1RpY2sgSVJRIGFuZCBTeXNUaWNrIFRpbWVyICovDQorICByZXR1cm4gKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRnVuY3Rpb24gc3VjY2Vzc2Z1bCAqLw0KK30NCisNCisjZW5kaWYNCisNCisNCisNCisNCisvKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgIFJlc2V0IGZ1bmN0aW9uICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLw0KKw0KKy8qKg0KKyAqIEBicmllZiAgSW5pdGlhdGUgYSBzeXN0ZW0gcmVzZXQgcmVxdWVzdC4NCisgKg0KKyAqIEluaXRpYXRlIGEgc3lzdGVtIHJlc2V0IHJlcXVlc3QgdG8gcmVzZXQgdGhlIE1DVQ0KKyAqLw0KK3N0YXRpYyBfX0lOTElORSB2b2lkIE5WSUNfU3lzdGVtUmVzZXQodm9pZCkNCit7DQorICBTQ0ItPkFJUkNSICA9ICgoMHg1RkEgPDwgU0NCX0FJUkNSX1ZFQ1RLRVlfUG9zKSAgICAgIHwNCisgICAgICAgICAgICAgICAgIChTQ0ItPkFJUkNSICYgU0NCX0FJUkNSX1BSSUdST1VQX01zaykgfA0KKyAgICAgICAgICAgICAgICAgU0NCX0FJUkNSX1NZU1JFU0VUUkVRX01zayk7ICAgICAgICAgICAgICAgICAgIC8qIEtlZXAgcHJpb3JpdHkgZ3JvdXAgdW5jaGFuZ2VkICovDQorICBfX0RTQigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5zdXJlIGNvbXBsZXRpb24gb2YgbWVtb3J5IGFjY2VzcyAqLw0KKyAgd2hpbGUoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdhaXQgdW50aWwgcmVzZXQgKi8NCit9DQorDQorLypAfSovIC8qIGVuZCBvZiBncm91cCBDTVNJU19DTTNfQ29yZV9GdW5jdGlvbkludGVyZmFjZSAqLw0KKw0KKw0KKw0KKy8qICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRGVidWcgSW4vT3V0cHV0IGZ1bmN0aW9uICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX0NvcmVEZWJ1Z0ludGVyZmFjZSBDTVNJUyBDTTMgQ29yZSBEZWJ1ZyBJbnRlcmZhY2UNCisgIENvcmUgRGVidWcgSW50ZXJmYWNlIGNvbnRhaW5pbmc6DQorICAtIENvcmUgRGVidWcgUmVjZWl2ZSAvIFRyYW5zbWl0IEZ1bmN0aW9ucw0KKyAgLSBDb3JlIERlYnVnIERlZmluZXMNCisgIC0gQ29yZSBEZWJ1ZyBWYXJpYWJsZXMNCisqLw0KKy8qQHsqLw0KKw0KK2V4dGVybiB2b2xhdGlsZSBpbnQgSVRNX1J4QnVmZmVyOyAgICAgICAgICAgICAgICAgICAgLyohPCB2YXJpYWJsZSB0byByZWNlaXZlIGNoYXJhY3RlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorI2RlZmluZSAgICAgICAgICAgICBJVE1fUlhCVUZGRVJfRU1QVFkgICAgMHg1QUE1NUFBNSAvKiE8IHZhbHVlIGlkZW50aWZ5aW5nIElUTV9SeEJ1ZmZlciBpcyByZWFkeSBmb3IgbmV4dCBjaGFyYWN0ZXIgKi8NCisNCisNCisvKioNCisgKiBAYnJpZWYgIE91dHB1dHMgYSBjaGFyYWN0ZXIgdmlhIHRoZSBJVE0gY2hhbm5lbCAwDQorICoNCisgKiBAcGFyYW0gIGNoICAgY2hhcmFjdGVyIHRvIG91dHB1dA0KKyAqIEByZXR1cm4gICAgICBjaGFyYWN0ZXIgdG8gb3V0cHV0DQorICoNCisgKiBUaGUgZnVuY3Rpb24gb3V0cHV0cyBhIGNoYXJhY3RlciB2aWEgdGhlIElUTSBjaGFubmVsIDAuDQorICogVGhlIGZ1bmN0aW9uIHJldHVybnMgd2hlbiBubyBkZWJ1Z2dlciBpcyBjb25uZWN0ZWQgdGhhdCBoYXMgYm9va2VkIHRoZSBvdXRwdXQuDQorICogSXQgaXMgYmxvY2tpbmcgd2hlbiBhIGRlYnVnZ2VyIGlzIGNvbm5lY3RlZCwgYnV0IHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgc2VuZCBpcyBub3QgdHJhbnNtaXR0ZWQuDQorICovDQorc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IElUTV9TZW5kQ2hhciAodWludDMyX3QgY2gpDQorew0KKyAgaWYgKChDb3JlRGVidWctPkRFTUNSICYgQ29yZURlYnVnX0RFTUNSX1RSQ0VOQV9Nc2spICAmJiAgICAgIC8qIFRyYWNlIGVuYWJsZWQgKi8NCisgICAgICAoSVRNLT5UQ1IgJiBJVE1fVENSX0lUTUVOQV9Nc2spICAgICAgICAgICAgICAgICAgJiYgICAgICAvKiBJVE0gZW5hYmxlZCAqLw0KKyAgICAgIChJVE0tPlRFUiAmICgxdWwgPDwgMCkgICAgICAgICkgICAgICAgICAgICAgICAgICAgICkgICAgIC8qIElUTSBQb3J0ICMwIGVuYWJsZWQgKi8NCisgIHsNCisgICAgd2hpbGUgKElUTS0+UE9SVFswXS51MzIgPT0gMCk7DQorICAgIElUTS0+UE9SVFswXS51OCA9ICh1aW50OF90KSBjaDsNCisgIH0NCisgIHJldHVybiAoY2gpOw0KK30NCisNCisNCisvKioNCisgKiBAYnJpZWYgIElucHV0cyBhIGNoYXJhY3RlciB2aWEgdmFyaWFibGUgSVRNX1J4QnVmZmVyDQorICoNCisgKiBAcmV0dXJuICAgICAgcmVjZWl2ZWQgY2hhcmFjdGVyLCAtMSA9IG5vIGNoYXJhY3RlciByZWNlaXZlZA0KKyAqDQorICogVGhlIGZ1bmN0aW9uIGlucHV0cyBhIGNoYXJhY3RlciB2aWEgdmFyaWFibGUgSVRNX1J4QnVmZmVyLg0KKyAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHdoZW4gbm8gZGVidWdnZXIgaXMgY29ubmVjdGVkIHRoYXQgaGFzIGJvb2tlZCB0aGUgb3V0cHV0Lg0KKyAqIEl0IGlzIGJsb2NraW5nIHdoZW4gYSBkZWJ1Z2dlciBpcyBjb25uZWN0ZWQsIGJ1dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIHNlbmQgaXMgbm90IHRyYW5zbWl0dGVkLg0KKyAqLw0KK3N0YXRpYyBfX0lOTElORSBpbnQgSVRNX1JlY2VpdmVDaGFyICh2b2lkKSB7DQorICBpbnQgY2ggPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gY2hhcmFjdGVyIGF2YWlsYWJsZSAqLw0KKw0KKyAgaWYgKElUTV9SeEJ1ZmZlciAhPSBJVE1fUlhCVUZGRVJfRU1QVFkpIHsNCisgICAgY2ggPSBJVE1fUnhCdWZmZXI7DQorICAgIElUTV9SeEJ1ZmZlciA9IElUTV9SWEJVRkZFUl9FTVBUWTsgICAgICAgLyogcmVhZHkgZm9yIG5leHQgY2hhcmFjdGVyICovDQorICB9DQorDQorICByZXR1cm4gKGNoKTsNCit9DQorDQorDQorLyoqDQorICogQGJyaWVmICBDaGVjayBpZiBhIGNoYXJhY3RlciB2aWEgdmFyaWFibGUgSVRNX1J4QnVmZmVyIGlzIGF2YWlsYWJsZQ0KKyAqDQorICogQHJldHVybiAgICAgIDEgPSBjaGFyYWN0ZXIgYXZhaWxhYmxlLCAwID0gbm8gY2hhcmFjdGVyIGF2YWlsYWJsZQ0KKyAqDQorICogVGhlIGZ1bmN0aW9uIGNoZWNrcyAgdmFyaWFibGUgSVRNX1J4QnVmZmVyIHdoZXRoZXIgYSBjaGFyYWN0ZXIgaXMgYXZhaWxhYmxlIG9yIG5vdC4NCisgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyAnMScgaWYgYSBjaGFyYWN0ZXIgaXMgYXZhaWxhYmxlIGFuZCAnMCcgaWYgbm8gY2hhcmFjdGVyIGlzIGF2YWlsYWJsZS4NCisgKi8NCitzdGF0aWMgX19JTkxJTkUgaW50IElUTV9DaGVja0NoYXIgKHZvaWQpIHsNCisNCisgIGlmIChJVE1fUnhCdWZmZXIgPT0gSVRNX1JYQlVGRkVSX0VNUFRZKSB7DQorICAgIHJldHVybiAoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gY2hhcmFjdGVyIGF2YWlsYWJsZSAqLw0KKyAgfSBlbHNlIHsNCisgICAgcmV0dXJuICgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICBjaGFyYWN0ZXIgYXZhaWxhYmxlICovDQorICB9DQorfQ0KKw0KKy8qQH0qLyAvKiBlbmQgb2YgZ3JvdXAgQ01TSVNfQ00zX2NvcmVfRGVidWdJbnRlcmZhY2UgKi8NCisNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorLypAfSovIC8qIGVuZCBvZiBncm91cCBDTVNJU19DTTNfY29yZV9kZWZpbml0aW9ucyAqLw0KKw0KKyNlbmRpZiAvKiBfX0NNM19DT1JFX0hfXyAqLw0KKw0KKy8qbGludCAtcmVzdG9yZSAqLw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNMy9EZXZpY2VTdXBwb3J0L1NUL1JlbGVhc2VfTm90ZXNfZm9yX1NUTTMyTDF4eF9DTVNJUy5odG1sIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0RldmljZVN1cHBvcnQvU1QvUmVsZWFzZV9Ob3Rlc19mb3JfU1RNMzJMMXh4X0NNU0lTLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJjOGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNMy9EZXZpY2VTdXBwb3J0L1NUL1JlbGVhc2VfTm90ZXNfZm9yX1NUTTMyTDF4eF9DTVNJUy5odG1sCkBAIC0wLDAgKzEsMjE3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4NCis8aHRtbCB4bWxuczp2PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+PGhlYWQ+DQorDQorICANCisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPg0KKw0KKyAgDQorICA8bGluayByZWw9IkZpbGUtTGlzdCIgaHJlZj0iTGlicmFyeV9maWxlcy9maWxlbGlzdC54bWwiPg0KKw0KKyAgDQorICA8bGluayByZWw9IkVkaXQtVGltZS1EYXRhIiBocmVmPSJMaWJyYXJ5X2ZpbGVzL2VkaXRkYXRhLm1zbyI+PCEtLVtpZiAhbXNvXT4gPHN0eWxlPiB2XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9IG9cOioge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30gd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fSAuc2hhcGUge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30gPC9zdHlsZT4gPCFbZW5kaWZdLS0+PHRpdGxlPlJlbGVhc2UgTm90ZXMgZm9yIFNUTTMyTDF4eCBDTVNJUzwvdGl0bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+IDxvOkRvY3VtZW50UHJvcGVydGllcz4gPG86QXV0aG9yPlNUTWljcm9lbGVjdHJvbmljczwvbzpBdXRob3I+IDxvOkxhc3RBdXRob3I+U1RNaWNyb2VsZWN0cm9uaWNzPC9vOkxhc3RBdXRob3I+IDxvOlJldmlzaW9uPjM3PC9vOlJldmlzaW9uPiA8bzpUb3RhbFRpbWU+MTM2PC9vOlRvdGFsVGltZT4gPG86Q3JlYXRlZD4yMDA5LTAyLTI3VDE5OjI2OjAwWjwvbzpDcmVhdGVkPiA8bzpMYXN0U2F2ZWQ+MjAwOS0wMy0wMVQxNzo1NjowMFo8L286TGFzdFNhdmVkPiA8bzpQYWdlcz4xPC9vOlBhZ2VzPiA8bzpXb3Jkcz41MjI8L286V29yZHM+IDxvOkNoYXJhY3RlcnM+Mjk3NzwvbzpDaGFyYWN0ZXJzPiA8bzpDb21wYW55PlNUTWljcm9lbGVjdHJvbmljczwvbzpDb21wYW55PiA8bzpMaW5lcz4yNDwvbzpMaW5lcz4gPG86UGFyYWdyYXBocz42PC9vOlBhcmFncmFwaHM+IDxvOkNoYXJhY3RlcnNXaXRoU3BhY2VzPjM0OTM8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+IDxvOlZlcnNpb24+MTEuNjU2ODwvbzpWZXJzaW9uPiA8L286RG9jdW1lbnRQcm9wZXJ0aWVzPiA8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4gPHc6V29yZERvY3VtZW50PiA8dzpab29tPjExMDwvdzpab29tPiA8dzpWYWxpZGF0ZUFnYWluc3RTY2hlbWFzLz4gPHc6U2F2ZUlmWE1MSW52YWxpZD5mYWxzZTwvdzpTYXZlSWZYTUxJbnZhbGlkPiA8dzpJZ25vcmVNaXhlZENvbnRlbnQ+ZmFsc2U8L3c6SWdub3JlTWl4ZWRDb250ZW50PiA8dzpBbHdheXNTaG93UGxhY2Vob2xkZXJUZXh0PmZhbHNlPC93OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+IDx3OkJyb3dzZXJMZXZlbD5NaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyNDwvdzpCcm93c2VyTGV2ZWw+IDwvdzpXb3JkRG9jdW1lbnQ+IDwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPiA8dzpMYXRlbnRTdHlsZXMgRGVmTG9ja2VkU3RhdGU9ImZhbHNlIiBMYXRlbnRTdHlsZUNvdW50PSIxNTYiPiA8L3c6TGF0ZW50U3R5bGVzPiA8L3htbD48IVtlbmRpZl0tLT4NCisNCisNCisgIA0KKw0KKyAgDQorDQorICANCisgIDxzdHlsZT4NCis8IS0tDQorLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCitwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsDQore21zby1zdHlsZS1wYXJlbnQ6IiI7DQorbWFyZ2luOjBpbjsNCittYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQorbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOw0KK2ZvbnQtc2l6ZToxMi4wcHQ7DQorZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7DQorbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQ0KK2gyDQore21zby1zdHlsZS1uZXh0Ok5vcm1hbDsNCittYXJnaW4tdG9wOjEyLjBwdDsNCittYXJnaW4tcmlnaHQ6MGluOw0KK21hcmdpbi1ib3R0b206My4wcHQ7DQorbWFyZ2luLWxlZnQ6MGluOw0KK21zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsNCitwYWdlLWJyZWFrLWFmdGVyOmF2b2lkOw0KK21zby1vdXRsaW5lLWxldmVsOjI7DQorZm9udC1zaXplOjE0LjBwdDsNCitmb250LWZhbWlseTpBcmlhbDsNCitmb250LXdlaWdodDpib2xkOw0KK2ZvbnQtc3R5bGU6aXRhbGljO30NCithOmxpbmssIHNwYW4uTXNvSHlwZXJsaW5rDQore2NvbG9yOmJsdWU7DQordGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsNCit0ZXh0LXVuZGVybGluZTpzaW5nbGU7fQ0KK2E6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZA0KK3tjb2xvcjpibHVlOw0KK3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQordGV4dC11bmRlcmxpbmU6c2luZ2xlO30NCitwDQore21zby1tYXJnaW4tdG9wLWFsdDphdXRvOw0KK21hcmdpbi1yaWdodDowaW47DQorbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87DQorbWFyZ2luLWxlZnQ6MGluOw0KK21zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsNCitmb250LXNpemU6MTIuMHB0Ow0KK2ZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOw0KK21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30NCitAcGFnZSBTZWN0aW9uMQ0KK3tzaXplOjguNWluIDExLjBpbjsNCittYXJnaW46MS4waW4gMS4yNWluIDEuMGluIDEuMjVpbjsNCittc28taGVhZGVyLW1hcmdpbjouNWluOw0KK21zby1mb290ZXItbWFyZ2luOi41aW47DQorbXNvLXBhcGVyLXNvdXJjZTowO30NCitkaXYuU2VjdGlvbjENCit7cGFnZTpTZWN0aW9uMTt9DQorLS0+DQorICA8L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyAxMF0+IDxzdHlsZT4gLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8gdGFibGUuTXNvTm9ybWFsVGFibGUge21zby1zdHlsZS1uYW1lOiJUYWJsZSBOb3JtYWwiOyBtc28tdHN0eWxlLXJvd2JhbmQtc2l6ZTowOyBtc28tdHN0eWxlLWNvbGJhbmQtc2l6ZTowOyBtc28tc3R5bGUtbm9zaG93OnllczsgbXNvLXN0eWxlLXBhcmVudDoiIjsgbXNvLXBhZGRpbmctYWx0OjBpbiA1LjRwdCAwaW4gNS40cHQ7IG1zby1wYXJhLW1hcmdpbjowaW47IG1zby1wYXJhLW1hcmdpbi1ib3R0b206LjAwMDFwdDsgbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOyBmb250LXNpemU6MTAuMHB0OyBmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsgbXNvLWFuc2ktbGFuZ3VhZ2U6IzA0MDA7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiMwNDAwOyBtc28tYmlkaS1sYW5ndWFnZTojMDQwMDt9IDwvc3R5bGU+IDwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPiA8bzpzaGFwZWRlZmF1bHRzIHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSI1MTIyIi8+IDwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPiA8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRpdCI+IDxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIi8+IDwvbzpzaGFwZWxheW91dD48L3htbD48IVtlbmRpZl0tLT48L2hlYWQ+PGJvZHkgc3R5bGU9IiIgbGFuZz0iRU4tVVMiIGxpbms9ImJsdWUiIHZsaW5rPSJibHVlIj4NCis8ZGl2IGNsYXNzPSJTZWN0aW9uMSI+DQorPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsiPjxvOnA+PGJyPg0KKzwvbzpwPjwvc3Bhbj48L3A+DQorPGRpdiBhbGlnbj0iY2VudGVyIj4NCis8dGFibGUgY2xhc3M9Ik1zb05vcm1hbFRhYmxlIiBzdHlsZT0id2lkdGg6IDY3NXB0OyIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI5MDAiPg0KKyAgPHRib2R5Pg0KKyAgICA8dHIgc3R5bGU9IiI+DQorICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwY207IiB2YWxpZ249InRvcCI+DQorICAgICAgPHRhYmxlIGNsYXNzPSJNc29Ob3JtYWxUYWJsZSIgc3R5bGU9IndpZHRoOiA2NzVwdDsiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iOTAwIj4NCisgICAgICAgIDx0Ym9keT4NCisgICAgICAgICAgPHRyPg0KKyAgICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDhwdDsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogYmx1ZTsiPjxhIGhyZWY9Ii4uLy4uLy4uLy4uLy4uL1JlbGVhc2VfTm90ZXMuaHRtbCI+QmFjayB0byBSZWxlYXNlIHBhZ2U8L2E+PC9zcGFuPjwvdGQ+DQorICAgICAgICAgIDwvdHI+DQorICAgICAgICAgIDx0ciBzdHlsZT0iIj4NCisgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDEuNXB0OyI+DQorICAgICAgICAgICAgPGgxIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxOHB0OyB0ZXh0LWFsaWduOiBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAyMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsgY29sb3I6IHJnYig1MSwgMTAyLCAyNTUpOyI+UmVsZWFzZQ0KK05vdGVzIGZvciBTVE0zMkwxeHggQ01TSVM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMjBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2gxPg0KKyAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiBibGFjazsiPkNvcHlyaWdodA0KKzIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48dTE6cD48L3UxOnA+PG86cD48L286cD48L3NwYW4+PC9wPg0KKyAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiBibGFjazsiPjxpbWcgYWx0PSIiIGlkPSJfeDAwMDBfaTEwMjUiIHNyYz0iLi4vLi4vLi4vLi4vLi4vX2h0bXJlc2MvbG9nby5ibXAiIHN0eWxlPSJib3JkZXI6IDBweCBzb2xpZCA7IHdpZHRoOiA4NnB4OyBoZWlnaHQ6IDY1cHg7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCisgICAgICAgICAgICA8L3RkPg0KKyAgICAgICAgICA8L3RyPg0KKyAgICAgICAgPC90Ym9keT4NCisgICAgICA8L3RhYmxlPg0KKyAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGRpc3BsYXk6IG5vbmU7Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQorICAgICAgPHRhYmxlIGNsYXNzPSJNc29Ob3JtYWxUYWJsZSIgc3R5bGU9IndpZHRoOiA2NzVwdDsiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSI5MDAiPg0KKyAgICAgICAgPHRib2R5Pg0KKyAgICAgICAgICA8dHI+DQorICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwY207IiB2YWxpZ249InRvcCI+DQorICAgICAgICAgICAgPGgyIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBjb2xvcjogd2hpdGU7Ij5Db250ZW50czxvOnA+PC9vOnA+PC9zcGFuPjwvaDI+DQorICAgICAgICAgICAgPG9sIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiBzdGFydD0iMSIgdHlwZT0iMSI+DQorICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij48YSBocmVmPSIjSGlzdG9yeSI+U1RNMzJMMXh4DQorQ01TSVMNCit1cGRhdGUgSGlzdG9yeTwvYT48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPg0KKyAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+PGEgaHJlZj0iI0xpY2Vuc2UiPkxpY2Vuc2U8L2E+PG86cD48L286cD48L3NwYW4+PC9saT4NCisgICAgICAgICAgICA8L29sPg0KKyAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7OyI+PC9zcGFuPg0KKyAgICAgICAgICAgIDxoMiBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PGEgbmFtZT0iSGlzdG9yeSI+PC9hPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGNvbG9yOiB3aGl0ZTsiPlNUTTMyTDF4eA0KK0NNU0lTDQordXBkYXRlIEhpc3Rvcnk8L3NwYW4+PC9oMj4NCisgICAgICAgICAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6IC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1NTguMDVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBBcmlhbDsgY29sb3I6IHdoaXRlOyI+MS4wLjBSQzENCistIDA3LzAyLzIwMTA8L3NwYW4+PC9oMz48b2wgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHN0YXJ0PSIxIiB0eXBlPSIxIj4NCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48Yj48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPkdlbmVyYWw8L3NwYW4+PC9pPjwvYj48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPjwvc3Bhbj48L2k+PGk+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaT48L2xpPg0KKyAgICAgICAgICAgIDwvb2w+DQorICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4NCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPlNUTTMyTDF4eCBDTVNJUyBmaWxlcw0KK3VwZGF0ZWQgdG8gPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+Q01TSVMgVjEuMzA8L3NwYW4+IHJlbGVhc2U8L3NwYW4+PC9saT4NCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPkRpcmVjdG9yeSBzdHJ1Y3R1cmUNCit1cGRhdGVkIHRvIGJlIGFsaWduZWQgd2l0aCBDTVNJUyBWMS4zMDxicj4NCisgICAgICAgICAgICAgICAgPC9zcGFuPjwvbGk+DQorICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij5BZGQgc3VwcG9ydA0KK2ZvciZuYnNwOzxiPlNUTTMyTCBVbHRyYSBMb3ctcG93ZXINCitNZWRpdW0tZGVuc2l0eSZuYnNwOyAoU1RNMzJMMTV4eDgvQikgZGV2aWNlczwvYj4uJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPg0KKyAgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgICAgPG9sIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiBzdGFydD0iMiIgdHlwZT0iMSI+DQorICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PGI+PGk+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij5DTVNJUyBDb3JlIFBlcmlwaGVyYWwNCitBY2Nlc3MgTGF5ZXI8L3NwYW4+PC9pPjwvYj48L2xpPg0KKyAgICAgICAgICAgIDwvb2w+DQorICAgICAgICAgICAgPHVsPg0KKyAgICAgICAgICAgICAgPGxpPjxiPjxpPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+PC9zcGFuPjwvaT48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij4gUmVmZXIgdG8gPGEgaHJlZj0iLi4vLi4vLi4vQ01TSVNfY2hhbmdlcy5odG0iIHRhcmdldD0iX2JsYW5rIj5DTVNJUyBjaGFuZ2VzPC9hPjwvc3Bhbj48L2xpPg0KKyAgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgICAgPG9sIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDsiIHN0YXJ0PSIzIj4NCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48Yj48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPlNUTTMyTDF4eCBDTVNJUyBEZXZpY2UNCitQZXJpcGhlcmFsIEFjY2VzcyBMYXllciA8L3NwYW4+PC9pPjwvYj48Yj48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9pPjwvYj48L2xpPg0KKyAgICAgICAgICAgIDwvb2w+DQorICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4NCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlNUTTMyTDF4eCBDTVNJUyBDb3J0ZXgtTTMgRGV2aWNlDQorUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXIgSGVhZGVyIEZpbGU6PC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc3R5bGU6IGl0YWxpYzsiPnN0bTMybDF4eC5oPC9zcGFuPjwvc3Bhbj48YnI+DQorICAgICAgICAgICAgICA8L2xpPg0KKyAgICAgICAgICAgICAgPHVsPg0KKyAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij5BbGwgbGlicmFyeSBmaWxlcyByZW5hbWVkIHdpdGggc3RtMzJsMTV4IHRvIHN0bTMybDF4eC48L3NwYW4+PC9saT4NCisgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+U1RNMzJMMTVYX0xQIHByb2R1Y3QgbmFtZSByZW5hbWVkIHRvIFNUTTMyTDFYWF9NRC48YnI+DQorICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvbGk+DQorICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPkhTRV9WQUxVRSB2YWx1ZSBjaGFuZ2VkIHRvIDhNSHouPC9zcGFuPjwvbGk+DQorICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPkFkZCBuZXcgcmVnaXN0ZXIgaW4gU1lTQ0ZHOiBQTUMgcmVnaXN0ZXI8L3NwYW4+PC9saT4NCisgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+UlRDIFRDUiByZWdpc3RlciByZW5hbWVkIHRvIFRBRkNSPC9zcGFuPjwvbGk+DQorICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPkdQSU9GJm5ic3A7IHJlbmFtZWQgdG8gR1BJT0g8L3NwYW4+PC9saT4NCisgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+QWRkIGFuZCB1cGRhdGUgb2YgYWxsIHBlcmlwaGVyYWxzIGJpdHMgZGVmaW5pdGlvbnM8YnI+DQorPC9zcGFuPjwvbGk+DQorDQorICAgICAgICAgICAgICA8L3VsPg0KKyAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+U1RNMzJMMXh4IENNU0lTIENvcnRleC1NMyBEZXZpY2UNCitQZXJpcGhlcmFsIEFjY2VzcyBMYXllciBTeXN0ZW0gRmlsZXM6PC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc3R5bGU6IGl0YWxpYzsiPnN5c3RlbV9zdG0zMmwxeHguaCBhbmQNCitzeXN0ZW1fc3RtMzJsMXh4LmM8L3NwYW4+PC9zcGFuPjxicj4NCisgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij48L3NwYW4+PC9saT4NCisgICAgICAgICAgICAgIDx1bD4NCisgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+U3lzdGVtRnJlcXVlbmN5DQordmFyaWFibGUgbmFtZSBjaGFuZ2VkIHRvIFN5c3RlbUNvcmVDbG9jazwvc3Bhbj48YnI+DQorICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PC9zcGFuPjwvc3Bhbj48L2xpPg0KKyAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+RGVmYXVsdCA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+U3lzdGVtQ29yZUNsb2NrPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPiBpcyBjaGFuZ2VkIHRvIDMyTUh6IChjaGFuZ2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IGZyb20gU1lTQ0xLX0ZSRVFfSFNFIHRvIFNZU0NMS19GUkVRXzMyTUh6KS48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+PGJyPg0KKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2xpPg0KKyAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij5BbGwgd2hpbGUoMSkgbG9vcCB3ZXJlDQorcmVtb3ZlZCBmcm9tIGFsbCBjbG9jayBzZXR0aW5nIGZ1bmN0aW9ucy4gVXNlciBoYXMgdG8gaGFuZGxlIHRoZSBIU0UNCitzdGFydHVwIGZhaWx1cmUuPGJyPg0KKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2xpPg0KKyAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij5BZGRpdGlvbmFsIGZ1bmN0aW9uIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zdHlsZTogaXRhbGljOyI+dm9pZA0KK1N5c3RlbUNvcmVDbG9ja1VwZGF0ZSAodm9pZCk8L3NwYW4+IGlzIHByb3ZpZGVkLjxicj4NCisgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9saT4NCisgICAgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij48c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5TVE0zMkYxMHggQ01TSVMgU3RhcnR1cCBmaWxlczo8L3NwYW4+DQorICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zdHlsZTogaXRhbGljOyI+c3RhcnR1cF9zdG0zMmwxeHhfbWQuczwvc3Bhbj48L3NwYW4+PC9saT4NCisgICAgICAgICAgICAgIDx1bD4NCisgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+U3RhcnR1cCBmaWxlIG5hbWUgY2hhbmdlZCBmcm9tIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPnN0YXJ0dXBfc3RtMzJsMTV4X2xwPC9zcGFuPi5zIHRvIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPnN0YXJ0dXBfc3RtMzJsMXh4X21kLnM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXN0eWxlOiBpdGFsaWM7Ij4uPC9zcGFuPjwvc3Bhbj48L2xpPg0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+U3lzdGVtSW5pdCgpIGZ1bmN0aW9uDQoraXMgY2FsbGVkIGZyb20gc3RhcnR1cCBmaWxlIChzdGFydHVwX3N0bTMybDF4eF9tZC5zKSBiZWZvcmUgdG8gYnJhbmNoDQordG8gYXBwbGljYXRpb24gbWFpbi48YnI+DQorVG8gcmVjb25maWd1cmUgdGhlIGRlZmF1bHQgc2V0dGluZyBvZiBTeXN0ZW1Jbml0KCkgZnVuY3Rpb24sIHJlZmVyIHRvDQorc3lzdGVtX3N0bTMybDF4eC5jIGZpbGUgPGJyPg0KKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2xpPg0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgICAgPC91bD4NCisgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPg0KKyAgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgICAgPGgyIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48YSBuYW1lPSJMaWNlbnNlIj48L2E+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHdoaXRlOyI+TGljZW5zZTxvOnA+PC9vOnA+PC9zcGFuPjwvaDI+DQorICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGNtOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPlRoZQ0KK2VuY2xvc2VkIGZpcm13YXJlIGFuZCBhbGwgdGhlIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBhcmUgbm90IGNvdmVyZWQgYnkNCithIExpY2Vuc2UgQWdyZWVtZW50LCBpZiB5b3UgbmVlZCBzdWNoIExpY2Vuc2UgeW91IGNhbiBjb250YWN0IHlvdXINCitsb2NhbCBTVE1pY3JvZWxlY3Ryb25pY3Mgb2ZmaWNlLjx1MTpwPjwvdTE6cD48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQorICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPlRIRQ0KK1BSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPDQorU0FWRSBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1INCitBTlkgRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWQ0KK0NMQUlNUyBBUklTSU5HIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZDQorQ1VTVE9NRVJTIE9GIFRIRSBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEgNCitUSEVJUiBQUk9EVUNUUy4gPG86cD48L286cD48L3NwYW4+PC9iPjwvcD4NCisgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij4NCisgICAgICAgICAgICA8aHIgYWxpZ249ImNlbnRlciIgc2l6ZT0iMiIgd2lkdGg9IjEwMCUiPjwvc3Bhbj48L2Rpdj4NCisgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwY20gNC41cHQgMThwdDsgdGV4dC1hbGlnbjogY2VudGVyOyIgYWxpZ249ImNlbnRlciI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPkZvcg0KK2NvbXBsZXRlIGRvY3VtZW50YXRpb24gb24gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+U1RNMzJMICg8c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+Q09SVEVYIE0zKSAzMi1CaXQgTWljcm9jb250cm9sbGVycw0KK3Zpc2l0IDwvc3Bhbj48dT48c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij48YSBocmVmPSJodHRwOi8vd3d3LnN0LmNvbS9zdG0zMmwiIHRhcmdldD0iX2JsYW5rIj53d3cuc3QuY29tL1NUTTMyTDwvYT48L3NwYW4+PC91Pjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPg0KKyAgICAgICAgICAgIDwvdGQ+DQorICAgICAgICAgIDwvdHI+DQorICAgICAgICA8L3Rib2R5Pg0KKyAgICAgIDwvdGFibGU+DQorICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCisgICAgICA8L3RkPg0KKyAgICA8L3RyPg0KKyAgPC90Ym9keT4NCis8L3RhYmxlPg0KKzwvZGl2Pg0KKzxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KKzwvZGl2Pg0KKw0KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0RldmljZVN1cHBvcnQvU1QvU1RNMzJMMXh4L3N0YXJ0dXAvYXJtL3N0YXJ0dXBfc3RtMzJsMXh4X21kLnMgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9DTTMvRGV2aWNlU3VwcG9ydC9TVC9TVE0zMkwxeHgvc3RhcnR1cC9hcm0vc3RhcnR1cF9zdG0zMmwxeHhfbWQucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTE3YjMxCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0RldmljZVN1cHBvcnQvU1QvU1RNMzJMMXh4L3N0YXJ0dXAvYXJtL3N0YXJ0dXBfc3RtMzJsMXh4X21kLnMKQEAgLTAsMCArMSwzMTIgQEAKKzsqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqKioqKioqKioqKioqKioqDQorOyogRmlsZSBOYW1lICAgICAgICAgIDogc3RhcnR1cF9zdG0zMmwxNXhfbHAucw0KKzsqIEF1dGhvciAgICAgICAgICAgICA6IE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorOyogVmVyc2lvbiAgICAgICAgICAgIDogVjEuMC4wUkMxDQorOyogRGF0ZSAgICAgICAgICAgICAgIDogMDcvMDIvMjAxMA0KKzsqIERlc2NyaXB0aW9uICAgICAgICA6IFNUTTMyTDE1eCBMb3cgUG93ZXIgRGV2aWNlcyB2ZWN0b3IgdGFibGUgZm9yIFJWTURLIA0KKzsqICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbi4NCis7KiAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1vZHVsZSBwZXJmb3JtczoNCis7KiAgICAgICAgICAgICAgICAgICAgICAtIFNldCB0aGUgaW5pdGlhbCBTUA0KKzsqICAgICAgICAgICAgICAgICAgICAgIC0gU2V0IHRoZSBpbml0aWFsIFBDID09IFJlc2V0X0hhbmRsZXINCis7KiAgICAgICAgICAgICAgICAgICAgICAtIFNldCB0aGUgdmVjdG9yIHRhYmxlIGVudHJpZXMgd2l0aCB0aGUgZXhjZXB0aW9ucyBJU1IgYWRkcmVzcw0KKzsqICAgICAgICAgICAgICAgICAgICAgIC0gQnJhbmNoZXMgdG8gX19tYWluIGluIHRoZSBDIGxpYnJhcnkgKHdoaWNoIGV2ZW50dWFsbHkNCis7KiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxzIG1haW4oKSkuDQorOyogICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgUmVzZXQgdGhlIENvcnRleE0zIHByb2Nlc3NvciBpcyBpbiBUaHJlYWQgbW9kZSwNCis7KiAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eSBpcyBQcml2aWxlZ2VkLCBhbmQgdGhlIFN0YWNrIGlzIHNldCB0byBNYWluLg0KKzsqIDw8PCBVc2UgQ29uZmlndXJhdGlvbiBXaXphcmQgaW4gQ29udGV4dCBNZW51ID4+PiAgIA0KKzsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorOyBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCis7IFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFIFRJTUUuDQorOyBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwNCis7IElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HIEZST00gVEhFDQorOyBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFIENPRElORw0KKzsgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisNCis7IEFtb3VudCBvZiBtZW1vcnkgKGluIGJ5dGVzKSBhbGxvY2F0ZWQgZm9yIFN0YWNrDQorOyBUYWlsb3IgdGhpcyB2YWx1ZSB0byB5b3VyIGFwcGxpY2F0aW9uIG5lZWRzDQorOyA8aD4gU3RhY2sgQ29uZmlndXJhdGlvbg0KKzsgICA8bz4gU3RhY2sgU2l6ZSAoaW4gQnl0ZXMpIDwweDAtMHhGRkZGRkZGRjo4Pg0KKzsgPC9oPg0KKw0KK1N0YWNrX1NpemUgICAgICBFUVUgICAgIDB4MDAwMDA0MDANCisNCisgICAgICAgICAgICAgICAgQVJFQSAgICBTVEFDSywgTk9JTklULCBSRUFEV1JJVEUsIEFMSUdOPTMNCitTdGFja19NZW0gICAgICAgU1BBQ0UgICBTdGFja19TaXplDQorX19pbml0aWFsX3NwDQorDQorDQorOyA8aD4gSGVhcCBDb25maWd1cmF0aW9uDQorOyAgIDxvPiAgSGVhcCBTaXplIChpbiBCeXRlcykgPDB4MC0weEZGRkZGRkZGOjg+DQorOyA8L2g+DQorDQorSGVhcF9TaXplICAgICAgIEVRVSAgICAgMHgwMDAwMDIwMA0KKw0KKyAgICAgICAgICAgICAgICBBUkVBICAgIEhFQVAsIE5PSU5JVCwgUkVBRFdSSVRFLCBBTElHTj0zDQorX19oZWFwX2Jhc2UNCitIZWFwX01lbSAgICAgICAgU1BBQ0UgICBIZWFwX1NpemUNCitfX2hlYXBfbGltaXQNCisNCisgICAgICAgICAgICAgICAgUFJFU0VSVkU4DQorICAgICAgICAgICAgICAgIFRIVU1CDQorDQorDQorOyBWZWN0b3IgVGFibGUgTWFwcGVkIHRvIEFkZHJlc3MgMCBhdCBSZXNldA0KKyAgICAgICAgICAgICAgICBBUkVBICAgIFJFU0VULCBEQVRBLCBSRUFET05MWQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIF9fVmVjdG9ycw0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIF9fVmVjdG9yc19FbmQNCisgICAgICAgICAgICAgICAgRVhQT1JUICBfX1ZlY3RvcnNfU2l6ZQ0KKw0KK19fVmVjdG9ycyAgICAgICBEQ0QgICAgIF9faW5pdGlhbF9zcCAgICAgICAgICAgICAgOyBUb3Agb2YgU3RhY2sNCisgICAgICAgICAgICAgICAgRENEICAgICBSZXNldF9IYW5kbGVyICAgICAgICAgICAgIDsgUmVzZXQgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIE5NSV9IYW5kbGVyICAgICAgICAgICAgICAgOyBOTUkgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIEhhcmRGYXVsdF9IYW5kbGVyICAgICAgICAgOyBIYXJkIEZhdWx0IEhhbmRsZXINCisgICAgICAgICAgICAgICAgRENEICAgICBNZW1NYW5hZ2VfSGFuZGxlciAgICAgICAgIDsgTVBVIEZhdWx0IEhhbmRsZXINCisgICAgICAgICAgICAgICAgRENEICAgICBCdXNGYXVsdF9IYW5kbGVyICAgICAgICAgIDsgQnVzIEZhdWx0IEhhbmRsZXINCisgICAgICAgICAgICAgICAgRENEICAgICBVc2FnZUZhdWx0X0hhbmRsZXIgICAgICAgIDsgVXNhZ2UgRmF1bHQgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFNWQ19IYW5kbGVyICAgICAgICAgICAgICAgOyBTVkNhbGwgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIERlYnVnTW9uX0hhbmRsZXIgICAgICAgICAgOyBEZWJ1ZyBNb25pdG9yIEhhbmRsZXINCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICBQZW5kU1ZfSGFuZGxlciAgICAgICAgICAgIDsgUGVuZFNWIEhhbmRsZXINCisgICAgICAgICAgICAgICAgRENEICAgICBTeXNUaWNrX0hhbmRsZXIgICAgICAgICAgIDsgU3lzVGljayBIYW5kbGVyDQorDQorICAgICAgICAgICAgICAgIDsgRXh0ZXJuYWwgSW50ZXJydXB0cw0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFdXREdfSVJRSGFuZGxlciAgICAgICAgICAgOyBXaW5kb3cgV2F0Y2hkb2cNCisgICAgICAgICAgICAgICAgRENEICAgICBQVkRfSVJRSGFuZGxlciAgICAgICAgICAgIDsgUFZEIHRocm91Z2ggRVhUSSBMaW5lIGRldGVjdA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRBTVBFUl9TVEFNUF9JUlFIYW5kbGVyICAgOyBUYW1wZXIgYW5kIFRpbWUgU3RhbXANCisgICAgICAgICAgICAgICAgRENEICAgICBSVENfV0tVUF9JUlFIYW5kbGVyICAgICAgIDsgUlRDIFdha2V1cA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIEZMQVNIX0lSUUhhbmRsZXIgICAgICAgICAgOyBGTEFTSA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFJDQ19JUlFIYW5kbGVyICAgICAgICAgICAgOyBSQ0MNCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJMF9JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDANCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJMV9JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDENCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJMl9JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDINCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJM19JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDMNCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJNF9JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDQNCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWwxX0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDENCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWwyX0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDINCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWwzX0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDMNCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw0X0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDQNCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw1X0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDUNCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw2X0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDYNCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw3X0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDcNCisgICAgICAgICAgICAgICAgRENEICAgICBBREMxX0lSUUhhbmRsZXIgICAgICAgICAgIDsgQURDMQ0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVTQl9IUF9JUlFIYW5kbGVyICAgICAgICAgOyBVU0IgSGlnaCBQcmlvcml0eQ0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVTQl9MUF9JUlFIYW5kbGVyICAgICAgICAgOyBVU0IgTG93ICBQcmlvcml0eQ0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIERBQ19JUlFIYW5kbGVyICAgICAgICAgICAgOyBEQUMNCisgICAgICAgICAgICAgICAgRENEICAgICBDT01QX0lSUUhhbmRsZXIgICAgICAgICAgIDsgQ09NUCB0aHJvdWdoIEVYVEkgTGluZQ0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIEVYVEk5XzVfSVJRSGFuZGxlciAgICAgICAgOyBFWFRJIExpbmUgOS4uNQ0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIExDRF9JUlFIYW5kbGVyICAgICAgICAgICAgOyBMQ0QNCisgICAgICAgICAgICAgICAgRENEICAgICBUSU05X0lSUUhhbmRsZXIgICAgICAgICAgIDsgVElNOQ0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTTEwX0lSUUhhbmRsZXIgICAgICAgICAgOyBUSU0xMA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTTExX0lSUUhhbmRsZXIgICAgICAgICAgOyBUSU0xMQ0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTTJfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU0yDQorICAgICAgICAgICAgICAgIERDRCAgICAgVElNM19JUlFIYW5kbGVyICAgICAgICAgICA7IFRJTTMNCisgICAgICAgICAgICAgICAgRENEICAgICBUSU00X0lSUUhhbmRsZXIgICAgICAgICAgIDsgVElNNA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIEkyQzFfRVZfSVJRSGFuZGxlciAgICAgICAgOyBJMkMxIEV2ZW50DQorICAgICAgICAgICAgICAgIERDRCAgICAgSTJDMV9FUl9JUlFIYW5kbGVyICAgICAgICA7IEkyQzEgRXJyb3INCisgICAgICAgICAgICAgICAgRENEICAgICBJMkMyX0VWX0lSUUhhbmRsZXIgICAgICAgIDsgSTJDMiBFdmVudA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIEkyQzJfRVJfSVJRSGFuZGxlciAgICAgICAgOyBJMkMyIEVycm9yDQorICAgICAgICAgICAgICAgIERDRCAgICAgU1BJMV9JUlFIYW5kbGVyICAgICAgICAgICA7IFNQSTENCisgICAgICAgICAgICAgICAgRENEICAgICBTUEkyX0lSUUhhbmRsZXIgICAgICAgICAgIDsgU1BJMg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVTQVJUMV9JUlFIYW5kbGVyICAgICAgICAgOyBVU0FSVDENCisgICAgICAgICAgICAgICAgRENEICAgICBVU0FSVDJfSVJRSGFuZGxlciAgICAgICAgIDsgVVNBUlQyDQorICAgICAgICAgICAgICAgIERDRCAgICAgVVNBUlQzX0lSUUhhbmRsZXIgICAgICAgICA7IFVTQVJUMw0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIEVYVEkxNV8xMF9JUlFIYW5kbGVyICAgICAgOyBFWFRJIExpbmUgMTUuLjEwDQorICAgICAgICAgICAgICAgIERDRCAgICAgUlRDX0FsYXJtX0lSUUhhbmRsZXIgICAgICA7IFJUQyBBbGFybSB0aHJvdWdoIEVYVEkgTGluZQ0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVTQl9GU19XS1VQX0lSUUhhbmRsZXIgICAgOyBVU0IgRlMgV2FrZXVwIGZyb20gc3VzcGVuZA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTTZfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU02DQorICAgICAgICAgICAgICAgIERDRCAgICAgVElNN19JUlFIYW5kbGVyICAgICAgICAgICA7IFRJTTcNCitfX1ZlY3RvcnNfRW5kDQorDQorX19WZWN0b3JzX1NpemUgIEVRVSAgX19WZWN0b3JzX0VuZCAtIF9fVmVjdG9ycw0KKw0KKyAgICAgICAgICAgICAgICBBUkVBICAgIHwudGV4dHwsIENPREUsIFJFQURPTkxZDQorDQorOyBSZXNldCBoYW5kbGVyIHJvdXRpbmUNCitSZXNldF9IYW5kbGVyICAgIFBST0MNCisgICAgICAgICAgICAgICAgIEVYUE9SVCAgUmVzZXRfSGFuZGxlciAgICAgICAgICAgICBbV0VBS10NCisgICAgICAgIElNUE9SVCAgX19tYWluDQorICAgICAgICBJTVBPUlQgIFN5c3RlbUluaXQgIA0KKyAgICAgICAgICAgICAgICAgTERSICAgICBSMCwgPVN5c3RlbUluaXQNCisgICAgICAgICAgICAgICAgIEJMWCAgICAgUjAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgTERSICAgICBSMCwgPV9fbWFpbg0KKyAgICAgICAgICAgICAgICAgQlggICAgICBSMA0KKyAgICAgICAgICAgICAgICAgRU5EUA0KKw0KKzsgRHVtbXkgRXhjZXB0aW9uIEhhbmRsZXJzIChpbmZpbml0ZSBsb29wcyB3aGljaCBjYW4gYmUgbW9kaWZpZWQpDQorDQorTk1JX0hhbmRsZXIgICAgIFBST0MNCisgICAgICAgICAgICAgICAgRVhQT1JUICBOTUlfSGFuZGxlciAgICAgICAgICAgICAgICBbV0VBS10NCisgICAgICAgICAgICAgICAgQiAgICAgICAuDQorICAgICAgICAgICAgICAgIEVORFANCitIYXJkRmF1bHRfSGFuZGxlclwNCisgICAgICAgICAgICAgICAgUFJPQw0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEhhcmRGYXVsdF9IYW5kbGVyICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBCICAgICAgIC4NCisgICAgICAgICAgICAgICAgRU5EUA0KK01lbU1hbmFnZV9IYW5kbGVyXA0KKyAgICAgICAgICAgICAgICBQUk9DDQorICAgICAgICAgICAgICAgIEVYUE9SVCAgTWVtTWFuYWdlX0hhbmRsZXIgICAgICAgICAgW1dFQUtdDQorICAgICAgICAgICAgICAgIEIgICAgICAgLg0KKyAgICAgICAgICAgICAgICBFTkRQDQorQnVzRmF1bHRfSGFuZGxlclwNCisgICAgICAgICAgICAgICAgUFJPQw0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEJ1c0ZhdWx0X0hhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBCICAgICAgIC4NCisgICAgICAgICAgICAgICAgRU5EUA0KK1VzYWdlRmF1bHRfSGFuZGxlclwNCisgICAgICAgICAgICAgICAgUFJPQw0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVzYWdlRmF1bHRfSGFuZGxlciAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBCICAgICAgIC4NCisgICAgICAgICAgICAgICAgRU5EUA0KK1NWQ19IYW5kbGVyICAgICBQUk9DDQorICAgICAgICAgICAgICAgIEVYUE9SVCAgU1ZDX0hhbmRsZXIgICAgICAgICAgICAgICAgW1dFQUtdDQorICAgICAgICAgICAgICAgIEIgICAgICAgLg0KKyAgICAgICAgICAgICAgICBFTkRQDQorRGVidWdNb25fSGFuZGxlclwNCisgICAgICAgICAgICAgICAgUFJPQw0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERlYnVnTW9uX0hhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBCICAgICAgIC4NCisgICAgICAgICAgICAgICAgRU5EUA0KK1BlbmRTVl9IYW5kbGVyICBQUk9DDQorICAgICAgICAgICAgICAgIEVYUE9SVCAgUGVuZFNWX0hhbmRsZXIgICAgICAgICAgICAgW1dFQUtdDQorICAgICAgICAgICAgICAgIEIgICAgICAgLg0KKyAgICAgICAgICAgICAgICBFTkRQDQorU3lzVGlja19IYW5kbGVyIFBST0MNCisgICAgICAgICAgICAgICAgRVhQT1JUICBTeXNUaWNrX0hhbmRsZXIgICAgICAgICAgICBbV0VBS10NCisgICAgICAgICAgICAgICAgQiAgICAgICAuDQorICAgICAgICAgICAgICAgIEVORFANCisNCitEZWZhdWx0X0hhbmRsZXIgUFJPQw0KKw0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFdXREdfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFBWRF9JUlFIYW5kbGVyICAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRBTVBFUl9TVEFNUF9JUlFIYW5kbGVyICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFJUQ19XS1VQX0lSUUhhbmRsZXIgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEZMQVNIX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFJDQ19JUlFIYW5kbGVyICAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEkwX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEkxX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEkyX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEkzX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEk0X0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDFfSVJRSGFuZGxlciAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDJfSVJRSGFuZGxlciAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDNfSVJRSGFuZGxlciAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDRfSVJRSGFuZGxlciAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDVfSVJRSGFuZGxlciAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDZfSVJRSGFuZGxlciAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDdfSVJRSGFuZGxlciAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEFEQzFfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVTQl9IUF9JUlFIYW5kbGVyICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVTQl9MUF9JUlFIYW5kbGVyICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERBQ19JUlFIYW5kbGVyICAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIENPTVBfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEk5XzVfSVJRSGFuZGxlciAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIExDRF9JUlFIYW5kbGVyICAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTlfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTEwX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTExX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTJfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTNfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTRfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEkyQzFfRVZfSVJRSGFuZGxlciAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEkyQzFfRVJfSVJRSGFuZGxlciAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEkyQzJfRVZfSVJRSGFuZGxlciAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEkyQzJfRVJfSVJRSGFuZGxlciAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFNQSTFfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFNQSTJfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVTQVJUMV9JUlFIYW5kbGVyICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVTQVJUMl9JUlFIYW5kbGVyICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVTQVJUM19JUlFIYW5kbGVyICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEkxNV8xMF9JUlFIYW5kbGVyICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFJUQ19BbGFybV9JUlFIYW5kbGVyICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVTQl9GU19XS1VQX0lSUUhhbmRsZXIgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTZfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTdfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQ0KKw0KK1dXREdfSVJRSGFuZGxlcg0KK1BWRF9JUlFIYW5kbGVyDQorVEFNUEVSX1NUQU1QX0lSUUhhbmRsZXINCitSVENfV0tVUF9JUlFIYW5kbGVyDQorRkxBU0hfSVJRSGFuZGxlcg0KK1JDQ19JUlFIYW5kbGVyDQorRVhUSTBfSVJRSGFuZGxlcg0KK0VYVEkxX0lSUUhhbmRsZXINCitFWFRJMl9JUlFIYW5kbGVyDQorRVhUSTNfSVJRSGFuZGxlcg0KK0VYVEk0X0lSUUhhbmRsZXINCitETUExX0NoYW5uZWwxX0lSUUhhbmRsZXINCitETUExX0NoYW5uZWwyX0lSUUhhbmRsZXINCitETUExX0NoYW5uZWwzX0lSUUhhbmRsZXINCitETUExX0NoYW5uZWw0X0lSUUhhbmRsZXINCitETUExX0NoYW5uZWw1X0lSUUhhbmRsZXINCitETUExX0NoYW5uZWw2X0lSUUhhbmRsZXINCitETUExX0NoYW5uZWw3X0lSUUhhbmRsZXINCitBREMxX0lSUUhhbmRsZXINCitVU0JfSFBfSVJRSGFuZGxlcg0KK1VTQl9MUF9JUlFIYW5kbGVyDQorREFDX0lSUUhhbmRsZXINCitDT01QX0lSUUhhbmRsZXINCitFWFRJOV81X0lSUUhhbmRsZXINCitMQ0RfSVJRSGFuZGxlcg0KK1RJTTlfSVJRSGFuZGxlcg0KK1RJTTEwX0lSUUhhbmRsZXINCitUSU0xMV9JUlFIYW5kbGVyDQorVElNMl9JUlFIYW5kbGVyDQorVElNM19JUlFIYW5kbGVyDQorVElNNF9JUlFIYW5kbGVyDQorSTJDMV9FVl9JUlFIYW5kbGVyDQorSTJDMV9FUl9JUlFIYW5kbGVyDQorSTJDMl9FVl9JUlFIYW5kbGVyDQorSTJDMl9FUl9JUlFIYW5kbGVyDQorU1BJMV9JUlFIYW5kbGVyDQorU1BJMl9JUlFIYW5kbGVyDQorVVNBUlQxX0lSUUhhbmRsZXINCitVU0FSVDJfSVJRSGFuZGxlcg0KK1VTQVJUM19JUlFIYW5kbGVyDQorRVhUSTE1XzEwX0lSUUhhbmRsZXINCitSVENfQWxhcm1fSVJRSGFuZGxlcg0KK1VTQl9GU19XS1VQX0lSUUhhbmRsZXINCitUSU02X0lSUUhhbmRsZXINCitUSU03X0lSUUhhbmRsZXINCisNCisgICAgICAgICAgICAgICAgQiAgICAgICAuDQorDQorICAgICAgICAgICAgICAgIEVORFANCisNCisgICAgICAgICAgICAgICAgQUxJR04NCisNCis7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKzsgVXNlciBTdGFjayBhbmQgSGVhcCBpbml0aWFsaXphdGlvbg0KKzsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAgICAgICAgICAgICAgICBJRiAgICAgIDpERUY6X19NSUNST0xJQiAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgRVhQT1JUICBfX2luaXRpYWxfc3ANCisgICAgICAgICAgICAgICAgIEVYUE9SVCAgX19oZWFwX2Jhc2UNCisgICAgICAgICAgICAgICAgIEVYUE9SVCAgX19oZWFwX2xpbWl0DQorICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgRUxTRQ0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgIElNUE9SVCAgX191c2VfdHdvX3JlZ2lvbl9tZW1vcnkNCisgICAgICAgICAgICAgICAgIEVYUE9SVCAgX191c2VyX2luaXRpYWxfc3RhY2toZWFwDQorICAgICAgICAgICAgICAgICANCitfX3VzZXJfaW5pdGlhbF9zdGFja2hlYXANCisNCisgICAgICAgICAgICAgICAgIExEUiAgICAgUjAsID0gIEhlYXBfTWVtDQorICAgICAgICAgICAgICAgICBMRFIgICAgIFIxLCA9KFN0YWNrX01lbSArIFN0YWNrX1NpemUpDQorICAgICAgICAgICAgICAgICBMRFIgICAgIFIyLCA9IChIZWFwX01lbSArICBIZWFwX1NpemUpDQorICAgICAgICAgICAgICAgICBMRFIgICAgIFIzLCA9IFN0YWNrX01lbQ0KKyAgICAgICAgICAgICAgICAgQlggICAgICBMUg0KKw0KKyAgICAgICAgICAgICAgICAgQUxJR04NCisNCisgICAgICAgICAgICAgICAgIEVORElGDQorDQorICAgICAgICAgICAgICAgICBFTkQNCisNCis7KioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqKg0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNMy9EZXZpY2VTdXBwb3J0L1NUL1NUTTMyTDF4eC9zdGFydHVwL2lhci9zdGFydHVwX3N0bTMybDF4eF9tZC5zIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0RldmljZVN1cHBvcnQvU1QvU1RNMzJMMXh4L3N0YXJ0dXAvaWFyL3N0YXJ0dXBfc3RtMzJsMXh4X21kLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNhYTlhNAotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNMy9EZXZpY2VTdXBwb3J0L1NUL1NUTTMyTDF4eC9zdGFydHVwL2lhci9zdGFydHVwX3N0bTMybDF4eF9tZC5zCkBAIC0wLDAgKzEsNDU1IEBACis7LyoqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKioqKioqKioqKioqKioqKioNCis7KiBGaWxlIE5hbWUgICAgICAgICAgOiBzdGFydHVwX3N0bTMybDE1eF9scC5zDQorOyogQXV0aG9yICAgICAgICAgICAgIDogTUNEIEFwcGxpY2F0aW9uIFRlYW0NCis7KiBWZXJzaW9uICAgICAgICAgICAgOiBWMS4wLjBSQzENCis7KiBEYXRlICAgICAgICAgICAgICAgOiAwNy8wMi8yMDEwDQorOyogRGVzY3JpcHRpb24gICAgICAgIDogU1RNMzJMMTV4IExvdyBQb3dlciBEZXZpY2VzIHZlY3RvciB0YWJsZSBmb3IgRVdBUk01LnggdG9vbGNoYWluLg0KKzsqICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbW9kdWxlIHBlcmZvcm1zOg0KKzsqICAgICAgICAgICAgICAgICAgICAgIC0gU2V0IHRoZSBpbml0aWFsIFNQDQorOyogICAgICAgICAgICAgICAgICAgICAgLSBTZXQgdGhlIGluaXRpYWwgUEMgPT0gX19pYXJfcHJvZ3JhbV9zdGFydCwNCis7KiAgICAgICAgICAgICAgICAgICAgICAtIFNldCB0aGUgdmVjdG9yIHRhYmxlIGVudHJpZXMgd2l0aCB0aGUgZXhjZXB0aW9ucyBJU1IgDQorOyogICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLg0KKzsqICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIFJlc2V0IHRoZSBDb3J0ZXgtTTMgcHJvY2Vzc29yIGlzIGluIFRocmVhZCBtb2RlLA0KKzsqICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5IGlzIFByaXZpbGVnZWQsIGFuZCB0aGUgU3RhY2sgaXMgc2V0IHRvIE1haW4uDQorOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorOyogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorOyogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUgVElNRS4NCis7KiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwNCis7KiBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORyBGUk9NIFRIRQ0KKzsqIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUgQ09ESU5HDQorOyogSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorOw0KKzsNCis7IFRoZSBtb2R1bGVzIGluIHRoaXMgZmlsZSBhcmUgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcmllcywgYW5kIG1heSBiZSByZXBsYWNlZA0KKzsgYnkgYW55IHVzZXItZGVmaW5lZCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBQVUJMSUMgc3ltYm9sIF9wcm9ncmFtX3N0YXJ0IG9yDQorOyBhIHVzZXIgZGVmaW5lZCBzdGFydCBzeW1ib2wuDQorOyBUbyBvdmVycmlkZSB0aGUgY3N0YXJ0dXAgZGVmaW5lZCBpbiB0aGUgbGlicmFyeSwgc2ltcGx5IGFkZCB5b3VyIG1vZGlmaWVkDQorOyB2ZXJzaW9uIHRvIHRoZSB3b3JrYmVuY2ggcHJvamVjdC4NCis7DQorOyBUaGUgdmVjdG9yIHRhYmxlIGlzIG5vcm1hbGx5IGxvY2F0ZWQgYXQgYWRkcmVzcyAwLg0KKzsgV2hlbiBkZWJ1Z2dpbmcgaW4gUkFNLCBpdCBjYW4gYmUgbG9jYXRlZCBpbiBSQU0sIGFsaWduZWQgdG8gYXQgbGVhc3QgMl42Lg0KKzsgVGhlIG5hbWUgIl9fdmVjdG9yX3RhYmxlIiBoYXMgc3BlY2lhbCBtZWFuaW5nIGZvciBDLVNQWToNCis7IGl0IGlzIHdoZXJlIHRoZSBTUCBzdGFydCB2YWx1ZSBpcyBmb3VuZCwgYW5kIHRoZSBOVklDIHZlY3Rvcg0KKzsgdGFibGUgcmVnaXN0ZXIgKFZUT1IpIGlzIGluaXRpYWxpemVkIHRvIHRoaXMgYWRkcmVzcyBpZiAhPSAwLg0KKzsNCis7IENvcnRleC1NIHZlcnNpb24NCis7DQorDQorICAgICAgICBNT0RVTEUgID9jc3RhcnR1cA0KKw0KKyAgICAgICAgOzsgRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBzZWN0aW9ucy4NCisgICAgICAgIFNFQ1RJT04gQ1NUQUNLOkRBVEE6Tk9ST09UKDMpDQorDQorICAgICAgICBTRUNUSU9OIC5pbnR2ZWM6Q09ERTpOT1JPT1QoMikNCisNCisgICAgICAgIEVYVEVSTiAgX19pYXJfcHJvZ3JhbV9zdGFydA0KKyAgICAgICAgRVhURVJOICBTeXN0ZW1Jbml0ICAgICAgICANCisgICAgICAgIFBVQkxJQyAgX192ZWN0b3JfdGFibGUNCisNCisgICAgICAgIERBVEENCitfX3ZlY3Rvcl90YWJsZQ0KKyAgICAgICAgRENEICAgICBzZmUoQ1NUQUNLKQ0KKyAgICAgICAgRENEICAgICBSZXNldF9IYW5kbGVyICAgICAgICAgICAgIDsgUmVzZXQgSGFuZGxlcg0KKw0KKyAgICAgICAgRENEICAgICBOTUlfSGFuZGxlciAgICAgICAgICAgICAgIDsgTk1JIEhhbmRsZXINCisgICAgICAgIERDRCAgICAgSGFyZEZhdWx0X0hhbmRsZXIgICAgICAgICA7IEhhcmQgRmF1bHQgSGFuZGxlcg0KKyAgICAgICAgRENEICAgICBNZW1NYW5hZ2VfSGFuZGxlciAgICAgICAgIDsgTVBVIEZhdWx0IEhhbmRsZXINCisgICAgICAgIERDRCAgICAgQnVzRmF1bHRfSGFuZGxlciAgICAgICAgICA7IEJ1cyBGYXVsdCBIYW5kbGVyDQorICAgICAgICBEQ0QgICAgIFVzYWdlRmF1bHRfSGFuZGxlciAgICAgICAgOyBVc2FnZSBGYXVsdCBIYW5kbGVyDQorICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgIERDRCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICA7IFJlc2VydmVkDQorICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgRENEICAgICBTVkNfSGFuZGxlciAgICAgICAgICAgICAgIDsgU1ZDYWxsIEhhbmRsZXINCisgICAgICAgIERDRCAgICAgRGVidWdNb25fSGFuZGxlciAgICAgICAgICA7IERlYnVnIE1vbml0b3IgSGFuZGxlcg0KKyAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgIERDRCAgICAgUGVuZFNWX0hhbmRsZXIgICAgICAgICAgICA7IFBlbmRTViBIYW5kbGVyDQorICAgICAgICBEQ0QgICAgIFN5c1RpY2tfSGFuZGxlciAgICAgICAgICAgOyBTeXNUaWNrIEhhbmRsZXINCisNCisgICAgICAgICA7IEV4dGVybmFsIEludGVycnVwdHMNCisgICAgICAgIERDRCAgICAgV1dER19JUlFIYW5kbGVyICAgICAgICAgICA7IFdpbmRvdyBXYXRjaGRvZw0KKyAgICAgICAgRENEICAgICBQVkRfSVJRSGFuZGxlciAgICAgICAgICAgIDsgUFZEIHRocm91Z2ggRVhUSSBMaW5lIGRldGVjdA0KKyAgICAgICAgRENEICAgICBUQU1QRVJfU1RBTVBfSVJRSGFuZGxlciAgIDsgVGFtcGVyIGFuZCBUaW1lIFN0YW1wDQorICAgICAgICBEQ0QgICAgIFJUQ19XS1VQX0lSUUhhbmRsZXIgICAgICAgOyBSVEMgV2FrZXVwDQorICAgICAgICBEQ0QgICAgIEZMQVNIX0lSUUhhbmRsZXIgICAgICAgICAgOyBGTEFTSA0KKyAgICAgICAgRENEICAgICBSQ0NfSVJRSGFuZGxlciAgICAgICAgICAgIDsgUkNDDQorICAgICAgICBEQ0QgICAgIEVYVEkwX0lSUUhhbmRsZXIgICAgICAgICAgOyBFWFRJIExpbmUgMA0KKyAgICAgICAgRENEICAgICBFWFRJMV9JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDENCisgICAgICAgIERDRCAgICAgRVhUSTJfSVJRSGFuZGxlciAgICAgICAgICA7IEVYVEkgTGluZSAyDQorICAgICAgICBEQ0QgICAgIEVYVEkzX0lSUUhhbmRsZXIgICAgICAgICAgOyBFWFRJIExpbmUgMw0KKyAgICAgICAgRENEICAgICBFWFRJNF9JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDQNCisgICAgICAgIERDRCAgICAgRE1BMV9DaGFubmVsMV9JUlFIYW5kbGVyICA7IERNQTEgQ2hhbm5lbCAxDQorICAgICAgICBEQ0QgICAgIERNQTFfQ2hhbm5lbDJfSVJRSGFuZGxlciAgOyBETUExIENoYW5uZWwgMg0KKyAgICAgICAgRENEICAgICBETUExX0NoYW5uZWwzX0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDMNCisgICAgICAgIERDRCAgICAgRE1BMV9DaGFubmVsNF9JUlFIYW5kbGVyICA7IERNQTEgQ2hhbm5lbCA0DQorICAgICAgICBEQ0QgICAgIERNQTFfQ2hhbm5lbDVfSVJRSGFuZGxlciAgOyBETUExIENoYW5uZWwgNQ0KKyAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw2X0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDYNCisgICAgICAgIERDRCAgICAgRE1BMV9DaGFubmVsN19JUlFIYW5kbGVyICA7IERNQTEgQ2hhbm5lbCA3DQorICAgICAgICBEQ0QgICAgIEFEQzFfSVJRSGFuZGxlciAgICAgICAgICAgOyBBREMxDQorICAgICAgICBEQ0QgICAgIFVTQl9IUF9JUlFIYW5kbGVyICAgICAgICAgOyBVU0IgSGlnaCBQcmlvcml0eQ0KKyAgICAgICAgRENEICAgICBVU0JfTFBfSVJRSGFuZGxlciAgICAgICAgIDsgVVNCIExvdyAgUHJpb3JpdHkNCisgICAgICAgIERDRCAgICAgREFDX0lSUUhhbmRsZXIgICAgICAgICAgICA7IERBQw0KKyAgICAgICAgRENEICAgICBDT01QX0lSUUhhbmRsZXIgICAgICAgICAgIDsgQ09NUCB0aHJvdWdoIEVYVEkgTGluZQ0KKyAgICAgICAgRENEICAgICBFWFRJOV81X0lSUUhhbmRsZXIgICAgICAgIDsgRVhUSSBMaW5lIDkuLjUNCisgICAgICAgIERDRCAgICAgTENEX0lSUUhhbmRsZXIgICAgICAgICAgICA7IExDRA0KKyAgICAgICAgRENEICAgICBUSU05X0lSUUhhbmRsZXIgICAgICAgICAgIDsgVElNOQ0KKyAgICAgICAgRENEICAgICBUSU0xMF9JUlFIYW5kbGVyICAgICAgICAgIDsgVElNMTANCisgICAgICAgIERDRCAgICAgVElNMTFfSVJRSGFuZGxlciAgICAgICAgICA7IFRJTTExDQorICAgICAgICBEQ0QgICAgIFRJTTJfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU0yDQorICAgICAgICBEQ0QgICAgIFRJTTNfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU0zDQorICAgICAgICBEQ0QgICAgIFRJTTRfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU00DQorICAgICAgICBEQ0QgICAgIEkyQzFfRVZfSVJRSGFuZGxlciAgICAgICAgOyBJMkMxIEV2ZW50DQorICAgICAgICBEQ0QgICAgIEkyQzFfRVJfSVJRSGFuZGxlciAgICAgICAgOyBJMkMxIEVycm9yDQorICAgICAgICBEQ0QgICAgIEkyQzJfRVZfSVJRSGFuZGxlciAgICAgICAgOyBJMkMyIEV2ZW50DQorICAgICAgICBEQ0QgICAgIEkyQzJfRVJfSVJRSGFuZGxlciAgICAgICAgOyBJMkMyIEVycm9yDQorICAgICAgICBEQ0QgICAgIFNQSTFfSVJRSGFuZGxlciAgICAgICAgICAgOyBTUEkxDQorICAgICAgICBEQ0QgICAgIFNQSTJfSVJRSGFuZGxlciAgICAgICAgICAgOyBTUEkyDQorICAgICAgICBEQ0QgICAgIFVTQVJUMV9JUlFIYW5kbGVyICAgICAgICAgOyBVU0FSVDENCisgICAgICAgIERDRCAgICAgVVNBUlQyX0lSUUhhbmRsZXIgICAgICAgICA7IFVTQVJUMg0KKyAgICAgICAgRENEICAgICBVU0FSVDNfSVJRSGFuZGxlciAgICAgICAgIDsgVVNBUlQzDQorICAgICAgICBEQ0QgICAgIEVYVEkxNV8xMF9JUlFIYW5kbGVyICAgICAgOyBFWFRJIExpbmUgMTUuLjEwDQorICAgICAgICBEQ0QgICAgIFJUQ19BbGFybV9JUlFIYW5kbGVyICAgICAgOyBSVEMgQWxhcm0gdGhyb3VnaCBFWFRJIExpbmUNCisgICAgICAgIERDRCAgICAgVVNCX0ZTX1dLVVBfSVJRSGFuZGxlciAgICA7IFVTQiBGUyBXYWtldXAgZnJvbSBzdXNwZW5kDQorICAgICAgICBEQ0QgICAgIFRJTTZfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU02DQorICAgICAgICBEQ0QgICAgIFRJTTdfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU03DQorICAgICAgICANCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQorOzsNCis7OyBEZWZhdWx0IGludGVycnVwdCBoYW5kbGVycy4NCis7Ow0KKyAgICAgICAgVEhVTUINCisNCisgICAgICAgIFBVQldFQUsgUmVzZXRfSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMikNCitSZXNldF9IYW5kbGVyDQorICAgICAgICBMRFIgICAgIFIwLCA9U3lzdGVtSW5pdA0KKyAgICAgICAgQkxYICAgICBSMA0KKyAgICAgICAgTERSICAgICBSMCwgPV9faWFyX3Byb2dyYW1fc3RhcnQNCisgICAgICAgIEJYICAgICAgUjANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBOTUlfSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitOTUlfSGFuZGxlcg0KKyAgICAgICAgQiBOTUlfSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgSGFyZEZhdWx0X0hhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorSGFyZEZhdWx0X0hhbmRsZXINCisgICAgICAgIEIgSGFyZEZhdWx0X0hhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIE1lbU1hbmFnZV9IYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK01lbU1hbmFnZV9IYW5kbGVyDQorICAgICAgICBCIE1lbU1hbmFnZV9IYW5kbGVyDQorICAgICAgICANCisgICAgICAgICAgICAgICAgDQorICAgICAgICBQVUJXRUFLIEJ1c0ZhdWx0X0hhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorQnVzRmF1bHRfSGFuZGxlcg0KKyAgICAgICAgQiBCdXNGYXVsdF9IYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBVc2FnZUZhdWx0X0hhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVXNhZ2VGYXVsdF9IYW5kbGVyDQorICAgICAgICBCIFVzYWdlRmF1bHRfSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgU1ZDX0hhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorU1ZDX0hhbmRsZXINCisgICAgICAgIEIgU1ZDX0hhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIERlYnVnTW9uX0hhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRGVidWdNb25fSGFuZGxlcg0KKyAgICAgICAgQiBEZWJ1Z01vbl9IYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBQZW5kU1ZfSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitQZW5kU1ZfSGFuZGxlcg0KKyAgICAgICAgQiBQZW5kU1ZfSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgU3lzVGlja19IYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1N5c1RpY2tfSGFuZGxlcg0KKyAgICAgICAgQiBTeXNUaWNrX0hhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIFdXREdfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitXV0RHX0lSUUhhbmRsZXINCisgICAgICAgIEIgV1dER19JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBQVkRfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitQVkRfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBQVkRfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgVEFNUEVSX1NUQU1QX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVEFNUEVSX1NUQU1QX0lSUUhhbmRsZXINCisgICAgICAgIEIgVEFNUEVSX1NUQU1QX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIFJUQ19XS1VQX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorUlRDX1dLVVBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBSVENfV0tVUF9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBGTEFTSF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0ZMQVNIX0lSUUhhbmRsZXINCisgICAgICAgIEIgRkxBU0hfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgUkNDX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorUkNDX0lSUUhhbmRsZXINCisgICAgICAgIEIgUkNDX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIEVYVEkwX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRVhUSTBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJMF9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBFWFRJMV9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0VYVEkxX0lSUUhhbmRsZXINCisgICAgICAgIEIgRVhUSTFfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgRVhUSTJfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitFWFRJMl9JUlFIYW5kbGVyDQorICAgICAgICBCIEVYVEkyX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIEVYVEkzX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRVhUSTNfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJM19JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBFWFRJNF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0VYVEk0X0lSUUhhbmRsZXINCisgICAgICAgIEIgRVhUSTRfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgRE1BMV9DaGFubmVsMV9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0RNQTFfQ2hhbm5lbDFfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBETUExX0NoYW5uZWwxX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDJfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWwyX0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsMl9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBETUExX0NoYW5uZWwzX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRE1BMV9DaGFubmVsM19JUlFIYW5kbGVyDQorICAgICAgICBCIERNQTFfQ2hhbm5lbDNfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgRE1BMV9DaGFubmVsNF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0RNQTFfQ2hhbm5lbDRfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBETUExX0NoYW5uZWw0X0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDVfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWw1X0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsNV9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBETUExX0NoYW5uZWw2X0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRE1BMV9DaGFubmVsNl9JUlFIYW5kbGVyDQorICAgICAgICBCIERNQTFfQ2hhbm5lbDZfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgRE1BMV9DaGFubmVsN19JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0RNQTFfQ2hhbm5lbDdfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBETUExX0NoYW5uZWw3X0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIEFEQzFfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitBREMxX0lSUUhhbmRsZXINCisgICAgICAgIEIgQURDMV9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBVU0JfSFBfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitVU0JfSFBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBVU0JfSFBfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgVVNCX0xQX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVVNCX0xQX0lSUUhhbmRsZXINCisgICAgICAgIEIgVVNCX0xQX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIERBQ19JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0RBQ19JUlFIYW5kbGVyDQorICAgICAgICBCIERBQ19JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBDT01QX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorQ09NUF9JUlFIYW5kbGVyDQorICAgICAgICBCIENPTVBfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgRVhUSTlfNV9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0VYVEk5XzVfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJOV81X0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIExDRF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0xDRF9JUlFIYW5kbGVyDQorICAgICAgICBCIExDRF9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBUSU05X0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVElNOV9JUlFIYW5kbGVyDQorICAgICAgICBCIFRJTTlfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgVElNMTBfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitUSU0xMF9JUlFIYW5kbGVyDQorICAgICAgICBCIFRJTTEwX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIFRJTTExX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVElNMTFfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBUSU0xMV9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBUSU0yX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVElNMl9JUlFIYW5kbGVyDQorICAgICAgICBCIFRJTTJfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgVElNM19JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1RJTTNfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBUSU0zX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIFRJTTRfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitUSU00X0lSUUhhbmRsZXINCisgICAgICAgIEIgVElNNF9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBJMkMxX0VWX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorSTJDMV9FVl9JUlFIYW5kbGVyDQorICAgICAgICBCIEkyQzFfRVZfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgSTJDMV9FUl9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0kyQzFfRVJfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBJMkMxX0VSX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIEkyQzJfRVZfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitJMkMyX0VWX0lSUUhhbmRsZXINCisgICAgICAgIEIgSTJDMl9FVl9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBJMkMyX0VSX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorSTJDMl9FUl9JUlFIYW5kbGVyDQorICAgICAgICBCIEkyQzJfRVJfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgU1BJMV9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1NQSTFfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBTUEkxX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIFNQSTJfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitTUEkyX0lSUUhhbmRsZXINCisgICAgICAgIEIgU1BJMl9JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBVU0FSVDFfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitVU0FSVDFfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBVU0FSVDFfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgVVNBUlQyX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVVNBUlQyX0lSUUhhbmRsZXINCisgICAgICAgIEIgVVNBUlQyX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIFVTQVJUM19JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1VTQVJUM19JUlFIYW5kbGVyDQorICAgICAgICBCIFVTQVJUM19JUlFIYW5kbGVyDQorICAgICAgICANCisgICAgICAgIA0KKyAgICAgICAgUFVCV0VBSyBFWFRJMTVfMTBfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitFWFRJMTVfMTBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJMTVfMTBfSVJRSGFuZGxlcg0KKyAgICAgICAgDQorICAgICAgICANCisgICAgICAgIFBVQldFQUsgUlRDX0FsYXJtX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorUlRDX0FsYXJtX0lSUUhhbmRsZXINCisgICAgICAgIEIgUlRDX0FsYXJtX0lSUUhhbmRsZXINCisgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBQVUJXRUFLIFVTQl9GU19XS1VQX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVVNCX0ZTX1dLVVBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBVU0JfRlNfV0tVUF9JUlFIYW5kbGVyDQorICAgICAgICANCisNCisgICAgICAgIFBVQldFQUsgVElNNl9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1RJTTZfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBUSU02X0lSUUhhbmRsZXINCisgICAgICAgIA0KKw0KKyAgICAgICAgUFVCV0VBSyBUSU03X0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVElNN19JUlFIYW5kbGVyDQorICAgICAgICBCIFRJTTdfSVJRSGFuZGxlciAgICAgICAgICAgICAgICANCisNCisgICAgICAgIEVORA0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0RldmljZVN1cHBvcnQvU1QvU1RNMzJMMXh4L3N0bTMybDF4eC5oIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0RldmljZVN1cHBvcnQvU1QvU1RNMzJMMXh4L3N0bTMybDF4eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYTBlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9DTTMvRGV2aWNlU3VwcG9ydC9TVC9TVE0zMkwxeHgvc3RtMzJsMXh4LmgKQEAgLTAsMCArMSw1MDQzIEBACisvKioNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAZmlsZSAgICBzdG0zMmwxeHguaA0KKyAgKiBAYXV0aG9yICBTVE1pY3JvZWxlY3Ryb25pY3MgLSBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWMS4wLjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBDTVNJUyBDb3J0ZXgtTTMgRGV2aWNlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIEhlYWRlciBGaWxlLiANCisgICogICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgcGVyaXBoZXJhbCByZWdpc3RlcidzIGRlZmluaXRpb25zLCBiaXRzIA0KKyAgKiAgICAgICAgICBkZWZpbml0aW9ucyBhbmQgbWVtb3J5IG1hcHBpbmcgZm9yIFNUTTMyTDF4eCBkZXZpY2VzLiAgDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIENNU0lTDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBzdG0zMmwxeHgNCisgICogQHsNCisgICovDQorICAgIA0KKyNpZm5kZWYgX19TVE0zMkwxWFhfSA0KKyNkZWZpbmUgX19TVE0zMkwxWFhfSA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyBleHRlcm4gIkMiIHsNCisjZW5kaWYgDQorICANCisvKiogQGFkZHRvZ3JvdXAgTGlicmFyeV9jb25maWd1cmF0aW9uX3NlY3Rpb24NCisgICogQHsNCisgICovDQorICANCisvKiBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgYWNjb3JkaW5nIHRvIHRoZSB0YXJnZXQgU1RNMzJMIGRldmljZSB1c2VkIGluIHlvdXIgDQorICAgYXBwbGljYXRpb24gDQorICAqLw0KKw0KKyNpZiAhZGVmaW5lZCAoU1RNMzJMMVhYX01EKQ0KKyAgI2RlZmluZSBTVE0zMkwxWFhfTUQgICAgLyohPCBTVE0zMkwxWFhfTUQ6IFNUTTMyTCBVbHRyYSBMb3cgUG93ZXIgTWVkaXVtLWRlbnNpdHkgZGV2aWNlcyAqLw0KKyNlbmRpZg0KKy8qICBUaXA6IFRvIGF2b2lkIG1vZGlmeWluZyB0aGlzIGZpbGUgZWFjaCB0aW1lIHlvdSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZXNlDQorICAgICAgICBkZXZpY2VzLCB5b3UgY2FuIGRlZmluZSB0aGUgZGV2aWNlIGluIHlvdXIgdG9vbGNoYWluIGNvbXBpbGVyIHByZXByb2Nlc3Nvci4NCisNCisgLSBVbHRyYSBMb3cgUG93ZXIgTWVkaXVtLWRlbnNpdHkgZGV2aWNlcyBhcmUgU1RNMzJMMTUxeHggYW5kIFNUTTMyTDE1Mnh4IA0KKyAgIG1pY3JvY29udHJvbGxlcnMgd2hlcmUgdGhlIEZsYXNoIG1lbW9yeSBkZW5zaXR5IHJhbmdlcyBiZXR3ZWVuIDY0IGFuZCAxMjggS2J5dGVzLg0KKw0KKyAgKi8NCisNCisjaWYgIWRlZmluZWQgIFVTRV9TVERQRVJJUEhfRFJJVkVSDQorLyoqDQorICogQGJyaWVmIENvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IHdpbGwgbm90IHVzZSB0aGUgcGVyaXBoZXJhbHMgZHJpdmVycy4NCisgICBJbiB0aGlzIGNhc2UsIHRoZXNlIGRyaXZlcnMgd2lsbCBub3QgYmUgaW5jbHVkZWQgYW5kIHRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwgDQorICAgYmUgYmFzZWQgb24gZGlyZWN0IGFjY2VzcyB0byBwZXJpcGhlcmFscyByZWdpc3RlcnMgDQorICAgKi8NCisgIC8qI2RlZmluZSBVU0VfU1REUEVSSVBIX0RSSVZFUiovDQorI2VuZGlmDQorDQorLyoqDQorICogQGJyaWVmIEluIHRoZSBmb2xsb3dpbmcgbGluZSBhZGp1c3QgdGhlIHZhbHVlIG9mIEV4dGVybmFsIEhpZ2ggU3BlZWQgb3NjaWxsYXRvciAoSFNFKQ0KKyAgIHVzZWQgaW4geW91ciBhcHBsaWNhdGlvbiANCisgICANCisgICBUaXA6IFRvIGF2b2lkIG1vZGlmeWluZyB0aGlzIGZpbGUgZWFjaCB0aW1lIHlvdSBuZWVkIHRvIHVzZSBkaWZmZXJlbnQgSFNFLCB5b3UNCisgICAgICAgIGNhbiBkZWZpbmUgdGhlIEhTRSB2YWx1ZSBpbiB5b3VyIHRvb2xjaGFpbiBjb21waWxlciBwcmVwcm9jZXNzb3IuDQorICAqLyAgDQorI2RlZmluZSBIU0VfVkFMVUUgICAgKCh1aW50MzJfdCk4MDAwMDAwKSAvKiE8IFZhbHVlIG9mIHRoZSBFeHRlcm5hbCBvc2NpbGxhdG9yIGluIEh6Ki8NCisNCisvKioNCisgKiBAYnJpZWYgSW4gdGhlIGZvbGxvd2luZyBsaW5lIGFkanVzdCB0aGUgRXh0ZXJuYWwgSGlnaCBTcGVlZCBvc2NpbGxhdG9yIChIU0UpIFN0YXJ0dXAgDQorICAgVGltZW91dCB2YWx1ZSANCisgICAqLw0KKyNkZWZpbmUgSFNFX1NUQVJUVVBfVElNRU9VVCAgICgodWludDE2X3QpMHgwNTAwKSAvKiE8IFRpbWUgb3V0IGZvciBIU0Ugc3RhcnQgdXAgKi8NCisNCisjZGVmaW5lIE1TSV9WQUxVRSAgKCh1aW50MzJfdCkyMDAwMDAwKSAgLyohPCBEZWZhdWx0IHZhbHVlIG9mIHRoZSBJbnRlcm5hbCBNdWx0aSBTcGVlZCBvc2NpbGxhdG9yIGluIEh6ICovDQorI2RlZmluZSBIU0lfVkFMVUUgICgodWludDMyX3QpMTYwMDAwMDApIC8qITwgVmFsdWUgb2YgdGhlIEludGVybmFsIEhpZ2ggU3BlZWQgb3NjaWxsYXRvciBpbiBIeiAqLw0KKyNkZWZpbmUgTFNJX1ZBTFVFICAoKHVpbnQzMl90KTM3MDAwKSAgICAvKiE8IFZhbHVlIG9mIHRoZSBJbnRlcm5hbCBMb3cgU3BlZWQgb3NjaWxsYXRvciBpbiBIeiAqLw0KKyNkZWZpbmUgTFNFX1ZBTFVFICAoKHVpbnQzMl90KTMyNzY4KSAgICAvKiE8IFZhbHVlIG9mIHRoZSBFeHRlcm5hbCBMb3cgU3BlZWQgb3NjaWxsYXRvciBpbiBIeiAqLw0KKw0KKy8qKg0KKyAqIEBicmllZiBTVE0zMkwxeHggU3RhbmRhcmQgUGVyaXBoZXJhbCBMaWJyYXJ5IHZlcnNpb24gbnVtYmVyDQorICAgKi8NCisjZGVmaW5lIF9fU1RNMzJMMVhYX1NURFBFUklQSF9WRVJTSU9OX01BSU4gICAoMHgwMSkgLyohPCBbMzE6MTZdIFNUTTMyTDF4eCBTdGFuZGFyZCBQZXJpcGhlcmFsIExpYnJhcnkgbWFpbiB2ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyNkZWZpbmUgX19TVE0zMkwxWFhfU1REUEVSSVBIX1ZFUlNJT05fU1VCMSAgICgweDAwKSAvKiE8IFsxNTo4XSAgU1RNMzJMMXh4IFN0YW5kYXJkIFBlcmlwaGVyYWwgTGlicmFyeSBzdWIxIHZlcnNpb24gKi8NCisjZGVmaW5lIF9fU1RNMzJMMVhYX1NURFBFUklQSF9WRVJTSU9OX1NVQjIgICAoMHgwMCkgLyohPCBbNzowXSAgU1RNMzJMMXh4IFN0YW5kYXJkIFBlcmlwaGVyYWwgTGlicmFyeSBzdWIyIHZlcnNpb24gKi8gDQorI2RlZmluZSBfX1NUTTMyTDFYWF9TVERQRVJJUEhfVkVSU0lPTiAgICAgICAoKF9fU1RNMzJMMVhYX1NURFBFUklQSF9WRVJTSU9OX01BSU4gPDwgMTYpXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9fU1RNMzJMMVhYX1NURFBFUklQSF9WRVJTSU9OX1NVQjEgPDwgOClcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfX1NUTTMyTDFYWF9TVERQRVJJUEhfVkVSU0lPTl9TVUIyKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgQ29uZmlndXJhdGlvbl9zZWN0aW9uX2Zvcl9DTVNJUw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgKiBAYnJpZWYgU1RNMzJMMXh4IEludGVycnVwdCBOdW1iZXIgRGVmaW5pdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBzZWxlY3RlZCBkZXZpY2UgDQorICogICAgICAgIGluIEByZWYgTGlicmFyeV9jb25maWd1cmF0aW9uX3NlY3Rpb24gDQorICovDQorI2RlZmluZSBfX01QVV9QUkVTRU5UICAgICAgICAgICAgIDEgLyohPCBTVE0zMkwgcHJvdmlkZSBhIE1QVSBwcmVzZW50ICovDQorI2RlZmluZSBfX05WSUNfUFJJT19CSVRTICAgICAgICAgIDQgLyohPCBTVE0zMiB1c2VzIDQgQml0cyBmb3IgdGhlIFByaW9yaXR5IExldmVscyAgICAqLw0KKyNkZWZpbmUgX19WZW5kb3JfU3lzVGlja0NvbmZpZyAgICAwIC8qITwgU2V0IHRvIDEgaWYgZGlmZmVyZW50IFN5c1RpY2sgQ29uZmlnIGlzIHVzZWQgKi8NCisNCisvKiE8IEludGVycnVwdCBOdW1iZXIgRGVmaW5pdGlvbiAqLw0KK3R5cGVkZWYgZW51bSBJUlFuDQorew0KKy8qKioqKiogIENvcnRleC1NMyBQcm9jZXNzb3IgRXhjZXB0aW9ucyBOdW1iZXJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIE5vbk1hc2thYmxlSW50X0lSUW4gICAgICAgICA9IC0xNCwgICAgLyohPCAyIE5vbiBNYXNrYWJsZSBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBNZW1vcnlNYW5hZ2VtZW50X0lSUW4gICAgICAgPSAtMTIsICAgIC8qITwgNCBDb3J0ZXgtTTMgTWVtb3J5IE1hbmFnZW1lbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAqLw0KKyAgQnVzRmF1bHRfSVJRbiAgICAgICAgICAgICAgID0gLTExLCAgICAvKiE8IDUgQ29ydGV4LU0zIEJ1cyBGYXVsdCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIFVzYWdlRmF1bHRfSVJRbiAgICAgICAgICAgICA9IC0xMCwgICAgLyohPCA2IENvcnRleC1NMyBVc2FnZSBGYXVsdCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICovDQorICBTVkNhbGxfSVJRbiAgICAgICAgICAgICAgICAgPSAtNSwgICAgIC8qITwgMTEgQ29ydGV4LU0zIFNWIENhbGwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRGVidWdNb25pdG9yX0lSUW4gICAgICAgICAgID0gLTQsICAgICAvKiE8IDEyIENvcnRleC1NMyBEZWJ1ZyBNb25pdG9yIEludGVycnVwdCAgICAgICAgICAgICAgICAgKi8NCisgIFBlbmRTVl9JUlFuICAgICAgICAgICAgICAgICA9IC0yLCAgICAgLyohPCAxNCBDb3J0ZXgtTTMgUGVuZCBTViBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICovDQorICBTeXNUaWNrX0lSUW4gICAgICAgICAgICAgICAgPSAtMSwgICAgIC8qITwgMTUgQ29ydGV4LU0zIFN5c3RlbSBUaWNrIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAqLw0KKw0KKy8qKioqKiogIFNUTTMyTCBzcGVjaWZpYyBJbnRlcnJ1cHQgTnVtYmVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIFdXREdfSVJRbiAgICAgICAgICAgICAgICAgICA9IDAsICAgICAgLyohPCBXaW5kb3cgV2F0Y2hEb2cgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBQVkRfSVJRbiAgICAgICAgICAgICAgICAgICAgPSAxLCAgICAgIC8qITwgUFZEIHRocm91Z2ggRVhUSSBMaW5lIGRldGVjdGlvbiBJbnRlcnJ1cHQgICAgICAgICAgICAqLw0KKyAgVEFNUEVSX1NUQU1QX0lSUW4gICAgICAgICAgID0gMiwgICAgICAvKiE8IFRhbXBlciBhbmQgVGltZSBTdGFtcCB0aHJvdWdoIEVYVEkgTGluZSBJbnRlcnJ1cHRzICAgKi8NCisgIFJUQ19XS1VQX0lSUW4gICAgICAgICAgICAgICA9IDMsICAgICAgLyohPCBSVEMgV2FrZXVwIFRpbWVyIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAgICAgICAgICovDQorICBGTEFTSF9JUlFuICAgICAgICAgICAgICAgICAgPSA0LCAgICAgIC8qITwgRkxBU0ggZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgUkNDX0lSUW4gICAgICAgICAgICAgICAgICAgID0gNSwgICAgICAvKiE8IFJDQyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEVYVEkwX0lSUW4gICAgICAgICAgICAgICAgICA9IDYsICAgICAgLyohPCBFWFRJIExpbmUwIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBFWFRJMV9JUlFuICAgICAgICAgICAgICAgICAgPSA3LCAgICAgIC8qITwgRVhUSSBMaW5lMSBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRVhUSTJfSVJRbiAgICAgICAgICAgICAgICAgID0gOCwgICAgICAvKiE8IEVYVEkgTGluZTIgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEVYVEkzX0lSUW4gICAgICAgICAgICAgICAgICA9IDksICAgICAgLyohPCBFWFRJIExpbmUzIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBFWFRJNF9JUlFuICAgICAgICAgICAgICAgICAgPSAxMCwgICAgIC8qITwgRVhUSSBMaW5lNCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRE1BMV9DaGFubmVsMV9JUlFuICAgICAgICAgID0gMTEsICAgICAvKiE8IERNQTEgQ2hhbm5lbCAxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIERNQTFfQ2hhbm5lbDJfSVJRbiAgICAgICAgICA9IDEyLCAgICAgLyohPCBETUExIENoYW5uZWwgMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovDQorICBETUExX0NoYW5uZWwzX0lSUW4gICAgICAgICAgPSAxMywgICAgIC8qITwgRE1BMSBDaGFubmVsIDMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRE1BMV9DaGFubmVsNF9JUlFuICAgICAgICAgID0gMTQsICAgICAvKiE8IERNQTEgQ2hhbm5lbCA0IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIERNQTFfQ2hhbm5lbDVfSVJRbiAgICAgICAgICA9IDE1LCAgICAgLyohPCBETUExIENoYW5uZWwgNSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovDQorICBETUExX0NoYW5uZWw2X0lSUW4gICAgICAgICAgPSAxNiwgICAgIC8qITwgRE1BMSBDaGFubmVsIDYgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRE1BMV9DaGFubmVsN19JUlFuICAgICAgICAgID0gMTcsICAgICAvKiE8IERNQTEgQ2hhbm5lbCA3IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEFEQzFfSVJRbiAgICAgICAgICAgICAgICAgICA9IDE4LCAgICAgLyohPCBBREMxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBVU0JfSFBfSVJRbiAgICAgICAgICAgICAgICAgPSAxOSwgICAgIC8qITwgVVNCIEhpZ2ggUHJpb3JpdHkgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgVVNCX0xQX0lSUW4gICAgICAgICAgICAgICAgID0gMjAsICAgICAvKiE8IFVTQiBMb3cgUHJpb3JpdHkgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIERBQ19JUlFuICAgICAgICAgICAgICAgICAgICA9IDIxLCAgICAgLyohPCBEQUMgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBDT01QX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyMiwgICAgIC8qITwgQ29tcGFyYXRvciB0aHJvdWdoIEVYVEkgTGluZSBJbnRlcnJ1cHQgICAgICAgICAgICAgICAqLw0KKyAgRVhUSTlfNV9JUlFuICAgICAgICAgICAgICAgID0gMjMsICAgICAvKiE8IEV4dGVybmFsIExpbmVbOTo1XSBJbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIExDRF9JUlFuICAgICAgICAgICAgICAgICAgICA9IDI0LCAgICAgLyohPCBMQ0QgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBUSU05X0lSUW4gICAgICAgICAgICAgICAgICAgPSAyNSwgICAgIC8qITwgVElNOSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgVElNMTBfSVJRbiAgICAgICAgICAgICAgICAgID0gMjYsICAgICAvKiE8IFRJTTEwIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIFRJTTExX0lSUW4gICAgICAgICAgICAgICAgICA9IDI3LCAgICAgLyohPCBUSU0xMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBUSU0yX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOCwgICAgIC8qITwgVElNMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgVElNM19JUlFuICAgICAgICAgICAgICAgICAgID0gMjksICAgICAvKiE8IFRJTTMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIFRJTTRfSVJRbiAgICAgICAgICAgICAgICAgICA9IDMwLCAgICAgLyohPCBUSU00IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICANCisgIEkyQzFfRVZfSVJRbiAgICAgICAgICAgICAgICA9IDMxLCAgICAgLyohPCBJMkMxIEV2ZW50IEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBJMkMxX0VSX0lSUW4gICAgICAgICAgICAgICAgPSAzMiwgICAgIC8qITwgSTJDMSBFcnJvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgSTJDMl9FVl9JUlFuICAgICAgICAgICAgICAgID0gMzMsICAgICAvKiE8IEkyQzIgRXZlbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEkyQzJfRVJfSVJRbiAgICAgICAgICAgICAgICA9IDM0LCAgICAgLyohPCBJMkMyIEVycm9yIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICANCisgIFNQSTFfSVJRbiAgICAgICAgICAgICAgICAgICA9IDM1LCAgICAgLyohPCBTUEkxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBTUEkyX0lSUW4gICAgICAgICAgICAgICAgICAgPSAzNiwgICAgIC8qITwgU1BJMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgVVNBUlQxX0lSUW4gICAgICAgICAgICAgICAgID0gMzcsICAgICAvKiE8IFVTQVJUMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIFVTQVJUMl9JUlFuICAgICAgICAgICAgICAgICA9IDM4LCAgICAgLyohPCBVU0FSVDIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICANCisgIFVTQVJUM19JUlFuICAgICAgICAgICAgICAgICA9IDM5LCAgICAgLyohPCBVU0FSVDMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICANCisgIEVYVEkxNV8xMF9JUlFuICAgICAgICAgICAgICA9IDQwLCAgICAgLyohPCBFeHRlcm5hbCBMaW5lWzE1OjEwXSBJbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICovDQorICBSVENfQWxhcm1fSVJRbiAgICAgICAgICAgICAgPSA0MSwgICAgIC8qITwgUlRDIEFsYXJtIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAgICAgICAgICAgICAgICAqLw0KKyAgVVNCX0ZTX1dLVVBfSVJRbiAgICAgICAgICAgID0gNDIsICAgICAvKiE8IFVTQiBGUyBXYWtlVXAgZnJvbSBzdXNwZW5kIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAgKi8NCisgIFRJTTZfSVJRbiAgICAgICAgICAgICAgICAgICA9IDQzLCAgICAgLyohPCBUSU02IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBUSU03X0lSUW4gICAgICAgICAgICAgICAgICAgPSA0NCAgICAgIC8qITwgVElNNyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KK30gSVJRbl9UeXBlOw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisjaW5jbHVkZSAiY29yZV9jbTMuaCINCisjaW5jbHVkZSAic3lzdGVtX3N0bTMybDF4eC5oIg0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCisvKiogQGFkZHRvZ3JvdXAgRXhwb3J0ZWRfdHlwZXMNCisgICogQHsNCisgICovICANCisNCit0eXBlZGVmIGVudW0ge0ZBTFNFID0gMCwgVFJVRSA9ICFGQUxTRX0gYm9vbDsNCisNCit0eXBlZGVmIGVudW0ge1JFU0VUID0gMCwgU0VUID0gIVJFU0VUfSBGbGFnU3RhdHVzLCBJVFN0YXR1czsNCisNCit0eXBlZGVmIGVudW0ge0RJU0FCTEUgPSAwLCBFTkFCTEUgPSAhRElTQUJMRX0gRnVuY3Rpb25hbFN0YXRlOw0KKyNkZWZpbmUgSVNfRlVOQ1RJT05BTF9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IERJU0FCTEUpIHx8ICgoU1RBVEUpID09IEVOQUJMRSkpDQorDQordHlwZWRlZiBlbnVtIHtFUlJPUiA9IDAsIFNVQ0NFU1MgPSAhRVJST1J9IEVycm9yU3RhdHVzOw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgUGVyaXBoZXJhbF9yZWdpc3RlcnNfc3RydWN0dXJlcw0KKyAgKiBAew0KKyAgKi8gICANCisNCisvKiogDQorICAqIEBicmllZiBBbmFsb2cgdG8gRGlnaXRhbCBDb252ZXJ0ZXIgIA0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgU1I7DQorICBfX0lPIHVpbnQzMl90IENSMTsNCisgIF9fSU8gdWludDMyX3QgQ1IyOw0KKyAgX19JTyB1aW50MzJfdCBTTVBSMTsNCisgIF9fSU8gdWludDMyX3QgU01QUjI7DQorICBfX0lPIHVpbnQzMl90IFNNUFIzOw0KKyAgX19JTyB1aW50MzJfdCBKT0ZSMTsNCisgIF9fSU8gdWludDMyX3QgSk9GUjI7DQorICBfX0lPIHVpbnQzMl90IEpPRlIzOw0KKyAgX19JTyB1aW50MzJfdCBKT0ZSNDsNCisgIF9fSU8gdWludDMyX3QgSFRSOw0KKyAgX19JTyB1aW50MzJfdCBMVFI7DQorICBfX0lPIHVpbnQzMl90IFNRUjE7DQorICBfX0lPIHVpbnQzMl90IFNRUjI7DQorICBfX0lPIHVpbnQzMl90IFNRUjM7DQorICBfX0lPIHVpbnQzMl90IFNRUjQ7DQorICBfX0lPIHVpbnQzMl90IFNRUjU7DQorICBfX0lPIHVpbnQzMl90IEpTUVI7DQorICBfX0lPIHVpbnQzMl90IEpEUjE7DQorICBfX0lPIHVpbnQzMl90IEpEUjI7DQorICBfX0lPIHVpbnQzMl90IEpEUjM7DQorICBfX0lPIHVpbnQzMl90IEpEUjQ7DQorICBfX0lPIHVpbnQzMl90IERSOw0KK30gQURDX1R5cGVEZWY7DQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IENTUjsNCisgIF9fSU8gdWludDMyX3QgQ0NSOw0KK30gQURDX0NvbW1vbl9UeXBlRGVmOw0KKw0KKw0KKy8qKiANCisgICogQGJyaWVmIENvbXBhcmF0b3IgDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgX19JTyB1aW50MzJfdCBDU1I7DQorfSBDT01QX1R5cGVEZWY7DQorDQorLyoqIA0KKyAgKiBAYnJpZWYgQ1JDIGNhbGN1bGF0aW9uIHVuaXQgDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgX19JTyB1aW50MzJfdCBEUjsNCisgIF9fSU8gdWludDhfdCAgSURSOw0KKyAgdWludDhfdCAgIFJFU0VSVkVEMDsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDE7DQorICBfX0lPIHVpbnQzMl90IENSOw0KK30gQ1JDX1R5cGVEZWY7DQorDQorLyoqIA0KKyAgKiBAYnJpZWYgRGlnaXRhbCB0byBBbmFsb2cgQ29udmVydGVyDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgX19JTyB1aW50MzJfdCBDUjsNCisgIF9fSU8gdWludDMyX3QgU1dUUklHUjsNCisgIF9fSU8gdWludDMyX3QgREhSMTJSMTsNCisgIF9fSU8gdWludDMyX3QgREhSMTJMMTsNCisgIF9fSU8gdWludDMyX3QgREhSOFIxOw0KKyAgX19JTyB1aW50MzJfdCBESFIxMlIyOw0KKyAgX19JTyB1aW50MzJfdCBESFIxMkwyOw0KKyAgX19JTyB1aW50MzJfdCBESFI4UjI7DQorICBfX0lPIHVpbnQzMl90IERIUjEyUkQ7DQorICBfX0lPIHVpbnQzMl90IERIUjEyTEQ7DQorICBfX0lPIHVpbnQzMl90IERIUjhSRDsNCisgIF9fSU8gdWludDMyX3QgRE9SMTsNCisgIF9fSU8gdWludDMyX3QgRE9SMjsNCisgIF9fSU8gdWludDMyX3QgU1I7ICANCit9IERBQ19UeXBlRGVmOw0KKw0KKy8qKiANCisgICogQGJyaWVmIERlYnVnIE1DVQ0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgSURDT0RFOw0KKyAgX19JTyB1aW50MzJfdCBDUjsNCisgIF9fSU8gdWludDMyX3QgQVBCMUZaOw0KKyAgX19JTyB1aW50MzJfdCBBUEIyRlo7CQ0KK31EQkdNQ1VfVHlwZURlZjsNCisNCisvKiogDQorICAqIEBicmllZiBETUEgQ29udHJvbGxlcg0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgQ0NSOw0KKyAgX19JTyB1aW50MzJfdCBDTkRUUjsNCisgIF9fSU8gdWludDMyX3QgQ1BBUjsNCisgIF9fSU8gdWludDMyX3QgQ01BUjsNCit9IERNQV9DaGFubmVsX1R5cGVEZWY7DQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IElTUjsNCisgIF9fSU8gdWludDMyX3QgSUZDUjsNCit9IERNQV9UeXBlRGVmOw0KKw0KKy8qKiANCisgICogQGJyaWVmIEV4dGVybmFsIEludGVycnVwdC9FdmVudCBDb250cm9sbGVyDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgX19JTyB1aW50MzJfdCBJTVI7DQorICBfX0lPIHVpbnQzMl90IEVNUjsNCisgIF9fSU8gdWludDMyX3QgUlRTUjsNCisgIF9fSU8gdWludDMyX3QgRlRTUjsNCisgIF9fSU8gdWludDMyX3QgU1dJRVI7DQorICBfX0lPIHVpbnQzMl90IFBSOw0KK30gRVhUSV9UeXBlRGVmOw0KKw0KKy8qKiANCisgICogQGJyaWVmIEZMQVNIIFJlZ2lzdGVycw0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgQUNSOw0KKyAgX19JTyB1aW50MzJfdCBQRUNSOw0KKyAgX19JTyB1aW50MzJfdCBQREtFWVI7DQorICBfX0lPIHVpbnQzMl90IFBFS0VZUjsNCisgIF9fSU8gdWludDMyX3QgUFJHS0VZUjsNCisgIF9fSU8gdWludDMyX3QgT1BUS0VZUjsNCisgIF9fSU8gdWludDMyX3QgU1I7DQorICBfX0lPIHVpbnQzMl90IE9CUjsNCisgIF9fSU8gdWludDMyX3QgV1JQUjsgICAgICAgDQorfSBGTEFTSF9UeXBlRGVmOw0KKw0KKy8qKiANCisgICogQGJyaWVmIE9wdGlvbiBCeXRlcyBSZWdpc3RlcnMNCisgICovDQorICANCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgUkRQOw0KKyAgX19JTyB1aW50MzJfdCBVU0VSOw0KKyAgX19JTyB1aW50MzJfdCBXUlAwMTsNCisgIF9fSU8gdWludDMyX3QgV1JQMjM7DQorfSBPQl9UeXBlRGVmOw0KKw0KKy8qKiANCisgICogQGJyaWVmIEdlbmVyYWwgUHVycG9zZSBJTw0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgTU9ERVI7DQorICBfX0lPIHVpbnQxNl90IE9UWVBFUjsNCisgIHVpbnQxNl90IFJFU0VSVkVEMDsNCisgIF9fSU8gdWludDMyX3QgT1NQRUVEUjsNCisgIF9fSU8gdWludDMyX3QgUFVQRFI7DQorICBfX0lPIHVpbnQxNl90IElEUjsNCisgIHVpbnQxNl90IFJFU0VSVkVEMTsNCisgIF9fSU8gdWludDE2X3QgT0RSOw0KKyAgdWludDE2X3QgUkVTRVJWRUQyOw0KKyAgX19JTyB1aW50MTZfdCBCU1JSTDsgLyogQlNSUiByZWdpc3RlciBpcyBzcGxpdCB0byAyICogMTYtYml0IGZpZWxkcyBCU1JSTCAqLw0KKyAgX19JTyB1aW50MTZfdCBCU1JSSDsgLyogQlNSUiByZWdpc3RlciBpcyBzcGxpdCB0byAyICogMTYtYml0IGZpZWxkcyBCU1JSSCAqLw0KKyAgX19JTyB1aW50MzJfdCBMQ0tSOw0KKyAgX19JTyB1aW50MzJfdCBBRlJbMl07DQorfSBHUElPX1R5cGVEZWY7DQorDQorLyoqIA0KKyAgKiBAYnJpZWYgU3lzVGVtIENvbmZpZ3VyYXRpb24NCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IE1FTVJNUDsNCisgIF9fSU8gdWludDMyX3QgUE1DOw0KKyAgX19JTyB1aW50MzJfdCBFWFRJQ1JbNF07DQorfSBTWVNDRkdfVHlwZURlZjsNCisNCisvKiogDQorICAqIEBicmllZiBJbnRlci1pbnRlZ3JhdGVkIENpcmN1aXQgSW50ZXJmYWNlDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgX19JTyB1aW50MTZfdCBDUjE7DQorICB1aW50MTZfdCAgUkVTRVJWRUQwOw0KKyAgX19JTyB1aW50MTZfdCBDUjI7DQorICB1aW50MTZfdCAgUkVTRVJWRUQxOw0KKyAgX19JTyB1aW50MTZfdCBPQVIxOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEMjsNCisgIF9fSU8gdWludDE2X3QgT0FSMjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDM7DQorICBfX0lPIHVpbnQxNl90IERSOw0KKyAgdWludDE2X3QgIFJFU0VSVkVENDsNCisgIF9fSU8gdWludDE2X3QgU1IxOw0KKyAgdWludDE2X3QgIFJFU0VSVkVENTsNCisgIF9fSU8gdWludDE2X3QgU1IyOw0KKyAgdWludDE2X3QgIFJFU0VSVkVENjsNCisgIF9fSU8gdWludDE2X3QgQ0NSOw0KKyAgdWludDE2X3QgIFJFU0VSVkVENzsNCisgIF9fSU8gdWludDE2X3QgVFJJU0U7DQorICB1aW50MTZfdCAgUkVTRVJWRUQ4Ow0KK30gSTJDX1R5cGVEZWY7DQorDQorLyoqIA0KKyAgKiBAYnJpZWYgSW5kZXBlbmRlbnQgV0FUQ0hET0cNCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IEtSOw0KKyAgX19JTyB1aW50MzJfdCBQUjsNCisgIF9fSU8gdWludDMyX3QgUkxSOw0KKyAgX19JTyB1aW50MzJfdCBTUjsNCit9IElXREdfVHlwZURlZjsNCisNCisNCisvKiogDQorICAqIEBicmllZiBMQ0QNCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IENSOw0KKyAgX19JTyB1aW50MzJfdCBGQ1I7DQorICBfX0lPIHVpbnQzMl90IFNSOw0KKyAgX19JTyB1aW50MzJfdCBDTFI7DQorICB1aW50MzJfdCBSRVNFUlZFRDsNCisgIF9fSU8gdWludDMyX3QgUkFNWzE2XTsNCit9IExDRF9UeXBlRGVmOw0KKw0KKy8qKiANCisgICogQGJyaWVmIFBvd2VyIENvbnRyb2wNCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IENSOw0KKyAgX19JTyB1aW50MzJfdCBDU1I7DQorfSBQV1JfVHlwZURlZjsNCisNCisvKiogDQorICAqIEBicmllZiBSZXNldCBhbmQgQ2xvY2sgQ29udHJvbA0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgQ1I7DQorICBfX0lPIHVpbnQzMl90IElDU0NSOw0KKyAgX19JTyB1aW50MzJfdCBDRkdSOw0KKyAgX19JTyB1aW50MzJfdCBDSVI7DQorICBfX0lPIHVpbnQzMl90IEFIQlJTVFI7DQorICBfX0lPIHVpbnQzMl90IEFQQjJSU1RSOw0KKyAgX19JTyB1aW50MzJfdCBBUEIxUlNUUjsNCisgIF9fSU8gdWludDMyX3QgQUhCRU5SOw0KKyAgX19JTyB1aW50MzJfdCBBUEIyRU5SOw0KKyAgX19JTyB1aW50MzJfdCBBUEIxRU5SOw0KKyAgX19JTyB1aW50MzJfdCBBSEJMUEVOUjsNCisgIF9fSU8gdWludDMyX3QgQVBCMkxQRU5SOw0KKyAgX19JTyB1aW50MzJfdCBBUEIxTFBFTlI7ICAgICAgDQorICBfX0lPIHVpbnQzMl90IENTUjsgICAgDQorfSBSQ0NfVHlwZURlZjsNCisNCisvKiogDQorICAqIEBicmllZiBSb3V0aW5nIEludGVyZmFjZSANCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IElDUjsNCisgIF9fSU8gdWludDMyX3QgQVNDUjE7DQorICBfX0lPIHVpbnQzMl90IEFTQ1IyOw0KKyAgX19JTyB1aW50MzJfdCBIWVNDUjE7DQorICBfX0lPIHVpbnQzMl90IEhZU0NSMjsNCisgIF9fSU8gdWludDMyX3QgSFlTQ1IzOw0KK30gUklfVHlwZURlZjsNCisNCisvKiogDQorICAqIEBicmllZiBSZWFsLVRpbWUgQ2xvY2sNCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQzMl90IFRSOw0KKyAgX19JTyB1aW50MzJfdCBEUjsNCisgIF9fSU8gdWludDMyX3QgQ1I7DQorICBfX0lPIHVpbnQzMl90IElTUjsNCisgIF9fSU8gdWludDMyX3QgUFJFUjsNCisgIF9fSU8gdWludDMyX3QgV1VUUjsNCisgIF9fSU8gdWludDMyX3QgQ0FMSUJSOw0KKyAgX19JTyB1aW50MzJfdCBBTFJNQVI7DQorICBfX0lPIHVpbnQzMl90IEFMUk1CUjsNCisgIF9fSU8gdWludDMyX3QgV1JQOw0KKyAgdWludDMyX3QgUkVTRVJWRUQxOw0KKyAgdWludDMyX3QgUkVTRVJWRUQyOw0KKyAgX19JTyB1aW50MzJfdCBUU1RSOw0KKyAgX19JTyB1aW50MzJfdCBUU0RSOw0KKyAgdWludDMyX3QgUkVTRVJWRUQzOw0KKyAgdWludDMyX3QgUkVTRVJWRUQ0Ow0KKyAgX19JTyB1aW50MzJfdCBUQUZDUjsNCisgIHVpbnQzMl90IFJFU0VSVkVENTsNCisgIHVpbnQzMl90IFJFU0VSVkVENjsNCisgIHVpbnQzMl90IFJFU0VSVkVENzsNCisgIF9fSU8gdWludDMyX3QgQkswUjsNCisgIF9fSU8gdWludDMyX3QgQksxUjsNCisgIF9fSU8gdWludDMyX3QgQksyUjsNCisgIF9fSU8gdWludDMyX3QgQkszUjsNCisgIF9fSU8gdWludDMyX3QgQks0UjsNCisgIF9fSU8gdWludDMyX3QgQks1UjsNCisgIF9fSU8gdWludDMyX3QgQks2UjsNCisgIF9fSU8gdWludDMyX3QgQks3UjsNCisgIF9fSU8gdWludDMyX3QgQks4UjsNCisgIF9fSU8gdWludDMyX3QgQks5UjsNCisgIF9fSU8gdWludDMyX3QgQksxMFI7DQorICBfX0lPIHVpbnQzMl90IEJLMTFSOw0KKyAgX19JTyB1aW50MzJfdCBCSzEyUjsNCisgIF9fSU8gdWludDMyX3QgQksxM1I7DQorICBfX0lPIHVpbnQzMl90IEJLMTRSOw0KKyAgX19JTyB1aW50MzJfdCBCSzE1UjsNCisgIF9fSU8gdWludDMyX3QgQksxNlI7DQorICBfX0lPIHVpbnQzMl90IEJLMTdSOw0KKyAgX19JTyB1aW50MzJfdCBCSzE4UjsNCisgIF9fSU8gdWludDMyX3QgQksxOVI7DQorfSBSVENfVHlwZURlZjsNCisNCisvKiogDQorICAqIEBicmllZiBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UNCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQxNl90IENSMTsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDA7DQorICBfX0lPIHVpbnQxNl90IENSMjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDE7DQorICBfX0lPIHVpbnQxNl90IFNSOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEMjsNCisgIF9fSU8gdWludDE2X3QgRFI7DQorICB1aW50MTZfdCAgUkVTRVJWRUQzOw0KKyAgX19JTyB1aW50MTZfdCBDUkNQUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDQ7DQorICBfX0lPIHVpbnQxNl90IFJYQ1JDUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDU7DQorICBfX0lPIHVpbnQxNl90IFRYQ1JDUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDY7ICANCit9IFNQSV9UeXBlRGVmOw0KKw0KKy8qKiANCisgICogQGJyaWVmIFRJTQ0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDE2X3QgQ1IxOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEMDsNCisgIF9fSU8gdWludDE2X3QgQ1IyOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEMTsNCisgIF9fSU8gdWludDE2X3QgU01DUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDI7DQorICBfX0lPIHVpbnQxNl90IERJRVI7DQorICB1aW50MTZfdCAgUkVTRVJWRUQzOw0KKyAgX19JTyB1aW50MTZfdCBTUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDQ7DQorICBfX0lPIHVpbnQxNl90IEVHUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDU7DQorICBfX0lPIHVpbnQxNl90IENDTVIxOw0KKyAgdWludDE2X3QgIFJFU0VSVkVENjsNCisgIF9fSU8gdWludDE2X3QgQ0NNUjI7DQorICB1aW50MTZfdCAgUkVTRVJWRUQ3Ow0KKyAgX19JTyB1aW50MTZfdCBDQ0VSOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEODsNCisgIF9fSU8gdWludDE2X3QgQ05UOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEOTsNCisgIF9fSU8gdWludDE2X3QgUFNDOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEMTA7DQorICBfX0lPIHVpbnQxNl90IEFSUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDExOw0KKyAgdWludDMyX3QgIFJFU0VSVkVEMTI7DQorICBfX0lPIHVpbnQxNl90IENDUjE7DQorICB1aW50MTZfdCAgUkVTRVJWRUQxMzsNCisgIF9fSU8gdWludDE2X3QgQ0NSMjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDE0Ow0KKyAgX19JTyB1aW50MTZfdCBDQ1IzOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEMTU7DQorICBfX0lPIHVpbnQxNl90IENDUjQ7DQorICB1aW50MTZfdCAgUkVTRVJWRUQxNjsNCisgIHVpbnQzMl90ICBSRVNFUlZFRDE3Ow0KKyAgX19JTyB1aW50MTZfdCBEQ1I7DQorICB1aW50MTZfdCAgUkVTRVJWRUQxODsNCisgIF9fSU8gdWludDE2X3QgRE1BUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDE5Ow0KKyAgX19JTyB1aW50MTZfdCBPUjsNCisgIHVpbnQxNl90ICBSRVNFUlZFRDIwOw0KK30gVElNX1R5cGVEZWY7DQorDQorLyoqIA0KKyAgKiBAYnJpZWYgVW5pdmVyc2FsIFN5bmNocm9ub3VzIEFzeW5jaHJvbm91cyBSZWNlaXZlciBUcmFuc21pdHRlcg0KKyAgKi8NCisgDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICBfX0lPIHVpbnQxNl90IFNSOw0KKyAgdWludDE2X3QgIFJFU0VSVkVEMDsNCisgIF9fSU8gdWludDE2X3QgRFI7DQorICB1aW50MTZfdCAgUkVTRVJWRUQxOw0KKyAgX19JTyB1aW50MTZfdCBCUlI7DQorICB1aW50MTZfdCAgUkVTRVJWRUQyOw0KKyAgX19JTyB1aW50MTZfdCBDUjE7DQorICB1aW50MTZfdCAgUkVTRVJWRUQzOw0KKyAgX19JTyB1aW50MTZfdCBDUjI7DQorICB1aW50MTZfdCAgUkVTRVJWRUQ0Ow0KKyAgX19JTyB1aW50MTZfdCBDUjM7DQorICB1aW50MTZfdCAgUkVTRVJWRUQ1Ow0KKyAgX19JTyB1aW50MTZfdCBHVFBSOw0KKyAgdWludDE2X3QgIFJFU0VSVkVENjsNCit9IFVTQVJUX1R5cGVEZWY7DQorDQorLyoqIA0KKyAgKiBAYnJpZWYgV2luZG93IFdBVENIRE9HDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgX19JTyB1aW50MzJfdCBDUjsNCisgIF9fSU8gdWludDMyX3QgQ0ZSOw0KKyAgX19JTyB1aW50MzJfdCBTUjsNCit9IFdXREdfVHlwZURlZjsNCisNCisvKioNCisgICogQH0NCisgICovDQorICANCisvKiogQGFkZHRvZ3JvdXAgUGVyaXBoZXJhbF9tZW1vcnlfbWFwDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUEVSSVBIX0JCX0JBU0UgICAgICAgICgodWludDMyX3QpMHg0MjAwMDAwMCkgLyohPCBQZXJpcGhlcmFsIGJhc2UgYWRkcmVzcyBpbiB0aGUgYWxpYXMgcmVnaW9uICovDQorI2RlZmluZSBTUkFNX0JCX0JBU0UgICAgICAgICAgKCh1aW50MzJfdCkweDIyMDAwMDAwKSAvKiE8IFNSQU0gYmFzZSBhZGRyZXNzIGluIHRoZSBhbGlhcyByZWdpb24gKi8NCisNCisjZGVmaW5lIFNSQU1fQkFTRSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApIC8qITwgU1JBTSBiYXNlIGFkZHJlc3MgaW4gdGhlIGJpdC1iYW5kIHJlZ2lvbiAqLw0KKyNkZWZpbmUgUEVSSVBIX0JBU0UgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgLyohPCBQZXJpcGhlcmFsIGJhc2UgYWRkcmVzcyBpbiB0aGUgYml0LWJhbmQgcmVnaW9uICovDQorDQorLyohPCBQZXJpcGhlcmFsIG1lbW9yeSBtYXAgKi8NCisjZGVmaW5lIEFQQjFQRVJJUEhfQkFTRSAgICAgICBQRVJJUEhfQkFTRQ0KKyNkZWZpbmUgQVBCMlBFUklQSF9CQVNFICAgICAgIChQRVJJUEhfQkFTRSArIDB4MTAwMDApDQorI2RlZmluZSBBSEJQRVJJUEhfQkFTRSAgICAgICAgKFBFUklQSF9CQVNFICsgMHgyMDAwMCkNCisNCisjZGVmaW5lIFRJTTJfQkFTRSAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHgwMDAwKQ0KKyNkZWZpbmUgVElNM19CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDA0MDApDQorI2RlZmluZSBUSU00X0JBU0UgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4MDgwMCkNCisjZGVmaW5lIFRJTTZfQkFTRSAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHgxMDAwKQ0KKyNkZWZpbmUgVElNN19CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDE0MDApDQorI2RlZmluZSBMQ0RfQkFTRSAgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4MjQwMCkNCisjZGVmaW5lIFJUQ19CQVNFICAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHgyODAwKQ0KKyNkZWZpbmUgV1dER19CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDJDMDApDQorI2RlZmluZSBJV0RHX0JBU0UgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4MzAwMCkNCisjZGVmaW5lIFNQSTJfQkFTRSAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHgzODAwKQ0KKyNkZWZpbmUgVVNBUlQyX0JBU0UgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDQ0MDApDQorI2RlZmluZSBVU0FSVDNfQkFTRSAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4NDgwMCkNCisjZGVmaW5lIEkyQzFfQkFTRSAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHg1NDAwKQ0KKyNkZWZpbmUgSTJDMl9CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDU4MDApDQorI2RlZmluZSBQV1JfQkFTRSAgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4NzAwMCkNCisjZGVmaW5lIERBQ19CQVNFICAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHg3NDAwKQ0KKyNkZWZpbmUgQ09NUF9CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDdDMDApDQorI2RlZmluZSBSSV9CQVNFICAgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4N0MwNCkNCisNCisjZGVmaW5lIFNZU0NGR19CQVNFICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHgwMDAwKQ0KKyNkZWZpbmUgRVhUSV9CQVNFICAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDA0MDApDQorI2RlZmluZSBUSU05X0JBU0UgICAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4MDgwMCkNCisjZGVmaW5lIFRJTTEwX0JBU0UgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHgwQzAwKQ0KKyNkZWZpbmUgVElNMTFfQkFTRSAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDEwMDApDQorI2RlZmluZSBBREMxX0JBU0UgICAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4MjQwMCkNCisjZGVmaW5lIEFEQ19CQVNFICAgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHgyNzAwKQ0KKyNkZWZpbmUgU1BJMV9CQVNFICAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDMwMDApDQorI2RlZmluZSBVU0FSVDFfQkFTRSAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4MzgwMCkNCisNCisjZGVmaW5lIEdQSU9BX0JBU0UgICAgICAgICAgICAoQUhCUEVSSVBIX0JBU0UgKyAweDAwMDApDQorI2RlZmluZSBHUElPQl9CQVNFICAgICAgICAgICAgKEFIQlBFUklQSF9CQVNFICsgMHgwNDAwKQ0KKyNkZWZpbmUgR1BJT0NfQkFTRSAgICAgICAgICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDgwMCkNCisjZGVmaW5lIEdQSU9EX0JBU0UgICAgICAgICAgICAoQUhCUEVSSVBIX0JBU0UgKyAweDBDMDApDQorI2RlZmluZSBHUElPRV9CQVNFICAgICAgICAgICAgKEFIQlBFUklQSF9CQVNFICsgMHgxMDAwKQ0KKyNkZWZpbmUgR1BJT0hfQkFTRSAgICAgICAgICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MTQwMCkNCisjZGVmaW5lIENSQ19CQVNFICAgICAgICAgICAgICAoQUhCUEVSSVBIX0JBU0UgKyAweDMwMDApDQorI2RlZmluZSBSQ0NfQkFTRSAgICAgICAgICAgICAgKEFIQlBFUklQSF9CQVNFICsgMHgzODAwKQ0KKw0KKw0KKyNkZWZpbmUgRkxBU0hfUl9CQVNFICAgICAgICAgIChBSEJQRVJJUEhfQkFTRSArIDB4M0MwMCkgLyohPCBGTEFTSCByZWdpc3RlcnMgYmFzZSBhZGRyZXNzICovDQorI2RlZmluZSBPQl9CQVNFICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDFGRjgwMDAwKSAgICAvKiE8IEZMQVNIIE9wdGlvbiBCeXRlcyBiYXNlIGFkZHJlc3MgKi8NCisNCisjZGVmaW5lIERNQTFfQkFTRSAgICAgICAgICAgICAoQUhCUEVSSVBIX0JBU0UgKyAweDYwMDApDQorI2RlZmluZSBETUExX0NoYW5uZWwxX0JBU0UgICAgKERNQTFfQkFTRSArIDB4MDAwOCkNCisjZGVmaW5lIERNQTFfQ2hhbm5lbDJfQkFTRSAgICAoRE1BMV9CQVNFICsgMHgwMDFDKQ0KKyNkZWZpbmUgRE1BMV9DaGFubmVsM19CQVNFICAgIChETUExX0JBU0UgKyAweDAwMzApDQorI2RlZmluZSBETUExX0NoYW5uZWw0X0JBU0UgICAgKERNQTFfQkFTRSArIDB4MDA0NCkNCisjZGVmaW5lIERNQTFfQ2hhbm5lbDVfQkFTRSAgICAoRE1BMV9CQVNFICsgMHgwMDU4KQ0KKyNkZWZpbmUgRE1BMV9DaGFubmVsNl9CQVNFICAgIChETUExX0JBU0UgKyAweDAwNkMpDQorI2RlZmluZSBETUExX0NoYW5uZWw3X0JBU0UgICAgKERNQTFfQkFTRSArIDB4MDA4MCkNCisNCisNCisjZGVmaW5lIERCR01DVV9CQVNFICAgICAgICAgICAoKHVpbnQzMl90KTB4RTAwNDIwMDApIC8qITwgRGVidWcgTUNVIHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorICANCisvKiogQGFkZHRvZ3JvdXAgUGVyaXBoZXJhbF9kZWNsYXJhdGlvbg0KKyAgKiBAew0KKyAgKi8gIA0KKw0KKyNkZWZpbmUgVElNMiAgICAgICAgICAgICAgICAoKFRJTV9UeXBlRGVmICopIFRJTTJfQkFTRSkNCisjZGVmaW5lIFRJTTMgICAgICAgICAgICAgICAgKChUSU1fVHlwZURlZiAqKSBUSU0zX0JBU0UpDQorI2RlZmluZSBUSU00ICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNNF9CQVNFKQ0KKyNkZWZpbmUgVElNNiAgICAgICAgICAgICAgICAoKFRJTV9UeXBlRGVmICopIFRJTTZfQkFTRSkNCisjZGVmaW5lIFRJTTcgICAgICAgICAgICAgICAgKChUSU1fVHlwZURlZiAqKSBUSU03X0JBU0UpDQorI2RlZmluZSBMQ0QgICAgICAgICAgICAgICAgICgoTENEX1R5cGVEZWYgKikgTENEX0JBU0UpDQorI2RlZmluZSBSVEMgICAgICAgICAgICAgICAgICgoUlRDX1R5cGVEZWYgKikgUlRDX0JBU0UpDQorI2RlZmluZSBXV0RHICAgICAgICAgICAgICAgICgoV1dER19UeXBlRGVmICopIFdXREdfQkFTRSkNCisjZGVmaW5lIElXREcgICAgICAgICAgICAgICAgKChJV0RHX1R5cGVEZWYgKikgSVdER19CQVNFKQ0KKyNkZWZpbmUgU1BJMiAgICAgICAgICAgICAgICAoKFNQSV9UeXBlRGVmICopIFNQSTJfQkFTRSkNCisjZGVmaW5lIFVTQVJUMiAgICAgICAgICAgICAgKChVU0FSVF9UeXBlRGVmICopIFVTQVJUMl9CQVNFKQ0KKyNkZWZpbmUgVVNBUlQzICAgICAgICAgICAgICAoKFVTQVJUX1R5cGVEZWYgKikgVVNBUlQzX0JBU0UpDQorI2RlZmluZSBJMkMxICAgICAgICAgICAgICAgICgoSTJDX1R5cGVEZWYgKikgSTJDMV9CQVNFKQ0KKyNkZWZpbmUgSTJDMiAgICAgICAgICAgICAgICAoKEkyQ19UeXBlRGVmICopIEkyQzJfQkFTRSkNCisjZGVmaW5lIFBXUiAgICAgICAgICAgICAgICAgKChQV1JfVHlwZURlZiAqKSBQV1JfQkFTRSkNCisjZGVmaW5lIERBQyAgICAgICAgICAgICAgICAgKChEQUNfVHlwZURlZiAqKSBEQUNfQkFTRSkNCisjZGVmaW5lIENPTVAgICAgICAgICAgICAgICAgKChDT01QX1R5cGVEZWYgKikgQ09NUF9CQVNFKQ0KKyNkZWZpbmUgUkkgICAgICAgICAgICAgICAgICAoKFJJX1R5cGVEZWYgKikgUklfQkFTRSkNCisjZGVmaW5lIFNZU0NGRyAgICAgICAgICAgICAgKChTWVNDRkdfVHlwZURlZiAqKSBTWVNDRkdfQkFTRSkNCisjZGVmaW5lIEVYVEkgICAgICAgICAgICAgICAgKChFWFRJX1R5cGVEZWYgKikgRVhUSV9CQVNFKQ0KKw0KKyNkZWZpbmUgQURDMSAgICAgICAgICAgICAgICAoKEFEQ19UeXBlRGVmICopIEFEQzFfQkFTRSkNCisjZGVmaW5lIEFEQyAgICAgICAgICAgICAgICAgKChBRENfQ29tbW9uX1R5cGVEZWYgKikgQURDX0JBU0UpDQorI2RlZmluZSBUSU05ICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNOV9CQVNFKQ0KKyNkZWZpbmUgVElNMTAgICAgICAgICAgICAgICAoKFRJTV9UeXBlRGVmICopIFRJTTEwX0JBU0UpDQorI2RlZmluZSBUSU0xMSAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNMTFfQkFTRSkNCisjZGVmaW5lIFNQSTEgICAgICAgICAgICAgICAgKChTUElfVHlwZURlZiAqKSBTUEkxX0JBU0UpDQorI2RlZmluZSBVU0FSVDEgICAgICAgICAgICAgICgoVVNBUlRfVHlwZURlZiAqKSBVU0FSVDFfQkFTRSkNCisjZGVmaW5lIERNQTEgICAgICAgICAgICAgICAgKChETUFfVHlwZURlZiAqKSBETUExX0JBU0UpDQorI2RlZmluZSBETUExX0NoYW5uZWwxICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWwxX0JBU0UpDQorI2RlZmluZSBETUExX0NoYW5uZWwyICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWwyX0JBU0UpDQorI2RlZmluZSBETUExX0NoYW5uZWwzICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWwzX0JBU0UpDQorI2RlZmluZSBETUExX0NoYW5uZWw0ICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWw0X0JBU0UpDQorI2RlZmluZSBETUExX0NoYW5uZWw1ICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWw1X0JBU0UpDQorI2RlZmluZSBETUExX0NoYW5uZWw2ICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWw2X0JBU0UpDQorI2RlZmluZSBETUExX0NoYW5uZWw3ICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWw3X0JBU0UpDQorI2RlZmluZSBSQ0MgICAgICAgICAgICAgICAgICgoUkNDX1R5cGVEZWYgKikgUkNDX0JBU0UpDQorI2RlZmluZSBDUkMgICAgICAgICAgICAgICAgICgoQ1JDX1R5cGVEZWYgKikgQ1JDX0JBU0UpDQorDQorI2RlZmluZSBHUElPQSAgICAgICAgICAgICAgICgoR1BJT19UeXBlRGVmICopIEdQSU9BX0JBU0UpDQorI2RlZmluZSBHUElPQiAgICAgICAgICAgICAgICgoR1BJT19UeXBlRGVmICopIEdQSU9CX0JBU0UpDQorI2RlZmluZSBHUElPQyAgICAgICAgICAgICAgICgoR1BJT19UeXBlRGVmICopIEdQSU9DX0JBU0UpDQorI2RlZmluZSBHUElPRCAgICAgICAgICAgICAgICgoR1BJT19UeXBlRGVmICopIEdQSU9EX0JBU0UpDQorI2RlZmluZSBHUElPRSAgICAgICAgICAgICAgICgoR1BJT19UeXBlRGVmICopIEdQSU9FX0JBU0UpDQorI2RlZmluZSBHUElPSCAgICAgICAgICAgICAgICgoR1BJT19UeXBlRGVmICopIEdQSU9IX0JBU0UpDQorDQorI2RlZmluZSBGTEFTSCAgICAgICAgICAgICAgICgoRkxBU0hfVHlwZURlZiAqKSBGTEFTSF9SX0JBU0UpDQorI2RlZmluZSBPQiAgICAgICAgICAgICAgICAgICgoT0JfVHlwZURlZiAqKSBPQl9CQVNFKSANCisNCisjZGVmaW5lIERCR01DVSAgICAgICAgICAgICAgKChEQkdNQ1VfVHlwZURlZiAqKSBEQkdNQ1VfQkFTRSkNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX2NvbnN0YW50cw0KKyAgKiBAew0KKyAgKi8NCisgIA0KKyAgLyoqIEBhZGR0b2dyb3VwIFBlcmlwaGVyYWxfUmVnaXN0ZXJzX0JpdHNfRGVmaW5pdGlvbg0KKyAgKiBAew0KKyAgKi8NCisgICAgDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBQZXJpcGhlcmFsIFJlZ2lzdGVyc19CaXRzX0RlZmluaXRpb24gICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgQW5hbG9nIHRvIERpZ2l0YWwgQ29udmVydGVyICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX1NSX0FXRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBBbmFsb2cgd2F0Y2hkb2cgZmxhZyAqLw0KKyNkZWZpbmUgIEFEQ19TUl9FT0MgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRW5kIG9mIGNvbnZlcnNpb24gKi8NCisjZGVmaW5lICBBRENfU1JfSkVPQyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEluamVjdGVkIGNoYW5uZWwgZW5kIG9mIGNvbnZlcnNpb24gKi8NCisjZGVmaW5lICBBRENfU1JfSlNUUlQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEluamVjdGVkIGNoYW5uZWwgU3RhcnQgZmxhZyAqLw0KKyNkZWZpbmUgIEFEQ19TUl9TVFJUICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgUmVndWxhciBjaGFubmVsIFN0YXJ0IGZsYWcgKi8NCisjZGVmaW5lICBBRENfU1JfT1ZSICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IE92ZXJydW4gZmxhZyAqLw0KKyNkZWZpbmUgIEFEQ19TUl9BRE9OUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQURDIE9OIHN0YXR1cyAqLw0KKyNkZWZpbmUgIEFEQ19TUl9SQ05SICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgUmVndWxhciBjaGFubmVsIG5vdCByZWFkeSBmbGFnICovDQorI2RlZmluZSAgQURDX1NSX0pDTlIgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBJbmplY3RlZCBjaGFubmVsIG5vdCByZWFkeSBmbGFnICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfQ1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBBRENfQ1IxX0FXRENIICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpICAgICAgICAvKiE8IEFXRENIWzQ6MF0gYml0cyAoQW5hbG9nIHdhdGNoZG9nIGNoYW5uZWwgc2VsZWN0IGJpdHMpICovDQorI2RlZmluZSAgQURDX0NSMV9BV0RDSF8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19DUjFfQVdEQ0hfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfQ1IxX0FXRENIXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX0NSMV9BV0RDSF8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19DUjFfQVdEQ0hfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfQ1IxX0VPQ0lFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEludGVycnVwdCBlbmFibGUgZm9yIEVPQyAqLw0KKyNkZWZpbmUgIEFEQ19DUjFfQVdESUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQW5hbG9nIFdhdGNoZG9nIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBBRENfQ1IxX0pFT0NJRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEludGVycnVwdCBlbmFibGUgZm9yIGluamVjdGVkIGNoYW5uZWxzICovDQorI2RlZmluZSAgQURDX0NSMV9TQ0FOICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBTY2FuIG1vZGUgKi8NCisjZGVmaW5lICBBRENfQ1IxX0FXRFNHTCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEVuYWJsZSB0aGUgd2F0Y2hkb2cgb24gYSBzaW5nbGUgY2hhbm5lbCBpbiBzY2FuIG1vZGUgKi8NCisjZGVmaW5lICBBRENfQ1IxX0pBVVRPICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEF1dG9tYXRpYyBpbmplY3RlZCBncm91cCBjb252ZXJzaW9uICovDQorI2RlZmluZSAgQURDX0NSMV9ESVNDRU4gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBEaXNjb250aW51b3VzIG1vZGUgb24gcmVndWxhciBjaGFubmVscyAqLw0KKyNkZWZpbmUgIEFEQ19DUjFfSkRJU0NFTiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgRGlzY29udGludW91cyBtb2RlIG9uIGluamVjdGVkIGNoYW5uZWxzICovDQorDQorI2RlZmluZSAgQURDX0NSMV9ESVNDTlVNICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBFMDAwKSAgICAgICAgLyohPCBESVNDTlVNWzI6MF0gYml0cyAoRGlzY29udGludW91cyBtb2RlIGNoYW5uZWwgY291bnQpICovDQorI2RlZmluZSAgQURDX0NSMV9ESVNDTlVNXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19DUjFfRElTQ05VTV8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfQ1IxX0RJU0NOVU1fMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX0NSMV9QREQgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBQb3dlciBEb3duIGR1cmluZyBEZWxheSBwaGFzZSAqLw0KKyNkZWZpbmUgIEFEQ19DUjFfUERJICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgUG93ZXIgRG93biBkdXJpbmcgSWRsZSBwaGFzZSAqLw0KKw0KKyNkZWZpbmUgIEFEQ19DUjFfSkFXREVOICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQW5hbG9nIHdhdGNoZG9nIGVuYWJsZSBvbiBpbmplY3RlZCBjaGFubmVscyAqLw0KKyNkZWZpbmUgIEFEQ19DUjFfQVdERU4gICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQW5hbG9nIHdhdGNoZG9nIGVuYWJsZSBvbiByZWd1bGFyIGNoYW5uZWxzICovDQorDQorI2RlZmluZSAgQURDX0NSMV9SRVMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAzMDAwMDAwKSAgICAgICAgLyohPCBSRVNbMTowXSBiaXRzIChSZXNvbHV0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19DUjFfUkVTXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfQ1IxX1JFU18xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgQURDX0NSMV9PVlJJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBPdmVycnVuIGludGVycnVwdCBlbmFibGUgKi8NCisgIA0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0NSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX0NSMl9BRE9OICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBBL0QgQ29udmVydGVyIE9OIC8gT0ZGICovDQorI2RlZmluZSAgQURDX0NSMl9DT05UICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBDb250aW51b3VzIENvbnZlcnNpb24gKi8NCisNCisjZGVmaW5lICBBRENfQ1IyX0RFTFMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNzApICAgICAgICAvKiE8IERFTFNbMjowXSBiaXRzIChEZWxheSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX0NSMl9ERUxTXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19DUjJfREVMU18xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfQ1IyX0RFTFNfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX0NSMl9ETUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBEaXJlY3QgTWVtb3J5IGFjY2VzcyBtb2RlICovDQorI2RlZmluZSAgQURDX0NSMl9ERFMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBETUEgZGlzYWJsZSBzZWxlY3Rpb24gKFNpbmdsZSBBREMpICovDQorI2RlZmluZSAgQURDX0NSMl9FT0NTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBFbmQgb2YgY29udmVyc2lvbiBzZWxlY3Rpb24gKi8NCisjZGVmaW5lICBBRENfQ1IyX0FMSUdOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IERhdGEgQWxpZ25tZW50ICovDQorDQorI2RlZmluZSAgQURDX0NSMl9KRVhUU0VMICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEYwMDAwKSAgICAgICAgLyohPCBKRVhUU0VMWzM6MF0gYml0cyAoRXh0ZXJuYWwgZXZlbnQgc2VsZWN0IGZvciBpbmplY3RlZCBncm91cCkgKi8NCisjZGVmaW5lICBBRENfQ1IyX0pFWFRTRUxfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX0NSMl9KRVhUU0VMXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19DUjJfSkVYVFNFTF8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfQ1IyX0pFWFRTRUxfMyAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorDQorI2RlZmluZSAgQURDX0NSMl9KRVhURU4gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzAwMDAwKSAgICAgICAgLyohPCBKRVhURU5bMTowXSBiaXRzIChFeHRlcm5hbCBUcmlnZ2VyIENvbnZlcnNpb24gbW9kZSBmb3IgaW5qZWN0ZWQgY2hhbm5lbHMpICovDQorI2RlZmluZSAgQURDX0NSMl9KRVhURU5fMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19DUjJfSkVYVEVOXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBBRENfQ1IyX0pTV1NUQVJUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IFN0YXJ0IENvbnZlcnNpb24gb2YgaW5qZWN0ZWQgY2hhbm5lbHMgKi8NCisNCisjZGVmaW5lICBBRENfQ1IyX0VYVFNFTCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MEYwMDAwMDApICAgICAgICAvKiE8IEVYVFNFTFszOjBdIGJpdHMgKEV4dGVybmFsIEV2ZW50IFNlbGVjdCBmb3IgcmVndWxhciBncm91cCkgKi8NCisjZGVmaW5lICBBRENfQ1IyX0VYVFNFTF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX0NSMl9FWFRTRUxfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19DUjJfRVhUU0VMXzIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfQ1IyX0VYVFNFTF8zICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorDQorI2RlZmluZSAgQURDX0NSMl9FWFRFTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDMwMDAwMDAwKSAgICAgICAgLyohPCBFWFRFTlsxOjBdIGJpdHMgKEV4dGVybmFsIFRyaWdnZXIgQ29udmVyc2lvbiBtb2RlIGZvciByZWd1bGFyIGNoYW5uZWxzKSAqLw0KKyNkZWZpbmUgIEFEQ19DUjJfRVhURU5fMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfQ1IyX0VYVEVOXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgQURDX0NSMl9TV1NUQVJUICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBTdGFydCBDb252ZXJzaW9uIG9mIHJlZ3VsYXIgY2hhbm5lbHMgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX1NNUFIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAyMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNykgICAgICAgIC8qITwgU01QMjBbMjowXSBiaXRzIChDaGFubmVsIDIwIFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjFfU01QMjBfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIxX1NNUDIwXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAyMF8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lICBBRENfU01QUjFfU01QMjEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzgpICAgICAgICAvKiE8IFNNUDIxWzI6MF0gYml0cyAoQ2hhbm5lbCAyMSBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX1NNUFIxX1NNUDIxXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAyMV8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU01QUjFfU01QMjFfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX1NNUFIxX1NNUDIyICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMUMwKSAgICAgICAgLyohPCBTTVAyMlsyOjBdIGJpdHMgKENoYW5uZWwgMjIgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAyMl8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjFfU01QMjJfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIxX1NNUDIyXzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAyMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEUwMCkgICAgICAgIC8qITwgU01QMjNbMjowXSBiaXRzIChDaGFubmVsIDIzIFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjFfU01QMjNfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIxX1NNUDIzXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAyM18yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lICBBRENfU01QUjFfU01QMjQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApICAgICAgICAvKiE8IFNNUDI0WzI6MF0gYml0cyAoQ2hhbm5lbCAyNCBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX1NNUFIxX1NNUDI0XzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAyNF8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU01QUjFfU01QMjRfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX1NNUFIxX1NNUDI1ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDM4MDAwKSAgICAgICAgLyohPCBTTVAyNVsyOjBdIGJpdHMgKENoYW5uZWwgMjUgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAyNV8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjFfU01QMjVfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIxX1NNUDI1XzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfU01QUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDEwICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA3KSAgICAgICAgLyohPCBTTVAxMFsyOjBdIGJpdHMgKENoYW5uZWwgMTAgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxMF8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTBfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDEwXzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAzOCkgICAgICAgIC8qITwgU01QMTFbMjowXSBiaXRzIChDaGFubmVsIDExIFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTFfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDExXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxMV8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lICBBRENfU01QUjJfU01QMTIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxQzApICAgICAgICAvKiE8IFNNUDEyWzI6MF0gYml0cyAoQ2hhbm5lbCAxMiBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDEyXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxMl8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTJfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDEzICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRTAwKSAgICAgICAgLyohPCBTTVAxM1syOjBdIGJpdHMgKENoYW5uZWwgMTMgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxM18wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTNfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDEzXzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNzAwMCkgICAgICAgIC8qITwgU01QMTRbMjowXSBiaXRzIChDaGFubmVsIDE0IFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTRfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDE0XzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxNF8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lICBBRENfU01QUjJfU01QMTUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzgwMDApICAgICAgICAvKiE8IFNNUDE1WzI6MF0gYml0cyAoQ2hhbm5lbCA1IFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTVfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDE1XzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxNV8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lICBBRENfU01QUjJfU01QMTYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxQzAwMDApICAgICAgICAvKiE8IFNNUDE2WzI6MF0gYml0cyAoQ2hhbm5lbCAxNiBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDE2XzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxNl8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTZfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDE3ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRTAwMDAwKSAgICAgICAgLyohPCBTTVAxN1syOjBdIGJpdHMgKENoYW5uZWwgMTcgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxN18wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTdfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDE3XzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxOCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNzAwMDAwMCkgICAgICAgIC8qITwgU01QMThbMjowXSBiaXRzIChDaGFubmVsIDE4IFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMThfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDE4XzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxOF8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lICBBRENfU01QUjJfU01QMTkgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzgwMDAwMDApICAgICAgICAvKiE8IFNNUDE5WzI6MF0gYml0cyAoQ2hhbm5lbCAxOSBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX1NNUFIyX1NNUDE5XzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSMl9TTVAxOV8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU01QUjJfU01QMTlfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19TTVBSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDcpICAgICAgICAvKiE8IFNNUDBbMjowXSBiaXRzIChDaGFubmVsIDAgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVAwXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QMF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDBfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyANCisjZGVmaW5lICBBRENfU01QUjNfU01QMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzgpICAgICAgICAvKiE8IFNNUDFbMjowXSBiaXRzIChDaGFubmVsIDEgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVAxXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QMV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDFfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVAyICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDFDMCkgICAgICAgIC8qITwgU01QMlsyOjBdIGJpdHMgKENoYW5uZWwgMiBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDJfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVAyXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QMl8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRTAwKSAgICAgICAgLyohPCBTTVAzWzI6MF0gYml0cyAoQ2hhbm5lbCAzIFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QM18wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDNfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVAzXzIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lICBBRENfU01QUjNfU01QNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApICAgICAgICAvKiE8IFNNUDRbMjowXSBiaXRzIChDaGFubmVsIDQgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVA0XzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QNF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDRfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVA1ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAzODAwMCkgICAgICAgIC8qITwgU01QNVsyOjBdIGJpdHMgKENoYW5uZWwgNSBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVA1XzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QNV8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMUMwMDAwKSAgICAgICAgLyohPCBTTVA2WzI6MF0gYml0cyAoQ2hhbm5lbCA2IFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QNl8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDZfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVA2XzIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lICBBRENfU01QUjNfU01QNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBFMDAwMDApICAgICAgICAvKiE8IFNNUDdbMjowXSBiaXRzIChDaGFubmVsIDcgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVA3XzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QN18xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDdfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVA4ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNzAwMDAwMCkgICAgICAgIC8qITwgU01QOFsyOjBdIGJpdHMgKENoYW5uZWwgOCBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDhfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVA4XzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QOF8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDkgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDM4MDAwMDAwKSAgICAgICAgLyohPCBTTVA5WzI6MF0gYml0cyAoQ2hhbm5lbCA5IFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBBRENfU01QUjNfU01QOV8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NNUFIzX1NNUDlfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TTVBSM19TTVA5XzIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0pPRlIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19KT0ZSMV9KT0ZGU0VUMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEZGRikgICAgICAgIC8qITwgRGF0YSBvZmZzZXQgZm9yIGluamVjdGVkIGNoYW5uZWwgMSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfSk9GUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX0pPRlIyX0pPRkZTRVQyICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRkZGKSAgICAgICAgLyohPCBEYXRhIG9mZnNldCBmb3IgaW5qZWN0ZWQgY2hhbm5lbCAyICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19KT0ZSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBBRENfSk9GUjNfSk9GRlNFVDMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBGRkYpICAgICAgICAvKiE8IERhdGEgb2Zmc2V0IGZvciBpbmplY3RlZCBjaGFubmVsIDMgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0pPRlI0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19KT0ZSNF9KT0ZGU0VUNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEZGRikgICAgICAgIC8qITwgRGF0YSBvZmZzZXQgZm9yIGluamVjdGVkIGNoYW5uZWwgNCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0hUUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX0hUUl9IVCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRkZGKSAgICAgICAgLyohPCBBbmFsb2cgd2F0Y2hkb2cgaGlnaCB0aHJlc2hvbGQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19MVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19MVFJfTFQgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEZGRikgICAgICAgICAvKiE8IEFuYWxvZyB3YXRjaGRvZyBsb3cgdGhyZXNob2xkICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfU1FSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBBRENfU1FSMV9TUTI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpICAgICAgICAvKiE8IFNRMjVbNDowXSBiaXRzICgyNXRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSMV9TUTI1XzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjFfU1EyNV8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMjVfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSMV9TUTI1XzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjFfU1EyNV80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNFMCkgICAgICAgIC8qITwgU1EyNls0OjBdIGJpdHMgKDI2dGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMjZfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU1FSMV9TUTI2XzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NRUjFfU1EyNl8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMjZfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBBRENfU1FSMV9TUTI2XzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgQURDX1NRUjFfU1EyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBTUTI3WzQ6MF0gYml0cyAoMjd0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjFfU1EyN18wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMjdfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSMV9TUTI3XzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjFfU1EyN18zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMjdfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfU1FSMV9MICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGMDAwMDApICAgICAgICAvKiE8IExbMzowXSBiaXRzIChSZWd1bGFyIGNoYW5uZWwgc2VxdWVuY2UgbGVuZ3RoKSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIxX0xfMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU1FSMV9MXzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NRUjFfTF8yICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEFEQ19TUVIxX0xfMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19TUVIyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxRikgICAgICAgIC8qITwgU1ExOVs0OjBdIGJpdHMgKDE5dGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTlfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTE5XzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NRUjJfU1ExOV8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTlfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTE5XzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgQURDX1NRUjJfU1EyMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0UwKSAgICAgICAgLyohPCBTUTIwWzQ6MF0gYml0cyAoMjB0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyMF8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjBfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTIwXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyMF8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjBfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfU1FSMl9TUTIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDdDMDApICAgICAgICAvKiE8IFNRMjFbNDowXSBiaXRzICgyMXRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTIxXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyMV8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjFfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTIxXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyMV80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBGODAwMCkgICAgICAgIC8qITwgU1EyMls0OjBdIGJpdHMgKDIydGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjJfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTIyXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyMl8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjJfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTIyXzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgQURDX1NRUjJfU1EyMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxRjAwMDAwKSAgICAgICAgLyohPCBTUTIzWzQ6MF0gYml0cyAoMjN0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyM18wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjNfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTIzXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyM18zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjNfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfU1FSMl9TUTI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4M0UwMDAwMDApICAgICAgICAvKiE8IFNRMjRbNDowXSBiaXRzICgyNHRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTI0XzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyNF8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMjRfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSMl9TUTI0XzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjJfU1EyNF80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX1NRUjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDFGKSAgICAgICAgLyohPCBTUTEzWzQ6MF0gYml0cyAoMTN0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExM18wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTNfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTEzXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExM18zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTNfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfU1FSM19TUTE0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRTApICAgICAgICAvKiE8IFNRMTRbNDowXSBiaXRzICgxNHRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE0XzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExNF8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTRfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE0XzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExNF80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgU1ExNVs0OjBdIGJpdHMgKDE1dGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTVfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE1XzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExNV8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTVfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE1XzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgQURDX1NRUjNfU1ExNiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEY4MDAwKSAgICAgICAgLyohPCBTUTE2WzQ6MF0gYml0cyAoMTZ0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExNl8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTZfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE2XzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExNl8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTZfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfU1FSM19TUTE3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDFGMDAwMDApICAgICAgICAvKiE8IFNRMTdbNDowXSBiaXRzICgxN3RoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE3XzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExN18xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTdfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE3XzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExN180ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMTggICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzRTAwMDAwMCkgICAgICAgIC8qITwgU1ExOFs0OjBdIGJpdHMgKDE4dGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMThfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE4XzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NRUjNfU1ExOF8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEFEQ19TUVIzX1NRMThfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBBRENfU1FSM19TUTE4XzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfU1FSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUTcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpICAgICAgICAvKiE8IFNRN1s0OjBdIGJpdHMgKDd0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjRfU1E3XzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NRN18xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUTdfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjRfU1E3XzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NRN180ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfU1FSNF9TUTggICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRTApICAgICAgICAvKiE8IFNROFs0OjBdIGJpdHMgKDh0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjRfU1E4XzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NROF8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUThfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjRfU1E4XzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NROF80ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfU1FSNF9TUTkgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDdDMDApICAgICAgICAvKiE8IFNROVs0OjBdIGJpdHMgKDl0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjRfU1E5XzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NROV8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUTlfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjRfU1E5XzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NROV80ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfU1FSNF9TUTEwICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEY4MDAwKSAgICAgICAgLyohPCBTUTEwWzQ6MF0gYml0cyAoMTB0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX1NRUjRfU1ExMF8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUTEwXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NRMTBfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX1NRUjRfU1ExMF8zICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUTEwXzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NRMTEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDFGMDAwMDApICAgICAgICAvKiE8IFNRMTFbNDowXSBiaXRzICgxMXRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUTExXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NRMTFfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX1NRUjRfU1ExMV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUTExXzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NRMTFfNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgQURDX1NRUjRfU1ExMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzRTAwMDAwMCkgICAgICAgIC8qITwgU1ExMls0OjBdIGJpdHMgKDEydGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NRMTJfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjRfU1ExMl8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfU1FSNF9TUTEyXzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEFEQ19TUVI0X1NRMTJfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjRfU1ExMl80ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19TUVI1IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxRikgICAgICAgIC8qITwgU1ExWzQ6MF0gYml0cyAoMXN0IGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTFfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjVfU1ExXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRMV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTFfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjVfU1ExXzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNFMCkgICAgICAgIC8qITwgU1EyWzQ6MF0gYml0cyAoMm5kIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTJfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjVfU1EyXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRMl8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTJfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjVfU1EyXzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgU1EzWzQ6MF0gYml0cyAoM3JkIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTNfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjVfU1EzXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRM18yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTNfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjVfU1EzXzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBGODAwMCkgICAgICAgIC8qITwgU1E0WzQ6MF0gYml0cyAoNHRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTRfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjVfU1E0XzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRNF8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTRfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjVfU1E0XzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRNSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMUYwMDAwMCkgICAgICAgIC8qITwgU1E1WzQ6MF0gYml0cyAoNXRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTVfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjVfU1E1XzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRNV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTVfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjVfU1E1XzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzRTAwMDAwMCkgICAgICAgIC8qITwgU1E2WzQ6MF0gYml0cyAoNnRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTZfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX1NRUjVfU1E2XzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19TUVI1X1NRNl8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfU1FSNV9TUTZfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX1NRUjVfU1E2XzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0pTUVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX0pTUVJfSlNRMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDFGKSAgICAgICAgLyohPCBKU1ExWzQ6MF0gYml0cyAoMXN0IGNvbnZlcnNpb24gaW4gaW5qZWN0ZWQgc2VxdWVuY2UpICovICANCisjZGVmaW5lICBBRENfSlNRUl9KU1ExXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX0pTUVJfSlNRMV8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTFfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfSlNRUl9KU1ExXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX0pTUVJfSlNRMV80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNFMCkgICAgICAgIC8qITwgSlNRMls0OjBdIGJpdHMgKDJuZCBjb252ZXJzaW9uIGluIGluamVjdGVkIHNlcXVlbmNlKSAqLw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTJfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfSlNRUl9KU1EyXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQURDX0pTUVJfSlNRMl8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTJfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBBRENfSlNRUl9KU1EyXzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgQURDX0pTUVJfSlNRMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBKU1EzWzQ6MF0gYml0cyAoM3JkIGNvbnZlcnNpb24gaW4gaW5qZWN0ZWQgc2VxdWVuY2UpICovDQorI2RlZmluZSAgQURDX0pTUVJfSlNRM18wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTNfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBBRENfSlNRUl9KU1EzXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgQURDX0pTUVJfSlNRM18zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTNfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBBRENfSlNRUl9KU1E0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRjgwMDApICAgICAgICAvKiE8IEpTUTRbNDowXSBiaXRzICg0dGggY29udmVyc2lvbiBpbiBpbmplY3RlZCBzZXF1ZW5jZSkgKi8NCisjZGVmaW5lICBBRENfSlNRUl9KU1E0XzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgQURDX0pTUVJfSlNRNF8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTRfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBBRENfSlNRUl9KU1E0XzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgQURDX0pTUVJfSlNRNF80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pMICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDMwMDAwMCkgICAgICAgIC8qITwgSkxbMTowXSBiaXRzIChJbmplY3RlZCBTZXF1ZW5jZSBsZW5ndGgpICovDQorI2RlZmluZSAgQURDX0pTUVJfSkxfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIEFEQ19KU1FSX0pMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19KRFIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19KRFIxX0pEQVRBICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkZGRikgICAgICAgIC8qITwgSW5qZWN0ZWQgZGF0YSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0pEUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX0pEUjJfSkRBVEEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRkZGKSAgICAgICAgLyohPCBJbmplY3RlZCBkYXRhICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfSkRSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBBRENfSkRSM19KREFUQSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGRkYpICAgICAgICAvKiE8IEluamVjdGVkIGRhdGEgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19KRFI0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19KRFI0X0pEQVRBICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkZGRikgICAgICAgIC8qITwgSW5qZWN0ZWQgZGF0YSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19EUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgQURDX0RSX0RBVEEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRkZGKSAgICAgICAgLyohPCBSZWd1bGFyIGRhdGEgKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19DU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEFEQ19DU1JfQVdEMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQURDMSBBbmFsb2cgd2F0Y2hkb2cgZmxhZyAqLw0KKyNkZWZpbmUgIEFEQ19DU1JfRU9DMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQURDMSBFbmQgb2YgY29udmVyc2lvbiAqLw0KKyNkZWZpbmUgIEFEQ19DU1JfSkVPQzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQURDMSBJbmplY3RlZCBjaGFubmVsIGVuZCBvZiBjb252ZXJzaW9uICovDQorI2RlZmluZSAgQURDX0NTUl9KU1RSVDEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBBREMxIEluamVjdGVkIGNoYW5uZWwgU3RhcnQgZmxhZyAqLw0KKyNkZWZpbmUgIEFEQ19DU1JfU1RSVDEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQURDMSBSZWd1bGFyIGNoYW5uZWwgU3RhcnQgZmxhZyAqLw0KKyNkZWZpbmUgIEFEQ19DU1JfT1ZSMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQURDMSBvdmVycnVuICBmbGFnICovDQorI2RlZmluZSAgQURDX0NTUl9BRE9OUzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBBRE9OIHN0YXR1cyBvZiBBREMxICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfQ0NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBBRENfQ0NSX0FEQ1BSRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzAwMDApICAgICAgICAvKiE8IEFEQyBwcmVzY2FsZXIqLw0KKyNkZWZpbmUgIEFEQ19DQ1JfQURDUFJFXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBBRENfQ0NSX0FEQ1BSRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovIA0KKyNkZWZpbmUgIEFEQ19DQ1JfVFNWUkVGRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgVGVtcGVyYXR1cmUgU2Vuc29yIGFuZCBWUkVGSU5UIEVuYWJsZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ09NUF9DU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIENPTVBfQ1NSXzEwS1BVICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgMTBLIHB1bGwtdXAgcmVzaXN0b3IgKi8NCisjZGVmaW5lICBDT01QX0NTUl80MDBLUFUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IDQwMEsgcHVsbC11cCByZXNpc3RvciAqLw0KKyNkZWZpbmUgIENPTVBfQ1NSXzEwS1BEICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgMTBLIHB1bGwtZG93biByZXNpc3RvciAqLw0KKyNkZWZpbmUgIENPTVBfQ1NSXzQwMEtQRCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgNDAwSyBwdWxsLWRvd24gcmVzaXN0b3IgKi8NCisNCisjZGVmaW5lICBDT01QX0NTUl9DTVAxRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IENvbXBhcmF0b3IgMSBlbmFibGUgKi8NCisjZGVmaW5lICBDT01QX0NTUl9DTVAxT1VUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IENvbXBhcmF0b3IgMSBvdXRwdXQgKi8NCisNCisjZGVmaW5lICBDT01QX0NTUl9TUEVFRCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IENvbXBhcmF0b3IgMiBzcGVlZCAqLw0KKyNkZWZpbmUgIENPTVBfQ1NSX0NNUDJPVVQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQ29tcGFyYXRvciAyIG91cHV0ICovDQorDQorI2RlZmluZSAgQ09NUF9DU1JfVlJFRk9VVEVOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBDb21wYXJhdG9yIFZyZWYgRW5hYmxlICovDQorI2RlZmluZSAgQ09NUF9DU1JfV05EV0UgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBXaW5kb3cgbW9kZSBlbmFibGUgKi8NCisNCisjZGVmaW5lICBDT01QX0NTUl9JTlNFTCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxQzAwMDApICAgICAgICAvKiE8IElOU0VMWzI6MF0gSW52ZXJzaW9uIGlucHV0IFNlbGVjdGlvbiAqLw0KKyNkZWZpbmUgIENPTVBfQ1NSX0lOU0VMXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBDT01QX0NTUl9JTlNFTF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQ09NUF9DU1JfSU5TRUxfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIENPTVBfQ1NSX09VVFNFTCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEUwMDAwMCkgICAgICAgIC8qITwgT1VUU0VMWzI6MF0gY29tcGFyYXRvciAyIG91dHB1dCByZWRpcmVjdGlvbiAqLw0KKyNkZWZpbmUgIENPTVBfQ1NSX09VVFNFTF8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBDT01QX0NTUl9PVVRTRUxfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgQ09NUF9DU1JfT1VUU0VMXzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JDIGNhbGN1bGF0aW9uIHVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENSQ19EUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIENSQ19EUl9EUiAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgLyohPCBEYXRhIHJlZ2lzdGVyIGJpdHMgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENSQ19JRFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIENSQ19JRFJfSURSICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweEZGKSAgICAgICAgLyohPCBHZW5lcmFsLXB1cnBvc2UgOC1iaXQgZGF0YSByZWdpc3RlciBiaXRzICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ1JDX0NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBDUkNfQ1JfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpIC8qITwgUkVTRVQgYml0ICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgIERpZ2l0YWwgdG8gQW5hbG9nIENvbnZlcnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19DUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgREFDX0NSX0VOMSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPERBQyBjaGFubmVsMSBlbmFibGUgKi8NCisjZGVmaW5lICBEQUNfQ1JfQk9GRjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8REFDIGNoYW5uZWwxIG91dHB1dCBidWZmZXIgZGlzYWJsZSAqLw0KKyNkZWZpbmUgIERBQ19DUl9URU4xICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITxEQUMgY2hhbm5lbDEgVHJpZ2dlciBlbmFibGUgKi8NCisNCisjZGVmaW5lICBEQUNfQ1JfVFNFTDEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzgpICAgICAgICAvKiE8VFNFTDFbMjowXSAoREFDIGNoYW5uZWwxIFRyaWdnZXIgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIERBQ19DUl9UU0VMMV8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIERBQ19DUl9UU0VMMV8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITxCaXQgMSAqLw0KKyNkZWZpbmUgIERBQ19DUl9UU0VMMV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITxCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIERBQ19DUl9XQVZFMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBDMCkgICAgICAgIC8qITxXQVZFMVsxOjBdIChEQUMgY2hhbm5lbDEgbm9pc2UvdHJpYW5nbGUgd2F2ZSBnZW5lcmF0aW9uIGVuYWJsZSkgKi8NCisjZGVmaW5lICBEQUNfQ1JfV0FWRTFfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBEQUNfQ1JfV0FWRTFfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBEQUNfQ1JfTUFNUDEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBGMDApICAgICAgICAvKiE8TUFNUDFbMzowXSAoREFDIGNoYW5uZWwxIE1hc2svQW1wbGl0dWRlIHNlbGVjdG9yKSAqLw0KKyNkZWZpbmUgIERBQ19DUl9NQU1QMV8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIERBQ19DUl9NQU1QMV8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITxCaXQgMSAqLw0KKyNkZWZpbmUgIERBQ19DUl9NQU1QMV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITxCaXQgMiAqLw0KKyNkZWZpbmUgIERBQ19DUl9NQU1QMV8zICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITxCaXQgMyAqLw0KKw0KKyNkZWZpbmUgIERBQ19DUl9ETUFFTjEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITxEQUMgY2hhbm5lbDEgRE1BIGVuYWJsZSAqLw0KKyNkZWZpbmUgIERBQ19DUl9FTjIgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITxEQUMgY2hhbm5lbDIgZW5hYmxlICovDQorI2RlZmluZSAgREFDX0NSX0JPRkYyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPERBQyBjaGFubmVsMiBvdXRwdXQgYnVmZmVyIGRpc2FibGUgKi8NCisjZGVmaW5lICBEQUNfQ1JfVEVOMiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8REFDIGNoYW5uZWwyIFRyaWdnZXIgZW5hYmxlICovDQorDQorI2RlZmluZSAgREFDX0NSX1RTRUwyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzgwMDAwKSAgICAgICAgLyohPFRTRUwyWzI6MF0gKERBQyBjaGFubmVsMiBUcmlnZ2VyIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBEQUNfQ1JfVFNFTDJfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBEQUNfQ1JfVFNFTDJfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8Qml0IDEgKi8NCisjZGVmaW5lICBEQUNfQ1JfVFNFTDJfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8Qml0IDIgKi8NCisNCisjZGVmaW5lICBEQUNfQ1JfV0FWRTIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBDMDAwMDApICAgICAgICAvKiE8V0FWRTJbMTowXSAoREFDIGNoYW5uZWwyIG5vaXNlL3RyaWFuZ2xlIHdhdmUgZ2VuZXJhdGlvbiBlbmFibGUpICovDQorI2RlZmluZSAgREFDX0NSX1dBVkUyXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgREFDX0NSX1dBVkUyXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPEJpdCAxICovDQorDQorI2RlZmluZSAgREFDX0NSX01BTVAyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDBGMDAwMDAwKSAgICAgICAgLyohPE1BTVAyWzM6MF0gKERBQyBjaGFubmVsMiBNYXNrL0FtcGxpdHVkZSBzZWxlY3RvcikgKi8NCisjZGVmaW5lICBEQUNfQ1JfTUFNUDJfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBEQUNfQ1JfTUFNUDJfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8Qml0IDEgKi8NCisjZGVmaW5lICBEQUNfQ1JfTUFNUDJfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8Qml0IDIgKi8NCisjZGVmaW5lICBEQUNfQ1JfTUFNUDJfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8Qml0IDMgKi8NCisNCisjZGVmaW5lICBEQUNfQ1JfRE1BRU4yICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8REFDIGNoYW5uZWwyIERNQSBlbmFibGVkICovDQorDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREFDX1NXVFJJR1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBEQUNfU1dUUklHUl9TV1RSSUcxICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8REFDIGNoYW5uZWwxIHNvZnR3YXJlIHRyaWdnZXIgKi8NCisjZGVmaW5lICBEQUNfU1dUUklHUl9TV1RSSUcyICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8REFDIGNoYW5uZWwyIHNvZnR3YXJlIHRyaWdnZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfREhSMTJSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERBQ19ESFIxMlIxX0RBQ0MxREhSICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwRkZGKSAgICAgICAgICAgIC8qITxEQUMgY2hhbm5lbDEgMTItYml0IFJpZ2h0IGFsaWduZWQgZGF0YSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19ESFIxMkwxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgREFDX0RIUjEyTDFfREFDQzFESFIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRjApICAgICAgICAgICAgLyohPERBQyBjaGFubmVsMSAxMi1iaXQgTGVmdCBhbGlnbmVkIGRhdGEgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREFDX0RIUjhSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERBQ19ESFI4UjFfREFDQzFESFIgICAgICAgICAgICAgICAgICgodWludDhfdCkweEZGKSAgICAgICAgICAgICAgIC8qITxEQUMgY2hhbm5lbDEgOC1iaXQgUmlnaHQgYWxpZ25lZCBkYXRhICovDQorDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREFDX0RIUjEyUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBEQUNfREhSMTJSMl9EQUNDMkRIUiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEZGRikgICAgICAgICAgICAvKiE8REFDIGNoYW5uZWwyIDEyLWJpdCBSaWdodCBhbGlnbmVkIGRhdGEgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfREhSMTJMMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERBQ19ESFIxMkwyX0RBQ0MyREhSICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkYwKSAgICAgICAgICAgIC8qITxEQUMgY2hhbm5lbDIgMTItYml0IExlZnQgYWxpZ25lZCBkYXRhICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19ESFI4UjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBEQUNfREhSOFIyX0RBQ0MyREhSICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHhGRikgICAgICAgICAgICAgICAvKiE8REFDIGNoYW5uZWwyIDgtYml0IFJpZ2h0IGFsaWduZWQgZGF0YSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19ESFIxMlJEIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgREFDX0RIUjEyUkRfREFDQzFESFIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRkZGKSAgICAgICAgLyohPERBQyBjaGFubmVsMSAxMi1iaXQgUmlnaHQgYWxpZ25lZCBkYXRhICovDQorI2RlZmluZSAgREFDX0RIUjEyUkRfREFDQzJESFIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDBGRkYwMDAwKSAgICAgICAgLyohPERBQyBjaGFubmVsMiAxMi1iaXQgUmlnaHQgYWxpZ25lZCBkYXRhICovDQorDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREFDX0RIUjEyTEQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBEQUNfREhSMTJMRF9EQUNDMURIUiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGRjApICAgICAgICAvKiE8REFDIGNoYW5uZWwxIDEyLWJpdCBMZWZ0IGFsaWduZWQgZGF0YSAqLw0KKyNkZWZpbmUgIERBQ19ESFIxMkxEX0RBQ0MyREhSICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkYwMDAwMCkgICAgICAgIC8qITxEQUMgY2hhbm5lbDIgMTItYml0IExlZnQgYWxpZ25lZCBkYXRhICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19ESFI4UkQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBEQUNfREhSOFJEX0RBQ0MxREhSICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGRikgICAgICAgICAgICAvKiE8REFDIGNoYW5uZWwxIDgtYml0IFJpZ2h0IGFsaWduZWQgZGF0YSAqLw0KKyNkZWZpbmUgIERBQ19ESFI4UkRfREFDQzJESFIgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRjAwKSAgICAgICAgICAgIC8qITxEQUMgY2hhbm5lbDIgOC1iaXQgUmlnaHQgYWxpZ25lZCBkYXRhICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfRE9SMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBEQUNfRE9SMV9EQUNDMURPUiAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEZGRikgICAgICAgICAgICAvKiE8REFDIGNoYW5uZWwxIGRhdGEgb3V0cHV0ICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfRE9SMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBEQUNfRE9SMl9EQUNDMkRPUiAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEZGRikgICAgICAgICAgICAvKiE8REFDIGNoYW5uZWwyIGRhdGEgb3V0cHV0ICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREFDX1NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBEQUNfU1JfRE1BVURSMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8REFDIGNoYW5uZWwxIERNQSB1bmRlcnJ1biBmbGFnICovDQorI2RlZmluZSAgREFDX1NSX0RNQVVEUjIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPERBQyBjaGFubmVsMiBETUEgdW5kZXJydW4gZmxhZyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYnVnIE1DVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERCR01DVV9JRENPREUgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERCR01DVV9JRENPREVfREVWX0lEICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEZGRikgICAgICAgIC8qITwgRGV2aWNlIElkZW50aWZpZXIgKi8NCisNCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjAwMDApICAgICAgICAvKiE8IFJFVl9JRFsxNTowXSBiaXRzIChSZXZpc2lvbiBJZGVudGlmaWVyKSAqLw0KKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEXzAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8xICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgREJHTUNVX0lEQ09ERV9SRVZfSURfMiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEXzMgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF80ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorI2RlZmluZSAgREJHTUNVX0lEQ09ERV9SRVZfSURfNSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgNSAqLw0KKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEXzYgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDYgKi8NCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF83ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCA3ICovDQorI2RlZmluZSAgREJHTUNVX0lEQ09ERV9SRVZfSURfOCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgOCAqLw0KKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEXzkgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDkgKi8NCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8xMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAxMCAqLw0KKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEXzExICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDExICovDQorI2RlZmluZSAgREJHTUNVX0lEQ09ERV9SRVZfSURfMTIgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMTIgKi8NCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8xMyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAxMyAqLw0KKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEXzE0ICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDE0ICovDQorI2RlZmluZSAgREJHTUNVX0lEQ09ERV9SRVZfSURfMTUgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMTUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREJHTUNVX0NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfU0xFRVAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRGVidWcgU2xlZXAgTW9kZSAqLw0KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfU1RPUCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRGVidWcgU3RvcCBNb2RlICovDQorI2RlZmluZSAgREJHTUNVX0NSX0RCR19TVEFOREJZICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBEZWJ1ZyBTdGFuZGJ5IG1vZGUgKi8NCisjZGVmaW5lICBEQkdNQ1VfQ1JfVFJBQ0VfSU9FTiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IFRyYWNlIFBpbiBBc3NpZ25tZW50IENvbnRyb2wgKi8NCisNCisjZGVmaW5lICBEQkdNQ1VfQ1JfVFJBQ0VfTU9ERSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQzApICAgICAgICAvKiE8IFRSQUNFX01PREVbMTowXSBiaXRzIChUcmFjZSBQaW4gQXNzaWdubWVudCBDb250cm9sKSAqLw0KKyNkZWZpbmUgIERCR01DVV9DUl9UUkFDRV9NT0RFXzAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBEQkdNQ1VfQ1JfVFJBQ0VfTU9ERV8xICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCAxICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERCR01DVV9BUEIxX0ZaIHJlZ2lzdGVyICAqKioqKioqKioqKioqKi8NCisNCisjZGVmaW5lICBEQkdNQ1VfQVBCMV9GWl9EQkdfVElNMl9TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgVElNMiBjb3VudGVyIHN0b3BwZWQgd2hlbiBjb3JlIGlzIGhhbHRlZCAqLw0KKyNkZWZpbmUgIERCR01DVV9BUEIxX0ZaX0RCR19USU0zX1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBUSU0zIGNvdW50ZXIgc3RvcHBlZCB3aGVuIGNvcmUgaXMgaGFsdGVkICovDQorI2RlZmluZSAgREJHTUNVX0FQQjFfRlpfREJHX1RJTTRfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFRJTTQgY291bnRlciBzdG9wcGVkIHdoZW4gY29yZSBpcyBoYWx0ZWQgKi8NCisjZGVmaW5lICBEQkdNQ1VfQVBCMV9GWl9EQkdfVElNNl9TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgVElNNiBjb3VudGVyIHN0b3BwZWQgd2hlbiBjb3JlIGlzIGhhbHRlZCAqLw0KKyNkZWZpbmUgIERCR01DVV9BUEIxX0ZaX0RCR19USU03X1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBUSU03IGNvdW50ZXIgc3RvcHBlZCB3aGVuIGNvcmUgaXMgaGFsdGVkICovDQorI2RlZmluZSAgREJHTUNVX0FQQjFfRlpfREJHX1dXREdfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IERlYnVnIFdpbmRvdyBXYXRjaGRvZyBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgKi8NCisjZGVmaW5lICBEQkdNQ1VfQVBCMV9GWl9EQkdfSVdER19TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgRGVidWcgSW5kZXBlbmRlbnQgV2F0Y2hkb2cgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICovDQorI2RlZmluZSAgREJHTUNVX0FQQjFfRlpfREJHX0kyQzFfU01CVVNfVElNRU9VVCAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IFNNQlVTIHRpbWVvdXQgbW9kZSBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgKi8NCisjZGVmaW5lICBEQkdNQ1VfQVBCMV9GWl9EQkdfSTJDMl9TTUJVU19USU1FT1VUICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgU01CVVMgdGltZW91dCBtb2RlIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQkdNQ1VfQVBCMl9GWiByZWdpc3RlciAgKioqKioqKioqKioqKiovDQorDQorI2RlZmluZSAgREJHTUNVX0FQQjJfRlpfREJHX1RJTTlfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFRJTTkgY291bnRlciBzdG9wcGVkIHdoZW4gY29yZSBpcyBoYWx0ZWQgKi8NCisjZGVmaW5lICBEQkdNQ1VfQVBCMl9GWl9EQkdfVElNMTBfU1RPUCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgVElNMTAgY291bnRlciBzdG9wcGVkIHdoZW4gY29yZSBpcyBoYWx0ZWQgKi8NCisjZGVmaW5lICBEQkdNQ1VfQVBCMl9GWl9EQkdfVElNMTFfU1RPUCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgVElNMTEgY291bnRlciBzdG9wcGVkIHdoZW4gY29yZSBpcyBoYWx0ZWQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSBDb250cm9sbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfSVNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfSVNSX0dJRjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IENoYW5uZWwgMSBHbG9iYWwgaW50ZXJydXB0IGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX1RDSUYxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IENoYW5uZWwgMSBUcmFuc2ZlciBDb21wbGV0ZSBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9IVElGMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBDaGFubmVsIDEgSGFsZiBUcmFuc2ZlciBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9URUlGMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBDaGFubmVsIDEgVHJhbnNmZXIgRXJyb3IgZmxhZyAqLw0KKyNkZWZpbmUgIERNQV9JU1JfR0lGMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQ2hhbm5lbCAyIEdsb2JhbCBpbnRlcnJ1cHQgZmxhZyAqLw0KKyNkZWZpbmUgIERNQV9JU1JfVENJRjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQ2hhbm5lbCAyIFRyYW5zZmVyIENvbXBsZXRlIGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX0hUSUYyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IENoYW5uZWwgMiBIYWxmIFRyYW5zZmVyIGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX1RFSUYyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IENoYW5uZWwgMiBUcmFuc2ZlciBFcnJvciBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9HSUYzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBDaGFubmVsIDMgR2xvYmFsIGludGVycnVwdCBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9UQ0lGMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBDaGFubmVsIDMgVHJhbnNmZXIgQ29tcGxldGUgZmxhZyAqLw0KKyNkZWZpbmUgIERNQV9JU1JfSFRJRjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQ2hhbm5lbCAzIEhhbGYgVHJhbnNmZXIgZmxhZyAqLw0KKyNkZWZpbmUgIERNQV9JU1JfVEVJRjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQ2hhbm5lbCAzIFRyYW5zZmVyIEVycm9yIGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX0dJRjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IENoYW5uZWwgNCBHbG9iYWwgaW50ZXJydXB0IGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX1RDSUY0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IENoYW5uZWwgNCBUcmFuc2ZlciBDb21wbGV0ZSBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9IVElGNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBDaGFubmVsIDQgSGFsZiBUcmFuc2ZlciBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9URUlGNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBDaGFubmVsIDQgVHJhbnNmZXIgRXJyb3IgZmxhZyAqLw0KKyNkZWZpbmUgIERNQV9JU1JfR0lGNSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA1IEdsb2JhbCBpbnRlcnJ1cHQgZmxhZyAqLw0KKyNkZWZpbmUgIERNQV9JU1JfVENJRjUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA1IFRyYW5zZmVyIENvbXBsZXRlIGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX0hUSUY1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNSBIYWxmIFRyYW5zZmVyIGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX1RFSUY1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNSBUcmFuc2ZlciBFcnJvciBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9HSUY2ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDYgR2xvYmFsIGludGVycnVwdCBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9UQ0lGNiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDYgVHJhbnNmZXIgQ29tcGxldGUgZmxhZyAqLw0KKyNkZWZpbmUgIERNQV9JU1JfSFRJRjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA2IEhhbGYgVHJhbnNmZXIgZmxhZyAqLw0KKyNkZWZpbmUgIERNQV9JU1JfVEVJRjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA2IFRyYW5zZmVyIEVycm9yIGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX0dJRjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNyBHbG9iYWwgaW50ZXJydXB0IGZsYWcgKi8NCisjZGVmaW5lICBETUFfSVNSX1RDSUY3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNyBUcmFuc2ZlciBDb21wbGV0ZSBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9IVElGNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDcgSGFsZiBUcmFuc2ZlciBmbGFnICovDQorI2RlZmluZSAgRE1BX0lTUl9URUlGNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDcgVHJhbnNmZXIgRXJyb3IgZmxhZyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0lGQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRE1BX0lGQ1JfQ0dJRjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBDaGFubmVsIDEgR2xvYmFsIGludGVycnVwdCBjbGVhcnIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IENoYW5uZWwgMSBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQ2hhbm5lbCAxIEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IENoYW5uZWwgMSBUcmFuc2ZlciBFcnJvciBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NHSUYyICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQ2hhbm5lbCAyIEdsb2JhbCBpbnRlcnJ1cHQgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IENoYW5uZWwgMiBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQ2hhbm5lbCAyIEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IENoYW5uZWwgMiBUcmFuc2ZlciBFcnJvciBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NHSUYzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQ2hhbm5lbCAzIEdsb2JhbCBpbnRlcnJ1cHQgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IENoYW5uZWwgMyBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQ2hhbm5lbCAzIEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IENoYW5uZWwgMyBUcmFuc2ZlciBFcnJvciBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NHSUY0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA0IEdsb2JhbCBpbnRlcnJ1cHQgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IENoYW5uZWwgNCBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA0IEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IENoYW5uZWwgNCBUcmFuc2ZlciBFcnJvciBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NHSUY1ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA1IEdsb2JhbCBpbnRlcnJ1cHQgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNSBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGNSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA1IEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNSBUcmFuc2ZlciBFcnJvciBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NHSUY2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA2IEdsb2JhbCBpbnRlcnJ1cHQgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNiBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGNiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA2IEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNiBUcmFuc2ZlciBFcnJvciBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NHSUY3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA3IEdsb2JhbCBpbnRlcnJ1cHQgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjcgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNyBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLw0KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGNyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA3IEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8NCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjcgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNyBUcmFuc2ZlciBFcnJvciBjbGVhciAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NDUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRE1BX0NDUjFfRU4gICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBDaGFubmVsIGVuYWJsZSovDQorI2RlZmluZSAgRE1BX0NDUjFfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjFfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSMV9URUlFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFRyYW5zZmVyIGVycm9yIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSMV9ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uICovDQorI2RlZmluZSAgRE1BX0NDUjFfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjFfUElOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBQZXJpcGhlcmFsIGluY3JlbWVudCBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjFfTUlOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBNZW1vcnkgaW5jcmVtZW50IG1vZGUgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSMV9QU0laRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IFBTSVpFWzE6MF0gYml0cyAoUGVyaXBoZXJhbCBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1IxX1BTSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSMV9QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjFfTVNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPCBNU0laRVsxOjBdIGJpdHMgKE1lbW9yeSBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1IxX01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSMV9NU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjFfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMoQ2hhbm5lbCBQcmlvcml0eSBsZXZlbCkgKi8NCisjZGVmaW5lICBETUFfQ0NSMV9QTF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgRE1BX0NDUjFfUExfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIERNQV9DQ1IxX01FTTJNRU0gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IHRvIG1lbW9yeSBtb2RlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ0NSMl9FTiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IENoYW5uZWwgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjJfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCByYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSMl9IVElFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEhhbGYgVHJhbnNmZXIgaW50ZXJydXB0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIERNQV9DQ1IyX1RFSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIERNQV9DQ1IyX0RJUiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgRGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24gKi8NCisjZGVmaW5lICBETUFfQ0NSMl9DSVJDICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IENpcmN1bGFyIG1vZGUgKi8NCisjZGVmaW5lICBETUFfQ0NSMl9QSU5DICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgaW5jcmVtZW50IG1vZGUgKi8NCisjZGVmaW5lICBETUFfQ0NSMl9NSU5DICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IE1lbW9yeSBpbmNyZW1lbnQgbW9kZSAqLw0KKw0KKyNkZWZpbmUgIERNQV9DQ1IyX1BTSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgUFNJWkVbMTowXSBiaXRzIChQZXJpcGhlcmFsIHNpemUpICovDQorI2RlZmluZSAgRE1BX0NDUjJfUFNJWkVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIERNQV9DQ1IyX1BTSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSMl9NU0laRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEMwMCkgICAgICAgICAgICAvKiE8IE1TSVpFWzE6MF0gYml0cyAoTWVtb3J5IHNpemUpICovDQorI2RlZmluZSAgRE1BX0NDUjJfTVNJWkVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIERNQV9DQ1IyX01TSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSMl9QTCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8IFBMWzE6MF0gYml0cyAoQ2hhbm5lbCBQcmlvcml0eSBsZXZlbCkgKi8NCisjZGVmaW5lICBETUFfQ0NSMl9QTF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgRE1BX0NDUjJfUExfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIERNQV9DQ1IyX01FTTJNRU0gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IHRvIG1lbW9yeSBtb2RlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ0NSM19FTiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IENoYW5uZWwgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjNfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjNfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSM19URUlFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFRyYW5zZmVyIGVycm9yIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSM19ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uICovDQorI2RlZmluZSAgRE1BX0NDUjNfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjNfUElOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBQZXJpcGhlcmFsIGluY3JlbWVudCBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjNfTUlOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBNZW1vcnkgaW5jcmVtZW50IG1vZGUgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSM19QU0laRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IFBTSVpFWzE6MF0gYml0cyAoUGVyaXBoZXJhbCBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1IzX1BTSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSM19QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjNfTVNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPCBNU0laRVsxOjBdIGJpdHMgKE1lbW9yeSBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1IzX01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSM19NU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjNfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMgKENoYW5uZWwgUHJpb3JpdHkgbGV2ZWwpICovDQorI2RlZmluZSAgRE1BX0NDUjNfUExfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIERNQV9DQ1IzX1BMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSM19NRU0yTUVNICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IE1lbW9yeSB0byBtZW1vcnkgbW9kZSAqLw0KKw0KKy8qITwqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ0NSNF9FTiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IENoYW5uZWwgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjRfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjRfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSNF9URUlFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFRyYW5zZmVyIGVycm9yIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSNF9ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uICovDQorI2RlZmluZSAgRE1BX0NDUjRfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjRfUElOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBQZXJpcGhlcmFsIGluY3JlbWVudCBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjRfTUlOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBNZW1vcnkgaW5jcmVtZW50IG1vZGUgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSNF9QU0laRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IFBTSVpFWzE6MF0gYml0cyAoUGVyaXBoZXJhbCBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1I0X1BTSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSNF9QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjRfTVNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPCBNU0laRVsxOjBdIGJpdHMgKE1lbW9yeSBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1I0X01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSNF9NU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjRfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMgKENoYW5uZWwgUHJpb3JpdHkgbGV2ZWwpICovDQorI2RlZmluZSAgRE1BX0NDUjRfUExfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIERNQV9DQ1I0X1BMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSNF9NRU0yTUVNICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IE1lbW9yeSB0byBtZW1vcnkgbW9kZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ0NSNV9FTiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IENoYW5uZWwgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjVfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjVfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSNV9URUlFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFRyYW5zZmVyIGVycm9yIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSNV9ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uICovDQorI2RlZmluZSAgRE1BX0NDUjVfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjVfUElOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBQZXJpcGhlcmFsIGluY3JlbWVudCBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjVfTUlOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBNZW1vcnkgaW5jcmVtZW50IG1vZGUgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSNV9QU0laRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IFBTSVpFWzE6MF0gYml0cyAoUGVyaXBoZXJhbCBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1I1X1BTSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSNV9QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjVfTVNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPCBNU0laRVsxOjBdIGJpdHMgKE1lbW9yeSBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1I1X01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSNV9NU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjVfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMgKENoYW5uZWwgUHJpb3JpdHkgbGV2ZWwpICovDQorI2RlZmluZSAgRE1BX0NDUjVfUExfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIERNQV9DQ1I1X1BMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSNV9NRU0yTUVNICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IE1lbW9yeSB0byBtZW1vcnkgbW9kZSBlbmFibGUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DQ1I2IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DQ1I2X0VOICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQ2hhbm5lbCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSNl9UQ0lFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IFRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSNl9IVElFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEhhbGYgVHJhbnNmZXIgaW50ZXJydXB0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIERNQV9DQ1I2X1RFSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIERNQV9DQ1I2X0RJUiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgRGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24gKi8NCisjZGVmaW5lICBETUFfQ0NSNl9DSVJDICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IENpcmN1bGFyIG1vZGUgKi8NCisjZGVmaW5lICBETUFfQ0NSNl9QSU5DICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgaW5jcmVtZW50IG1vZGUgKi8NCisjZGVmaW5lICBETUFfQ0NSNl9NSU5DICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IE1lbW9yeSBpbmNyZW1lbnQgbW9kZSAqLw0KKw0KKyNkZWZpbmUgIERNQV9DQ1I2X1BTSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgUFNJWkVbMTowXSBiaXRzIChQZXJpcGhlcmFsIHNpemUpICovDQorI2RlZmluZSAgRE1BX0NDUjZfUFNJWkVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIERNQV9DQ1I2X1BTSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSNl9NU0laRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEMwMCkgICAgICAgICAgICAvKiE8IE1TSVpFWzE6MF0gYml0cyAoTWVtb3J5IHNpemUpICovDQorI2RlZmluZSAgRE1BX0NDUjZfTVNJWkVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIERNQV9DQ1I2X01TSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSNl9QTCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8IFBMWzE6MF0gYml0cyAoQ2hhbm5lbCBQcmlvcml0eSBsZXZlbCkgKi8NCisjZGVmaW5lICBETUFfQ0NSNl9QTF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgRE1BX0NDUjZfUExfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIERNQV9DQ1I2X01FTTJNRU0gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IHRvIG1lbW9yeSBtb2RlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSNyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ0NSN19FTiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IENoYW5uZWwgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjdfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgZW5hYmxlICovDQorI2RlZmluZSAgRE1BX0NDUjdfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSN19URUlFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFRyYW5zZmVyIGVycm9yIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBETUFfQ0NSN19ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uICovDQorI2RlZmluZSAgRE1BX0NDUjdfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjdfUElOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBQZXJpcGhlcmFsIGluY3JlbWVudCBtb2RlICovDQorI2RlZmluZSAgRE1BX0NDUjdfTUlOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBNZW1vcnkgaW5jcmVtZW50IG1vZGUgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSN19QU0laRSAgICAgICAgICAgICwgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IFBTSVpFWzE6MF0gYml0cyAoUGVyaXBoZXJhbCBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1I3X1BTSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSN19QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjdfTVNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPCBNU0laRVsxOjBdIGJpdHMgKE1lbW9yeSBzaXplKSAqLw0KKyNkZWZpbmUgIERNQV9DQ1I3X01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBETUFfQ0NSN19NU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorDQorI2RlZmluZSAgRE1BX0NDUjdfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMgKENoYW5uZWwgUHJpb3JpdHkgbGV2ZWwpICovDQorI2RlZmluZSAgRE1BX0NDUjdfUExfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIERNQV9DQ1I3X1BMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBETUFfQ0NSN19NRU0yTUVNICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IE1lbW9yeSB0byBtZW1vcnkgbW9kZSBlbmFibGUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DTkRUUjFfTkRUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgTnVtYmVyIG9mIGRhdGEgdG8gVHJhbnNmZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DTkRUUjJfTkRUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgTnVtYmVyIG9mIGRhdGEgdG8gVHJhbnNmZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DTkRUUjNfTkRUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgTnVtYmVyIG9mIGRhdGEgdG8gVHJhbnNmZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DTkRUUjRfTkRUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgTnVtYmVyIG9mIGRhdGEgdG8gVHJhbnNmZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DTkRUUjVfTkRUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgTnVtYmVyIG9mIGRhdGEgdG8gVHJhbnNmZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSNiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DTkRUUjZfTkRUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgTnVtYmVyIG9mIGRhdGEgdG8gVHJhbnNmZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSNyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DTkRUUjdfTkRUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgTnVtYmVyIG9mIGRhdGEgdG8gVHJhbnNmZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NQQVIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DUEFSMV9QQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgUGVyaXBoZXJhbCBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DUEFSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ1BBUjJfUEEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IFBlcmlwaGVyYWwgQWRkcmVzcyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ1BBUjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRE1BX0NQQVIzX1BBICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBQZXJpcGhlcmFsIEFkZHJlc3MgKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NQQVI0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DUEFSNF9QQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgUGVyaXBoZXJhbCBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DUEFSNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ1BBUjVfUEEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IFBlcmlwaGVyYWwgQWRkcmVzcyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ1BBUjYgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRE1BX0NQQVI2X1BBICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBQZXJpcGhlcmFsIEFkZHJlc3MgKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NQQVI3IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIERNQV9DUEFSN19QQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgUGVyaXBoZXJhbCBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ01BUjFfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ01BUjJfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ01BUjNfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovDQorDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ01BUjRfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ01BUjVfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSNiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ01BUjZfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSNyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBETUFfQ01BUjdfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbCBJbnRlcnJ1cHQvRXZlbnQgQ29udHJvbGxlciAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRVhUSV9JTVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRVhUSV9JTVJfTVIwICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDAgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMSAqLw0KKyNkZWZpbmUgIEVYVElfSU1SX01SMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSAyICovDQorI2RlZmluZSAgRVhUSV9JTVJfTVIzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDMgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgNCAqLw0KKyNkZWZpbmUgIEVYVElfSU1SX01SNSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSA1ICovDQorI2RlZmluZSAgRVhUSV9JTVJfTVI2ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDYgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgNyAqLw0KKyNkZWZpbmUgIEVYVElfSU1SX01SOCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSA4ICovDQorI2RlZmluZSAgRVhUSV9JTVJfTVI5ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDkgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTAgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjExICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTEgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjEyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTIgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTMgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjE0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTQgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjE1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTUgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTYgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjE3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTcgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjE4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTggKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTkgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjIwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMjAgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMjEgKi8NCisjZGVmaW5lICBFWFRJX0lNUl9NUjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMjIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEVYVElfRU1SIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEVYVElfRU1SX01SMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDAgKi8NCisjZGVmaW5lICBFWFRJX0VNUl9NUjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxICovDQorI2RlZmluZSAgRVhUSV9FTVJfTVIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgMiAqLw0KKyNkZWZpbmUgIEVYVElfRU1SX01SMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDMgKi8NCisjZGVmaW5lICBFWFRJX0VNUl9NUjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSA0ICovDQorI2RlZmluZSAgRVhUSV9FTVJfTVI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgNSAqLw0KKyNkZWZpbmUgIEVYVElfRU1SX01SNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDYgKi8NCisjZGVmaW5lICBFWFRJX0VNUl9NUjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSA3ICovDQorI2RlZmluZSAgRVhUSV9FTVJfTVI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgOCAqLw0KKyNkZWZpbmUgIEVYVElfRU1SX01SOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDkgKi8NCisjZGVmaW5lICBFWFRJX0VNUl9NUjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxMCAqLw0KKyNkZWZpbmUgIEVYVElfRU1SX01SMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDExICovDQorI2RlZmluZSAgRVhUSV9FTVJfTVIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgMTIgKi8NCisjZGVmaW5lICBFWFRJX0VNUl9NUjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxMyAqLw0KKyNkZWZpbmUgIEVYVElfRU1SX01SMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDE0ICovDQorI2RlZmluZSAgRVhUSV9FTVJfTVIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgMTUgKi8NCisjZGVmaW5lICBFWFRJX0VNUl9NUjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxNiAqLw0KKyNkZWZpbmUgIEVYVElfRU1SX01SMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDE3ICovDQorI2RlZmluZSAgRVhUSV9FTVJfTVIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgMTggKi8NCisjZGVmaW5lICBFWFRJX0VNUl9NUjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxOSAqLw0KKyNkZWZpbmUgIEVYVElfRU1SX01SMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDIwICovDQorI2RlZmluZSAgRVhUSV9FTVJfTVIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgMjEgKi8NCisjZGVmaW5lICBFWFRJX0VNUl9NUjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAyMiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBFWFRJX1JUU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRVhUSV9SVFNSX1RSMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDAgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMSAqLw0KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAyICovDQorI2RlZmluZSAgRVhUSV9SVFNSX1RSMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDMgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgNCAqLw0KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSA1ICovDQorI2RlZmluZSAgRVhUSV9SVFNSX1RSNiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDYgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgNyAqLw0KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjggICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSA4ICovDQorI2RlZmluZSAgRVhUSV9SVFNSX1RSOSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDkgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTAgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTEgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTIgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTMgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTQgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTUgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTYgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTcgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTggKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTkgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIyMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMjAgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIyMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMjEgKi8NCisjZGVmaW5lICBFWFRJX1JUU1JfVFIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMjIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRVhUSV9GVFNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMCAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMSAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMiAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMyAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgNCAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgNSAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgNiAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgNyAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjggICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgOCAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgOSAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjEwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTAgKi8NCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDExICovDQorI2RlZmluZSAgRVhUSV9GVFNSX1RSMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGYWxsaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAxMiAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjEzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTMgKi8NCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE0ICovDQorI2RlZmluZSAgRVhUSV9GVFNSX1RSMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGYWxsaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAxNSAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjE2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTYgKi8NCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE3ICovDQorI2RlZmluZSAgRVhUSV9GVFNSX1RSMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGYWxsaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAxOCAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjE5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTkgKi8NCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIyMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDIwICovDQorI2RlZmluZSAgRVhUSV9GVFNSX1RSMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGYWxsaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAyMSAqLw0KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjIyICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMjIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRVhUSV9TV0lFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIwICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMCAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMSAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIyICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMiAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIzICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMyAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVI0ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgNCAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVI1ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgNSAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVI2ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgNiAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVI3ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgNyAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVI4ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgOCAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVI5ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgOSAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTAgKi8NCisjZGVmaW5lICBFWFRJX1NXSUVSX1NXSUVSMTEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IFNvZnR3YXJlIEludGVycnVwdCBvbiBsaW5lIDExICovDQorI2RlZmluZSAgRVhUSV9TV0lFUl9TV0lFUjEyICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBTb2Z0d2FyZSBJbnRlcnJ1cHQgb24gbGluZSAxMiAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTMgKi8NCisjZGVmaW5lICBFWFRJX1NXSUVSX1NXSUVSMTQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFNvZnR3YXJlIEludGVycnVwdCBvbiBsaW5lIDE0ICovDQorI2RlZmluZSAgRVhUSV9TV0lFUl9TV0lFUjE1ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBTb2Z0d2FyZSBJbnRlcnJ1cHQgb24gbGluZSAxNSAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxNiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTYgKi8NCisjZGVmaW5lICBFWFRJX1NXSUVSX1NXSUVSMTcgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IFNvZnR3YXJlIEludGVycnVwdCBvbiBsaW5lIDE3ICovDQorI2RlZmluZSAgRVhUSV9TV0lFUl9TV0lFUjE4ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBTb2Z0d2FyZSBJbnRlcnJ1cHQgb24gbGluZSAxOCAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxOSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTkgKi8NCisjZGVmaW5lICBFWFRJX1NXSUVSX1NXSUVSMjAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IFNvZnR3YXJlIEludGVycnVwdCBvbiBsaW5lIDIwICovDQorI2RlZmluZSAgRVhUSV9TV0lFUl9TV0lFUjIxICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBTb2Z0d2FyZSBJbnRlcnJ1cHQgb24gbGluZSAyMSAqLw0KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIyMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMjIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEVYVElfUFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIwICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMCAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIxICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMSAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIyICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMiAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIzICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMyAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFI0ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgNCAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFI1ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgNSAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFI2ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgNiAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFI3ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgNyAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFI4ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgOCAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFI5ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgOSAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIxMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMTAgKi8NCisjZGVmaW5lICBFWFRJX1BSX1BSMTEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IFBlbmRpbmcgYml0IDExICovDQorI2RlZmluZSAgRVhUSV9QUl9QUjEyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCAxMiAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIxMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMTMgKi8NCisjZGVmaW5lICBFWFRJX1BSX1BSMTQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFBlbmRpbmcgYml0IDE0ICovDQorI2RlZmluZSAgRVhUSV9QUl9QUjE1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCAxNSAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIxNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMTYgKi8NCisjZGVmaW5lICBFWFRJX1BSX1BSMTcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IFBlbmRpbmcgYml0IDE3ICovDQorI2RlZmluZSAgRVhUSV9QUl9QUjE4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCAxOCAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIxOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMTkgKi8NCisjZGVmaW5lICBFWFRJX1BSX1BSMjAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IFBlbmRpbmcgYml0IDIwICovDQorI2RlZmluZSAgRVhUSV9QUl9QUjIxICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCAyMSAqLw0KKyNkZWZpbmUgIEVYVElfUFJfUFIyMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgMjIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgRkxBU0ggYW5kIE9wdGlvbiBCeXRlcyBSZWdpc3RlcnMgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGTEFTSF9BQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBGTEFTSF9BQ1JfTEFURU5DWSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IExhdGVuY3kgKi8NCisjZGVmaW5lICBGTEFTSF9BQ1JfUFJGVEVOICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFByZWZldGNoIEJ1ZmZlciBFbmFibGUgKi8NCisjZGVmaW5lICBGTEFTSF9BQ1JfQUNDNjQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEFjY2VzcyA2NCBiaXRzICovDQorI2RlZmluZSAgRkxBU0hfQUNSX1NMRUVQX1BEICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBGbGFzaCBtb2RlIGR1cmluZyBzbGVlcCBtb2RlICovDQorI2RlZmluZSAgRkxBU0hfQUNSX1JVTl9QRCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBGbGFzaCBtb2RlIGR1cmluZyBSVU4gbW9kZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfUEVDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgRkxBU0hfUEVDUl9QRUxPQ0sgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRkxBU0hfUEVDUiBhbmQgRmxhc2ggZGF0YSBMb2NrICovDQorI2RlZmluZSBGTEFTSF9QRUNSX1BSR0xPQ0sgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBQcm9ncmFtIG1hdHJpeCBMb2NrICovDQorI2RlZmluZSBGTEFTSF9QRUNSX09QVExPQ0sgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBPcHRpb24gYnl0ZSBtYXRyaXggTG9jayAqLw0KKyNkZWZpbmUgRkxBU0hfUEVDUl9QUk9HICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgUHJvZ3JhbSBtYXRyaXggc2VsZWN0aW9uICovDQorI2RlZmluZSBGTEFTSF9QRUNSX0RBVEEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBEYXRhIG1hdHJpeCBzZWxlY3Rpb24gKi8NCisjZGVmaW5lIEZMQVNIX1BFQ1JfRlREVyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEZpeGVkIFRpbWUgRGF0YSB3cml0ZSBmb3IgV29yZC9IYWxmIFdvcmQvQnl0ZSBwcm9ncmFtbWluZyAqLw0KKyNkZWZpbmUgRkxBU0hfUEVDUl9FUkFTRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgUGFnZSBlcmFzaW5nIG1vZGUgKi8NCisjZGVmaW5lIEZMQVNIX1BFQ1JfRlBSRyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZhc3QgUGFnZS9IYWxmIFBhZ2UgcHJvZ3JhbW1pbmcgbW9kZSAqLw0KKyNkZWZpbmUgRkxBU0hfUEVDUl9FT1BJRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgRW5kIG9mIHByb2dyYW1taW5nIGludGVycnVwdCAqLyANCisjZGVmaW5lIEZMQVNIX1BFQ1JfRVJSSUUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEVycm9yIGludGVycnVwdCAqLyANCisjZGVmaW5lIEZMQVNIX1BFQ1JfT0JMX0xBVU5DSCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IExhdW5jaCB0aGUgb3B0aW9uIGJ5dGUgbG9hZGluZyAqLyANCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfUERLRVlSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRkxBU0hfUERLRVlSX1BES0VZUiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAvKiE8IEZMQVNIX1BFQyBhbmQgZGF0YSBtYXRyaXggS2V5ICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZMQVNIX1BFS0VZUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEZMQVNIX1BFS0VZUl9QRUtFWVIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgLyohPCBGTEFTSF9QRUMgYW5kIGRhdGEgbWF0cml4IEtleSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGTEFTSF9QUkdLRVlSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRkxBU0hfUFJHS0VZUl9QUkdLRVlSICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBQcm9ncmFtIG1hdHJpeCBLZXkgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfT1BUS0VZUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEZMQVNIX09QVEtFWVJfT1BUS0VZUiAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgT3B0aW9uIGJ5dGVzIG1hdHJpeCBLZXkgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgRkxBU0hfU1JfQlNZICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCdXN5ICovDQorI2RlZmluZSAgRkxBU0hfU1JfRU9QICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBFbmQgT2YgUHJvZ3JhbW1pbmcqLw0KKyNkZWZpbmUgIEZMQVNIX1NSX0VOSFYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgRW5kIG9mIGhpZ2ggdm9sdGFnZSAqLw0KKyNkZWZpbmUgIEZMQVNIX1NSX1JFQURZICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmxhc2ggcmVhZHkgYWZ0ZXIgbG93IHBvd2VyIG1vZGUgKi8NCisNCisjZGVmaW5lICBGTEFTSF9TUl9XUlBFUlIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFdyaXRlIHByb3RlY3RlZCBlcnJvciAqLw0KKyNkZWZpbmUgIEZMQVNIX1NSX1BHQUVSUiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgUHJvZ3JhbW1pbmcgQWxpZ25tZW50IEVycm9yICovDQorI2RlZmluZSAgRkxBU0hfU1JfU0laRVJSICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBTaXplIGVycm9yICovDQorI2RlZmluZSAgRkxBU0hfU1JfT1BUVkVSUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBPcHRpb24gdmFsaWRpdHkgZXJyb3IgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfT0JSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEZMQVNIX09CUl9SRFBSVCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwMDBBQSkgICAgICAgIC8qITwgUmVhZCBQcm90ZWN0aW9uICovDQorI2RlZmluZSAgRkxBU0hfT0JSX0JPUl9MRVYgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYwMDAwKSAgICAgICAgLyohPCBCT1JfTEVWWzM6MF0gQnJvd24gT3V0IFJlc2V0IFRocmVzaG9sZCBMZXZlbCovDQorI2RlZmluZSAgRkxBU0hfT0JSX1VTRVIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNzAwMDAwKSAgICAgICAgLyohPCBVc2VyIE9wdGlvbiBCeXRlcyAqLw0KKyNkZWZpbmUgIEZMQVNIX09CUl9JV0RHX1NXICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgSVdER19TVyAqLw0KKyNkZWZpbmUgIEZMQVNIX09CUl9uUlNUX1NUT1AgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgblJTVF9TVE9QICovDQorI2RlZmluZSAgRkxBU0hfT0JSX25SU1RfU1REQlkgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBuUlNUX1NUREJZICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZMQVNIX1dSUFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBGTEFTSF9XUlBSX1dSUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IFdyaXRlIFByb3RlY3QgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsIFB1cnBvc2UgSU9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBHUElPX01PREVSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8gIA0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAzKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjBfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjBfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBDKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjFfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjFfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjIgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDMwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjJfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjJfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjMgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjNfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjNfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjQgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMzAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjRfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjRfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjUgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwQzAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjVfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjVfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjYgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAzMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjZfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjZfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjcgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBDMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjdfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjdfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjggICAgICAgICAgKCh1aW50MzJfdCkweDAwMDMwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjhfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjhfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjkgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEMwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjlfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjlfMSAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEwICAgICAgICAgKCh1aW50MzJfdCkweDAwMzAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEwXzAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEwXzEgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjExICAgICAgICAgKCh1aW50MzJfdCkweDAwQzAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjExXzAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjExXzEgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEyICAgICAgICAgKCh1aW50MzJfdCkweDAzMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEyXzAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEyXzEgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEzICAgICAgICAgKCh1aW50MzJfdCkweDBDMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEzXzAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjEzXzEgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjE0ICAgICAgICAgKCh1aW50MzJfdCkweDMwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjE0XzAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjE0XzEgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjE1ICAgICAgICAgKCh1aW50MzJfdCkweEMwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjE1XzAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19NT0RFUl9NT0RFUjE1XzEgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgR1BJT19PVFlQRVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovICAgDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8wICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8xICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8yICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8zICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF80ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF81ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF82ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF83ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF84ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF85ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8xMCAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8xMSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8xMiAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8xMyAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8xNCAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9PVF8xNSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBHUElPX09TUEVFRFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8gIA0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMCAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAzKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMF8wICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMF8xICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMSAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBDKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMV8wICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMV8xICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMiAgICAgKCh1aW50MzJfdCkweDAwMDAwMDMwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMl8wICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMl8xICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMyAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSM18wICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSM18xICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNCAgICAgKCh1aW50MzJfdCkweDAwMDAwMzAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNF8wICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNF8xICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNSAgICAgKCh1aW50MzJfdCkweDAwMDAwQzAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNV8wICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNV8xICAgKCh1aW50MzJfdCkweDAwMDAwODAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNiAgICAgKCh1aW50MzJfdCkweDAwMDAzMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNl8wICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNl8xICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSNyAgICAgKCh1aW50MzJfdCkweDAwMDBDMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSN18wICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSN18xICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSOCAgICAgKCh1aW50MzJfdCkweDAwMDMwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSOF8wICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSOF8xICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSOSAgICAgKCh1aW50MzJfdCkweDAwMEMwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSOV8wICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSOV8xICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTAgICAgKCh1aW50MzJfdCkweDAwMzAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTBfMCAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTBfMSAgKCh1aW50MzJfdCkweDAwMjAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTEgICAgKCh1aW50MzJfdCkweDAwQzAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTFfMCAgKCh1aW50MzJfdCkweDAwNDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTFfMSAgKCh1aW50MzJfdCkweDAwODAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTIgICAgKCh1aW50MzJfdCkweDAzMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTJfMCAgKCh1aW50MzJfdCkweDAxMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTJfMSAgKCh1aW50MzJfdCkweDAyMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTMgICAgKCh1aW50MzJfdCkweDBDMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTNfMCAgKCh1aW50MzJfdCkweDA0MDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTNfMSAgKCh1aW50MzJfdCkweDA4MDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTQgICAgKCh1aW50MzJfdCkweDMwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTRfMCAgKCh1aW50MzJfdCkweDEwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTRfMSAgKCh1aW50MzJfdCkweDIwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTUgICAgKCh1aW50MzJfdCkweEMwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTVfMCAgKCh1aW50MzJfdCkweDQwMDAwMDAwKQ0KKyNkZWZpbmUgR1BJT19PU1BFRURFUl9PU1BFRURSMTVfMSAgKCh1aW50MzJfdCkweDgwMDAwMDAwKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgR1BJT19QVVBEUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovICANCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIwICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMykNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIwXzAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIwXzEgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxXzAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxXzEgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIyICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAzMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIyXzAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIyXzEgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIzICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBDMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIzXzAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIzXzEgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI0ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDMwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI0XzAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI0XzEgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI1ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEMwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI1XzAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI1XzEgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI2ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMzAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI2XzAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI2XzEgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI3ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwQzAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI3XzAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI3XzEgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI4ICAgICAgICAgICgodWludDMyX3QpMHgwMDAzMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI4XzAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI4XzEgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI5ICAgICAgICAgICgodWludDMyX3QpMHgwMDBDMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI5XzAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFI5XzEgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMCAgICAgICAgICgodWludDMyX3QpMHgwMDMwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMF8wICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMF8xICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMSAgICAgICAgICgodWludDMyX3QpMHgwMEMwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMV8wICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMV8xICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMiAgICAgICAgICgodWludDMyX3QpMHgwMzAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMl8wICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMl8xICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxMyAgICAgICAgICgodWludDMyX3QpMHgwQzAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxM18wICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxM18xICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxNCAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxNF8wICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxNF8xICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxNSAgICAgICAgICgodWludDMyX3QpMHhDMDAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxNV8wICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkNCisjZGVmaW5lIEdQSU9fUFVQRFJfUFVQRFIxNV8xICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkNCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEdQSU9fSURSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLyAgDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMCAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMiAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMyAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfNCAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfNSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfNiAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfNyAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfOCAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfOSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMTAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMTEgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMTIgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMTMgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMTQgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApDQorI2RlZmluZSBHUElPX09UWVBFUl9JRFJfMTUgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBHUElPX09EUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8gICANCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8wICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8xICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8yICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8zICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl80ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl81ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl82ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl83ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl84ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl85ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8xMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8xMSAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8xMiAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8xMyAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8xNCAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkNCisjZGVmaW5lIEdQSU9fT1RZUEVSX09EUl8xNSAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkNCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEdQSU9fQlNSUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLyAgDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpDQorI2RlZmluZSBHUElPX0JTUlJfQlNfNCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfNSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfNiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfNyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfOCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfOSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMTAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMTEgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMTIgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMTMgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMTQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlNfMTUgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfNCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfNSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfNiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfNyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfOCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfOSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMTAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMTEgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMTIgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMTMgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMTQgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApDQorI2RlZmluZSBHUElPX0JTUlJfQlJfMTUgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgIEludGVyLWludGVncmF0ZWQgQ2lyY3VpdCBJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgSTJDX0NSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgSTJDX0NSMV9QRSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBQZXJpcGhlcmFsIEVuYWJsZSAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfU01CVVMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgU01CdXMgTW9kZSAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfU01CVFlQRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgU01CdXMgVHlwZSAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfRU5BUlAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQVJQIEVuYWJsZSAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfRU5QRUMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgUEVDIEVuYWJsZSAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfRU5HQyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgR2VuZXJhbCBDYWxsIEVuYWJsZSAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfTk9TVFJFVENIICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgQ2xvY2sgU3RyZXRjaGluZyBEaXNhYmxlIChTbGF2ZSBtb2RlKSAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfU1RBUlQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgU3RhcnQgR2VuZXJhdGlvbiAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfU1RPUCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgU3RvcCBHZW5lcmF0aW9uICovDQorI2RlZmluZSAgSTJDX0NSMV9BQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBBY2tub3dsZWRnZSBFbmFibGUgKi8NCisjZGVmaW5lICBJMkNfQ1IxX1BPUyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEFja25vd2xlZGdlL1BFQyBQb3NpdGlvbiAoZm9yIGRhdGEgcmVjZXB0aW9uKSAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfUEVDICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgUGFja2V0IEVycm9yIENoZWNraW5nICovDQorI2RlZmluZSAgSTJDX0NSMV9BTEVSVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBTTUJ1cyBBbGVydCAqLw0KKyNkZWZpbmUgIEkyQ19DUjFfU1dSU1QgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgU29mdHdhcmUgUmVzZXQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19DUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEkyQ19DUjJfRlJFUSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDNGKSAgICAgICAgICAgIC8qITwgRlJFUVs1OjBdIGJpdHMgKFBlcmlwaGVyYWwgQ2xvY2sgRnJlcXVlbmN5KSAqLw0KKyNkZWZpbmUgIEkyQ19DUjJfRlJFUV8wICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBJMkNfQ1IyX0ZSRVFfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgSTJDX0NSMl9GUkVRXzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEkyQ19DUjJfRlJFUV8zICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBJMkNfQ1IyX0ZSRVFfNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCA0ICovDQorI2RlZmluZSAgSTJDX0NSMl9GUkVRXzUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgNSAqLw0KKw0KKyNkZWZpbmUgIEkyQ19DUjJfSVRFUlJFTiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLw0KKyNkZWZpbmUgIEkyQ19DUjJfSVRFVlRFTiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgRXZlbnQgSW50ZXJydXB0IEVuYWJsZSAqLw0KKyNkZWZpbmUgIEkyQ19DUjJfSVRCVUZFTiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQnVmZmVyIEludGVycnVwdCBFbmFibGUgKi8NCisjZGVmaW5lICBJMkNfQ1IyX0RNQUVOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IERNQSBSZXF1ZXN0cyBFbmFibGUgKi8NCisjZGVmaW5lICBJMkNfQ1IyX0xBU1QgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IERNQSBMYXN0IFRyYW5zZmVyICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBJMkNfT0FSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBJMkNfT0FSMV9BREQxXzcgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGRSkgICAgICAgICAgICAvKiE8IEludGVyZmFjZSBBZGRyZXNzICovDQorI2RlZmluZSAgSTJDX09BUjFfQUREOF85ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzMDApICAgICAgICAgICAgLyohPCBJbnRlcmZhY2UgQWRkcmVzcyAqLw0KKw0KKyNkZWZpbmUgIEkyQ19PQVIxX0FERDAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBJMkNfT0FSMV9BREQxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgSTJDX09BUjFfQUREMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIEkyQ19PQVIxX0FERDMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBJMkNfT0FSMV9BREQ0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCA0ICovDQorI2RlZmluZSAgSTJDX09BUjFfQURENSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgNSAqLw0KKyNkZWZpbmUgIEkyQ19PQVIxX0FERDYgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgQml0IDYgKi8NCisjZGVmaW5lICBJMkNfT0FSMV9BREQ3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IEJpdCA3ICovDQorI2RlZmluZSAgSTJDX09BUjFfQUREOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBCaXQgOCAqLw0KKyNkZWZpbmUgIEkyQ19PQVIxX0FERDkgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDkgKi8NCisNCisjZGVmaW5lICBJMkNfT0FSMV9BRERNT0RFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEFkZHJlc3NpbmcgTW9kZSAoU2xhdmUgbW9kZSkgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19PQVIyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIEkyQ19PQVIyX0VORFVBTCAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgRHVhbCBhZGRyZXNzaW5nIG1vZGUgZW5hYmxlICovDQorI2RlZmluZSAgSTJDX09BUjJfQUREMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4RkUpICAgICAgICAgICAgICAgLyohPCBJbnRlcmZhY2UgYWRkcmVzcyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19EUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgSTJDX0RSX0RSICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4RkYpICAgICAgICAgICAgICAgLyohPCA4LWJpdCBEYXRhIFJlZ2lzdGVyICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBJMkNfU1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBJMkNfU1IxX1NCICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFN0YXJ0IEJpdCAoTWFzdGVyIG1vZGUpICovDQorI2RlZmluZSAgSTJDX1NSMV9BRERSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBBZGRyZXNzIHNlbnQgKG1hc3RlciBtb2RlKS9tYXRjaGVkIChzbGF2ZSBtb2RlKSAqLw0KKyNkZWZpbmUgIEkyQ19TUjFfQlRGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgQnl0ZSBUcmFuc2ZlciBGaW5pc2hlZCAqLw0KKyNkZWZpbmUgIEkyQ19TUjFfQUREMTAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgMTAtYml0IGhlYWRlciBzZW50IChNYXN0ZXIgbW9kZSkgKi8NCisjZGVmaW5lICBJMkNfU1IxX1NUT1BGICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IFN0b3AgZGV0ZWN0aW9uIChTbGF2ZSBtb2RlKSAqLw0KKyNkZWZpbmUgIEkyQ19TUjFfUlhORSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgRGF0YSBSZWdpc3RlciBub3QgRW1wdHkgKHJlY2VpdmVycykgKi8NCisjZGVmaW5lICBJMkNfU1IxX1RYRSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IERhdGEgUmVnaXN0ZXIgRW1wdHkgKHRyYW5zbWl0dGVycykgKi8NCisjZGVmaW5lICBJMkNfU1IxX0JFUlIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEJ1cyBFcnJvciAqLw0KKyNkZWZpbmUgIEkyQ19TUjFfQVJMTyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQXJiaXRyYXRpb24gTG9zdCAobWFzdGVyIG1vZGUpICovDQorI2RlZmluZSAgSTJDX1NSMV9BRiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBBY2tub3dsZWRnZSBGYWlsdXJlICovDQorI2RlZmluZSAgSTJDX1NSMV9PVlIgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBPdmVycnVuL1VuZGVycnVuICovDQorI2RlZmluZSAgSTJDX1NSMV9QRUNFUlIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBQRUMgRXJyb3IgaW4gcmVjZXB0aW9uICovDQorI2RlZmluZSAgSTJDX1NSMV9USU1FT1VUICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBUaW1lb3V0IG9yIFRsb3cgRXJyb3IgKi8NCisjZGVmaW5lICBJMkNfU1IxX1NNQkFMRVJUICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IFNNQnVzIEFsZXJ0ICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBJMkNfU1IyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBJMkNfU1IyX01TTCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IE1hc3Rlci9TbGF2ZSAqLw0KKyNkZWZpbmUgIEkyQ19TUjJfQlVTWSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgQnVzIEJ1c3kgKi8NCisjZGVmaW5lICBJMkNfU1IyX1RSQSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IFRyYW5zbWl0dGVyL1JlY2VpdmVyICovDQorI2RlZmluZSAgSTJDX1NSMl9HRU5DQUxMICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBHZW5lcmFsIENhbGwgQWRkcmVzcyAoU2xhdmUgbW9kZSkgKi8NCisjZGVmaW5lICBJMkNfU1IyX1NNQkRFRkFVTFQgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IFNNQnVzIERldmljZSBEZWZhdWx0IEFkZHJlc3MgKFNsYXZlIG1vZGUpICovDQorI2RlZmluZSAgSTJDX1NSMl9TTUJIT1NUICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBTTUJ1cyBIb3N0IEhlYWRlciAoU2xhdmUgbW9kZSkgKi8NCisjZGVmaW5lICBJMkNfU1IyX0RVQUxGICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IER1YWwgRmxhZyAoU2xhdmUgbW9kZSkgKi8NCisjZGVmaW5lICBJMkNfU1IyX1BFQyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkYwMCkgICAgICAgICAgICAvKiE8IFBhY2tldCBFcnJvciBDaGVja2luZyBSZWdpc3RlciAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgSTJDX0NDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgSTJDX0NDUl9DQ1IgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGRkYpICAgICAgICAgICAgLyohPCBDbG9jayBDb250cm9sIFJlZ2lzdGVyIGluIEZhc3QvU3RhbmRhcmQgbW9kZSAoTWFzdGVyIG1vZGUpICovDQorI2RlZmluZSAgSTJDX0NDUl9EVVRZICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBGYXN0IE1vZGUgRHV0eSBDeWNsZSAqLw0KKyNkZWZpbmUgIEkyQ19DQ1JfRlMgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgSTJDIE1hc3RlciBNb2RlIFNlbGVjdGlvbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBJMkNfVFJJU0UgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgSTJDX1RSSVNFX1RSSVNFICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4M0YpICAgICAgICAgICAgICAgLyohPCBNYXhpbXVtIFJpc2UgVGltZSBpbiBGYXN0L1N0YW5kYXJkIG1vZGUgKE1hc3RlciBtb2RlKSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGVwZW5kZW50IFdBVENIRE9HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIElXREdfS1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIElXREdfS1JfS0VZICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgS2V5IHZhbHVlICh3cml0ZSBvbmx5LCByZWFkIDAwMDBoKSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgSVdER19QUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgSVdER19QUl9QUiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDcpICAgICAgICAgICAgICAgLyohPCBQUlsyOjBdIChQcmVzY2FsZXIgZGl2aWRlcikgKi8NCisjZGVmaW5lICBJV0RHX1BSX1BSXzAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgSVdER19QUl9QUl8xICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDIpICAgICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIElXREdfUFJfUFJfMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIElXREdfUkxSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIElXREdfUkxSX1JMICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwRkZGKSAgICAgICAgICAgIC8qITwgV2F0Y2hkb2cgY291bnRlciByZWxvYWQgdmFsdWUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIElXREdfU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIElXREdfU1JfUFZVICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgV2F0Y2hkb2cgcHJlc2NhbGVyIHZhbHVlIHVwZGF0ZSAqLw0KKyNkZWZpbmUgIElXREdfU1JfUlZVICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgV2F0Y2hkb2cgY291bnRlciByZWxvYWQgdmFsdWUgdXBkYXRlICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTENEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTENEX0NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBMQ0RfQ1JfTENERU4gICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAvKiE8IExDRCBFbmFibGUgQml0ICovDQorI2RlZmluZSBMQ0RfQ1JfVlNFTCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAvKiE8IFZvbHRhZ2Ugc291cmNlIHNlbGVjdG9yIEJpdCAqLw0KKw0KKyNkZWZpbmUgTENEX0NSX0RVVFkgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDFDKSAgICAgLyohPCBEVVRZWzI6MF0gYml0cyAoRHV0eSBzZWxlY3RvcikgKi8NCisjZGVmaW5lIExDRF9DUl9EVVRZXzAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgIC8qITwgRHV0eSBzZWxlY3RvciBCaXQgMCAqLw0KKyNkZWZpbmUgTENEX0NSX0RVVFlfMSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgLyohPCBEdXR5IHNlbGVjdG9yIEJpdCAxICovDQorI2RlZmluZSBMQ0RfQ1JfRFVUWV8yICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAvKiE8IER1dHkgc2VsZWN0b3IgQml0IDIgKi8NCisNCisjZGVmaW5lIExDRF9DUl9CSUFTICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA2MCkgICAgIC8qITwgQklBU1sxOjBdIGJpdHMgKEJpYXMgc2VsZWN0b3IpICovDQorI2RlZmluZSBMQ0RfQ1JfQklBU18wICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAvKiE8IEJpYXMgc2VsZWN0b3IgQml0IDAgKi8NCisjZGVmaW5lIExDRF9DUl9CSUFTXzEgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgIC8qITwgQmlhcyBzZWxlY3RvciBCaXQgMSAqLw0KKw0KKyNkZWZpbmUgTENEX0NSX01VWF9TRUcgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgLyohPCBNdXggU2VnbWVudCBFbmFibGUgQml0ICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBMQ0RfRkNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lIExDRF9GQ1JfSEQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgIC8qITwgSGlnaCBEcml2ZSBFbmFibGUgQml0ICovDQorI2RlZmluZSBMQ0RfRkNSX1NPRklFICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAvKiE8IFN0YXJ0IG9mIEZyYW1lIEludGVycnVwdCBFbmFibGUgQml0ICovDQorI2RlZmluZSBMQ0RfRkNSX1VERElFICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAvKiE8IFVwZGF0ZSBEaXNwbGF5IERvbmUgSW50ZXJydXB0IEVuYWJsZSBCaXQgKi8NCisNCisjZGVmaW5lIExDRF9GQ1JfUE9OICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA3MCkgICAgIC8qITwgUE9OWzI6MF0gYml0cyAoUHVscyBPTiBEdXJhdGlvbikgKi8NCisjZGVmaW5lIExDRF9GQ1JfUE9OXzAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lIExDRF9GQ1JfUE9OXzEgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lIExDRF9GQ1JfUE9OXzIgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lIExDRF9GQ1JfREVBRCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDM4MCkgICAgIC8qITwgREVBRFsyOjBdIGJpdHMgKERFQUQgVGltZSkgKi8NCisjZGVmaW5lIExDRF9GQ1JfREVBRF8wICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lIExDRF9GQ1JfREVBRF8xICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lIExDRF9GQ1JfREVBRF8yICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgIC8qITwgQml0IDIgKi8NCisNCisjZGVmaW5lIExDRF9GQ1JfQ0MgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMUMwMCkgICAgIC8qITwgQ0NbMjowXSBiaXRzIChDb250cmFzdCBDb250cm9sKSAqLw0KKyNkZWZpbmUgTENEX0ZDUl9DQ18wICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgTENEX0ZDUl9DQ18xICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgTENEX0ZDUl9DQ18yICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgTENEX0ZDUl9CTElOS0YgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBFMDAwKSAgICAgLyohPCBCTElOS0ZbMjowXSBiaXRzIChCbGluayBGcmVxdWVuY3kpICovDQorI2RlZmluZSBMQ0RfRkNSX0JMSU5LRl8wICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSBMQ0RfRkNSX0JMSU5LRl8xICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSBMQ0RfRkNSX0JMSU5LRl8yICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAvKiE8IEJpdCAyICovDQorDQorI2RlZmluZSBMQ0RfRkNSX0JMSU5LICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzAwMDApICAgICAvKiE8IEJMSU5LWzE6MF0gYml0cyAoQmxpbmsgRW5hYmxlKSAqLw0KKyNkZWZpbmUgTENEX0ZDUl9CTElOS18wICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgTENEX0ZDUl9CTElOS18xICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgLyohPCBCaXQgMSAqLw0KKw0KKyNkZWZpbmUgTENEX0ZDUl9ESVYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwM0MwMDAwKSAgICAgLyohPCBESVZbMzowXSBiaXRzIChEaXZpZGVyKSAqLw0KKyNkZWZpbmUgTENEX0ZDUl9QUyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAzQzAwMDAwKSAgICAgLyohPCBQU1szOjBdIGJpdHMgKFByZXNjYWxlcikgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIExDRF9TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgTENEX1NSX0VOUyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgLyohPCBMQ0QgRW5hYmxlZCBCaXQgKi8NCisjZGVmaW5lIExDRF9TUl9TT0YgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgIC8qITwgU3RhcnQgT2YgRnJhbWUgRmxhZyBCaXQgKi8NCisjZGVmaW5lIExDRF9TUl9VRFIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgIC8qITwgVXBkYXRlIERpc3BsYXkgUmVxdWVzdCBCaXQgKi8NCisjZGVmaW5lIExDRF9TUl9VREQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgIC8qITwgVXBkYXRlIERpc3BsYXkgRG9uZSBGbGFnIEJpdCAqLw0KKyNkZWZpbmUgTENEX1NSX1JEWSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgLyohPCBSZWFkeSBGbGFnIEJpdCAqLw0KKyNkZWZpbmUgTENEX1NSX0ZDUlNSICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgLyohPCBMQ0QgRkNSIFJlZ2lzdGVyIFN5bmNocm9uaXphdGlvbiBGbGFnIEJpdCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTENEX0NMUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBMQ0RfQ0xSX1NPRkMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAvKiE8IFN0YXJ0IE9mIEZyYW1lIEZsYWcgQ2xlYXIgQml0ICovDQorI2RlZmluZSBMQ0RfQ0xSX1VEREMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAvKiE8IFVwZGF0ZSBEaXNwbGF5IERvbmUgRmxhZyBDbGVhciBCaXQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIExDRF9SQU0gcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgTENEX1JBTV9TRUdNRU5UX0RBVEEgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgLyohPCBTZWdtZW50IERhdGEgQml0cyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG93ZXIgQ29udHJvbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBQV1JfQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFBXUl9DUl9MUFNEU1IgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgLyohPCBMb3ctcG93ZXIgZGVlcHNsZWVwL3NsZWVwL2xvdyBwb3dlciBydW4gKi8NCisjZGVmaW5lICBQV1JfQ1JfUEREUyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgIC8qITwgUG93ZXIgRG93biBEZWVwc2xlZXAgKi8NCisjZGVmaW5lICBQV1JfQ1JfQ1dVRiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgIC8qITwgQ2xlYXIgV2FrZXVwIEZsYWcgKi8NCisjZGVmaW5lICBQV1JfQ1JfQ1NCRiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgIC8qITwgQ2xlYXIgU3RhbmRieSBGbGFnICovDQorI2RlZmluZSAgUFdSX0NSX1BWREUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAvKiE8IFBvd2VyIFZvbHRhZ2UgRGV0ZWN0b3IgRW5hYmxlICovDQorDQorI2RlZmluZSAgUFdSX0NSX1BMUyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRTApICAgICAvKiE8IFBMU1syOjBdIGJpdHMgKFBWRCBMZXZlbCBTZWxlY3Rpb24pICovDQorI2RlZmluZSAgUFdSX0NSX1BMU18wICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUFdSX0NSX1BMU18xICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgUFdSX0NSX1BMU18yICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAvKiE8IEJpdCAyICovDQorDQorLyohPCBQVkQgbGV2ZWwgY29uZmlndXJhdGlvbiAqLw0KKyNkZWZpbmUgIFBXUl9DUl9QTFNfTEVWMCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAgICAgLyohPCBQVkQgbGV2ZWwgMCAqLw0KKyNkZWZpbmUgIFBXUl9DUl9QTFNfTEVWMSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgLyohPCBQVkQgbGV2ZWwgMSAqLw0KKyNkZWZpbmUgIFBXUl9DUl9QTFNfTEVWMiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgLyohPCBQVkQgbGV2ZWwgMiAqLw0KKyNkZWZpbmUgIFBXUl9DUl9QTFNfTEVWMyAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKSAgICAgLyohPCBQVkQgbGV2ZWwgMyAqLw0KKyNkZWZpbmUgIFBXUl9DUl9QTFNfTEVWNCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgLyohPCBQVkQgbGV2ZWwgNCAqLw0KKyNkZWZpbmUgIFBXUl9DUl9QTFNfTEVWNSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEEwKSAgICAgLyohPCBQVkQgbGV2ZWwgNSAqLw0KKyNkZWZpbmUgIFBXUl9DUl9QTFNfTEVWNiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEMwKSAgICAgLyohPCBQVkQgbGV2ZWwgNiAqLw0KKyNkZWZpbmUgIFBXUl9DUl9QTFNfTEVWNyAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEUwKSAgICAgLyohPCBQVkQgbGV2ZWwgNyAqLw0KKw0KKyNkZWZpbmUgIFBXUl9DUl9EQlAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgLyohPCBEaXNhYmxlIEJhY2t1cCBEb21haW4gd3JpdGUgcHJvdGVjdGlvbiAqLw0KKyNkZWZpbmUgIFBXUl9DUl9VTFAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgLyohPCBVbHRyYSBMb3cgUG93ZXIgbW9kZSAqLw0KKyNkZWZpbmUgIFBXUl9DUl9GV1UgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgLyohPCBGYXN0IHdha2V1cCAqLw0KKw0KKyNkZWZpbmUgIFBXUl9DUl9WT1MgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxODAwKSAgICAgLyohPCBWT1NbMTowXSBiaXRzIChWb2x0YWdlIHNjYWxpbmcgcmFuZ2Ugc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIFBXUl9DUl9WT1NfMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFBXUl9DUl9WT1NfMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFBXUl9DUl9MUFJVTiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgLyohPCBMb3cgcG93ZXIgcnVuIG1vZGUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFBXUl9DU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFBXUl9DU1JfV1VGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgLyohPCBXYWtldXAgRmxhZyAqLw0KKyNkZWZpbmUgIFBXUl9DU1JfU0JGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgLyohPCBTdGFuZGJ5IEZsYWcgKi8NCisjZGVmaW5lICBQV1JfQ1NSX1BWRE8gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgIC8qITwgUFZEIE91dHB1dCAqLw0KKyNkZWZpbmUgIFBXUl9DU1JfVlJFRklOVFJEWUYgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgLyohPCBJbnRlcm5hbCB2b2x0YWdlIHJlZmVyZW5jZSAoVlJFRklOVCkgcmVhZHkgZmxhZyAqLw0KKyNkZWZpbmUgIFBXUl9DU1JfVk9TRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgLyohPCBWb2x0YWdlIFNjYWxpbmcgc2VsZWN0IGZsYWcgKi8NCisjZGVmaW5lICBQV1JfQ1NSX1JFR0xQRiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgIC8qITwgUmVndWxhdG9yIExQIGZsYWcgKi8NCisNCisjZGVmaW5lICBQV1JfQ1NSX0VXVVAxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgIC8qITwgRW5hYmxlIFdLVVAgcGluIDEgKi8NCisjZGVmaW5lICBQV1JfQ1NSX0VXVVAyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgIC8qITwgRW5hYmxlIFdLVVAgcGluIDIgKi8NCisjZGVmaW5lICBQV1JfQ1NSX0VXVVAzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgIC8qITwgRW5hYmxlIFdLVVAgcGluIDMgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgUmVzZXQgYW5kIENsb2NrIENvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUkNDX0NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBSQ0NfQ1JfSFNJT04gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEludGVybmFsIEhpZ2ggU3BlZWQgY2xvY2sgZW5hYmxlICovDQorI2RlZmluZSAgUkNDX0NSX0hTSVJEWSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBJbnRlcm5hbCBIaWdoIFNwZWVkIGNsb2NrIHJlYWR5IGZsYWcgKi8NCisNCisjZGVmaW5lICBSQ0NfQ1JfTVNJT04gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEludGVybmFsIE11bHRpIFNwZWVkIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19DUl9NU0lSRFkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgSW50ZXJuYWwgTXVsdGkgU3BlZWQgY2xvY2sgcmVhZHkgZmxhZyAqLw0KKw0KKyNkZWZpbmUgIFJDQ19DUl9IU0VPTiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgRXh0ZXJuYWwgSGlnaCBTcGVlZCBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQ1JfSFNFUkRZICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEV4dGVybmFsIEhpZ2ggU3BlZWQgY2xvY2sgcmVhZHkgZmxhZyAqLw0KKyNkZWZpbmUgIFJDQ19DUl9IU0VCWVAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgRXh0ZXJuYWwgSGlnaCBTcGVlZCBjbG9jayBCeXBhc3MgKi8NCisNCisjZGVmaW5lICBSQ0NfQ1JfUExMT04gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IFBMTCBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQ1JfUExMUkRZICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IFBMTCBjbG9jayByZWFkeSBmbGFnICovDQorI2RlZmluZSAgUkNDX0NSX0NTU09OICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBDbG9jayBTZWN1cml0eSBTeXN0ZW0gZW5hYmxlICovDQorDQorI2RlZmluZSAgUkNDX0NSX1JUQ1BSRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDYwMDAwMDAwKSAgICAgICAgLyohPCBSVEMvTENEIFByZXNjYWxlciAqLw0KKyNkZWZpbmUgIFJDQ19DUl9SVENQUkVfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0MCAqLw0KKyNkZWZpbmUgIFJDQ19DUl9SVENQUkVfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0MSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19JQ1NDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUkNDX0lDU0NSX0hTSUNBTCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBJbnRlcm5hbCBIaWdoIFNwZWVkIGNsb2NrIENhbGlicmF0aW9uICovDQorI2RlZmluZSAgUkNDX0lDU0NSX0hTSVRSSU0gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxRjAwKSAgICAgICAgLyohPCBJbnRlcm5hbCBIaWdoIFNwZWVkIGNsb2NrIHRyaW1taW5nICovDQorDQorI2RlZmluZSAgUkNDX0lDU0NSX01TSVJBTkdFICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBFMDAwKSAgICAgICAgLyohPCBJbnRlcm5hbCBNdWx0aSBTcGVlZCBjbG9jayBSYW5nZSAqLw0KKyNkZWZpbmUgIFJDQ19JQ1NDUl9NU0lSQU5HRV82NEtIeiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgSW50ZXJuYWwgTXVsdGkgU3BlZWQgY2xvY2sgUmFuZ2UgNjRLSHogKi8NCisjZGVmaW5lICBSQ0NfSUNTQ1JfTVNJUkFOR0VfMTI4S0h6ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEludGVybmFsIE11bHRpIFNwZWVkIGNsb2NrIFJhbmdlIDEyOEtIeiAqLw0KKyNkZWZpbmUgIFJDQ19JQ1NDUl9NU0lSQU5HRV8yNTZLSHogICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgSW50ZXJuYWwgTXVsdGkgU3BlZWQgY2xvY2sgUmFuZ2UgMjU2S0h6ICovDQorI2RlZmluZSAgUkNDX0lDU0NSX01TSVJBTkdFXzUxMktIeiAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA2MDAwKSAgICAgICAgLyohPCBJbnRlcm5hbCBNdWx0aSBTcGVlZCBjbG9jayBSYW5nZSA1MTJLSHogKi8NCisjZGVmaW5lICBSQ0NfSUNTQ1JfTVNJUkFOR0VfMU1IeiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEludGVybmFsIE11bHRpIFNwZWVkIGNsb2NrIFJhbmdlIDFNSHogKi8NCisjZGVmaW5lICBSQ0NfSUNTQ1JfTVNJUkFOR0VfMk1IeiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEEwMDApICAgICAgICAvKiE8IEludGVybmFsIE11bHRpIFNwZWVkIGNsb2NrIFJhbmdlIDJNSHogKi8NCisjZGVmaW5lICBSQ0NfSUNTQ1JfTVNJUkFOR0VfNE1IeiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEMwMDApICAgICAgICAvKiE8IEludGVybmFsIE11bHRpIFNwZWVkIGNsb2NrIFJhbmdlIDRNSHogKi8NCisjZGVmaW5lICBSQ0NfSUNTQ1JfTVNJQ0FMICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IEludGVybmFsIE11bHRpIFNwZWVkIGNsb2NrIENhbGlicmF0aW9uICovDQorI2RlZmluZSAgUkNDX0lDU0NSX01TSVRSSU0gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBJbnRlcm5hbCBNdWx0aSBTcGVlZCBjbG9jayB0cmltbWluZyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19DRkdSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUkNDX0NGR1JfU1cgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAzKSAgICAgICAgLyohPCBTV1sxOjBdIGJpdHMgKFN5c3RlbSBjbG9jayBTd2l0Y2gpICovDQorI2RlZmluZSAgUkNDX0NGR1JfU1dfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1NXXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisvKiE8IFNXIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV19NU0kgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IE1TSSBzZWxlY3RlZCBhcyBzeXN0ZW0gY2xvY2sgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV19IU0kgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEhTSSBzZWxlY3RlZCBhcyBzeXN0ZW0gY2xvY2sgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV19IU0UgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEhTRSBzZWxlY3RlZCBhcyBzeXN0ZW0gY2xvY2sgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV19QTEwgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDMpICAgICAgICAvKiE8IFBMTCBzZWxlY3RlZCBhcyBzeXN0ZW0gY2xvY2sgKi8NCisNCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV1MgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEMpICAgICAgICAvKiE8IFNXU1sxOjBdIGJpdHMgKFN5c3RlbSBDbG9jayBTd2l0Y2ggU3RhdHVzKSAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1NXU18wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV1NfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAxICovDQorDQorLyohPCBTV1MgY29uZmlndXJhdGlvbiAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1NXU19NU0kgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgTVNJIG9zY2lsbGF0b3IgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV1NfSFNJICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEhTSSBvc2NpbGxhdG9yIHVzZWQgYXMgc3lzdGVtIGNsb2NrICovDQorI2RlZmluZSAgUkNDX0NGR1JfU1dTX0hTRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBIU0Ugb3NjaWxsYXRvciB1c2VkIGFzIHN5c3RlbSBjbG9jayAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1NXU19QTEwgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykgICAgICAgIC8qITwgUExMIHVzZWQgYXMgc3lzdGVtIGNsb2NrICovDQorDQorI2RlZmluZSAgUkNDX0NGR1JfSFBSRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEYwKSAgICAgICAgLyohPCBIUFJFWzM6MF0gYml0cyAoQUhCIHByZXNjYWxlcikgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUkNDX0NGR1JfSFBSRV8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX0hQUkVfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCAzICovDQorDQorLyohPCBIUFJFIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFX0RJVjEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFNZU0NMSyBub3QgZGl2aWRlZCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX0hQUkVfRElWMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgU1lTQ0xLIGRpdmlkZWQgYnkgMiAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX0hQUkVfRElWNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA5MCkgICAgICAgIC8qITwgU1lTQ0xLIGRpdmlkZWQgYnkgNCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX0hQUkVfRElWOCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBBMCkgICAgICAgIC8qITwgU1lTQ0xLIGRpdmlkZWQgYnkgOCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX0hQUkVfRElWMTYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBCMCkgICAgICAgIC8qITwgU1lTQ0xLIGRpdmlkZWQgYnkgMTYgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFX0RJVjY0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQzApICAgICAgICAvKiE8IFNZU0NMSyBkaXZpZGVkIGJ5IDY0ICovDQorI2RlZmluZSAgUkNDX0NGR1JfSFBSRV9ESVYxMjggICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEQwKSAgICAgICAgLyohPCBTWVNDTEsgZGl2aWRlZCBieSAxMjggKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFX0RJVjI1NiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRTApICAgICAgICAvKiE8IFNZU0NMSyBkaXZpZGVkIGJ5IDI1NiAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX0hQUkVfRElWNTEyICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkgICAgICAgIC8qITwgU1lTQ0xLIGRpdmlkZWQgYnkgNTEyICovDQorDQorI2RlZmluZSAgUkNDX0NGR1JfUFBSRTEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNzAwKSAgICAgICAgLyohPCBQUkUxWzI6MF0gYml0cyAoQVBCMSBwcmVzY2FsZXIpICovDQorI2RlZmluZSAgUkNDX0NGR1JfUFBSRTFfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUxXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMV8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorLyohPCBQUFJFMSBjb25maWd1cmF0aW9uICovDQorI2RlZmluZSAgUkNDX0NGR1JfUFBSRTFfRElWMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBIQ0xLIG5vdCBkaXZpZGVkICovDQorI2RlZmluZSAgUkNDX0NGR1JfUFBSRTFfRElWMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBIQ0xLIGRpdmlkZWQgYnkgMiAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUxX0RJVjQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDUwMCkgICAgICAgIC8qITwgSENMSyBkaXZpZGVkIGJ5IDQgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMV9ESVY4ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA2MDApICAgICAgICAvKiE8IEhDTEsgZGl2aWRlZCBieSA4ICovDQorI2RlZmluZSAgUkNDX0NGR1JfUFBSRTFfRElWMTYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNzAwKSAgICAgICAgLyohPCBIQ0xLIGRpdmlkZWQgYnkgMTYgKi8NCisNCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDM4MDApICAgICAgICAvKiE8IFBSRTJbMjowXSBiaXRzIChBUEIyIHByZXNjYWxlcikgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMl8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUkNDX0NGR1JfUFBSRTJfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUyXzIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisvKiE8IFBQUkUyIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMl9ESVYxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IEhDTEsgbm90IGRpdmlkZWQgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMl9ESVYyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEhDTEsgZGl2aWRlZCBieSAyICovDQorI2RlZmluZSAgUkNDX0NGR1JfUFBSRTJfRElWNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyODAwKSAgICAgICAgLyohPCBIQ0xLIGRpdmlkZWQgYnkgNCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUyX0RJVjggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMzAwMCkgICAgICAgIC8qITwgSENMSyBkaXZpZGVkIGJ5IDggKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMl9ESVYxNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDM4MDApICAgICAgICAvKiE8IEhDTEsgZGl2aWRlZCBieSAxNiAqLw0KKw0KKy8qITwgUExMIGVudHJ5IGNsb2NrIHNvdXJjZSovDQorI2RlZmluZSAgUkNDX0NGR1JfUExMU1JDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBQTEwgZW50cnkgY2xvY2sgc291cmNlICovDQorDQorI2RlZmluZSAgUkNDX0NGR1JfUExMU1JDX0hTSSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBIU0kgYXMgUExMIGVudHJ5IGNsb2NrIHNvdXJjZSAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BMTFNSQ19IU0UgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgSFNFIGFzIFBMTCBlbnRyeSBjbG9jayBzb3VyY2UgKi8NCisNCisNCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUwgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzQzAwMDApICAgICAgICAvKiE8IFBMTE1VTFszOjBdIGJpdHMgKFBMTCBtdWx0aXBsaWNhdGlvbiBmYWN0b3IpICovDQorI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BMTE1VTF8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMXzMgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKw0KKy8qITwgUExMTVVMIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUwzICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayAqIDMgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUw0ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayAqIDQgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUw2ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayAqIDYgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUw4ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwQzAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayAqIDggKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUwxMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayAqIDEyICovDQorI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMMTYgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTQwMDAwKSAgICAgICAgLyohPCBQTEwgaW5wdXQgY2xvY2sgKiAxNiAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BMTE1VTDI0ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDE4MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrICogMjQgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUwzMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxQzAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayAqIDMyICovDQorI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMNDggICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBQTEwgaW5wdXQgY2xvY2sgKiA0OCAqLw0KKw0KKy8qITwgUExMRElWIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExESVYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBDMDAwMDApICAgICAgICAvKiE8IFBMTERJVlsxOjBdIGJpdHMgKFBMTCBPdXRwdXQgRGl2aXNpb24pICovDQorI2RlZmluZSAgUkNDX0NGR1JfUExMRElWXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBCaXQwICovDQorI2RlZmluZSAgUkNDX0NGR1JfUExMRElWXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQxICovDQorDQorDQorLyohPCBQTExESVYgY29uZmlndXJhdGlvbiAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BMTERJVjEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgUExMIGNsb2NrIG91dHB1dCA9IENLVkNPIC8gMSAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BMTERJVjIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgUExMIGNsb2NrIG91dHB1dCA9IENLVkNPIC8gMiAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BMTERJVjMgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgUExMIGNsb2NrIG91dHB1dCA9IENLVkNPIC8gMyAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX1BMTERJVjQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEMwMDAwMCkgICAgICAgIC8qITwgUExMIGNsb2NrIG91dHB1dCA9IENLVkNPIC8gNCAqLw0KKw0KKw0KKyNkZWZpbmUgIFJDQ19DRkdSX01DT1NFTCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNzAwMDAwMCkgICAgICAgIC8qITwgTUNPWzI6MF0gYml0cyAoTWljcm9jb250cm9sbGVyIENsb2NrIE91dHB1dCkgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09TRUxfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUkNDX0NGR1JfTUNPU0VMXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX01DT1NFTF8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisNCisvKiE8IE1DTyBjb25maWd1cmF0aW9uICovDQorI2RlZmluZSAgUkNDX0NGR1JfTUNPX05PQ0xPQ0sgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBObyBjbG9jayAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX01DT19TWVNDTEsgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgU3lzdGVtIGNsb2NrIHNlbGVjdGVkICovDQorI2RlZmluZSAgUkNDX0NGR1JfTUNPX0hTSSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBJbnRlcm5hbCAxNiBNSHogUkMgb3NjaWxsYXRvciBjbG9jayBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX01DT19NU0kgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMzAwMDAwMCkgICAgICAgIC8qITwgSW50ZXJuYWwgTWVkaXVtIFNwZWVkIFJDIG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fSFNFICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEV4dGVybmFsIDEtMjUgTUh6IG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fUExMICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDUwMDAwMDApICAgICAgICAvKiE8IFBMTCBjbG9jayBkaXZpZGVkICovDQorI2RlZmluZSAgUkNDX0NGR1JfTUNPX0xTSSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA2MDAwMDAwKSAgICAgICAgLyohPCBMU0kgc2VsZWN0ZWQgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fTFNFICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDcwMDAwMDApICAgICAgICAvKiE8IExTRSBzZWxlY3RlZCAqLw0KKw0KKyNkZWZpbmUgIFJDQ19DRkdSX01DT1BSRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg3MDAwMDAwMCkgICAgICAgIC8qITwgTUNPUFJFWzI6MF0gYml0cyAoTWljcm9jb250cm9sbGVyIENsb2NrIE91dHB1dCBQcmVzY2FsZXIpICovDQorI2RlZmluZSAgUkNDX0NGR1JfTUNPUFJFXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFJDQ19DRkdSX01DT1BSRV8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09QUkVfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorDQorLyohPCBNQ08gUHJlc2NhbGVyIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fRElWMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IE1DTyBDbG9jayBkaXZpZGVkIGJ5IDEgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fRElWMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IE1DTyBDbG9jayBkaXZpZGVkIGJ5IDIgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fRElWNCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IE1DTyBDbG9jayBkaXZpZGVkIGJ5IDQgKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fRElWOCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzAwMDAwMDApICAgICAgICAvKiE8IE1DTyBDbG9jayBkaXZpZGVkIGJ5IDggKi8NCisjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fRElWMTYgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IE1DTyBDbG9jayBkaXZpZGVkIGJ5IDE2ICovDQorDQorLyohPCoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19DSVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFJDQ19DSVJfTFNJUkRZRiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgTFNJIFJlYWR5IEludGVycnVwdCBmbGFnICovDQorI2RlZmluZSAgUkNDX0NJUl9MU0VSRFlGICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBMU0UgUmVhZHkgSW50ZXJydXB0IGZsYWcgKi8NCisjZGVmaW5lICBSQ0NfQ0lSX0hTSVJEWUYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEhTSSBSZWFkeSBJbnRlcnJ1cHQgZmxhZyAqLw0KKyNkZWZpbmUgIFJDQ19DSVJfSFNFUkRZRiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgSFNFIFJlYWR5IEludGVycnVwdCBmbGFnICovDQorI2RlZmluZSAgUkNDX0NJUl9QTExSRFlGICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBQTEwgUmVhZHkgSW50ZXJydXB0IGZsYWcgKi8NCisjZGVmaW5lICBSQ0NfQ0lSX01TSVJEWUYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IE1TSSBSZWFkeSBJbnRlcnJ1cHQgZmxhZyAqLw0KKyNkZWZpbmUgIFJDQ19DSVJfQ1NTRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQ2xvY2sgU2VjdXJpdHkgU3lzdGVtIEludGVycnVwdCBmbGFnICovDQorDQorI2RlZmluZSAgUkNDX0NJUl9MU0lSRFlJRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBMU0kgUmVhZHkgSW50ZXJydXB0IEVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19DSVJfTFNFUkRZSUUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgTFNFIFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQ0lSX0hTSVJEWUlFICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEhTSSBSZWFkeSBJbnRlcnJ1cHQgRW5hYmxlICovDQorI2RlZmluZSAgUkNDX0NJUl9IU0VSRFlJRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBIU0UgUmVhZHkgSW50ZXJydXB0IEVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19DSVJfUExMUkRZSUUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgUExMIFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQ0lSX01TSVJEWUlFICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IE1TSSBSZWFkeSBJbnRlcnJ1cHQgRW5hYmxlICovDQorDQorI2RlZmluZSAgUkNDX0NJUl9MU0lSRFlDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBMU0kgUmVhZHkgSW50ZXJydXB0IENsZWFyICovDQorI2RlZmluZSAgUkNDX0NJUl9MU0VSRFlDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBMU0UgUmVhZHkgSW50ZXJydXB0IENsZWFyICovDQorI2RlZmluZSAgUkNDX0NJUl9IU0lSRFlDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBIU0kgUmVhZHkgSW50ZXJydXB0IENsZWFyICovDQorI2RlZmluZSAgUkNDX0NJUl9IU0VSRFlDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBIU0UgUmVhZHkgSW50ZXJydXB0IENsZWFyICovDQorI2RlZmluZSAgUkNDX0NJUl9QTExSRFlDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBQTEwgUmVhZHkgSW50ZXJydXB0IENsZWFyICovDQorI2RlZmluZSAgUkNDX0NJUl9NU0lSRFlDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBNU0kgUmVhZHkgSW50ZXJydXB0IENsZWFyICovDQorI2RlZmluZSAgUkNDX0NJUl9DU1NDICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBDbG9jayBTZWN1cml0eSBTeXN0ZW0gSW50ZXJydXB0IENsZWFyICovDQorDQorDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUkNDX0FIQlJTVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBSQ0NfQUhCUlNUUl9HUElPQVJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEdQSU8gcG9ydCBBIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FIQlJTVFJfR1BJT0JSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBHUElPIHBvcnQgQiByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BSEJSU1RSX0dQSU9DUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgR1BJTyBwb3J0IEMgcmVzZXQgKi8NCisjZGVmaW5lICBSQ0NfQUhCUlNUUl9HUElPRFJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEdQSU8gcG9ydCBEIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FIQlJTVFJfR1BJT0VSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBHUElPIHBvcnQgRSByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BSEJSU1RSX0dQSU9IUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgR1BJTyBwb3J0IEggcmVzZXQgKi8NCisjZGVmaW5lICBSQ0NfQUhCUlNUUl9DUkNSU1QgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IENSQyByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BSEJSU1RSX0ZMSVRGUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgRkxJVEYgcmVzZXQgKi8NCisjZGVmaW5lICBSQ0NfQUhCUlNUUl9ETUExUlNUICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IERNQTEgcmVzZXQgKi8NCisgDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUkNDX0FQQjJSU1RSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBSQ0NfQVBCMlJTVFJfU1lTQ0ZHUlNUICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFN5c3RlbSBDb25maWd1cmF0aW9uIFNZU0NGRyByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIyUlNUUl9USU05UlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgVElNOSByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIyUlNUUl9USU0xMFJTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgVElNMTAgcmVzZXQgKi8NCisjZGVmaW5lICBSQ0NfQVBCMlJTVFJfVElNMTFSU1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFRJTTExIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FQQjJSU1RSX0FEQzFSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBBREMxIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FQQjJSU1RSX1NQSTFSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBTUEkxIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FQQjJSU1RSX1VTQVJUMVJTVCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBVU0FSVDEgcmVzZXQgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQVBCMVJTVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU0yUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgVGltZXIgMiByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU0zUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgVGltZXIgMyByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU00UlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgVGltZXIgNCByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU02UlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgVGltZXIgNiByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU03UlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgVGltZXIgNyByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9MQ0RSU1QgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgTENEIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FQQjFSU1RSX1dXREdSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBXaW5kb3cgV2F0Y2hkb2cgcmVzZXQgKi8NCisjZGVmaW5lICBSQ0NfQVBCMVJTVFJfU1BJMlJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFNQSSAyIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FQQjFSU1RSX1VTQVJUMlJTVCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBVU0FSVCAyIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FQQjFSU1RSX1VTQVJUM1JTVCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBSVVNBUlQgMyByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9JMkMxUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgSTJDIDEgcmVzZXQgKi8NCisjZGVmaW5lICBSQ0NfQVBCMVJTVFJfSTJDMlJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEkyQyAyIHJlc2V0ICovDQorI2RlZmluZSAgUkNDX0FQQjFSU1RSX1VTQlJTVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBVU0IgcmVzZXQgKi8NCisjZGVmaW5lICBSQ0NfQVBCMVJTVFJfUFdSUlNUICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IFBvd2VyIGludGVyZmFjZSByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9EQUNSU1QgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgREFDIGludGVyZmFjZSByZXNldCAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9DT01QUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQ29tcGFyYXRvciBpbnRlcmZhY2UgcmVzZXQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUkNDX0FIQkVOUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFJDQ19BSEJFTlJfR1BJT0FFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgR1BJTyBwb3J0IEEgY2xvY2sgZW5hYmxlICovDQorI2RlZmluZSAgUkNDX0FIQkVOUl9HUElPQkVOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBHUElPIHBvcnQgQiBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQUhCRU5SX0dQSU9DRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEdQSU8gcG9ydCBDIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BSEJFTlJfR1BJT0RFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgR1BJTyBwb3J0IEQgY2xvY2sgZW5hYmxlICovDQorI2RlZmluZSAgUkNDX0FIQkVOUl9HUElPRUVOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBHUElPIHBvcnQgRSBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQUhCRU5SX0dQSU9IRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEdQSU8gcG9ydCBIIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BSEJFTlJfQ1JDRU4gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQ1JDIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BSEJFTlJfRkxJVEZFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgRkxJVEYgY2xvY2sgZW5hYmxlIChoYXMgZWZmZWN0IG9ubHkgd2hlbg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEZsYXNoIG1lbW9yeSBpcyBpbiBwb3dlciBkb3duIG1vZGUpICovDQorI2RlZmluZSAgUkNDX0FIQkVOUl9ETUExRU4gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBETUExIGNsb2NrIGVuYWJsZSAqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQVBCMkVOUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUkNDX0FQQjJFTlJfU1lTQ0ZHRU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgIC8qITwgU3lzdGVtIENvbmZpZ3VyYXRpb24gU1lTQ0ZHIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIyRU5SX1RJTTlFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgICAvKiE8IFRJTTkgaW50ZXJmYWNlIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIyRU5SX1RJTTEwRU4gICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgICAvKiE8IFRJTTEwIGludGVyZmFjZSBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMkVOUl9USU0xMUVOICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAgLyohPCBUSU0xMSBUaW1lciBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMkVOUl9BREMxRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAgLyohPCBBREMxIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIyRU5SX1NQSTFFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgICAvKiE8IFNQSTEgY2xvY2sgZW5hYmxlICovDQorI2RlZmluZSAgUkNDX0FQQjJFTlJfVVNBUlQxRU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgIC8qITwgVVNBUlQxIGNsb2NrIGVuYWJsZSAqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19BUEIxRU5SIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUkNDX0FQQjFFTlJfVElNMkVOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBUaW1lciAyIGNsb2NrIGVuYWJsZWQqLw0KKyNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTNFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgVGltZXIgMyBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9USU00RU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFRpbWVyIDQgY2xvY2sgZW5hYmxlICovDQorI2RlZmluZSAgUkNDX0FQQjFFTlJfVElNNkVOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBUaW1lciA2IGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTdFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgVGltZXIgNyBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9MQ0RFTiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IExDRCBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9XV0RHRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IFdpbmRvdyBXYXRjaGRvZyBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9TUEkyRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFNQSSAyIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxRU5SX1VTQVJUMkVOICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgVVNBUlQgMiBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9VU0FSVDNFTiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IFVTQVJUIDMgY2xvY2sgZW5hYmxlICovDQorI2RlZmluZSAgUkNDX0FQQjFFTlJfSTJDMUVOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBJMkMgMSBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9JMkMyRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEkyQyAyIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxRU5SX1VTQkVOICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgVVNCIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxRU5SX1BXUkVOICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgUG93ZXIgaW50ZXJmYWNlIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxRU5SX0RBQ0VOICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgREFDIGludGVyZmFjZSBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9DT01QRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IENvbXBhcmF0b3IgaW50ZXJmYWNlIGNsb2NrIGVuYWJsZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQUhCTFBFTlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUkNDX0FIQkxQRU5SX0dQSU9BTFBFTiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBHUElPIHBvcnQgQSBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQUhCTFBFTlJfR1BJT0JMUEVOICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEdQSU8gcG9ydCBCIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BSEJMUEVOUl9HUElPQ0xQRU4gICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgR1BJTyBwb3J0IEMgY2xvY2sgZW5hYmxlZCBpbiBzbGVlcCBtb2RlICovDQorI2RlZmluZSAgUkNDX0FIQkxQRU5SX0dQSU9ETFBFTiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBHUElPIHBvcnQgRCBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQUhCTFBFTlJfR1BJT0VMUEVOICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEdQSU8gcG9ydCBFIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BSEJMUEVOUl9HUElPSExQRU4gICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgR1BJTyBwb3J0IEggY2xvY2sgZW5hYmxlZCBpbiBzbGVlcCBtb2RlICovDQorI2RlZmluZSAgUkNDX0FIQkxQRU5SX0NSQ0xQRU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBDUkMgY2xvY2sgZW5hYmxlZCBpbiBzbGVlcCBtb2RlICovDQorI2RlZmluZSAgUkNDX0FIQkxQRU5SX0ZMSVRGTFBFTiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGbGFzaCBJbnRlcmZhY2UgY2xvY2sgZW5hYmxlZCBpbiBzbGVlcCBtb2RlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzIGVmZmVjdCBvbmx5IHdoZW4gdGhlIEZsYXNoIG1lbW9yeSBpcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHBvd2VyIGRvd24gbW9kZSkgKi8NCisjZGVmaW5lICBSQ0NfQUhCTFBFTlJfU1JBTUxQRU4gICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IFNSQU0gY2xvY2sgZW5hYmxlZCBpbiBzbGVlcCBtb2RlICovDQorI2RlZmluZSAgUkNDX0FIQkxQRU5SX0RNQTFMUEVOICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBETUExIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQVBCMkxQRU5SIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUkNDX0FQQjJMUEVOUl9TWVNDRkdMUEVOICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgIC8qITwgU3lzdGVtIENvbmZpZ3VyYXRpb24gU1lTQ0ZHIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIyTFBFTlJfVElNOUxQRU4gICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgICAvKiE8IFRJTTkgaW50ZXJmYWNlIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIyTFBFTlJfVElNMTBMUEVOICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgICAvKiE8IFRJTTEwIGludGVyZmFjZSBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMkxQRU5SX1RJTTExTFBFTiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAgLyohPCBUSU0xMSBUaW1lciBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMkxQRU5SX0FEQzFMUEVOICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAgLyohPCBBREMxIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIyTFBFTlJfU1BJMUxQRU4gICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgICAvKiE8IFNQSTEgY2xvY2sgZW5hYmxlZCBpbiBzbGVlcCBtb2RlICovDQorI2RlZmluZSAgUkNDX0FQQjJMUEVOUl9VU0FSVDFMUEVOICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgIC8qITwgVVNBUlQxIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19BUEIxTFBFTlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUkNDX0FQQjFMUEVOUl9USU0yTFBFTiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBUaW1lciAyIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxTFBFTlJfVElNM0xQRU4gICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgVGltZXIgMyBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUxQRU5SX1RJTTRMUEVOICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFRpbWVyIDQgY2xvY2sgZW5hYmxlZCBpbiBzbGVlcCBtb2RlICovDQorI2RlZmluZSAgUkNDX0FQQjFMUEVOUl9USU02TFBFTiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBUaW1lciA2IGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxTFBFTlJfVElNN0xQRU4gICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgVGltZXIgNyBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUxQRU5SX0xDRExQRU4gICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IExDRCBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUxQRU5SX1dXREdMUEVOICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IFdpbmRvdyBXYXRjaGRvZyBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUxQRU5SX1NQSTJMUEVOICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFNQSSAyIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxTFBFTlJfVVNBUlQyTFBFTiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgVVNBUlQgMiBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUxQRU5SX1VTQVJUM0xQRU4gICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IFVTQVJUIDMgY2xvY2sgZW5hYmxlZCBpbiBzbGVlcCBtb2RlICovDQorI2RlZmluZSAgUkNDX0FQQjFMUEVOUl9JMkMxTFBFTiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBJMkMgMSBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUxQRU5SX0kyQzJMUEVOICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEkyQyAyIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxTFBFTlJfVVNCTFBFTiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgVVNCIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxTFBFTlJfUFdSTFBFTiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgUG93ZXIgaW50ZXJmYWNlIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSAqLw0KKyNkZWZpbmUgIFJDQ19BUEIxTFBFTlJfREFDTFBFTiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgREFDIGludGVyZmFjZSBjbG9jayBlbmFibGVkIGluIHNsZWVwIG1vZGUgKi8NCisjZGVmaW5lICBSQ0NfQVBCMUxQRU5SX0NPTVBMUEVOICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IENvbXBhcmF0b3IgaW50ZXJmYWNlIGNsb2NrIGVuYWJsZWQgaW4gc2xlZXAgbW9kZSovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQ1NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBSQ0NfQ1NSX0xTSU9OICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgSW50ZXJuYWwgTG93IFNwZWVkIG9zY2lsbGF0b3IgZW5hYmxlICovDQorI2RlZmluZSAgUkNDX0NTUl9MU0lSRFkgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEludGVybmFsIExvdyBTcGVlZCBvc2NpbGxhdG9yIFJlYWR5ICovDQorDQorI2RlZmluZSAgUkNDX0NTUl9MU0VPTiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEV4dGVybmFsIExvdyBTcGVlZCBvc2NpbGxhdG9yIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFJDQ19DU1JfTFNFUkRZICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBFeHRlcm5hbCBMb3cgU3BlZWQgb3NjaWxsYXRvciBSZWFkeSAqLw0KKyNkZWZpbmUgIFJDQ19DU1JfTFNFQllQICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBFeHRlcm5hbCBMb3cgU3BlZWQgb3NjaWxsYXRvciBCeXBhc3MgKi8NCisNCisjZGVmaW5lICBSQ0NfQ1NSX1JUQ1NFTCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAzMDAwMCkgICAgICAgIC8qITwgUlRDU0VMWzE6MF0gYml0cyAoUlRDIGNsb2NrIHNvdXJjZSBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgUkNDX0NTUl9SVENTRUxfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUkNDX0NTUl9SVENTRUxfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorDQorLyohPCBSVEMgY29uZ2lndXJhdGlvbiAqLw0KKyNkZWZpbmUgIFJDQ19DU1JfUlRDU0VMX05PQ0xPQ0sgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBObyBjbG9jayAqLw0KKyNkZWZpbmUgIFJDQ19DU1JfUlRDU0VMX0xTRSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBMU0Ugb3NjaWxsYXRvciBjbG9jayB1c2VkIGFzIFJUQyBjbG9jayAqLw0KKyNkZWZpbmUgIFJDQ19DU1JfUlRDU0VMX0xTSSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBMU0kgb3NjaWxsYXRvciBjbG9jayB1c2VkIGFzIFJUQyBjbG9jayAqLw0KKyNkZWZpbmUgIFJDQ19DU1JfUlRDU0VMX0hTRSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDMwMDAwKSAgICAgICAgLyohPCBIU0Ugb3NjaWxsYXRvciBjbG9jayBkaXZpZGVkIGJ5IDIsIDQsIDggb3IgMTYgYnkgUlRDUFJFIHVzZWQgYXMgUlRDIGNsb2NrICovDQorDQorI2RlZmluZSAgUkNDX0NTUl9SVENFTiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IFJUQyBjbG9jayBlbmFibGUgKi8NCisjZGVmaW5lICBSQ0NfQ1NSX1JUQ1JTVCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgUlRDIHJlc2V0ICAqLw0KKyANCisjZGVmaW5lICBSQ0NfQ1NSX1JNVkYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgUmVtb3ZlIHJlc2V0IGZsYWcgKi8NCisjZGVmaW5lICBSQ0NfQ1NSX09CTFJTVEYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgT3B0aW9uIEJ5dGVzIExvYWRlciByZXNldCBmbGFnICovDQorI2RlZmluZSAgUkNDX0NTUl9QSU5SU1RGICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IFBJTiByZXNldCBmbGFnICovDQorI2RlZmluZSAgUkNDX0NTUl9QT1JSU1RGICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IFBPUi9QRFIgcmVzZXQgZmxhZyAqLw0KKyNkZWZpbmUgIFJDQ19DU1JfU0ZUUlNURiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBTb2Z0d2FyZSBSZXNldCBmbGFnICovDQorI2RlZmluZSAgUkNDX0NTUl9JV0RHUlNURiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEluZGVwZW5kZW50IFdhdGNoZG9nIHJlc2V0IGZsYWcgKi8NCisjZGVmaW5lICBSQ0NfQ1NSX1dXREdSU1RGICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgV2luZG93IHdhdGNoZG9nIHJlc2V0IGZsYWcgKi8NCisjZGVmaW5lICBSQ0NfQ1NSX0xQV1JSU1RGICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgTG93LVBvd2VyIHJlc2V0IGZsYWcgKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWwtVGltZSBDbG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXRzIGRlZmluaXRpb24gZm9yIFJUQ19UUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFJUQ19UUl9QTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApDQorI2RlZmluZSBSVENfVFJfSFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzAwMDAwKQ0KKyNkZWZpbmUgUlRDX1RSX0hUXzAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkNCisjZGVmaW5lIFJUQ19UUl9IVF8xICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApDQorI2RlZmluZSBSVENfVFJfSFUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEYwMDAwKQ0KKyNkZWZpbmUgUlRDX1RSX0hVXzAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkNCisjZGVmaW5lIFJUQ19UUl9IVV8xICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApDQorI2RlZmluZSBSVENfVFJfSFVfMiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQ0KKyNkZWZpbmUgUlRDX1RSX0hVXzMgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkNCisjZGVmaW5lIFJUQ19UUl9NTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApDQorI2RlZmluZSBSVENfVFJfTU5UXzAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQ0KKyNkZWZpbmUgUlRDX1RSX01OVF8xICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkNCisjZGVmaW5lIFJUQ19UUl9NTlRfMiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApDQorI2RlZmluZSBSVENfVFJfTU5VICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRjAwKQ0KKyNkZWZpbmUgUlRDX1RSX01OVV8wICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkNCisjZGVmaW5lIFJUQ19UUl9NTlVfMSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBSVENfVFJfTU5VXzIgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQ0KKyNkZWZpbmUgUlRDX1RSX01OVV8zICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkNCisjZGVmaW5lIFJUQ19UUl9TVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNzApDQorI2RlZmluZSBSVENfVFJfU1RfMCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQ0KKyNkZWZpbmUgUlRDX1RSX1NUXzEgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkNCisjZGVmaW5lIFJUQ19UUl9TVF8yICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApDQorI2RlZmluZSBSVENfVFJfU1UgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBGKQ0KKyNkZWZpbmUgUlRDX1RSX1NVXzAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkNCisjZGVmaW5lIFJUQ19UUl9TVV8xICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBSVENfVFJfU1VfMiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQ0KKyNkZWZpbmUgUlRDX1RSX1NVXzMgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkNCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdHMgZGVmaW5pdGlvbiBmb3IgUlRDX0RSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgUlRDX0RSX1lUICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEYwMDAwMCkNCisjZGVmaW5lIFJUQ19EUl9ZVF8wICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApDQorI2RlZmluZSBSVENfRFJfWVRfMSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKQ0KKyNkZWZpbmUgUlRDX0RSX1lUXzIgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkNCisjZGVmaW5lIFJUQ19EUl9ZVF8zICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApDQorI2RlZmluZSBSVENfRFJfWVUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEYwMDAwKQ0KKyNkZWZpbmUgUlRDX0RSX1lVXzAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkNCisjZGVmaW5lIFJUQ19EUl9ZVV8xICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApDQorI2RlZmluZSBSVENfRFJfWVVfMiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQ0KKyNkZWZpbmUgUlRDX0RSX1lVXzMgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkNCisjZGVmaW5lIFJUQ19EUl9XRFUgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEUwMDApDQorI2RlZmluZSBSVENfRFJfV0RVXzAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKQ0KKyNkZWZpbmUgUlRDX0RSX1dEVV8xICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkNCisjZGVmaW5lIFJUQ19EUl9XRFVfMiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApDQorI2RlZmluZSBSVENfRFJfTVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQ0KKyNkZWZpbmUgUlRDX0RSX01VICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEYwMCkNCisjZGVmaW5lIFJUQ19EUl9NVV8wICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApDQorI2RlZmluZSBSVENfRFJfTVVfMSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKQ0KKyNkZWZpbmUgUlRDX0RSX01VXzIgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkNCisjZGVmaW5lIFJUQ19EUl9NVV8zICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApDQorI2RlZmluZSBSVENfRFJfRFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDMwKQ0KKyNkZWZpbmUgUlRDX0RSX0RUXzAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkNCisjZGVmaW5lIFJUQ19EUl9EVF8xICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApDQorI2RlZmluZSBSVENfRFJfRFUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBGKQ0KKyNkZWZpbmUgUlRDX0RSX0RVXzAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkNCisjZGVmaW5lIFJUQ19EUl9EVV8xICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBSVENfRFJfRFVfMiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQ0KKyNkZWZpbmUgUlRDX0RSX0RVXzMgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkNCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdHMgZGVmaW5pdGlvbiBmb3IgUlRDX0NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgUlRDX0NSX0NPRSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkNCisjZGVmaW5lIFJUQ19DUl9PU0VMICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA2MDAwMDApDQorI2RlZmluZSBSVENfQ1JfT1NFTF8wICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKQ0KKyNkZWZpbmUgUlRDX0NSX09TRUxfMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkNCisjZGVmaW5lIFJUQ19DUl9QT0wgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApDQorI2RlZmluZSBSVENfQ1JfQkNLICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQ0KKyNkZWZpbmUgUlRDX0NSX1NVQjFIICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkNCisjZGVmaW5lIFJUQ19DUl9BREQxSCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApDQorI2RlZmluZSBSVENfQ1JfVFNJRSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKQ0KKyNkZWZpbmUgUlRDX0NSX1dVVElFICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkNCisjZGVmaW5lIFJUQ19DUl9BTFJCSUUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApDQorI2RlZmluZSBSVENfQ1JfQUxSQUlFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQ0KKyNkZWZpbmUgUlRDX0NSX1RTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkNCisjZGVmaW5lIFJUQ19DUl9XVVRFICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApDQorI2RlZmluZSBSVENfQ1JfQUxSQkUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKQ0KKyNkZWZpbmUgUlRDX0NSX0FMUkFFICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkNCisjZGVmaW5lIFJUQ19DUl9EQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApDQorI2RlZmluZSBSVENfQ1JfRk1UICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQ0KKyNkZWZpbmUgUlRDX0NSX1JFRkNLT04gICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkNCisjZGVmaW5lIFJUQ19DUl9UU0VER0UgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpDQorI2RlZmluZSBSVENfQ1JfV1VDS1NFTCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA3KQ0KKyNkZWZpbmUgUlRDX0NSX1dVQ0tTRUxfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkNCisjZGVmaW5lIFJUQ19DUl9XVUNLU0VMXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBSVENfQ1JfV1VDS1NFTF8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfSVNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfSVNSX1RBTVBGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKQ0KKyNkZWZpbmUgUlRDX0lTUl9UU09WRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkNCisjZGVmaW5lIFJUQ19JU1JfVFNGICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApDQorI2RlZmluZSBSVENfSVNSX1dVVEYgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQ0KKyNkZWZpbmUgUlRDX0lTUl9BTFJCRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkNCisjZGVmaW5lIFJUQ19JU1JfQUxSQUYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApDQorI2RlZmluZSBSVENfSVNSX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQ0KKyNkZWZpbmUgUlRDX0lTUl9JTklURiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkNCisjZGVmaW5lIFJUQ19JU1JfUlNGICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApDQorI2RlZmluZSBSVENfSVNSX0lOSVRTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQ0KKyNkZWZpbmUgUlRDX0lTUl9XVVRXRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkNCisjZGVmaW5lIFJUQ19JU1JfQUxSQldGICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBSVENfSVNSX0FMUkFXRiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfUFJFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfUFJFUl9QUkVESVZfQSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwN0YwMDAwKQ0KKyNkZWZpbmUgUlRDX1BSRVJfUFJFRElWX1MgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMUZGRikNCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdHMgZGVmaW5pdGlvbiBmb3IgUlRDX1dVVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgUlRDX1dVVFJfV1VUICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkZGRikNCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdHMgZGVmaW5pdGlvbiBmb3IgUlRDX0NBTElCUiByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgUlRDX0NBTElCUl9EQ1MgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkNCisjZGVmaW5lIFJUQ19DQUxJQlJfREMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXRzIGRlZmluaXRpb24gZm9yIFJUQ19BTFJNQVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFJUQ19BTFJNQVJfTVNLMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX1dEU0VMICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9EVCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfRFRfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX0RUXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9EVSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwRjAwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfRFVfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX0RVXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9EVV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfRFVfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX01TSzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9QTSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfSFQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX0hUXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9IVF8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfSFUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRjAwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX0hVXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9IVV8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfSFVfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX0hVXzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9NU0sxICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfTU5UICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX01OVF8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9NTlRfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfTU5UXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApDQorI2RlZmluZSBSVENfQUxSTUFSX01OVSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRjAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9NTlVfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfTU5VXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBSVENfQUxSTUFSX01OVV8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9NTlVfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfTVNLMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApDQorI2RlZmluZSBSVENfQUxSTUFSX1NUICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDcwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9TVF8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfU1RfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApDQorI2RlZmluZSBSVENfQUxSTUFSX1NUXzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9TVSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikNCisjZGVmaW5lIFJUQ19BTFJNQVJfU1VfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpDQorI2RlZmluZSBSVENfQUxSTUFSX1NVXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQ0KKyNkZWZpbmUgUlRDX0FMUk1BUl9TVV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkNCisjZGVmaW5lIFJUQ19BTFJNQVJfU1VfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXRzIGRlZmluaXRpb24gZm9yIFJUQ19BTFJNQlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFJUQ19BTFJNQlJfTVNLMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX1dEU0VMICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9EVCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfRFRfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX0RUXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9EVSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwRjAwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfRFVfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX0RVXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9EVV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfRFVfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX01TSzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9QTSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfSFQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzMDAwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX0hUXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9IVF8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfSFUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRjAwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX0hVXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9IVV8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfSFVfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX0hVXzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9NU0sxICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfTU5UICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX01OVF8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9NTlRfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfTU5UXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApDQorI2RlZmluZSBSVENfQUxSTUJSX01OVSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRjAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9NTlVfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfTU5VXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBSVENfQUxSTUJSX01OVV8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9NTlVfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfTVNLMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApDQorI2RlZmluZSBSVENfQUxSTUJSX1NUICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDcwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9TVF8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfU1RfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApDQorI2RlZmluZSBSVENfQUxSTUJSX1NUXzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9TVSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikNCisjZGVmaW5lIFJUQ19BTFJNQlJfU1VfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpDQorI2RlZmluZSBSVENfQUxSTUJSX1NVXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQ0KKyNkZWZpbmUgUlRDX0FMUk1CUl9TVV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkNCisjZGVmaW5lIFJUQ19BTFJNQlJfU1VfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXRzIGRlZmluaXRpb24gZm9yIFJUQ19XUlAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFJUQ19XUlBfS0VZICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXRzIGRlZmluaXRpb24gZm9yIFJUQ19UU1RSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFJUQ19UU1RSX1BNICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApDQorI2RlZmluZSBSVENfVFNUUl9IVCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzAwMDAwKQ0KKyNkZWZpbmUgUlRDX1RTVFJfSFRfMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkNCisjZGVmaW5lIFJUQ19UU1RSX0hUXzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApDQorI2RlZmluZSBSVENfVFNUUl9IVSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEYwMDAwKQ0KKyNkZWZpbmUgUlRDX1RTVFJfSFVfMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkNCisjZGVmaW5lIFJUQ19UU1RSX0hVXzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApDQorI2RlZmluZSBSVENfVFNUUl9IVV8yICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQ0KKyNkZWZpbmUgUlRDX1RTVFJfSFVfMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkNCisjZGVmaW5lIFJUQ19UU1RSX01OVCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApDQorI2RlZmluZSBSVENfVFNUUl9NTlRfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQ0KKyNkZWZpbmUgUlRDX1RTVFJfTU5UXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkNCisjZGVmaW5lIFJUQ19UU1RSX01OVF8yICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApDQorI2RlZmluZSBSVENfVFNUUl9NTlUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRjAwKQ0KKyNkZWZpbmUgUlRDX1RTVFJfTU5VXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkNCisjZGVmaW5lIFJUQ19UU1RSX01OVV8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBSVENfVFNUUl9NTlVfMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQ0KKyNkZWZpbmUgUlRDX1RTVFJfTU5VXzMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkNCisjZGVmaW5lIFJUQ19UU1RSX1NUICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNzApDQorI2RlZmluZSBSVENfVFNUUl9TVF8wICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQ0KKyNkZWZpbmUgUlRDX1RTVFJfU1RfMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkNCisjZGVmaW5lIFJUQ19UU1RSX1NUXzIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApDQorI2RlZmluZSBSVENfVFNUUl9TVSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBGKQ0KKyNkZWZpbmUgUlRDX1RTVFJfU1VfMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkNCisjZGVmaW5lIFJUQ19UU1RSX1NVXzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBSVENfVFNUUl9TVV8yICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQ0KKyNkZWZpbmUgUlRDX1RTVFJfU1VfMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkNCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdHMgZGVmaW5pdGlvbiBmb3IgUlRDX1RTRFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgUlRDX1RTRFJfV0RVICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRTAwMCkNCisjZGVmaW5lIFJUQ19UU0RSX1dEVV8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApDQorI2RlZmluZSBSVENfVFNEUl9XRFVfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKQ0KKyNkZWZpbmUgUlRDX1RTRFJfV0RVXzIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkNCisjZGVmaW5lIFJUQ19UU0RSX01UICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApDQorI2RlZmluZSBSVENfVFNEUl9NVSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRjAwKQ0KKyNkZWZpbmUgUlRDX1RTRFJfTVVfMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkNCisjZGVmaW5lIFJUQ19UU0RSX01VXzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBSVENfVFNEUl9NVV8yICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQ0KKyNkZWZpbmUgUlRDX1RTRFJfTVVfMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkNCisjZGVmaW5lIFJUQ19UU0RSX0RUICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzApDQorI2RlZmluZSBSVENfVFNEUl9EVF8wICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQ0KKyNkZWZpbmUgUlRDX1RTRFJfRFRfMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkNCisjZGVmaW5lIFJUQ19UU0RSX0RVICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpDQorI2RlZmluZSBSVENfVFNEUl9EVV8wICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQ0KKyNkZWZpbmUgUlRDX1RTRFJfRFVfMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikNCisjZGVmaW5lIFJUQ19UU0RSX0RVXzIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpDQorI2RlZmluZSBSVENfVFNEUl9EVV8zICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfVEFGQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfVEFGQ1JfQUxBUk1PVVRUWVBFICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQ0KKyNkZWZpbmUgUlRDX1RBRkNSX1RBTVBJRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkNCisjZGVmaW5lIFJUQ19UQUZDUl9UQU1QRURHRSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpDQorI2RlZmluZSBSVENfVEFGQ1JfVEFNUEUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQkswUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQkswUl9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxUl9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksyUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksyUl9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQkszUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQkszUl9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQks0UiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQks0Ul9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQks1UiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQks1Ul9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQks2UiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQks2Ul9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQks3UiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQks3Ul9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQks4UiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQks4Ul9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQks5UiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQks5Ul9CQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxMFJfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxMVJfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxMlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxMlJfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxM1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxM1JfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxNFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxNFJfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxNVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxNVJfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxNlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxNlJfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxN1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxN1JfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxOFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxOFJfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0cyBkZWZpbml0aW9uIGZvciBSVENfQksxOVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSBSVENfQksxOVJfQkNLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNQSV9DUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNQSV9DUjFfQ1BIQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQ2xvY2sgUGhhc2UgKi8NCisjZGVmaW5lICBTUElfQ1IxX0NQT0wgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IENsb2NrIFBvbGFyaXR5ICovDQorI2RlZmluZSAgU1BJX0NSMV9NU1RSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBNYXN0ZXIgU2VsZWN0aW9uICovDQorDQorI2RlZmluZSAgU1BJX0NSMV9CUiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzgpICAgICAgICAgICAgLyohPCBCUlsyOjBdIGJpdHMgKEJhdWQgUmF0ZSBDb250cm9sKSAqLw0KKyNkZWZpbmUgIFNQSV9DUjFfQlJfMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBTUElfQ1IxX0JSXzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgU1BJX0NSMV9CUl8yICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIFNQSV9DUjFfU1BFICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgU1BJIEVuYWJsZSAqLw0KKyNkZWZpbmUgIFNQSV9DUjFfTFNCRklSU1QgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgRnJhbWUgRm9ybWF0ICovDQorI2RlZmluZSAgU1BJX0NSMV9TU0kgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBJbnRlcm5hbCBzbGF2ZSBzZWxlY3QgKi8NCisjZGVmaW5lICBTUElfQ1IxX1NTTSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IFNvZnR3YXJlIHNsYXZlIG1hbmFnZW1lbnQgKi8NCisjZGVmaW5lICBTUElfQ1IxX1JYT05MWSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IFJlY2VpdmUgb25seSAqLw0KKyNkZWZpbmUgIFNQSV9DUjFfREZGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgRGF0YSBGcmFtZSBGb3JtYXQgKi8NCisjZGVmaW5lICBTUElfQ1IxX0NSQ05FWFQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IFRyYW5zbWl0IENSQyBuZXh0ICovDQorI2RlZmluZSAgU1BJX0NSMV9DUkNFTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBIYXJkd2FyZSBDUkMgY2FsY3VsYXRpb24gZW5hYmxlICovDQorI2RlZmluZSAgU1BJX0NSMV9CSURJT0UgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBPdXRwdXQgZW5hYmxlIGluIGJpZGlyZWN0aW9uYWwgbW9kZSAqLw0KKyNkZWZpbmUgIFNQSV9DUjFfQklESU1PREUgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQmlkaXJlY3Rpb25hbCBkYXRhIG1vZGUgZW5hYmxlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTUElfQ1IyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBTUElfQ1IyX1JYRE1BRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IFJ4IEJ1ZmZlciBETUEgRW5hYmxlICovDQorI2RlZmluZSAgU1BJX0NSMl9UWERNQUVOICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDIpICAgICAgICAgICAgICAgLyohPCBUeCBCdWZmZXIgRE1BIEVuYWJsZSAqLw0KKyNkZWZpbmUgIFNQSV9DUjJfU1NPRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgU1MgT3V0cHV0IEVuYWJsZSAqLw0KKyNkZWZpbmUgIFNQSV9DUjJfRVJSSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKSAgICAgICAgICAgICAgIC8qITwgRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLw0KKyNkZWZpbmUgIFNQSV9DUjJfUlhORUlFICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDQwKSAgICAgICAgICAgICAgIC8qITwgUlggYnVmZmVyIE5vdCBFbXB0eSBJbnRlcnJ1cHQgRW5hYmxlICovDQorI2RlZmluZSAgU1BJX0NSMl9UWEVJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4ODApICAgICAgICAgICAgICAgLyohPCBUeCBidWZmZXIgRW1wdHkgSW50ZXJydXB0IEVuYWJsZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNQSV9TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgU1BJX1NSX1JYTkUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAgICAgICAgICAgICAgLyohPCBSZWNlaXZlIGJ1ZmZlciBOb3QgRW1wdHkgKi8NCisjZGVmaW5lICBTUElfU1JfVFhFICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IFRyYW5zbWl0IGJ1ZmZlciBFbXB0eSAqLw0KKyNkZWZpbmUgIFNQSV9TUl9DUkNFUlIgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgQ1JDIEVycm9yIGZsYWcgKi8NCisjZGVmaW5lICBTUElfU1JfTU9ERiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkgICAgICAgICAgICAgICAvKiE8IE1vZGUgZmF1bHQgKi8NCisjZGVmaW5lICBTUElfU1JfT1ZSICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg0MCkgICAgICAgICAgICAgICAvKiE8IE92ZXJydW4gZmxhZyAqLw0KKyNkZWZpbmUgIFNQSV9TUl9CU1kgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDgwKSAgICAgICAgICAgICAgIC8qITwgQnVzeSBmbGFnICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU1BJX0RSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBTUElfRFJfRFIgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IERhdGEgUmVnaXN0ZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNQSV9DUkNQUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNQSV9DUkNQUl9DUkNQT0xZICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgQ1JDIHBvbHlub21pYWwgcmVnaXN0ZXIgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU1BJX1JYQ1JDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNQSV9SWENSQ1JfUlhDUkMgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgUnggQ1JDIFJlZ2lzdGVyICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNQSV9UWENSQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBTUElfVFhDUkNSX1RYQ1JDICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IFR4IENSQyBSZWdpc3RlciAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtIENvbmZpZ3VyYXRpb24gKFNZU0NGRykgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTWVNDRkdfTUVNUk1QIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgU1lTQ0ZHX01FTVJNUF9NRU1fTU9ERSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDMpIC8qITwgU1lTQ0ZHX01lbW9yeSBSZW1hcCBDb25maWcgKi8NCisjZGVmaW5lIFNZU0NGR19NRU1STVBfTUVNX01PREVfMCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAvKiE8IEJpdCAwICovDQorI2RlZmluZSBTWVNDRkdfTUVNUk1QX01FTV9NT0RFXzEgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgLyohPCBCaXQgMSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNZU0NGR19QTUMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBTWVNDRkdfUE1DX1VTQl9QVSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgLyohPCBTWVNDRkcgUE1DICovDQorDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU1lTQ0ZHX0VYVElDUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkwICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpIC8qITwgRVhUSSAwIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkxICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRjApIC8qITwgRVhUSSAxIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkyICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGMDApIC8qITwgRVhUSSAyIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkzICAgICAgICAgICAgKCh1aW50MTZfdCkweEYwMDApIC8qITwgRVhUSSAzIGNvbmZpZ3VyYXRpb24gKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSTAgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkwX1BBICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbMF0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMV9FWFRJMF9QQiAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAvKiE8IFBCWzBdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjFfRVhUSTBfUEMgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgLyohPCBQQ1swXSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkwX1BEICAgICAgICAgKCh1aW50MTZfdCkweDAwMDMpIC8qITwgUERbMF0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMV9FWFRJMF9QRSAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAvKiE8IFBFWzBdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjFfRVhUSTBfUEggICAgICAgICAoKHVpbnQxNl90KTB4MDAwNSkgLyohPCBQSFswXSBwaW4gKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSTEgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkxX1BBICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbMV0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMV9FWFRJMV9QQiAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAvKiE8IFBCWzFdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjFfRVhUSTFfUEMgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgLyohPCBQQ1sxXSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkxX1BEICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApIC8qITwgUERbMV0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMV9FWFRJMV9QRSAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAvKiE8IFBFWzFdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjFfRVhUSTFfUEggICAgICAgICAoKHVpbnQxNl90KTB4MDA1MCkgLyohPCBQSFsxXSBwaW4gKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSTIgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkyX1BBICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbMl0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMV9FWFRJMl9QQiAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAvKiE8IFBCWzJdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjFfRVhUSTJfUEMgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgLyohPCBQQ1syXSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkyX1BEICAgICAgICAgKCh1aW50MTZfdCkweDAzMDApIC8qITwgUERbMl0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMV9FWFRJMl9QRSAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAvKiE8IFBFWzJdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjFfRVhUSTJfUEggICAgICAgICAoKHVpbnQxNl90KTB4MDUwMCkgLyohPCBQSFsyXSBwaW4gKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSTMgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkzX1BBICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbM10gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMV9FWFRJM19QQiAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAvKiE8IFBCWzNdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjFfRVhUSTNfUEMgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgLyohPCBQQ1szXSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IxX0VYVEkzX1BEICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApIC8qITwgUERbM10gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMV9FWFRJM19QRSAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAvKiE8IFBFWzNdIHBpbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNZU0NGR19FWFRJQ1IyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk0ICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpIC8qITwgRVhUSSA0IGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk1ICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRjApIC8qITwgRVhUSSA1IGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk2ICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGMDApIC8qITwgRVhUSSA2IGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk3ICAgICAgICAgICAgKCh1aW50MTZfdCkweEYwMDApIC8qITwgRVhUSSA3IGNvbmZpZ3VyYXRpb24gKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSTQgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk0X1BBICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbNF0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMl9FWFRJNF9QQiAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAvKiE8IFBCWzRdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjJfRVhUSTRfUEMgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgLyohPCBQQ1s0XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk0X1BEICAgICAgICAgKCh1aW50MTZfdCkweDAwMDMpIC8qITwgUERbNF0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMl9FWFRJNF9QRSAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAvKiE8IFBFWzRdIHBpbiAqLw0KKw0KKy8qKiANCisgICogQGJyaWVmICBFWFRJNSBjb25maWd1cmF0aW9uICANCisgICovIA0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjJfRVhUSTVfUEEgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgLyohPCBQQVs1XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk1X1BCICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApIC8qITwgUEJbNV0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMl9FWFRJNV9QQyAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAvKiE8IFBDWzVdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjJfRVhUSTVfUEQgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgLyohPCBQRFs1XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk1X1BFICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApIC8qITwgUEVbNV0gcGluICovDQorDQorLyoqIA0KKyAgKiBAYnJpZWYgIEVYVEk2IGNvbmZpZ3VyYXRpb24gIA0KKyAgKi8gDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMl9FWFRJNl9QQSAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAvKiE8IFBBWzZdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjJfRVhUSTZfUEIgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgLyohPCBQQls2XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk2X1BDICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApIC8qITwgUENbNl0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMl9FWFRJNl9QRCAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAvKiE8IFBEWzZdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjJfRVhUSTZfUEUgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgLyohPCBQRVs2XSBwaW4gKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSTcgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk3X1BBICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbN10gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMl9FWFRJN19QQiAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAvKiE8IFBCWzddIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjJfRVhUSTdfUEMgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgLyohPCBQQ1s3XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IyX0VYVEk3X1BEICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApIC8qITwgUERbN10gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSMl9FWFRJN19QRSAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAvKiE8IFBFWzddIHBpbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNZU0NGR19FWFRJQ1IzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEk4ICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpIC8qITwgRVhUSSA4IGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEk5ICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRjApIC8qITwgRVhUSSA5IGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEkxMCAgICAgICAgICAgKCh1aW50MTZfdCkweDBGMDApIC8qITwgRVhUSSAxMCBjb25maWd1cmF0aW9uICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSM19FWFRJMTEgICAgICAgICAgICgodWludDE2X3QpMHhGMDAwKSAvKiE8IEVYVEkgMTEgY29uZmlndXJhdGlvbiAqLw0KKwkJCQkJCQkJCSAgDQorLyoqIA0KKyAgKiBAYnJpZWYgIEVYVEk4IGNvbmZpZ3VyYXRpb24gIA0KKyAgKi8gDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSM19FWFRJOF9QQSAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAvKiE8IFBBWzhdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjNfRVhUSThfUEIgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgLyohPCBQQls4XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEk4X1BDICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpIC8qITwgUENbOF0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSM19FWFRJOF9QRCAgICAgICAgICgodWludDE2X3QpMHgwMDAzKSAvKiE8IFBEWzhdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjNfRVhUSThfUEUgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgLyohPCBQRVs4XSBwaW4gKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSTkgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEk5X1BBICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbOV0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSM19FWFRJOV9QQiAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAvKiE8IFBCWzldIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjNfRVhUSTlfUEMgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgLyohPCBQQ1s5XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEk5X1BEICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApIC8qITwgUERbOV0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSM19FWFRJOV9QRSAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAvKiE8IFBFWzldIHBpbiAqLw0KKw0KKy8qKiANCisgICogQGJyaWVmICBFWFRJMTAgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEkxMF9QQSAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbMTBdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjNfRVhUSTEwX1BCICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgLyohPCBQQlsxMF0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSM19FWFRJMTBfUEMgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAvKiE8IFBDWzEwXSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEkxMF9QRCAgICAgICAgKCh1aW50MTZfdCkweDAzMDApIC8qITwgUERbMTBdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjNfRVhUSTEwX1BFICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgLyohPCBQRVsxMF0gcGluICovDQorDQorLyoqIA0KKyAgKiBAYnJpZWYgIEVYVEkxMSBjb25maWd1cmF0aW9uICANCisgICovIA0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjNfRVhUSTExX1BBICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgLyohPCBQQVsxMV0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSM19FWFRJMTFfUEIgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAvKiE8IFBCWzExXSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1IzX0VYVEkxMV9QQyAgICAgICAgKCh1aW50MTZfdCkweDIwMDApIC8qITwgUENbMTFdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjNfRVhUSTExX1BEICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgLyohPCBQRFsxMV0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSM19FWFRJMTFfUEUgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAvKiE8IFBFWzExXSBwaW4gKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTWVNDRkdfRVhUSUNSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSNF9FWFRJMTIgICAgICAgICAgICgodWludDE2X3QpMHgwMDBGKSAvKiE8IEVYVEkgMTIgY29uZmlndXJhdGlvbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjRfRVhUSTEzICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGMCkgLyohPCBFWFRJIDEzIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1I0X0VYVEkxNCAgICAgICAgICAgKCh1aW50MTZfdCkweDBGMDApIC8qITwgRVhUSSAxNCBjb25maWd1cmF0aW9uICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSNF9FWFRJMTUgICAgICAgICAgICgodWludDE2X3QpMHhGMDAwKSAvKiE8IEVYVEkgMTUgY29uZmlndXJhdGlvbiAqLw0KKw0KKy8qKiANCisgICogQGJyaWVmICBFWFRJMTIgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1I0X0VYVEkxMl9QQSAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbMTJdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjRfRVhUSTEyX1BCICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgLyohPCBQQlsxMl0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSNF9FWFRJMTJfUEMgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAvKiE8IFBDWzEyXSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1I0X0VYVEkxMl9QRCAgICAgICAgKCh1aW50MTZfdCkweDAwMDMpIC8qITwgUERbMTJdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjRfRVhUSTEyX1BFICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgLyohPCBQRVsxMl0gcGluICovDQorDQorLyoqIA0KKyAgKiBAYnJpZWYgIEVYVEkxMyBjb25maWd1cmF0aW9uICANCisgICovIA0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjRfRVhUSTEzX1BBICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgLyohPCBQQVsxM10gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSNF9FWFRJMTNfUEIgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAvKiE8IFBCWzEzXSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1I0X0VYVEkxM19QQyAgICAgICAgKCh1aW50MTZfdCkweDAwMjApIC8qITwgUENbMTNdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjRfRVhUSTEzX1BEICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgLyohPCBQRFsxM10gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSNF9FWFRJMTNfUEUgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAvKiE8IFBFWzEzXSBwaW4gKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSTE0IGNvbmZpZ3VyYXRpb24gIA0KKyAgKi8gDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSNF9FWFRJMTRfUEEgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAvKiE8IFBBWzE0XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1I0X0VYVEkxNF9QQiAgICAgICAgKCh1aW50MTZfdCkweDAxMDApIC8qITwgUEJbMTRdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjRfRVhUSTE0X1BDICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgLyohPCBQQ1sxNF0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSNF9FWFRJMTRfUEQgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAvKiE8IFBEWzE0XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1I0X0VYVEkxNF9QRSAgICAgICAgKCh1aW50MTZfdCkweDA0MDApIC8qITwgUEVbMTRdIHBpbiAqLw0KKw0KKy8qKiANCisgICogQGJyaWVmICBFWFRJMTUgY29uZmlndXJhdGlvbiAgDQorICAqLyANCisjZGVmaW5lIFNZU0NGR19FWFRJQ1I0X0VYVEkxNV9QQSAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUEFbMTVdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjRfRVhUSTE1X1BCICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgLyohPCBQQlsxNV0gcGluICovDQorI2RlZmluZSBTWVNDRkdfRVhUSUNSNF9FWFRJMTVfUEMgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAvKiE8IFBDWzE1XSBwaW4gKi8NCisjZGVmaW5lIFNZU0NGR19FWFRJQ1I0X0VYVEkxNV9QRCAgICAgICAgKCh1aW50MTZfdCkweDMwMDApIC8qITwgUERbMTVdIHBpbiAqLw0KKyNkZWZpbmUgU1lTQ0ZHX0VYVElDUjRfRVhUSTE1X1BFICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgLyohPCBQRVsxNV0gcGluICovDQorIA0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgUm91dGluZyBJbnRlcmZhY2UgKFJJKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSSV9JQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFJJX0lDUl9JQzFaICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpIC8qITwgSUMxWlszOjBdIGJpdHMgKElucHV0IENhcHR1cmUgMSBzZWxlY3QgYml0cykgKi8NCisjZGVmaW5lICBSSV9JQ1JfSUMxWl8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUklfSUNSX0lDMVpfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFJJX0lDUl9JQzFaXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBSSV9JQ1JfSUMxWl8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAvKiE8IEJpdCAzICovDQorDQorI2RlZmluZSAgUklfSUNSX0lDMlogICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkgLyohPCBJQzJaWzM6MF0gYml0cyAoSW5wdXQgQ2FwdHVyZSAyIHNlbGVjdCBiaXRzKSAqLw0KKyNkZWZpbmUgIFJJX0lDUl9JQzJaXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBSSV9JQ1JfSUMyWl8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgUklfSUNSX0lDMlpfMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFJJX0lDUl9JQzJaXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApIC8qITwgQml0IDMgKi8NCisNCisjZGVmaW5lICBSSV9JQ1JfSUMzWiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRjAwKSAvKiE8IElDM1pbMzowXSBiaXRzIChJbnB1dCBDYXB0dXJlIDMgc2VsZWN0IGJpdHMpICovDQorI2RlZmluZSAgUklfSUNSX0lDM1pfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFJJX0lDUl9JQzNaXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBSSV9JQ1JfSUMzWl8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgUklfSUNSX0lDM1pfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgLyohPCBCaXQgMyAqLw0KKw0KKyNkZWZpbmUgIFJJX0lDUl9JQzRaICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEYwMDApIC8qITwgSUMyWlszOjBdIGJpdHMgKElucHV0IENhcHR1cmUgMiBzZWxlY3QgYml0cykgKi8NCisjZGVmaW5lICBSSV9JQ1JfSUM0Wl8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUklfSUNSX0lDNFpfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFJJX0lDUl9JQzRaXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBSSV9JQ1JfSUM0Wl8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAvKiE8IEJpdCAzICovDQorDQorI2RlZmluZSAgUklfSUNSX1RJTSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAzMDAwMCkgLyohPCBUSU1bMzowXSBiaXRzIChUaW1lcnMgc2VsZWN0IGJpdHMpICovDQorI2RlZmluZSAgUklfSUNSX1RJTV8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFJJX0lDUl9USU1fMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBSSV9JQ1JfSUMxICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAvKiE8IElucHV0IGNhcHR1cmUgMSAqLw0KKyNkZWZpbmUgIFJJX0lDUl9JQzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApIC8qITwgSW5wdXQgY2FwdHVyZSAyICovDQorI2RlZmluZSAgUklfSUNSX0lDMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgLyohPCBJbnB1dCBjYXB0dXJlIDMgKi8NCisjZGVmaW5lICBSSV9JQ1JfSUM0ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAvKiE8IElucHV0IGNhcHR1cmUgNCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJJX0FTQ1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBSSV9BU0NSMV9DSCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAzRkNGRkZGKSAvKiE8IEFTX0NIWzI1OjE4XSAmIEFTX0NIWzE1OjBdIGJpdHMgKCBBbmFsb2cgc3dpdGNoZXMgc2VsZWN0aW9uIGJpdHMpICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX0NIXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBSSV9BU0NSMV9DSF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX0NIXzQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApIC8qITwgQml0IDQgKi8NCisjZGVmaW5lICBSSV9BU0NSMV9DSF81ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAvKiE8IEJpdCA1ICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfNiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgLyohPCBCaXQgNiAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX0NIXzcgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApIC8qITwgQml0IDcgKi8NCisjZGVmaW5lICBSSV9BU0NSMV9DSF84ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAvKiE8IEJpdCA4ICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfOSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgLyohPCBCaXQgOSAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX0NIXzEwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApIC8qITwgQml0IDEwICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfMTEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgLyohPCBCaXQgMTEgKi8NCisjZGVmaW5lICBSSV9BU0NSMV9DSF8xMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAvKiE8IEJpdCAxMiAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX0NIXzEzICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApIC8qITwgQml0IDEzICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfMTQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgLyohPCBCaXQgMTQgKi8NCisjZGVmaW5lICBSSV9BU0NSMV9DSF8xNSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAvKiE8IEJpdCAxNSAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX0NIXzE4ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApIC8qITwgQml0IDE4ICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfMTkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgLyohPCBCaXQgMTkgKi8NCisjZGVmaW5lICBSSV9BU0NSMV9DSF8yMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAvKiE8IEJpdCAyMCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX0NIXzIxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApIC8qITwgQml0IDIxICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfMjIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgLyohPCBCaXQgMjIgKi8NCisjZGVmaW5lICBSSV9BU0NSMV9DSF8yMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAvKiE8IEJpdCAyMyAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX0NIXzI0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApIC8qITwgQml0IDI0ICovDQorI2RlZmluZSAgUklfQVNDUjFfQ0hfMjUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgLyohPCBCaXQgMjUgKi8NCisNCisjZGVmaW5lICBSSV9BU0NSMV9WQ09NUCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAvKiE8IEFEQyBhbmFsb2cgc3dpdGNoIHNlbGVjdGlvbiBmb3IgaW50ZXJuYWwgbm9kZSB0byBDT01QMSAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IxX1NDTSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApIC8qITwgSS9PIFN3aXRjaCBjb250cm9sIG1vZGUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSSV9BU0NSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUklfQVNDUjJfR1IxMF8xICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgLyohPCBHUjEwLTEgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSMTBfMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpIC8qITwgR1IxMC0yIHNlbGVjdGlvbiBiaXQgKi8NCisjZGVmaW5lICBSSV9BU0NSMl9HUjEwXzMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAvKiE8IEdSMTAtMyBzZWxlY3Rpb24gYml0ICovDQorI2RlZmluZSAgUklfQVNDUjJfR1IxMF80ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgLyohPCBHUjEwLTQgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSNl8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApIC8qITwgR1I2LTEgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSNl8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApIC8qITwgR1I2LTIgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSNV8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApIC8qITwgR1I1LTEgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSNV8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApIC8qITwgR1I1LTIgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSNV8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApIC8qITwgR1I1LTMgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSNF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApIC8qITwgR1I0LTEgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSNF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApIC8qITwgR1I0LTIgc2VsZWN0aW9uIGJpdCAqLw0KKyNkZWZpbmUgIFJJX0FTQ1IyX0dSNF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApIC8qITwgR1I0LTMgc2VsZWN0aW9uIGJpdCAqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJJX0hZU0NSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BBICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkZGRikgLyohPCBQQVsxNTowXSBQb3J0IEEgSHlzdGVyZXNpcyBzZWxlY3Rpb24gKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEFfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BBXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQV8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEFfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BBXzQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgLyohPCBCaXQgNCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQV81ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApIC8qITwgQml0IDUgKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEFfNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAvKiE8IEJpdCA2ICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BBXzcgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgLyohPCBCaXQgNyAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQV84ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApIC8qITwgQml0IDggKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEFfOSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAvKiE8IEJpdCA5ICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BBXzEwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgLyohPCBCaXQgMTAgKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEFfMTEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAvKiE8IEJpdCAxMSAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQV8xMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApIC8qITwgQml0IDEyICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BBXzEzICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgLyohPCBCaXQgMTMgKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEFfMTQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAvKiE8IEJpdCAxNCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQV8xNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApIC8qITwgQml0IDE1ICovDQorDQorI2RlZmluZSAgUklfSFlTQ1IxX1BCICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGMDAwMCkgLyohPCBQQlsxNTowXSBQb3J0IEIgSHlzdGVyZXNpcyBzZWxlY3Rpb24gKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEJfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BCXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQl8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEJfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BCXzQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgLyohPCBCaXQgNCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQl81ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApIC8qITwgQml0IDUgKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEJfNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAvKiE8IEJpdCA2ICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BCXzcgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgLyohPCBCaXQgNyAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQl84ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApIC8qITwgQml0IDggKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEJfOSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAvKiE8IEJpdCA5ICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BCXzEwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgLyohPCBCaXQgMTAgKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEJfMTEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAvKiE8IEJpdCAxMSAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQl8xMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApIC8qITwgQml0IDEyICovDQorI2RlZmluZSAgUklfSFlTQ1IxX1BCXzEzICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgLyohPCBCaXQgMTMgKi8NCisjZGVmaW5lICBSSV9IWVNDUjFfUEJfMTQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAvKiE8IEJpdCAxNCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMV9QQl8xNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApIC8qITwgQml0IDE1ICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUklfSFlTQ1IyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUEMgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRkZGKSAvKiE8IFBDWzE1OjBdIFBvcnQgQyBIeXN0ZXJlc2lzIHNlbGVjdGlvbiAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QQ18wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUENfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BDXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QQ18zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUENfNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAvKiE8IEJpdCA0ICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BDXzUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgLyohPCBCaXQgNSAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QQ182ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApIC8qITwgQml0IDYgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUENfNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAvKiE8IEJpdCA3ICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BDXzggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgLyohPCBCaXQgOCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QQ185ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApIC8qITwgQml0IDkgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUENfMTAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAvKiE8IEJpdCAxMCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QQ18xMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApIC8qITwgQml0IDExICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BDXzEyICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgLyohPCBCaXQgMTIgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUENfMTMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAvKiE8IEJpdCAxMyAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QQ18xNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApIC8qITwgQml0IDE0ICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BDXzE1ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgLyohPCBCaXQgMTUgKi8NCisNCisjZGVmaW5lICBSSV9IWVNDUjJfUEQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkYwMDAwKSAvKiE8IFBEWzE1OjBdIFBvcnQgRCBIeXN0ZXJlc2lzIHNlbGVjdGlvbiAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUERfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BEXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUERfNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAvKiE8IEJpdCA0ICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BEXzUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgLyohPCBCaXQgNSAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRF82ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApIC8qITwgQml0IDYgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUERfNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAvKiE8IEJpdCA3ICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BEXzggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgLyohPCBCaXQgOCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRF85ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApIC8qITwgQml0IDkgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUERfMTAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAvKiE8IEJpdCAxMCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRF8xMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApIC8qITwgQml0IDExICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BEXzEyICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgLyohPCBCaXQgMTIgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUERfMTMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAvKiE8IEJpdCAxMyAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRF8xNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApIC8qITwgQml0IDE0ICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BEXzE1ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgLyohPCBCaXQgMTUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSSV9IWVNDUjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGRkYpIC8qITwgUEVbMTU6MF0gUG9ydCBFIEh5c3RlcmVzaXMgc2VsZWN0aW9uICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BFXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRV8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUEVfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BFXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRV80ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApIC8qITwgQml0IDQgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUEVfNSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAvKiE8IEJpdCA1ICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BFXzYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgLyohPCBCaXQgNiAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRV83ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApIC8qITwgQml0IDcgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUEVfOCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAvKiE8IEJpdCA4ICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BFXzkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgLyohPCBCaXQgOSAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRV8xMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApIC8qITwgQml0IDEwICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BFXzExICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgLyohPCBCaXQgMTEgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUEVfMTIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAvKiE8IEJpdCAxMiAqLw0KKyNkZWZpbmUgIFJJX0hZU0NSMl9QRV8xMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApIC8qITwgQml0IDEzICovDQorI2RlZmluZSAgUklfSFlTQ1IyX1BFXzE0ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgLyohPCBCaXQgMTQgKi8NCisjZGVmaW5lICBSSV9IWVNDUjJfUEVfMTUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAvKiE8IEJpdCAxNSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFRJTV9DUjFfQ0VOICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITxDb3VudGVyIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9DUjFfVURJUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITxVcGRhdGUgZGlzYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9DUjFfVVJTICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITxVcGRhdGUgcmVxdWVzdCBzb3VyY2UgKi8NCisjZGVmaW5lICBUSU1fQ1IxX09QTSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8T25lIHB1bHNlIG1vZGUgKi8NCisjZGVmaW5lICBUSU1fQ1IxX0RJUiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8RGlyZWN0aW9uICovDQorDQorI2RlZmluZSAgVElNX0NSMV9DTVMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjApICAgICAgICAgICAgLyohPENNU1sxOjBdIGJpdHMgKENlbnRlci1hbGlnbmVkIG1vZGUgc2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIFRJTV9DUjFfQ01TXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFRJTV9DUjFfQ01TXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFRJTV9DUjFfQVJQRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITxBdXRvLXJlbG9hZCBwcmVsb2FkIGVuYWJsZSAqLw0KKw0KKyNkZWZpbmUgIFRJTV9DUjFfQ0tEICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITxDS0RbMTowXSBiaXRzIChjbG9jayBkaXZpc2lvbikgKi8NCisjZGVmaW5lICBUSU1fQ1IxX0NLRF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fQ1IxX0NLRF8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFRJTV9DUjJfQ0NQQyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgUHJlbG9hZGVkIENvbnRyb2wgKi8NCisjZGVmaW5lICBUSU1fQ1IyX0NDVVMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIENvbnRyb2wgVXBkYXRlIFNlbGVjdGlvbiAqLw0KKyNkZWZpbmUgIFRJTV9DUjJfQ0NEUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgRE1BIFNlbGVjdGlvbiAqLw0KKw0KKyNkZWZpbmUgIFRJTV9DUjJfTU1TICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDcwKSAgICAgICAgICAgIC8qITxNTVNbMjowXSBiaXRzIChNYXN0ZXIgTW9kZSBTZWxlY3Rpb24pICovDQorI2RlZmluZSAgVElNX0NSMl9NTVNfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX0NSMl9NTVNfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPEJpdCAxICovDQorI2RlZmluZSAgVElNX0NSMl9NTVNfMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPEJpdCAyICovDQorDQorI2RlZmluZSAgVElNX0NSMl9USTFTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPFRJMSBTZWxlY3Rpb24gKi8NCisjZGVmaW5lICBUSU1fQ1IyX09JUzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8T3V0cHV0IElkbGUgc3RhdGUgMSAoT0MxIG91dHB1dCkgKi8NCisjZGVmaW5lICBUSU1fQ1IyX09JUzFOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8T3V0cHV0IElkbGUgc3RhdGUgMSAoT0MxTiBvdXRwdXQpICovDQorI2RlZmluZSAgVElNX0NSMl9PSVMyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPE91dHB1dCBJZGxlIHN0YXRlIDIgKE9DMiBvdXRwdXQpICovDQorI2RlZmluZSAgVElNX0NSMl9PSVMyTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPE91dHB1dCBJZGxlIHN0YXRlIDIgKE9DMk4gb3V0cHV0KSAqLw0KKyNkZWZpbmUgIFRJTV9DUjJfT0lTMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITxPdXRwdXQgSWRsZSBzdGF0ZSAzIChPQzMgb3V0cHV0KSAqLw0KKyNkZWZpbmUgIFRJTV9DUjJfT0lTM04gICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITxPdXRwdXQgSWRsZSBzdGF0ZSAzIChPQzNOIG91dHB1dCkgKi8NCisjZGVmaW5lICBUSU1fQ1IyX09JUzQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8T3V0cHV0IElkbGUgc3RhdGUgNCAoT0M0IG91dHB1dCkgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9TTUNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFRJTV9TTUNSX1NNUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA3KSAgICAgICAgICAgIC8qITxTTVNbMjowXSBiaXRzIChTbGF2ZSBtb2RlIHNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBUSU1fU01DUl9TTVNfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fU01DUl9TTVNfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisjZGVmaW5lICBUSU1fU01DUl9TTVNfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8Qml0IDIgKi8NCisNCisjZGVmaW5lICBUSU1fU01DUl9PQ0NTICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8T0NDUyBiaXRzIChPQ3JlZiBDbGVhciBTZWxlY3Rpb24pICovDQorDQorI2RlZmluZSAgVElNX1NNQ1JfVFMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNzApICAgICAgICAgICAgLyohPFRTWzI6MF0gYml0cyAoVHJpZ2dlciBzZWxlY3Rpb24pICovDQorI2RlZmluZSAgVElNX1NNQ1JfVFNfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX1NNQ1JfVFNfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPEJpdCAxICovDQorI2RlZmluZSAgVElNX1NNQ1JfVFNfMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPEJpdCAyICovDQorDQorI2RlZmluZSAgVElNX1NNQ1JfTVNNICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPE1hc3Rlci9zbGF2ZSBtb2RlICovDQorDQorI2RlZmluZSAgVElNX1NNQ1JfRVRGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGMDApICAgICAgICAgICAgLyohPEVURlszOjBdIGJpdHMgKEV4dGVybmFsIHRyaWdnZXIgZmlsdGVyKSAqLw0KKyNkZWZpbmUgIFRJTV9TTUNSX0VURl8wICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFRJTV9TTUNSX0VURl8xICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKyNkZWZpbmUgIFRJTV9TTUNSX0VURl8yICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMiAqLw0KKyNkZWZpbmUgIFRJTV9TTUNSX0VURl8zICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxCaXQgMyAqLw0KKw0KKyNkZWZpbmUgIFRJTV9TTUNSX0VUUFMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzMDAwKSAgICAgICAgICAgIC8qITxFVFBTWzE6MF0gYml0cyAoRXh0ZXJuYWwgdHJpZ2dlciBwcmVzY2FsZXIpICovDQorI2RlZmluZSAgVElNX1NNQ1JfRVRQU18wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX1NNQ1JfRVRQU18xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPEJpdCAxICovDQorDQorI2RlZmluZSAgVElNX1NNQ1JfRUNFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPEV4dGVybmFsIGNsb2NrIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9TTUNSX0VUUCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITxFeHRlcm5hbCB0cmlnZ2VyIHBvbGFyaXR5ICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fRElFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fRElFUl9VSUUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8VXBkYXRlIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBUSU1fRElFUl9DQzFJRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDEgaW50ZXJydXB0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9ESUVSX0NDMklFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMiBpbnRlcnJ1cHQgZW5hYmxlICovDQorI2RlZmluZSAgVElNX0RJRVJfQ0MzSUUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAzIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBUSU1fRElFUl9DQzRJRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDQgaW50ZXJydXB0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9ESUVSX0NPTUlFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITxDT00gaW50ZXJydXB0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9ESUVSX1RJRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITxUcmlnZ2VyIGludGVycnVwdCBlbmFibGUgKi8NCisjZGVmaW5lICBUSU1fRElFUl9CSUUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8QnJlYWsgaW50ZXJydXB0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9ESUVSX1VERSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxVcGRhdGUgRE1BIHJlcXVlc3QgZW5hYmxlICovDQorI2RlZmluZSAgVElNX0RJRVJfQ0MxREUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAxIERNQSByZXF1ZXN0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9ESUVSX0NDMkRFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMiBETUEgcmVxdWVzdCBlbmFibGUgKi8NCisjZGVmaW5lICBUSU1fRElFUl9DQzNERSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDMgRE1BIHJlcXVlc3QgZW5hYmxlICovDQorI2RlZmluZSAgVElNX0RJRVJfQ0M0REUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSA0IERNQSByZXF1ZXN0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9ESUVSX0NPTURFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITxDT00gRE1BIHJlcXVlc3QgZW5hYmxlICovDQorI2RlZmluZSAgVElNX0RJRVJfVERFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPFRyaWdnZXIgRE1BIHJlcXVlc3QgZW5hYmxlICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVElNX1NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fU1JfVUlGICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8VXBkYXRlIGludGVycnVwdCBGbGFnICovDQorI2RlZmluZSAgVElNX1NSX0NDMUlGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAxIGludGVycnVwdCBGbGFnICovDQorI2RlZmluZSAgVElNX1NSX0NDMklGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAyIGludGVycnVwdCBGbGFnICovDQorI2RlZmluZSAgVElNX1NSX0NDM0lGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAzIGludGVycnVwdCBGbGFnICovDQorI2RlZmluZSAgVElNX1NSX0NDNElGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSA0IGludGVycnVwdCBGbGFnICovDQorI2RlZmluZSAgVElNX1NSX0NPTUlGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPENPTSBpbnRlcnJ1cHQgRmxhZyAqLw0KKyNkZWZpbmUgIFRJTV9TUl9USUYgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITxUcmlnZ2VyIGludGVycnVwdCBGbGFnICovDQorI2RlZmluZSAgVElNX1NSX0JJRiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPEJyZWFrIGludGVycnVwdCBGbGFnICovDQorI2RlZmluZSAgVElNX1NSX0NDMU9GICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAxIE92ZXJjYXB0dXJlIEZsYWcgKi8NCisjZGVmaW5lICBUSU1fU1JfQ0MyT0YgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDIgT3ZlcmNhcHR1cmUgRmxhZyAqLw0KKyNkZWZpbmUgIFRJTV9TUl9DQzNPRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMyBPdmVyY2FwdHVyZSBGbGFnICovDQorI2RlZmluZSAgVElNX1NSX0NDNE9GICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSA0IE92ZXJjYXB0dXJlIEZsYWcgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9FR1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFRJTV9FR1JfVUcgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITxVcGRhdGUgR2VuZXJhdGlvbiAqLw0KKyNkZWZpbmUgIFRJTV9FR1JfQ0MxRyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMSBHZW5lcmF0aW9uICovDQorI2RlZmluZSAgVElNX0VHUl9DQzJHICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpICAgICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAyIEdlbmVyYXRpb24gKi8NCisjZGVmaW5lICBUSU1fRUdSX0NDM0cgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkgICAgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDMgR2VuZXJhdGlvbiAqLw0KKyNkZWZpbmUgIFRJTV9FR1JfQ0M0RyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgNCBHZW5lcmF0aW9uICovDQorI2RlZmluZSAgVElNX0VHUl9DT01HICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjApICAgICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSBDb250cm9sIFVwZGF0ZSBHZW5lcmF0aW9uICovDQorI2RlZmluZSAgVElNX0VHUl9URyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NDApICAgICAgICAgICAgICAgLyohPFRyaWdnZXIgR2VuZXJhdGlvbiAqLw0KKyNkZWZpbmUgIFRJTV9FR1JfQkcgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDgwKSAgICAgICAgICAgICAgIC8qITxCcmVhayBHZW5lcmF0aW9uICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DQ01SMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fQ0NNUjFfQ0MxUyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMykgICAgICAgICAgICAvKiE8Q0MxU1sxOjBdIGJpdHMgKENhcHR1cmUvQ29tcGFyZSAxIFNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjFfQ0MxU18wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjFfQ0MxU18xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MxRkUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8T3V0cHV0IENvbXBhcmUgMSBGYXN0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMV9PQzFQRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITxPdXRwdXQgQ29tcGFyZSAxIFByZWxvYWQgZW5hYmxlICovDQorDQorI2RlZmluZSAgVElNX0NDTVIxX09DMU0gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNzApICAgICAgICAgICAgLyohPE9DMU1bMjowXSBiaXRzIChPdXRwdXQgQ29tcGFyZSAxIE1vZGUpICovDQorI2RlZmluZSAgVElNX0NDTVIxX09DMU1fMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX0NDTVIxX09DMU1fMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPEJpdCAxICovDQorI2RlZmluZSAgVElNX0NDTVIxX09DMU1fMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPEJpdCAyICovDQorDQorI2RlZmluZSAgVElNX0NDTVIxX09DMUNFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPE91dHB1dCBDb21wYXJlIDFDbGVhciBFbmFibGUgKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjFfQ0MyUyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8Q0MyU1sxOjBdIGJpdHMgKENhcHR1cmUvQ29tcGFyZSAyIFNlbGVjdGlvbikgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjFfQ0MyU18wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjFfQ0MyU18xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MyRkUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8T3V0cHV0IENvbXBhcmUgMiBGYXN0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMV9PQzJQRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxPdXRwdXQgQ29tcGFyZSAyIFByZWxvYWQgZW5hYmxlICovDQorDQorI2RlZmluZSAgVElNX0NDTVIxX09DMk0gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDcwMDApICAgICAgICAgICAgLyohPE9DMk1bMjowXSBiaXRzIChPdXRwdXQgQ29tcGFyZSAyIE1vZGUpICovDQorI2RlZmluZSAgVElNX0NDTVIxX09DMk1fMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX0NDTVIxX09DMk1fMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPEJpdCAxICovDQorI2RlZmluZSAgVElNX0NDTVIxX09DMk1fMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPEJpdCAyICovDQorDQorI2RlZmluZSAgVElNX0NDTVIxX09DMkNFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPE91dHB1dCBDb21wYXJlIDIgQ2xlYXIgRW5hYmxlICovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMxUFNDICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwQykgICAgICAgICAgICAvKiE8SUMxUFNDWzE6MF0gYml0cyAoSW5wdXQgQ2FwdHVyZSAxIFByZXNjYWxlcikgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMxUFNDXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMxUFNDXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMxRiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGMCkgICAgICAgICAgICAvKiE8SUMxRlszOjBdIGJpdHMgKElucHV0IENhcHR1cmUgMSBGaWx0ZXIpICovDQorI2RlZmluZSAgVElNX0NDTVIxX0lDMUZfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX0NDTVIxX0lDMUZfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPEJpdCAxICovDQorI2RlZmluZSAgVElNX0NDTVIxX0lDMUZfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPEJpdCAyICovDQorI2RlZmluZSAgVElNX0NDTVIxX0lDMUZfMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPEJpdCAzICovDQorDQorI2RlZmluZSAgVElNX0NDTVIxX0lDMlBTQyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPElDMlBTQ1sxOjBdIGJpdHMgKElucHV0IENhcHR1cmUgMiBQcmVzY2FsZXIpICovDQorI2RlZmluZSAgVElNX0NDTVIxX0lDMlBTQ18wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX0NDTVIxX0lDMlBTQ18xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPEJpdCAxICovDQorDQorI2RlZmluZSAgVElNX0NDTVIxX0lDMkYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEYwMDApICAgICAgICAgICAgLyohPElDMkZbMzowXSBiaXRzIChJbnB1dCBDYXB0dXJlIDIgRmlsdGVyKSAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMV9JQzJGXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMV9JQzJGXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMV9JQzJGXzIgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITxCaXQgMiAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMV9JQzJGXzMgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITxCaXQgMyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQ0NNUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVElNX0NDTVIyX0NDM1MgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDMpICAgICAgICAgICAgLyohPENDM1NbMTowXSBiaXRzIChDYXB0dXJlL0NvbXBhcmUgMyBTZWxlY3Rpb24pICovDQorI2RlZmluZSAgVElNX0NDTVIyX0NDM1NfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX0NDTVIyX0NDM1NfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPEJpdCAxICovDQorDQorI2RlZmluZSAgVElNX0NDTVIyX09DM0ZFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPE91dHB1dCBDb21wYXJlIDMgRmFzdCBlbmFibGUgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfT0MzUEUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8T3V0cHV0IENvbXBhcmUgMyBQcmVsb2FkIGVuYWJsZSAqLw0KKw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNNICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDcwKSAgICAgICAgICAgIC8qITxPQzNNWzI6MF0gYml0cyAoT3V0cHV0IENvbXBhcmUgMyBNb2RlKSAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNNXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNNXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNNXzIgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITxCaXQgMiAqLw0KKw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNDRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITxPdXRwdXQgQ29tcGFyZSAzIENsZWFyIEVuYWJsZSAqLw0KKw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9DQzRTICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITxDQzRTWzE6MF0gYml0cyAoQ2FwdHVyZS9Db21wYXJlIDQgU2VsZWN0aW9uKSAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9DQzRTXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9DQzRTXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzRGRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxPdXRwdXQgQ29tcGFyZSA0IEZhc3QgZW5hYmxlICovDQorI2RlZmluZSAgVElNX0NDTVIyX09DNFBFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPE91dHB1dCBDb21wYXJlIDQgUHJlbG9hZCBlbmFibGUgKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjJfT0M0TSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NzAwMCkgICAgICAgICAgICAvKiE8T0M0TVsyOjBdIGJpdHMgKE91dHB1dCBDb21wYXJlIDQgTW9kZSkgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfT0M0TV8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfT0M0TV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfT0M0TV8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8Qml0IDIgKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjJfT0M0Q0UgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8T3V0cHV0IENvbXBhcmUgNCBDbGVhciBFbmFibGUgKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzNQU0MgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBDKSAgICAgICAgICAgIC8qITxJQzNQU0NbMTowXSBiaXRzIChJbnB1dCBDYXB0dXJlIDMgUHJlc2NhbGVyKSAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzNQU0NfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzNQU0NfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzNGICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEYwKSAgICAgICAgICAgIC8qITxJQzNGWzM6MF0gYml0cyAoSW5wdXQgQ2FwdHVyZSAzIEZpbHRlcikgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzRl8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzRl8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzRl8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8Qml0IDIgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzRl8zICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8Qml0IDMgKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjJfSUM0UFNDICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEMwMCkgICAgICAgICAgICAvKiE8SUM0UFNDWzE6MF0gYml0cyAoSW5wdXQgQ2FwdHVyZSA0IFByZXNjYWxlcikgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfSUM0UFNDXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fQ0NNUjJfSUM0UFNDXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBUSU1fQ0NNUjJfSUM0RiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RjAwMCkgICAgICAgICAgICAvKiE8SUM0RlszOjBdIGJpdHMgKElucHV0IENhcHR1cmUgNCBGaWx0ZXIpICovDQorI2RlZmluZSAgVElNX0NDTVIyX0lDNEZfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPEJpdCAwICovDQorI2RlZmluZSAgVElNX0NDTVIyX0lDNEZfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPEJpdCAxICovDQorI2RlZmluZSAgVElNX0NDTVIyX0lDNEZfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPEJpdCAyICovDQorI2RlZmluZSAgVElNX0NDTVIyX0lDNEZfMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPEJpdCAzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQ0NFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fQ0NFUl9DQzFFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDEgb3V0cHV0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDMVAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMSBvdXRwdXQgUG9sYXJpdHkgKi8NCisjZGVmaW5lICBUSU1fQ0NFUl9DQzFORSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDEgQ29tcGxlbWVudGFyeSBvdXRwdXQgZW5hYmxlICovDQorI2RlZmluZSAgVElNX0NDRVJfQ0MxTlAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAxIENvbXBsZW1lbnRhcnkgb3V0cHV0IFBvbGFyaXR5ICovDQorI2RlZmluZSAgVElNX0NDRVJfQ0MyRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAyIG91dHB1dCBlbmFibGUgKi8NCisjZGVmaW5lICBUSU1fQ0NFUl9DQzJQICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDIgb3V0cHV0IFBvbGFyaXR5ICovDQorI2RlZmluZSAgVElNX0NDRVJfQ0MyTkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAyIENvbXBsZW1lbnRhcnkgb3V0cHV0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDMk5QICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMiBDb21wbGVtZW50YXJ5IG91dHB1dCBQb2xhcml0eSAqLw0KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDM0UgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMyBvdXRwdXQgZW5hYmxlICovDQorI2RlZmluZSAgVElNX0NDRVJfQ0MzUCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAzIG91dHB1dCBQb2xhcml0eSAqLw0KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDM05FICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMyBDb21wbGVtZW50YXJ5IG91dHB1dCBlbmFibGUgKi8NCisjZGVmaW5lICBUSU1fQ0NFUl9DQzNOUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDMgQ29tcGxlbWVudGFyeSBvdXRwdXQgUG9sYXJpdHkgKi8NCisjZGVmaW5lICBUSU1fQ0NFUl9DQzRFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDQgb3V0cHV0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDNFAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgNCBvdXRwdXQgUG9sYXJpdHkgKi8NCisjZGVmaW5lICBUSU1fQ0NFUl9DQzROUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDQgQ29tcGxlbWVudGFyeSBvdXRwdXQgUG9sYXJpdHkgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DTlQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFRJTV9DTlRfQ05UICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITxDb3VudGVyIFZhbHVlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fUFNDIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fUFNDX1BTQyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8UHJlc2NhbGVyIFZhbHVlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQVJSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fQVJSX0FSUiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8YWN0dWFsIGF1dG8tcmVsb2FkIFZhbHVlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fUkNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fUkNSX1JFUCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHhGRikgICAgICAgICAgICAgICAvKiE8UmVwZXRpdGlvbiBDb3VudGVyIFZhbHVlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQ0NSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fQ0NSMV9DQ1IxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDEgVmFsdWUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DQ1IyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFRJTV9DQ1IyX0NDUjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITxDYXB0dXJlL0NvbXBhcmUgMiBWYWx1ZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVElNX0NDUjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVElNX0NDUjNfQ0NSMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPENhcHR1cmUvQ29tcGFyZSAzIFZhbHVlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQ0NSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBUSU1fQ0NSNF9DQ1I0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8Q2FwdHVyZS9Db21wYXJlIDQgVmFsdWUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9EQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJBICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDFGKSAgICAgICAgICAgIC8qITxEQkFbNDowXSBiaXRzIChETUEgQmFzZSBBZGRyZXNzKSAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJBXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJBXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJBXzIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITxCaXQgMiAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJBXzMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITxCaXQgMyAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJBXzQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITxCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJMICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxRjAwKSAgICAgICAgICAgIC8qITxEQkxbNDowXSBiaXRzIChETUEgQnVyc3QgTGVuZ3RoKSAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMiAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxCaXQgMyAqLw0KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITxCaXQgNCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVElNX0RNQVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVElNX0RNQVJfRE1BQiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPERNQSByZWdpc3RlciBmb3IgYnVyc3QgYWNjZXNzZXMgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9PUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFRJTV9PUl9USTFSTVAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAzKSAgICAgICAgICAgIC8qITxPcHRpb24gcmVnaXN0ZXIgZm9yIFRJMSBSZW1hcHBpbmcgKi8NCisjZGVmaW5lICBUSU1fT1JfVEkxUk1QXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBUSU1fT1JfVEkxUk1QXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICBVbml2ZXJzYWwgU3luY2hyb25vdXMgQXN5bmNocm9ub3VzIFJlY2VpdmVyIFRyYW5zbWl0dGVyICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0FSVF9TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0FSVF9TUl9QRSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFBhcml0eSBFcnJvciAqLw0KKyNkZWZpbmUgIFVTQVJUX1NSX0ZFICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgRnJhbWluZyBFcnJvciAqLw0KKyNkZWZpbmUgIFVTQVJUX1NSX05FICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgTm9pc2UgRXJyb3IgRmxhZyAqLw0KKyNkZWZpbmUgIFVTQVJUX1NSX09SRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgT3ZlclJ1biBFcnJvciAqLw0KKyNkZWZpbmUgIFVTQVJUX1NSX0lETEUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgSURMRSBsaW5lIGRldGVjdGVkICovDQorI2RlZmluZSAgVVNBUlRfU1JfUlhORSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBSZWFkIERhdGEgUmVnaXN0ZXIgTm90IEVtcHR5ICovDQorI2RlZmluZSAgVVNBUlRfU1JfVEMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQ29tcGxldGUgKi8NCisjZGVmaW5lICBVU0FSVF9TUl9UWEUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IFRyYW5zbWl0IERhdGEgUmVnaXN0ZXIgRW1wdHkgKi8NCisjZGVmaW5lICBVU0FSVF9TUl9MQkQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IExJTiBCcmVhayBEZXRlY3Rpb24gRmxhZyAqLw0KKyNkZWZpbmUgIFVTQVJUX1NSX0NUUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQ1RTIEZsYWcgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQVJUX0RSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQVJUX0RSX0RSICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMUZGKSAgICAgICAgICAgIC8qITwgRGF0YSB2YWx1ZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0FSVF9CUlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNBUlRfQlJSX0RJVl9GUkFDVElPTiAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPCBGcmFjdGlvbiBvZiBVU0FSVERJViAqLw0KKyNkZWZpbmUgIFVTQVJUX0JSUl9ESVZfTUFOVElTU0EgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkYwKSAgICAgICAgICAgIC8qITwgTWFudGlzc2Egb2YgVVNBUlRESVYgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNBUlRfQ1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQVJUX0NSMV9TQksgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgU2VuZCBCcmVhayAqLw0KKyNkZWZpbmUgIFVTQVJUX0NSMV9SV1UgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgUmVjZWl2ZXIgd2FrZXVwICovDQorI2RlZmluZSAgVVNBUlRfQ1IxX1JFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBSZWNlaXZlciBFbmFibGUgKi8NCisjZGVmaW5lICBVU0FSVF9DUjFfVEUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFRyYW5zbWl0dGVyIEVuYWJsZSAqLw0KKyNkZWZpbmUgIFVTQVJUX0NSMV9JRExFSUUgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgSURMRSBJbnRlcnJ1cHQgRW5hYmxlICovDQorI2RlZmluZSAgVVNBUlRfQ1IxX1JYTkVJRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBSWE5FIEludGVycnVwdCBFbmFibGUgKi8NCisjZGVmaW5lICBVU0FSVF9DUjFfVENJRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBDb21wbGV0ZSBJbnRlcnJ1cHQgRW5hYmxlICovDQorI2RlZmluZSAgVVNBUlRfQ1IxX1RYRUlFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBQRSBJbnRlcnJ1cHQgRW5hYmxlICovDQorI2RlZmluZSAgVVNBUlRfQ1IxX1BFSUUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBQRSBJbnRlcnJ1cHQgRW5hYmxlICovDQorI2RlZmluZSAgVVNBUlRfQ1IxX1BTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBQYXJpdHkgU2VsZWN0aW9uICovDQorI2RlZmluZSAgVVNBUlRfQ1IxX1BDRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBQYXJpdHkgQ29udHJvbCBFbmFibGUgKi8NCisjZGVmaW5lICBVU0FSVF9DUjFfV0FLRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IFdha2V1cCBtZXRob2QgKi8NCisjZGVmaW5lICBVU0FSVF9DUjFfTSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IFdvcmQgbGVuZ3RoICovDQorI2RlZmluZSAgVVNBUlRfQ1IxX1VFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBVU0FSVCBFbmFibGUgKi8NCisjZGVmaW5lICBVU0FSVF9DUjFfT1ZFUjggICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IE92ZXJzYW1wbGluZyBtb2RlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQVJUX0NSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0FSVF9DUjJfQUREICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgICAgICAgICAvKiE8IEFkZHJlc3Mgb2YgdGhlIFVTQVJUIG5vZGUgKi8NCisjZGVmaW5lICBVU0FSVF9DUjJfTEJETCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IExJTiBCcmVhayBEZXRlY3Rpb24gTGVuZ3RoICovDQorI2RlZmluZSAgVVNBUlRfQ1IyX0xCRElFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBMSU4gQnJlYWsgRGV0ZWN0aW9uIEludGVycnVwdCBFbmFibGUgKi8NCisjZGVmaW5lICBVU0FSVF9DUjJfTEJDTCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IExhc3QgQml0IENsb2NrIHB1bHNlICovDQorI2RlZmluZSAgVVNBUlRfQ1IyX0NQSEEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBDbG9jayBQaGFzZSAqLw0KKyNkZWZpbmUgIFVTQVJUX0NSMl9DUE9MICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQ2xvY2sgUG9sYXJpdHkgKi8NCisjZGVmaW5lICBVU0FSVF9DUjJfQ0xLRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IENsb2NrIEVuYWJsZSAqLw0KKw0KKyNkZWZpbmUgIFVTQVJUX0NSMl9TVE9QICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzMDAwKSAgICAgICAgICAgIC8qITwgU1RPUFsxOjBdIGJpdHMgKFNUT1AgYml0cykgKi8NCisjZGVmaW5lICBVU0FSVF9DUjJfU1RPUF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNBUlRfQ1IyX1NUT1BfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQVJUX0NSMl9MSU5FTiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgTElOIG1vZGUgZW5hYmxlICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQVJUX0NSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0FSVF9DUjNfRUlFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IEVycm9yIEludGVycnVwdCBFbmFibGUgKi8NCisjZGVmaW5lICBVU0FSVF9DUjNfSVJFTiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IElyREEgbW9kZSBFbmFibGUgKi8NCisjZGVmaW5lICBVU0FSVF9DUjNfSVJMUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IElyREEgTG93LVBvd2VyICovDQorI2RlZmluZSAgVVNBUlRfQ1IzX0hEU0VMICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBIYWxmLUR1cGxleCBTZWxlY3Rpb24gKi8NCisjZGVmaW5lICBVU0FSVF9DUjNfTkFDSyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IFNtYXJ0Y2FyZCBOQUNLIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFVTQVJUX0NSM19TQ0VOICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgU21hcnRjYXJkIG1vZGUgZW5hYmxlICovDQorI2RlZmluZSAgVVNBUlRfQ1IzX0RNQVIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBETUEgRW5hYmxlIFJlY2VpdmVyICovDQorI2RlZmluZSAgVVNBUlRfQ1IzX0RNQVQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBETUEgRW5hYmxlIFRyYW5zbWl0dGVyICovDQorI2RlZmluZSAgVVNBUlRfQ1IzX1JUU0UgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBSVFMgRW5hYmxlICovDQorI2RlZmluZSAgVVNBUlRfQ1IzX0NUU0UgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBDVFMgRW5hYmxlICovDQorI2RlZmluZSAgVVNBUlRfQ1IzX0NUU0lFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBDVFMgSW50ZXJydXB0IEVuYWJsZSAqLw0KKyNkZWZpbmUgIFVTQVJUX0NSM19PTkVCSVQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgT25lIHNhbXBsZSBiaXQgbWV0aG9kIGVuYWJsZSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0FSVF9HVFBSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNBUlRfR1RQUl9QU0MgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRkYpICAgICAgICAgICAgLyohPCBQU0NbNzowXSBiaXRzIChQcmVzY2FsZXIgdmFsdWUpICovDQorI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQVJUX0dUUFJfUFNDXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBVU0FSVF9HVFBSX1BTQ18yICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQVJUX0dUUFJfUFNDXzQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQml0IDQgKi8NCisjZGVmaW5lICBVU0FSVF9HVFBSX1BTQ181ICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IEJpdCA1ICovDQorI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfNiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBCaXQgNiAqLw0KKyNkZWZpbmUgIFVTQVJUX0dUUFJfUFNDXzcgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgQml0IDcgKi8NCisNCisjZGVmaW5lICBVU0FSVF9HVFBSX0dUICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkYwMCkgICAgICAgICAgICAvKiE8IEd1YXJkIHRpbWUgdmFsdWUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyohPEVuZHBvaW50LXNwZWNpZmljIHJlZ2lzdGVycyAqLw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0VQMFJfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IEFkZHJlc3MgKi8NCisNCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8U1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVAwUl9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQMFJfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLw0KKyNkZWZpbmUgIFVTQl9FUDBSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFbmRwb2ludCBLaW5kICovDQorDQorI2RlZmluZSAgVVNCX0VQMFJfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLw0KKyNkZWZpbmUgIFVTQl9FUDBSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9FUDBSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9FUDBSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8NCisNCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8U1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVAwUl9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQMFJfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0VQMVJfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IEFkZHJlc3MgKi8NCisNCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8U1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVAxUl9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQMVJfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLw0KKyNkZWZpbmUgIFVTQl9FUDFSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFbmRwb2ludCBLaW5kICovDQorDQorI2RlZmluZSAgVVNCX0VQMVJfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLw0KKyNkZWZpbmUgIFVTQl9FUDFSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9FUDFSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9FUDFSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8NCisNCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8U1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVAxUl9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQMVJfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQMlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0VQMlJfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IEFkZHJlc3MgKi8NCisNCisjZGVmaW5lICBVU0JfRVAyUl9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8U1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVAyUl9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVAyUl9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVAyUl9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQMlJfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLw0KKyNkZWZpbmUgIFVTQl9FUDJSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFbmRwb2ludCBLaW5kICovDQorDQorI2RlZmluZSAgVVNCX0VQMlJfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLw0KKyNkZWZpbmUgIFVTQl9FUDJSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9FUDJSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9FUDJSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8NCisNCisjZGVmaW5lICBVU0JfRVAyUl9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8U1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVAyUl9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVAyUl9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVAyUl9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQMlJfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQM1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0VQM1JfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IEFkZHJlc3MgKi8NCisNCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8U1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVAzUl9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQM1JfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLw0KKyNkZWZpbmUgIFVTQl9FUDNSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFbmRwb2ludCBLaW5kICovDQorDQorI2RlZmluZSAgVVNCX0VQM1JfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLw0KKyNkZWZpbmUgIFVTQl9FUDNSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9FUDNSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9FUDNSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8NCisNCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8U1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVAzUl9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQM1JfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQNFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0VQNFJfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IEFkZHJlc3MgKi8NCisNCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8U1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVA0Ul9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQNFJfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLw0KKyNkZWZpbmUgIFVTQl9FUDRSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFbmRwb2ludCBLaW5kICovDQorDQorI2RlZmluZSAgVVNCX0VQNFJfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLw0KKyNkZWZpbmUgIFVTQl9FUDRSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9FUDRSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9FUDRSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8NCisNCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8U1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVA0Ul9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQNFJfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQNVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0VQNVJfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IEFkZHJlc3MgKi8NCisNCisjZGVmaW5lICBVU0JfRVA1Ul9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8U1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVA1Ul9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVA1Ul9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVA1Ul9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQNVJfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLw0KKyNkZWZpbmUgIFVTQl9FUDVSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFbmRwb2ludCBLaW5kICovDQorDQorI2RlZmluZSAgVVNCX0VQNVJfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLw0KKyNkZWZpbmUgIFVTQl9FUDVSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9FUDVSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9FUDVSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8NCisNCisjZGVmaW5lICBVU0JfRVA1Ul9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8U1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVA1Ul9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVA1Ul9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVA1Ul9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQNVJfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQNlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0VQNlJfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IEFkZHJlc3MgKi8NCisNCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8U1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVA2Ul9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQNlJfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLw0KKyNkZWZpbmUgIFVTQl9FUDZSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFbmRwb2ludCBLaW5kICovDQorDQorI2RlZmluZSAgVVNCX0VQNlJfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLw0KKyNkZWZpbmUgIFVTQl9FUDZSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9FUDZSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9FUDZSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8NCisNCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8U1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVA2Ul9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQNlJfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQN1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0VQN1JfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IEFkZHJlc3MgKi8NCisNCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8U1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVA3Ul9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQN1JfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLw0KKyNkZWZpbmUgIFVTQl9FUDdSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFbmRwb2ludCBLaW5kICovDQorDQorI2RlZmluZSAgVVNCX0VQN1JfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLw0KKyNkZWZpbmUgIFVTQl9FUDdSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9FUDdSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9FUDdSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8NCisNCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8U1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8NCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8Qml0IDAgKi8NCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8Qml0IDEgKi8NCisNCisjZGVmaW5lICBVU0JfRVA3Ul9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8RGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovDQorI2RlZmluZSAgVVNCX0VQN1JfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLw0KKw0KKy8qITxDb21tb24gcmVnaXN0ZXJzICovDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ05UUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ05UUl9GUkVTICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8Rm9yY2UgVVNCIFJlc2V0ICovDQorI2RlZmluZSAgVVNCX0NOVFJfUERXTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPFBvd2VyIGRvd24gKi8NCisjZGVmaW5lICBVU0JfQ05UUl9MUF9NT0RFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8TG93LXBvd2VyIG1vZGUgKi8NCisjZGVmaW5lICBVU0JfQ05UUl9GU1VTUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8Rm9yY2Ugc3VzcGVuZCAqLw0KKyNkZWZpbmUgIFVTQl9DTlRSX1JFU1VNRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITxSZXN1bWUgcmVxdWVzdCAqLw0KKyNkZWZpbmUgIFVTQl9DTlRSX0VTT0ZNICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITxFeHBlY3RlZCBTdGFydCBPZiBGcmFtZSBJbnRlcnJ1cHQgTWFzayAqLw0KKyNkZWZpbmUgIFVTQl9DTlRSX1NPRk0gICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITxTdGFydCBPZiBGcmFtZSBJbnRlcnJ1cHQgTWFzayAqLw0KKyNkZWZpbmUgIFVTQl9DTlRSX1JFU0VUTSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITxSRVNFVCBJbnRlcnJ1cHQgTWFzayAqLw0KKyNkZWZpbmUgIFVTQl9DTlRSX1NVU1BNICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITxTdXNwZW5kIG1vZGUgSW50ZXJydXB0IE1hc2sgKi8NCisjZGVmaW5lICBVU0JfQ05UUl9XS1VQTSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8V2FrZXVwIEludGVycnVwdCBNYXNrICovDQorI2RlZmluZSAgVVNCX0NOVFJfRVJSTSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPEVycm9yIEludGVycnVwdCBNYXNrICovDQorI2RlZmluZSAgVVNCX0NOVFJfUE1BT1ZSTSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPFBhY2tldCBNZW1vcnkgQXJlYSBPdmVyIC8gVW5kZXJydW4gSW50ZXJydXB0IE1hc2sgKi8NCisjZGVmaW5lICBVU0JfQ05UUl9DVFJNICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8Q29ycmVjdCBUcmFuc2ZlciBJbnRlcnJ1cHQgTWFzayAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0lTVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0lTVFJfRVBfSUQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPEVuZHBvaW50IElkZW50aWZpZXIgKi8NCisjZGVmaW5lICBVU0JfSVNUUl9ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8RGlyZWN0aW9uIG9mIHRyYW5zYWN0aW9uICovDQorI2RlZmluZSAgVVNCX0lTVFJfRVNPRiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPEV4cGVjdGVkIFN0YXJ0IE9mIEZyYW1lICovDQorI2RlZmluZSAgVVNCX0lTVFJfU09GICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPFN0YXJ0IE9mIEZyYW1lICovDQorI2RlZmluZSAgVVNCX0lTVFJfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPFVTQiBSRVNFVCByZXF1ZXN0ICovDQorI2RlZmluZSAgVVNCX0lTVFJfU1VTUCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPFN1c3BlbmQgbW9kZSByZXF1ZXN0ICovDQorI2RlZmluZSAgVVNCX0lTVFJfV0tVUCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPFdha2UgdXAgKi8NCisjZGVmaW5lICBVU0JfSVNUUl9FUlIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8RXJyb3IgKi8NCisjZGVmaW5lICBVU0JfSVNUUl9QTUFPVlIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8UGFja2V0IE1lbW9yeSBBcmVhIE92ZXIgLyBVbmRlcnJ1biAqLw0KKyNkZWZpbmUgIFVTQl9JU1RSX0NUUiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITxDb3JyZWN0IFRyYW5zZmVyICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfRk5SIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfRk5SX0ZOICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDdGRikgICAgICAgICAgICAvKiE8RnJhbWUgTnVtYmVyICovDQorI2RlZmluZSAgVVNCX0ZOUl9MU09GICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDE4MDApICAgICAgICAgICAgLyohPExvc3QgU09GICovDQorI2RlZmluZSAgVVNCX0ZOUl9MQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPExvY2tlZCAqLw0KKyNkZWZpbmUgIFVTQl9GTlJfUlhETSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITxSZWNlaXZlIERhdGEgLSBMaW5lIFN0YXR1cyAqLw0KKyNkZWZpbmUgIFVTQl9GTlJfUlhEUCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITxSZWNlaXZlIERhdGEgKyBMaW5lIFN0YXR1cyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfREFERFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0RBRERSX0FERCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4N0YpICAgICAgICAgICAgICAgLyohPEFERFs2OjBdIGJpdHMgKERldmljZSBBZGRyZXNzKSAqLw0KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQwICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITxCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQxICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITxCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQyICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITxCaXQgMiAqLw0KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQzICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA4KSAgICAgICAgICAgICAgIC8qITxCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQ0ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITxCaXQgNCAqLw0KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQ1ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKSAgICAgICAgICAgICAgIC8qITxCaXQgNSAqLw0KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQ2ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDQwKSAgICAgICAgICAgICAgIC8qITxCaXQgNiAqLw0KKw0KKyNkZWZpbmUgIFVTQl9EQUREUl9FRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDgwKSAgICAgICAgICAgICAgIC8qITxFbmFibGUgRnVuY3Rpb24gKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0JUQUJMRSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLyAgICANCisjZGVmaW5lICBVU0JfQlRBQkxFX0JUQUJMRSAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGOCkgICAgICAgICAgICAvKiE8QnVmZmVyIFRhYmxlICovDQorDQorLyohPCBCdWZmZXIgZGVzY3JpcHRvciB0YWJsZSAqLw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9BRERSMF9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0FERFIwX1RYX0FERFIwX1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgMCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9BRERSMV9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0FERFIxX1RYX0FERFIxX1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgMSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9BRERSMl9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0FERFIyX1RYX0FERFIyX1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgMiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9BRERSM19UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0FERFIzX1RYX0FERFIzX1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgMyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9BRERSNF9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0FERFI0X1RYX0FERFI0X1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgNCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9BRERSNV9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0FERFI1X1RYX0FERFI1X1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgNSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9BRERSNl9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0FERFI2X1RYX0FERFI2X1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgNiAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9BRERSN19UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0FERFI3X1RYX0FERFI3X1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgNyAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMF9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQwX1RYX0NPVU5UMF9UWCAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDNGRikgICAgICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDAgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQxX1RYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfVFhfQ09VTlQxX1RYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDJfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9UWF9DT1VOVDJfVFggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCAyICovDQorDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UM19UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQzX1RYX0NPVU5UM19UWCAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDNGRikgICAgICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDMgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ0X1RYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfVFhfQ09VTlQ0X1RYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgNCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDVfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNV9UWF9DT1VOVDVfVFggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCA1ICovDQorDQorLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNl9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ2X1RYX0NPVU5UNl9UWCAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDNGRikgICAgICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDYgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ3X1RYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfVFhfQ09VTlQ3X1RYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgNyAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQwX1RYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQwX1RYXzBfQ09VTlQwX1RYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDAgKGxvdykgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDBfVFhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfVFhfMV9DT1VOVDBfVFhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMCAoaGlnaCkgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDFfVFhfMCByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfVFhfMF9DT1VOVDFfVFhfMCAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDEgKGxvdykgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDFfVFhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfVFhfMV9DT1VOVDFfVFhfMSAgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDEgKGhpZ2gpICovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQyX1RYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQyX1RYXzBfQ09VTlQyX1RYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDIgKGxvdykgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDJfVFhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfVFhfMV9DT1VOVDJfVFhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMiAoaGlnaCkgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDNfVFhfMCByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfVFhfMF9DT1VOVDNfVFhfMCAgICAgICAgICgodWludDE2X3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMyAobG93KSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UM19UWF8xIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UM19UWF8xX0NPVU5UM19UWF8xICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCAzIChoaWdoKSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNF9UWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNF9UWF8wX0NPVU5UNF9UWF8wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCA0IChsb3cpICovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ0X1RYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ0X1RYXzFfQ09VTlQ0X1RYXzEgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDQgKGhpZ2gpICovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ1X1RYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ1X1RYXzBfQ09VTlQ1X1RYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDUgKGxvdykgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDVfVFhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfVFhfMV9DT1VOVDVfVFhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgNSAoaGlnaCkgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDZfVFhfMCByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfVFhfMF9DT1VOVDZfVFhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgNiAobG93KSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNl9UWF8xIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNl9UWF8xX0NPVU5UNl9UWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCA2IChoaWdoKSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UN19UWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UN19UWF8wX0NPVU5UN19UWF8wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCA3IChsb3cpICovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ3X1RYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ3X1RYXzFfQ09VTlQ3X1RYXzEgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDcgKGhpZ2gpICovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjBfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9BRERSMF9SWF9BRERSMF9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDAgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjFfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9BRERSMV9SWF9BRERSMV9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDEgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjJfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9BRERSMl9SWF9BRERSMl9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDIgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjNfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9BRERSM19SWF9BRERSM19SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDMgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjRfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9BRERSNF9SWF9BRERSNF9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDQgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjVfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9BRERSNV9SWF9BRERSNV9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDUgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjZfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9BRERSNl9SWF9BRERSNl9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDYgKi8NCisNCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjdfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9BRERSN19SWF9BRERSN19SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDcgKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDBfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9DT1VOVDBfUlggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfTlVNX0JMT0NLICAgICAgICAgICAgICgodWludDE2X3QpMHg3QzAwKSAgICAgICAgICAgIC8qITwgTlVNX0JMT0NLWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYX05VTV9CTE9DS18wICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfTlVNX0JMT0NLXzIgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYX05VTV9CTE9DS18zICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfQkxTSVpFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQkxvY2sgU0laRSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDFfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9DT1VOVDFfUlggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfTlVNX0JMT0NLICAgICAgICAgICAgICgodWludDE2X3QpMHg3QzAwKSAgICAgICAgICAgIC8qITwgTlVNX0JMT0NLWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYX05VTV9CTE9DS18wICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfTlVNX0JMT0NLXzIgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYX05VTV9CTE9DS18zICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfQkxTSVpFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQkxvY2sgU0laRSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDJfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9DT1VOVDJfUlggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfTlVNX0JMT0NLICAgICAgICAgICAgICgodWludDE2X3QpMHg3QzAwKSAgICAgICAgICAgIC8qITwgTlVNX0JMT0NLWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYX05VTV9CTE9DS18wICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfTlVNX0JMT0NLXzIgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYX05VTV9CTE9DS18zICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfQkxTSVpFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQkxvY2sgU0laRSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDNfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF9DT1VOVDNfUlggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfTlVNX0JMT0NLICAgICAgICAgICAgICgodWludDE2X3QpMHg3QzAwKSAgICAgICAgICAgIC8qITwgTlVNX0JMT0NLWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYX05VTV9CTE9DS18wICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfTlVNX0JMT0NLXzIgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYX05VTV9CTE9DS18zICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfQkxTSVpFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQkxvY2sgU0laRSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDRfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9DT1VOVDRfUlggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfTlVNX0JMT0NLICAgICAgICAgICAgICgodWludDE2X3QpMHg3QzAwKSAgICAgICAgICAgIC8qITwgTlVNX0JMT0NLWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYX05VTV9CTE9DS18wICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfTlVNX0JMT0NLXzIgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYX05VTV9CTE9DS18zICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfQkxTSVpFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQkxvY2sgU0laRSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDVfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9DT1VOVDVfUlggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfTlVNX0JMT0NLICAgICAgICAgICAgICgodWludDE2X3QpMHg3QzAwKSAgICAgICAgICAgIC8qITwgTlVNX0JMT0NLWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYX05VTV9CTE9DS18wICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfTlVNX0JMT0NLXzIgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYX05VTV9CTE9DS18zICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfQkxTSVpFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQkxvY2sgU0laRSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDZfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9DT1VOVDZfUlggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfTlVNX0JMT0NLICAgICAgICAgICAgICgodWludDE2X3QpMHg3QzAwKSAgICAgICAgICAgIC8qITwgTlVNX0JMT0NLWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYX05VTV9CTE9DS18wICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfTlVNX0JMT0NLXzIgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYX05VTV9CTE9DS18zICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfQkxTSVpFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQkxvY2sgU0laRSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDdfUlggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UN19SWF9DT1VOVDdfUlggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfTlVNX0JMT0NLICAgICAgICAgICAgICgodWludDE2X3QpMHg3QzAwKSAgICAgICAgICAgIC8qITwgTlVNX0JMT0NLWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYX05VTV9CTE9DS18wICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UN19SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfTlVNX0JMT0NLXzIgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYX05VTV9CTE9DS18zICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UN19SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfQkxTSVpFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQkxvY2sgU0laRSAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQwX1JYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzBfQ09VTlQwX1JYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChsb3cpICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8wX05VTV9CTE9DS18wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMFs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChsb3cpICovDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8wX05VTV9CTE9DS18wXzAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfMF9OVU1fQkxPQ0tfMF8xICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzBfTlVNX0JMT0NLXzBfMiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8wX05VTV9CTE9DS18wXzMgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfMF9OVU1fQkxPQ0tfMF80ICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzBfQkxTSVpFXzAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGxvdykgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDBfUlhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfMV9DT1VOVDBfUlhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGhpZ2gpICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX05VTV9CTE9DS18xICAgICAgICAgKCh1aW50MzJfdCkweDdDMDAwMDAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMVs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChoaWdoKSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfMV9OVU1fQkxPQ0tfMV8wICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzFfTlVNX0JMT0NLXzFfMSAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX05VTV9CTE9DS18xXzIgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfMV9OVU1fQkxPQ0tfMV8zICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzFfTlVNX0JMT0NLXzFfNCAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX0JMU0laRV8xICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChoaWdoKSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMV9SWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8wX0NPVU5UMV9SWF8wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAobG93KSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMF9OVU1fQkxPQ0tfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzBbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAobG93KSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMF9OVU1fQkxPQ0tfMF8wICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYXzBfTlVNX0JMT0NLXzBfMSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8wX05VTV9CTE9DS18wXzIgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMF9OVU1fQkxPQ0tfMF8zICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYXzBfTlVNX0JMT0NLXzBfNCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8wX0JMU0laRV8wICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChsb3cpICovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQxX1JYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYXzFfQ09VTlQxX1JYXzEgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChoaWdoKSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9OVU1fQkxPQ0tfMSAgICAgICAgICgodWludDMyX3QpMHg3QzAwMDAwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzFbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAoaGlnaCkgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYXzFfTlVNX0JMT0NLXzFfMCAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8xX05VTV9CTE9DS18xXzEgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9OVU1fQkxPQ0tfMV8yICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYXzFfTlVNX0JMT0NLXzFfMyAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8xX05VTV9CTE9DS18xXzQgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9CTFNJWkVfMSAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAoaGlnaCkgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDJfUlhfMCByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMF9DT1VOVDJfUlhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGxvdykgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzBfTlVNX0JMT0NLXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDdDMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18wWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGxvdykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzBfTlVNX0JMT0NLXzBfMCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9SWF8wX05VTV9CTE9DS18wXzEgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMF9OVU1fQkxPQ0tfMF8yICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzBfTlVNX0JMT0NLXzBfMyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9SWF8wX05VTV9CTE9DS18wXzQgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMF9CTFNJWkVfMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAobG93KSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMl9SWF8xIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9SWF8xX0NPVU5UMl9SWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAoaGlnaCkgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfTlVNX0JMT0NLXzEgICAgICAgICAoKHVpbnQzMl90KTB4N0MwMDAwMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18xWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGhpZ2gpICovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9SWF8xX05VTV9CTE9DS18xXzAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMV9OVU1fQkxPQ0tfMV8xICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfTlVNX0JMT0NLXzFfMiAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgVVNCX0NPVU5UMl9SWF8xX05VTV9CTE9DS18xXzMgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMV9OVU1fQkxPQ0tfMV80ICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfQkxTSVpFXzEgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGhpZ2gpICovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQzX1JYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzBfQ09VTlQzX1JYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChsb3cpICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF8wX05VTV9CTE9DS18wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMFs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChsb3cpICovDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF8wX05VTV9CTE9DS18wXzAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfMF9OVU1fQkxPQ0tfMF8xICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzBfTlVNX0JMT0NLXzBfMiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF8wX05VTV9CTE9DS18wXzMgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfMF9OVU1fQkxPQ0tfMF80ICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzBfQkxTSVpFXzAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGxvdykgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDNfUlhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfMV9DT1VOVDNfUlhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGhpZ2gpICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX05VTV9CTE9DS18xICAgICAgICAgKCh1aW50MzJfdCkweDdDMDAwMDAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMVs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChoaWdoKSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfMV9OVU1fQkxPQ0tfMV8wICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzFfTlVNX0JMT0NLXzFfMSAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX05VTV9CTE9DS18xXzIgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfMV9OVU1fQkxPQ0tfMV8zICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzFfTlVNX0JMT0NLXzFfNCAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX0JMU0laRV8xICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChoaWdoKSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNF9SWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNF9SWF8wX0NPVU5UNF9SWF8wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAobG93KSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9OVU1fQkxPQ0tfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzBbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAobG93KSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9OVU1fQkxPQ0tfMF8wICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9OVU1fQkxPQ0tfMF8xICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9OVU1fQkxPQ0tfMF8yICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9OVU1fQkxPQ0tfMF8zICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9OVU1fQkxPQ0tfMF80ICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9CTFNJWkVfMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAobG93KSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNF9SWF8xIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNF9SWF8xX0NPVU5UNF9SWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAoaGlnaCkgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfTlVNX0JMT0NLXzEgICAgICAgICAoKHVpbnQzMl90KTB4N0MwMDAwMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18xWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGhpZ2gpICovDQorI2RlZmluZSAgVVNCX0NPVU5UNF9SWF8xX05VTV9CTE9DS18xXzAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMV9OVU1fQkxPQ0tfMV8xICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfTlVNX0JMT0NLXzFfMiAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgVVNCX0NPVU5UNF9SWF8xX05VTV9CTE9DS18xXzMgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMV9OVU1fQkxPQ0tfMV80ICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfQkxTSVpFXzEgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGhpZ2gpICovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ1X1JYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzBfQ09VTlQ1X1JYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChsb3cpICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8wX05VTV9CTE9DS18wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMFs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChsb3cpICovDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8wX05VTV9CTE9DS18wXzAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfMF9OVU1fQkxPQ0tfMF8xICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzBfTlVNX0JMT0NLXzBfMiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8wX05VTV9CTE9DS18wXzMgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfMF9OVU1fQkxPQ0tfMF80ICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzBfQkxTSVpFXzAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGxvdykgKi8NCisNCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDVfUlhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfMV9DT1VOVDVfUlhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGhpZ2gpICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX05VTV9CTE9DS18xICAgICAgICAgKCh1aW50MzJfdCkweDdDMDAwMDAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMVs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChoaWdoKSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfMV9OVU1fQkxPQ0tfMV8wICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzFfTlVNX0JMT0NLXzFfMSAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX05VTV9CTE9DS18xXzIgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfMV9OVU1fQkxPQ0tfMV8zICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzFfTlVNX0JMT0NLXzFfNCAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX0JMU0laRV8xICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChoaWdoKSAqLw0KKw0KKy8qKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ2X1JYXzAgIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8wX0NPVU5UNl9SWF8wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAobG93KSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMF9OVU1fQkxPQ0tfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzBbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAobG93KSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMF9OVU1fQkxPQ0tfMF8wICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYXzBfTlVNX0JMT0NLXzBfMSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8wX05VTV9CTE9DS18wXzIgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMF9OVU1fQkxPQ0tfMF8zICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDMgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYXzBfTlVNX0JMT0NLXzBfNCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCA0ICovDQorDQorI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8wX0JMU0laRV8wICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChsb3cpICovDQorDQorLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ2X1JYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYXzFfQ09VTlQ2X1JYXzEgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChoaWdoKSAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9OVU1fQkxPQ0tfMSAgICAgICAgICgodWludDMyX3QpMHg3QzAwMDAwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzFbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAoaGlnaCkgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYXzFfTlVNX0JMT0NLXzFfMCAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8xX05VTV9CTE9DS18xXzEgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9OVU1fQkxPQ0tfMV8yICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYXzFfTlVNX0JMT0NLXzFfMyAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8xX05VTV9CTE9DS18xXzQgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9CTFNJWkVfMSAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAoaGlnaCkgKi8NCisNCisvKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UN19SWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMF9DT1VOVDdfUlhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGxvdykgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzBfTlVNX0JMT0NLXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDdDMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18wWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGxvdykgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzBfTlVNX0JMT0NLXzBfMCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgVVNCX0NPVU5UN19SWF8wX05VTV9CTE9DS18wXzEgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMF9OVU1fQkxPQ0tfMF8yICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzBfTlVNX0JMT0NLXzBfMyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgVVNCX0NPVU5UN19SWF8wX05VTV9CTE9DS18wXzQgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNCAqLw0KKw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMF9CTFNJWkVfMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAobG93KSAqLw0KKw0KKy8qKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ3X1JYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgVVNCX0NPVU5UN19SWF8xX0NPVU5UN19SWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAoaGlnaCkgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfTlVNX0JMT0NLXzEgICAgICAgICAoKHVpbnQzMl90KTB4N0MwMDAwMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18xWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGhpZ2gpICovDQorI2RlZmluZSAgVVNCX0NPVU5UN19SWF8xX05VTV9CTE9DS18xXzAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMV9OVU1fQkxPQ0tfMV8xICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfTlVNX0JMT0NLXzFfMiAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgVVNCX0NPVU5UN19SWF8xX05VTV9CTE9DS18xXzMgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMV9OVU1fQkxPQ0tfMV80ICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8NCisNCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfQkxTSVpFXzEgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGhpZ2gpICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyBXQVRDSERPRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgV1dER19DUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgV1dER19DUl9UICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4N0YpICAgICAgICAgICAgICAgLyohPCBUWzY6MF0gYml0cyAoNy1CaXQgY291bnRlciAoTVNCIHRvIExTQikpICovDQorI2RlZmluZSAgV1dER19DUl9UMCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAgICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFdXREdfQ1JfVDEgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisjZGVmaW5lICBXV0RHX0NSX1QyICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgICAgICAgICAgICAgICAvKiE8IEJpdCAyICovDQorI2RlZmluZSAgV1dER19DUl9UMyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpICAgICAgICAgICAgICAgLyohPCBCaXQgMyAqLw0KKyNkZWZpbmUgIFdXREdfQ1JfVDQgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgQml0IDQgKi8NCisjZGVmaW5lICBXV0RHX0NSX1Q1ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkgICAgICAgICAgICAgICAvKiE8IEJpdCA1ICovDQorI2RlZmluZSAgV1dER19DUl9UNiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NDApICAgICAgICAgICAgICAgLyohPCBCaXQgNiAqLw0KKw0KKyNkZWZpbmUgIFdXREdfQ1JfV0RHQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDgwKSAgICAgICAgICAgICAgIC8qITwgQWN0aXZhdGlvbiBiaXQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFdXREdfQ0ZSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFdXREdfQ0ZSX1cgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDdGKSAgICAgICAgICAgIC8qITwgV1s2OjBdIGJpdHMgKDctYml0IHdpbmRvdyB2YWx1ZSkgKi8NCisjZGVmaW5lICBXV0RHX0NGUl9XMCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IEJpdCAwICovDQorI2RlZmluZSAgV1dER19DRlJfVzEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBCaXQgMSAqLw0KKyNkZWZpbmUgIFdXREdfQ0ZSX1cyICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgQml0IDIgKi8NCisjZGVmaW5lICBXV0RHX0NGUl9XMyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IEJpdCAzICovDQorI2RlZmluZSAgV1dER19DRlJfVzQgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgNCAqLw0KKyNkZWZpbmUgIFdXREdfQ0ZSX1c1ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDUgKi8NCisjZGVmaW5lICBXV0RHX0NGUl9XNiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IEJpdCA2ICovDQorDQorI2RlZmluZSAgV1dER19DRlJfV0RHVEIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxODApICAgICAgICAgICAgLyohPCBXREdUQlsxOjBdIGJpdHMgKFRpbWVyIEJhc2UpICovDQorI2RlZmluZSAgV1dER19DRlJfV0RHVEIwICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBCaXQgMCAqLw0KKyNkZWZpbmUgIFdXREdfQ0ZSX1dER1RCMSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8NCisNCisjZGVmaW5lICBXV0RHX0NGUl9FV0kgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEVhcmx5IFdha2V1cCBJbnRlcnJ1cHQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFdXREdfU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFdXREdfU1JfRVdJRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgRWFybHkgV2FrZXVwIEludGVycnVwdCBGbGFnICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVRpY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFN5c1RpY2tfQ1RSTCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgU3lzVGlja19DVFJMX0VOQUJMRSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBDb3VudGVyIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFN5c1RpY2tfQ1RSTF9USUNLSU5UICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQ291bnRpbmcgZG93biB0byAwIHBlbmRzIHRoZSBTeXNUaWNrIGhhbmRsZXIgKi8NCisjZGVmaW5lICBTeXNUaWNrX0NUUkxfQ0xLU09VUkNFICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IENsb2NrIHNvdXJjZSAqLw0KKyNkZWZpbmUgIFN5c1RpY2tfQ1RSTF9DT1VOVEZMQUcgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQ291bnQgRmxhZyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFN5c1RpY2tfTE9BRCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgU3lzVGlja19MT0FEX1JFTE9BRCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkZGRkZGKSAgICAgICAgLyohPCBWYWx1ZSB0byBsb2FkIGludG8gdGhlIFN5c1RpY2sgQ3VycmVudCBWYWx1ZSBSZWdpc3RlciB3aGVuIHRoZSBjb3VudGVyIHJlYWNoZXMgMCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFN5c1RpY2tfVkFMIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgU3lzVGlja19WQUxfQ1VSUkVOVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkZGRkZGKSAgICAgICAgLyohPCBDdXJyZW50IHZhbHVlIGF0IHRoZSB0aW1lIHRoZSByZWdpc3RlciBpcyBhY2Nlc3NlZCAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFN5c1RpY2tfQ0FMSUIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgU3lzVGlja19DQUxJQl9URU5NUyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkZGRkZGKSAgICAgICAgLyohPCBSZWxvYWQgdmFsdWUgdG8gdXNlIGZvciAxMG1zIHRpbWluZyAqLw0KKyNkZWZpbmUgIFN5c1RpY2tfQ0FMSUJfU0tFVyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQ2FsaWJyYXRpb24gdmFsdWUgaXMgbm90IGV4YWN0bHkgMTAgbXMgKi8NCisjZGVmaW5lICBTeXNUaWNrX0NBTElCX05PUkVGICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IFRoZSByZWZlcmVuY2UgY2xvY2sgaXMgbm90IHByb3ZpZGVkICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgTmVzdGVkIFZlY3RvcmVkIEludGVycnVwdCBDb250cm9sbGVyICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX0lTRVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgc2V0IGVuYWJsZSBiaXRzICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBiaXQgMCAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgYml0IDEgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IGJpdCAyICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBiaXQgMyAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgYml0IDQgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IGJpdCA1ICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV82ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBiaXQgNiAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfNyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgYml0IDcgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzggICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IGJpdCA4ICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV85ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBiaXQgOSAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMTAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgYml0IDEwICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8xMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBiaXQgMTEgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzEyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IGJpdCAxMiAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMTMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgYml0IDEzICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8xNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBiaXQgMTQgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzE1ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IGJpdCAxNSAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMTYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgYml0IDE2ICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8xNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBiaXQgMTcgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzE4ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IGJpdCAxOCAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMTkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgYml0IDE5ICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8yMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBiaXQgMjAgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzIxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IGJpdCAyMSAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMjIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgYml0IDIyICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8yMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBiaXQgMjMgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzI0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNCAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMjUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgYml0IDI1ICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8yNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjYgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzI3ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNyAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMjggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgYml0IDI4ICovDQorI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8yOSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjkgKi8NCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzMwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IGJpdCAzMCAqLw0KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgYml0IDMxICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIE5WSUNfSUNFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgSW50ZXJydXB0IGNsZWFyLWVuYWJsZSBiaXRzICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBiaXQgMCAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgYml0IDEgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IGJpdCAyICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBiaXQgMyAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgYml0IDQgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IGJpdCA1ICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV82ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBiaXQgNiAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfNyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgYml0IDcgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzggICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IGJpdCA4ICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV85ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBiaXQgOSAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMTAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgYml0IDEwICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8xMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBiaXQgMTEgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzEyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IGJpdCAxMiAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMTMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgYml0IDEzICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8xNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBiaXQgMTQgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzE1ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IGJpdCAxNSAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMTYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgYml0IDE2ICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8xNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBiaXQgMTcgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzE4ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IGJpdCAxOCAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMTkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgYml0IDE5ICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8yMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBiaXQgMjAgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzIxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IGJpdCAyMSAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMjIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgYml0IDIyICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8yMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBiaXQgMjMgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzI0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNCAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMjUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgYml0IDI1ICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8yNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjYgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzI3ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNyAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMjggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgYml0IDI4ICovDQorI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8yOSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjkgKi8NCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzMwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IGJpdCAzMCAqLw0KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgYml0IDMxICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIE5WSUNfSVNQUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IEludGVycnVwdCBzZXQtcGVuZGluZyBiaXRzICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBiaXQgMCAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgYml0IDEgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IGJpdCAyICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBiaXQgMyAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgYml0IDQgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF81ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IGJpdCA1ICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBiaXQgNiAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzcgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgYml0IDcgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF84ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IGJpdCA4ICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfOSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBiaXQgOSAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzEwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgYml0IDEwICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMTEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBiaXQgMTEgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8xMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IGJpdCAxMiAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzEzICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgYml0IDEzICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMTQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBiaXQgMTQgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8xNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IGJpdCAxNSAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzE2ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgYml0IDE2ICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMTcgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBiaXQgMTcgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8xOCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IGJpdCAxOCAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzE5ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgYml0IDE5ICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMjAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBiaXQgMjAgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8yMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IGJpdCAyMSAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzIyICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgYml0IDIyICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMjMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBiaXQgMjMgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8yNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNCAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzI1ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgYml0IDI1ICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMjYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjYgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8yNyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNyAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzI4ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgYml0IDI4ICovDQorI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMjkgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjkgKi8NCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8zMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IGJpdCAzMCAqLw0KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzMxICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgYml0IDMxICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIE5WSUNfSUNQUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IEludGVycnVwdCBjbGVhci1wZW5kaW5nIGJpdHMgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IGJpdCAwICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBiaXQgMSAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgYml0IDIgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IGJpdCAzICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBiaXQgNCAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgYml0IDUgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF82ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IGJpdCA2ICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBiaXQgNyAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgYml0IDggKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF85ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IGJpdCA5ICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMTAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBiaXQgMTAgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8xMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IGJpdCAxMSAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzEyICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgYml0IDEyICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMTMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBiaXQgMTMgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8xNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IGJpdCAxNCAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzE1ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgYml0IDE1ICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMTYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBiaXQgMTYgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8xNyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IGJpdCAxNyAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzE4ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgYml0IDE4ICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMTkgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBiaXQgMTkgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8yMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IGJpdCAyMCAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzIxICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgYml0IDIxICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMjIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjIgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8yMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IGJpdCAyMyAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzI0ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgYml0IDI0ICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMjUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjUgKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8yNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNiAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzI3ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgYml0IDI3ICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMjggICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjggKi8NCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8yOSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IGJpdCAyOSAqLw0KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzMwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgYml0IDMwICovDQorI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMzEgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19JQUJSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgSW50ZXJydXB0IGFjdGl2ZSBmbGFncyAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgYml0IDAgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IGJpdCAxICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBiaXQgMiAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgYml0IDMgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IGJpdCA0ICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV81ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBiaXQgNSAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfNiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgYml0IDYgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzcgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IGJpdCA3ICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV84ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBiaXQgOCAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfOSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgYml0IDkgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzEwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IGJpdCAxMCAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMTEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgYml0IDExICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8xMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBiaXQgMTIgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzEzICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IGJpdCAxMyAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMTQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgYml0IDE0ICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8xNSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBiaXQgMTUgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzE2ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IGJpdCAxNiAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMTcgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgYml0IDE3ICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8xOCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBiaXQgMTggKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzE5ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IGJpdCAxOSAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMjAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgYml0IDIwICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8yMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBiaXQgMjEgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzIyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IGJpdCAyMiAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMjMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgYml0IDIzICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8yNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjQgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzI1ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNSAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMjYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgYml0IDI2ICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8yNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjcgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzI4ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IGJpdCAyOCAqLw0KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMjkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgYml0IDI5ICovDQorI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8zMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMzAgKi8NCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzMxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IGJpdCAzMSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX1BSSTAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgTlZJQ19JUFIwX1BSSV8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMCAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSMF9QUklfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDEgKi8NCisjZGVmaW5lICBOVklDX0lQUjBfUFJJXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAyICovDQorI2RlZmluZSAgTlZJQ19JUFIwX1BSSV8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX1BSSTEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgTlZJQ19JUFIxX1BSSV80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgNCAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSMV9QUklfNSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDUgKi8NCisjZGVmaW5lICBOVklDX0lQUjFfUFJJXzYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCA2ICovDQorI2RlZmluZSAgTlZJQ19JUFIxX1BSSV83ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgNyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX1BSSTIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgTlZJQ19JUFIyX1BSSV84ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgOCAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSMl9QUklfOSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDkgKi8NCisjZGVmaW5lICBOVklDX0lQUjJfUFJJXzEwICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAxMCAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSMl9QUklfMTEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDExICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIE5WSUNfUFJJMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBOVklDX0lQUjNfUFJJXzEyICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAxMiAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSM19QUklfMTMgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDEzICovDQorI2RlZmluZSAgTlZJQ19JUFIzX1BSSV8xNCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMTQgKi8NCisjZGVmaW5lICBOVklDX0lQUjNfUFJJXzE1ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAxNSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX1BSSTQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgTlZJQ19JUFI0X1BSSV8xNiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMTYgKi8NCisjZGVmaW5lICBOVklDX0lQUjRfUFJJXzE3ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAxNyAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSNF9QUklfMTggICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDE4ICovDQorI2RlZmluZSAgTlZJQ19JUFI0X1BSSV8xOSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMTkgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19QUkk1IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIE5WSUNfSVBSNV9QUklfMjAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDIwICovDQorI2RlZmluZSAgTlZJQ19JUFI1X1BSSV8yMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMjEgKi8NCisjZGVmaW5lICBOVklDX0lQUjVfUFJJXzIyICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAyMiAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSNV9QUklfMjMgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDIzICovDQorDQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIE5WSUNfUFJJNiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBOVklDX0lQUjZfUFJJXzI0ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAyNCAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSNl9QUklfMjUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDI1ICovDQorI2RlZmluZSAgTlZJQ19JUFI2X1BSSV8yNiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMjYgKi8NCisjZGVmaW5lICBOVklDX0lQUjZfUFJJXzI3ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAyNyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX1BSSTcgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgTlZJQ19JUFI3X1BSSV8yOCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMjggKi8NCisjZGVmaW5lICBOVklDX0lQUjdfUFJJXzI5ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAyOSAqLw0KKyNkZWZpbmUgIE5WSUNfSVBSN19QUklfMzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDMwICovDQorI2RlZmluZSAgTlZJQ19JUFI3X1BSSV8zMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMzEgKi8NCisNCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0NCX0NQVUlEIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNDQl9DUFVJRF9SRVZJU0lPTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikgICAgICAgIC8qITwgSW1wbGVtZW50YXRpb24gZGVmaW5lZCByZXZpc2lvbiBudW1iZXIgKi8NCisjZGVmaW5lICBTQ0JfQ1BVSURfUEFSVE5PICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGRjApICAgICAgICAvKiE8IE51bWJlciBvZiBwcm9jZXNzb3Igd2l0aGluIGZhbWlseSAqLw0KKyNkZWZpbmUgIFNDQl9DUFVJRF9Db25zdGFudCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBGMDAwMCkgICAgICAgIC8qITwgUmVhZHMgYXMgMHgwRiAqLw0KKyNkZWZpbmUgIFNDQl9DUFVJRF9WQVJJQU5UICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEYwMDAwMCkgICAgICAgIC8qITwgSW1wbGVtZW50YXRpb24gZGVmaW5lZCB2YXJpYW50IG51bWJlciAqLw0KKyNkZWZpbmUgIFNDQl9DUFVJRF9JTVBMRU1FTlRFUiAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgSW1wbGVtZW50ZXIgY29kZS4gQVJNIGlzIDB4NDEgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9JQ1NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNDQl9JQ1NSX1ZFQ1RBQ1RJVkUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDFGRikgICAgICAgIC8qITwgQWN0aXZlIElTUiBudW1iZXIgZmllbGQgKi8NCisjZGVmaW5lICBTQ0JfSUNTUl9SRVRUT0JBU0UgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEFsbCBhY3RpdmUgZXhjZXB0aW9ucyBtaW51cyB0aGUgSVBTUl9jdXJyZW50X2V4Y2VwdGlvbiB5aWVsZHMgdGhlIGVtcHR5IHNldCAqLw0KKyNkZWZpbmUgIFNDQl9JQ1NSX1ZFQ1RQRU5ESU5HICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDNGRjAwMCkgICAgICAgIC8qITwgUGVuZGluZyBJU1IgbnVtYmVyIGZpZWxkICovDQorI2RlZmluZSAgU0NCX0lDU1JfSVNSUEVORElORyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgcGVuZGluZyBmbGFnICovDQorI2RlZmluZSAgU0NCX0lDU1JfSVNSUFJFRU1QVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBJdCBpbmRpY2F0ZXMgdGhhdCBhIHBlbmRpbmcgaW50ZXJydXB0IGJlY29tZXMgYWN0aXZlIGluIHRoZSBuZXh0IHJ1bm5pbmcgY3ljbGUgKi8NCisjZGVmaW5lICBTQ0JfSUNTUl9QRU5EU1RDTFIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IENsZWFyIHBlbmRpbmcgU3lzVGljayBiaXQgKi8NCisjZGVmaW5lICBTQ0JfSUNTUl9QRU5EU1RTRVQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IFNldCBwZW5kaW5nIFN5c1RpY2sgYml0ICovDQorI2RlZmluZSAgU0NCX0lDU1JfUEVORFNWQ0xSICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBDbGVhciBwZW5kaW5nIHBlbmRTViBiaXQgKi8NCisjZGVmaW5lICBTQ0JfSUNTUl9QRU5EU1ZTRVQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IFNldCBwZW5kaW5nIHBlbmRTViBiaXQgKi8NCisjZGVmaW5lICBTQ0JfSUNTUl9OTUlQRU5EU0VUICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IFNldCBwZW5kaW5nIE5NSSBiaXQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9WVE9SIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNDQl9WVE9SX1RCTE9GRiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxRkZGRkY4MCkgICAgICAgIC8qITwgVmVjdG9yIHRhYmxlIGJhc2Ugb2Zmc2V0IGZpZWxkICovDQorI2RlZmluZSAgU0NCX1ZUT1JfVEJMQkFTRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBUYWJsZSBiYXNlIGluIGNvZGUoMCkgb3IgUkFNKDEpICovDQorDQorLyohPCoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0NCX0FJUkNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNDQl9BSVJDUl9WRUNUUkVTRVQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgU3lzdGVtIFJlc2V0IGJpdCAqLw0KKyNkZWZpbmUgIFNDQl9BSVJDUl9WRUNUQ0xSQUNUSVZFICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQ2xlYXIgYWN0aXZlIHZlY3RvciBiaXQgKi8NCisjZGVmaW5lICBTQ0JfQUlSQ1JfU1lTUkVTRVRSRVEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFJlcXVlc3RzIGNoaXAgY29udHJvbCBsb2dpYyB0byBnZW5lcmF0ZSBhIHJlc2V0ICovDQorDQorI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNzAwKSAgICAgICAgLyohPCBQUklHUk9VUFsyOjBdIGJpdHMgKFByaW9yaXR5IGdyb3VwKSAqLw0KKyNkZWZpbmUgIFNDQl9BSVJDUl9QUklHUk9VUF8wICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDAgKi8NCisjZGVmaW5lICBTQ0JfQUlSQ1JfUFJJR1JPVVBfMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAxICovDQorI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQXzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAgKi8NCisNCisvKiBwcm9yaXR5IGdyb3VwIGNvbmZpZ3VyYXRpb24gKi8NCisjZGVmaW5lICBTQ0JfQUlSQ1JfUFJJR1JPVVAwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IGdyb3VwPTAgKDcgYml0cyBvZiBwcmUtZW1wdGlvbiBwcmlvcml0eSwgMSBiaXQgb2Ygc3VicHJpb3JpdHkpICovDQorI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBQcmlvcml0eSBncm91cD0xICg2IGJpdHMgb2YgcHJlLWVtcHRpb24gcHJpb3JpdHksIDIgYml0cyBvZiBzdWJwcmlvcml0eSkgKi8NCisjZGVmaW5lICBTQ0JfQUlSQ1JfUFJJR1JPVVAyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFByaW9yaXR5IGdyb3VwPTIgKDUgYml0cyBvZiBwcmUtZW1wdGlvbiBwcmlvcml0eSwgMyBiaXRzIG9mIHN1YnByaW9yaXR5KSAqLw0KKyNkZWZpbmUgIFNDQl9BSVJDUl9QUklHUk9VUDMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDMwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgZ3JvdXA9MyAoNCBiaXRzIG9mIHByZS1lbXB0aW9uIHByaW9yaXR5LCA0IGJpdHMgb2Ygc3VicHJpb3JpdHkpICovDQorI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBncm91cD00ICgzIGJpdHMgb2YgcHJlLWVtcHRpb24gcHJpb3JpdHksIDUgYml0cyBvZiBzdWJwcmlvcml0eSkgKi8NCisjZGVmaW5lICBTQ0JfQUlSQ1JfUFJJR1JPVVA1ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA1MDApICAgICAgICAvKiE8IFByaW9yaXR5IGdyb3VwPTUgKDIgYml0cyBvZiBwcmUtZW1wdGlvbiBwcmlvcml0eSwgNiBiaXRzIG9mIHN1YnByaW9yaXR5KSAqLw0KKyNkZWZpbmUgIFNDQl9BSVJDUl9QUklHUk9VUDYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgZ3JvdXA9NiAoMSBiaXQgb2YgcHJlLWVtcHRpb24gcHJpb3JpdHksIDcgYml0cyBvZiBzdWJwcmlvcml0eSkgKi8NCisjZGVmaW5lICBTQ0JfQUlSQ1JfUFJJR1JPVVA3ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA3MDApICAgICAgICAvKiE8IFByaW9yaXR5IGdyb3VwPTcgKG5vIHByZS1lbXB0aW9uIHByaW9yaXR5LCA4IGJpdHMgb2Ygc3VicHJpb3JpdHkpICovDQorDQorI2RlZmluZSAgU0NCX0FJUkNSX0VORElBTkVTUyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBEYXRhIGVuZGlhbm5lc3MgYml0ICovDQorI2RlZmluZSAgU0NCX0FJUkNSX1ZFQ1RLRVkgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkYwMDAwKSAgICAgICAgLyohPCBSZWdpc3RlciBrZXkgKFZFQ1RLRVkpIC0gUmVhZHMgYXMgMHhGQTA1IChWRUNUS0VZU1RBVCkgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9TQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNDQl9TQ1JfU0xFRVBPTkVYSVQgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgU2xlZXAgb24gZXhpdCBiaXQgKi8NCisjZGVmaW5lICBTQ0JfU0NSX1NMRUVQREVFUCAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgICAgICAgICAgICAgICAvKiE8IFNsZWVwIGRlZXAgYml0ICovDQorI2RlZmluZSAgU0NCX1NDUl9TRVZPTlBFTkQgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTApICAgICAgICAgICAgICAgLyohPCBXYWtlIHVwIGZyb20gV0ZFICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0NCX0NDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBTQ0JfQ0NSX05PTkJBU0VUSFJERU5BICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFRocmVhZCBtb2RlIGNhbiBiZSBlbnRlcmVkIGZyb20gYW55IGxldmVsIGluIEhhbmRsZXIgbW9kZSBieSBjb250cm9sbGVkIHJldHVybiB2YWx1ZSAqLw0KKyNkZWZpbmUgIFNDQl9DQ1JfVVNFUlNFVE1QRU5EICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgRW5hYmxlcyB1c2VyIGNvZGUgdG8gd3JpdGUgdGhlIFNvZnR3YXJlIFRyaWdnZXIgSW50ZXJydXB0IHJlZ2lzdGVyIHRvIHRyaWdnZXIgKHBlbmQpIGEgTWFpbiBleGNlcHRpb24gKi8NCisjZGVmaW5lICBTQ0JfQ0NSX1VOQUxJR05fVFJQICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFRyYXAgZm9yIHVuYWxpZ25lZCBhY2Nlc3MgKi8NCisjZGVmaW5lICBTQ0JfQ0NSX0RJVl8wX1RSUCAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IFRyYXAgb24gRGl2aWRlIGJ5IDAgKi8NCisjZGVmaW5lICBTQ0JfQ0NSX0JGSEZOTUlHTiAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEhhbmRsZXJzIHJ1bm5pbmcgYXQgcHJpb3JpdHkgLTEgYW5kIC0yICovDQorI2RlZmluZSAgU0NCX0NDUl9TVEtBTElHTiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBPbiBleGNlcHRpb24gZW50cnksIHRoZSBTUCB1c2VkIHByaW9yIHRvIHRoZSBleGNlcHRpb24gaXMgYWRqdXN0ZWQgdG8gYmUgOC1ieXRlIGFsaWduZWQgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9TSFBSIHJlZ2lzdGVyICoqKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNDQl9TSFBSX1BSSV9OICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgUHJpb3JpdHkgb2Ygc3lzdGVtIGhhbmRsZXIgNCw4LCBhbmQgMTIuIE1lbSBNYW5hZ2UsIHJlc2VydmVkIGFuZCBEZWJ1ZyBNb25pdG9yICovDQorI2RlZmluZSAgU0NCX1NIUFJfUFJJX04xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBzeXN0ZW0gaGFuZGxlciA1LDksIGFuZCAxMy4gQnVzIEZhdWx0LCByZXNlcnZlZCBhbmQgcmVzZXJ2ZWQgKi8NCisjZGVmaW5lICBTQ0JfU0hQUl9QUklfTjIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIHN5c3RlbSBoYW5kbGVyIDYsMTAsIGFuZCAxNC4gVXNhZ2UgRmF1bHQsIHJlc2VydmVkIGFuZCBQZW5kU1YgKi8NCisjZGVmaW5lICBTQ0JfU0hQUl9QUklfTjMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIHN5c3RlbSBoYW5kbGVyIDcsMTEsIGFuZCAxNS4gUmVzZXJ2ZWQsIFNWQ2FsbCBhbmQgU3lzVGljayAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTQ0JfU0hDU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgU0NCX1NIQ1NSX01FTUZBVUxUQUNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBNZW1NYW5hZ2UgaXMgYWN0aXZlICovDQorI2RlZmluZSAgU0NCX1NIQ1NSX0JVU0ZBVUxUQUNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCdXNGYXVsdCBpcyBhY3RpdmUgKi8NCisjZGVmaW5lICBTQ0JfU0hDU1JfVVNHRkFVTFRBQ1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IFVzYWdlRmF1bHQgaXMgYWN0aXZlICovDQorI2RlZmluZSAgU0NCX1NIQ1NSX1NWQ0FMTEFDVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBTVkNhbGwgaXMgYWN0aXZlICovDQorI2RlZmluZSAgU0NCX1NIQ1NSX01PTklUT1JBQ1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBNb25pdG9yIGlzIGFjdGl2ZSAqLw0KKyNkZWZpbmUgIFNDQl9TSENTUl9QRU5EU1ZBQ1QgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgUGVuZFNWIGlzIGFjdGl2ZSAqLw0KKyNkZWZpbmUgIFNDQl9TSENTUl9TWVNUSUNLQUNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgU3lzVGljayBpcyBhY3RpdmUgKi8NCisjZGVmaW5lICBTQ0JfU0hDU1JfVVNHRkFVTFRQRU5ERUQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFVzYWdlIEZhdWx0IGlzIHBlbmRlZCAqLw0KKyNkZWZpbmUgIFNDQl9TSENTUl9NRU1GQVVMVFBFTkRFRCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgTWVtTWFuYWdlIGlzIHBlbmRlZCAqLw0KKyNkZWZpbmUgIFNDQl9TSENTUl9CVVNGQVVMVFBFTkRFRCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQnVzIEZhdWx0IGlzIHBlbmRlZCAqLw0KKyNkZWZpbmUgIFNDQl9TSENTUl9TVkNBTExQRU5ERUQgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgU1ZDYWxsIGlzIHBlbmRlZCAqLw0KKyNkZWZpbmUgIFNDQl9TSENTUl9NRU1GQVVMVEVOQSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgTWVtTWFuYWdlIGVuYWJsZSAqLw0KKyNkZWZpbmUgIFNDQl9TSENTUl9CVVNGQVVMVEVOQSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQnVzIEZhdWx0IGVuYWJsZSAqLw0KKyNkZWZpbmUgIFNDQl9TSENTUl9VU0dGQVVMVEVOQSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgVXNhZ2VGYXVsdCBlbmFibGUgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9DRlNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLw0KKy8qITwgTUZTUiAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX0lBQ0NWSU9MICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgSW5zdHJ1Y3Rpb24gYWNjZXNzIHZpb2xhdGlvbiAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX0RBQ0NWSU9MICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRGF0YSBhY2Nlc3MgdmlvbGF0aW9uICovDQorI2RlZmluZSAgU0NCX0NGU1JfTVVOU1RLRVJSICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBVbnN0YWNraW5nIGVycm9yICovDQorI2RlZmluZSAgU0NCX0NGU1JfTVNUS0VSUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBTdGFja2luZyBlcnJvciAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX01NQVJWQUxJRCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgTWVtb3J5IE1hbmFnZSBBZGRyZXNzIFJlZ2lzdGVyIGFkZHJlc3MgdmFsaWQgZmxhZyAqLw0KKy8qITwgQkZTUiAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX0lCVVNFUlIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgSW5zdHJ1Y3Rpb24gYnVzIGVycm9yIGZsYWcgKi8NCisjZGVmaW5lICBTQ0JfQ0ZTUl9QUkVDSVNFUlIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFByZWNpc2UgZGF0YSBidXMgZXJyb3IgKi8NCisjZGVmaW5lICBTQ0JfQ0ZTUl9JTVBSRUNJU0VSUiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEltcHJlY2lzZSBkYXRhIGJ1cyBlcnJvciAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX1VOU1RLRVJSICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgVW5zdGFja2luZyBlcnJvciAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX1NUS0VSUiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgU3RhY2tpbmcgZXJyb3IgKi8NCisjZGVmaW5lICBTQ0JfQ0ZTUl9CRkFSVkFMSUQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJ1cyBGYXVsdCBBZGRyZXNzIFJlZ2lzdGVyIGFkZHJlc3MgdmFsaWQgZmxhZyAqLw0KKy8qITwgVUZTUiAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX1VOREVGSU5TVFIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgVGhlIHByb2Nlc3NvciBhdHRlbXB0IHRvIGV4Y2VjdXRlIGFuIHVuZGVmaW5lZCBpbnN0cnVjdGlvbiAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX0lOVlNUQVRFICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgSW52YWxpZCBjb21iaW5hdGlvbiBvZiBFUFNSIGFuZCBpbnN0cnVjdGlvbiAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX0lOVlBDICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQXR0ZW1wdCB0byBsb2FkIEVYQ19SRVRVUk4gaW50byBwYyBpbGxlZ2FsbHkgKi8NCisjZGVmaW5lICBTQ0JfQ0ZTUl9OT0NQICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEF0dGVtcHQgdG8gdXNlIGEgY29wcm9jZXNzb3IgaW5zdHJ1Y3Rpb24gKi8NCisjZGVmaW5lICBTQ0JfQ0ZTUl9VTkFMSUdORUQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEZhdWx0IG9jY3VycyB3aGVuIHRoZXJlIGlzIGFuIGF0dGVtcHQgdG8gbWFrZSBhbiB1bmFsaWduZWQgbWVtb3J5IGFjY2VzcyAqLw0KKyNkZWZpbmUgIFNDQl9DRlNSX0RJVkJZWkVSTyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgRmF1bHQgb2NjdXJzIHdoZW4gU0RJViBvciBESVYgaW5zdHJ1Y3Rpb24gaXMgdXNlZCB3aXRoIGEgZGl2aXNvciBvZiAwICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTQ0JfSEZTUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBTQ0JfSEZTUl9WRUNUVEJMICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZhdWx0IG9jY3VyZXMgYmVjYXVzZSBvZiB2ZWN0b3IgdGFibGUgcmVhZCBvbiBleGNlcHRpb24gcHJvY2Vzc2luZyAqLw0KKyNkZWZpbmUgIFNDQl9IRlNSX0ZPUkNFRCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgSGFyZCBGYXVsdCBhY3RpdmF0ZWQgd2hlbiBhIGNvbmZpZ3VyYWJsZSBGYXVsdCB3YXMgcmVjZWl2ZWQgYW5kIGNhbm5vdCBhY3RpdmF0ZSAqLw0KKyNkZWZpbmUgIFNDQl9IRlNSX0RFQlVHRVZUICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgRmF1bHQgcmVsYXRlZCB0byBkZWJ1ZyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0NCX0RGU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovDQorI2RlZmluZSAgU0NCX0RGU1JfSEFMVEVEICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAgICAgICAgICAgICAgLyohPCBIYWx0IHJlcXVlc3QgZmxhZyAqLw0KKyNkZWZpbmUgIFNDQl9ERlNSX0JLUFQgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgQktQVCBmbGFnICovDQorI2RlZmluZSAgU0NCX0RGU1JfRFdUVFJBUCAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpICAgICAgICAgICAgICAgLyohPCBEYXRhIFdhdGNocG9pbnQgYW5kIFRyYWNlIChEV1QpIGZsYWcgKi8NCisjZGVmaW5lICBTQ0JfREZTUl9WQ0FUQ0ggICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkgICAgICAgICAgICAgICAvKiE8IFZlY3RvciBjYXRjaCBmbGFnICovDQorI2RlZmluZSAgU0NCX0RGU1JfRVhURVJOQUwgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTApICAgICAgICAgICAgICAgLyohPCBFeHRlcm5hbCBkZWJ1ZyByZXF1ZXN0IGZsYWcgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9NTUZBUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgIFNDQl9NTUZBUl9BRERSRVNTICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgTWVtIE1hbmFnZSBmYXVsdCBhZGRyZXNzIGZpZWxkICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTQ0JfQkZBUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBTQ0JfQkZBUl9BRERSRVNTICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IEJ1cyBmYXVsdCBhZGRyZXNzIGZpZWxkICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTQ0JfYWZzciByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8NCisjZGVmaW5lICBTQ0JfQUZTUl9JTVBERUYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IEltcGxlbWVudGF0aW9uIGRlZmluZWQgKi8NCisvKioNCisgICogQH0NCisgICovDQorDQorIC8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorI2lmZGVmIFVTRV9TVERQRVJJUEhfRFJJVkVSDQorICAjaW5jbHVkZSAic3RtMzJsMXh4X2NvbmYuaCINCisjZW5kaWYNCisNCisvKiogQGFkZHRvZ3JvdXAgRXhwb3J0ZWRfbWFjcm8NCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBTRVRfQklUKFJFRywgQklUKSAgICAgKChSRUcpIHw9IChCSVQpKQ0KKw0KKyNkZWZpbmUgQ0xFQVJfQklUKFJFRywgQklUKSAgICgoUkVHKSAmPSB+KEJJVCkpDQorDQorI2RlZmluZSBSRUFEX0JJVChSRUcsIEJJVCkgICAgKChSRUcpICYgKEJJVCkpDQorDQorI2RlZmluZSBDTEVBUl9SRUcoUkVHKSAgICAgICAgKChSRUcpID0gKDB4MCkpDQorDQorI2RlZmluZSBXUklURV9SRUcoUkVHLCBWQUwpICAgKChSRUcpID0gKFZBTCkpDQorDQorI2RlZmluZSBSRUFEX1JFRyhSRUcpICAgICAgICAgKChSRUcpKQ0KKw0KKyNkZWZpbmUgTU9ESUZZX1JFRyhSRUcsIENMRUFSTUFTSywgU0VUTUFTSykgIFdSSVRFX1JFRygoUkVHKSwgKCgoUkVBRF9SRUcoUkVHKSkgJiAofihDTEVBUk1BU0spKSkgfCAoU0VUTUFTSykpKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorI2VuZGlmIC8qIF9fU1RNMzJMMVhYX0ggKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorICAvKioNCisgICogQH0NCisgICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9DTTMvRGV2aWNlU3VwcG9ydC9TVC9TVE0zMkwxeHgvc3lzdGVtX3N0bTMybDF4eC5oIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0RldmljZVN1cHBvcnQvU1QvU1RNMzJMMXh4L3N5c3RlbV9zdG0zMmwxeHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjJlYzA3Ci0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ00zL0RldmljZVN1cHBvcnQvU1QvU1RNMzJMMXh4L3N5c3RlbV9zdG0zMmwxeHguaApAQCAtMCwwICsxLDk3IEBACisvKioNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAZmlsZSAgICBzeXN0ZW1fc3RtMzJsMXh4LmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgQ01TSVMgQ29ydGV4LU0zIERldmljZSBQZXJpcGhlcmFsIEFjY2VzcyBMYXllciBTeXN0ZW0gSGVhZGVyIEZpbGUuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIA0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgQ01TSVMNCisgICogQHsNCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIHN0bTMybDF4eF9zeXN0ZW0NCisgICogQHsNCisgICovICANCisgIA0KKy8qKg0KKyAgKiBAYnJpZWYgRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbg0KKyAgKi8NCisjaWZuZGVmIF9fU1lTVEVNX1NUTTMyTDFYWF9IDQorI2RlZmluZSBfX1NZU1RFTV9TVE0zMkwxWFhfSA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyBleHRlcm4gIkMiIHsNCisjZW5kaWYgDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TeXN0ZW1fSW5jbHVkZXMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3lzdGVtX0V4cG9ydGVkX3R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KK2V4dGVybiB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2s7ICAgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TeXN0ZW1fRXhwb3J0ZWRfQ29uc3RhbnRzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMXh4X1N5c3RlbV9FeHBvcnRlZF9NYWNyb3MNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3lzdGVtX0V4cG9ydGVkX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisgIA0KK2V4dGVybiB2b2lkIFN5c3RlbUluaXQodm9pZCk7DQorZXh0ZXJuIHZvaWQgU3lzdGVtQ29yZUNsb2NrVXBkYXRlKHZvaWQpOw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorI2VuZGlmIC8qX19TWVNURU1fU1RNMzJMMVhYX0ggKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorICANCisvKioNCisgICogQH0NCisgICovICANCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNU0lTIGNoYW5nZXMuaHRtIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ01TSVMgY2hhbmdlcy5odG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyZmZjYwotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNU0lTIGNoYW5nZXMuaHRtCkBAIC0wLDAgKzEsMzIwIEBACis8aHRtbD4NCisNCis8aGVhZD4NCis8dGl0bGU+Q01TSVMgQ2hhbmdlczwvdGl0bGU+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4NCis8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNi4wIj4NCis8bWV0YSBuYW1lPSJQcm9nSWQiIGNvbnRlbnQ9IkZyb250UGFnZS5FZGl0b3IuRG9jdW1lbnQiPg0KKzxzdHlsZT4NCis8IS0tDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0tlaWwgU29mdHdhcmUgQ0hNIFN0eWxlIFNoZWV0DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KK2JvZHkgICAgICAgICB7IGNvbG9yOiAjMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyBmb250LXNpemU6IDc1JTsgZm9udC1mYW1pbHk6IA0KKyAgICAgICAgICAgICAgIFZlcmRhbmEsIEFyaWFsLCAnU2FucyBTZXJpZicgfQ0KK2E6bGluayAgICAgICB7IGNvbG9yOiAjMDAwMEZGOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB9DQorYTp2aXNpdGVkICAgIHsgY29sb3I6ICMwMDAwRkY7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIH0NCithOmFjdGl2ZSAgICAgeyBjb2xvcjogI0ZGMDAwMDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQ0KK2E6aG92ZXIgICAgICB7IGNvbG9yOiAjRkYwMDAwOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB9DQoraDEgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMThwdDsgY29sb3I6ICMwMDAwODA7IGZvbnQtd2VpZ2h0OiBib2xkOyANCisgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBDZW50ZXI7IG1hcmdpbi1yaWdodDogMyB9DQoraDIgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTRwdDsgY29sb3I6ICMwMDAwODA7IGZvbnQtd2VpZ2h0OiBib2xkOyANCisgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDQ0NDOyBtYXJnaW4tdG9wOiAyNDsgbWFyZ2luLWJvdHRvbTogMzsgDQorICAgICAgICAgICAgICAgcGFkZGluZzogNiB9DQoraDMgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGJhY2tncm91bmQtY29sb3I6IA0KKyAgICAgICAgICAgICAgICNDQ0NDQ0M7IG1hcmdpbi10b3A6IDI0OyBtYXJnaW4tYm90dG9tOiAzOyBwYWRkaW5nOiA2IH0NCitwcmUgICAgICAgICAgeyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGZvbnQtc2l6ZTogMTBwdDsgYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQzsgDQorICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDI0OyBtYXJnaW4tcmlnaHQ6IDI0IH0NCit1bCAgICAgICAgICAgeyBsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsgbWFyZ2luLXRvcDogNnB0OyBtYXJnaW4tYm90dG9tOiAwIH0NCitvbCAgICAgICAgICAgeyBtYXJnaW4tdG9wOiA2cHQ7IG1hcmdpbi1ib3R0b206IDAgfQ0KK2xpICAgICAgICAgICB7IGNsZWFyOiBib3RoOyBtYXJnaW4tYm90dG9tOiA2cHQgfQ0KK3RhYmxlICAgICAgICB7IGZvbnQtc2l6ZTogMTAwJTsgYm9yZGVyLXdpZHRoOiAwOyBwYWRkaW5nOiAwIH0NCit0aCAgICAgICAgICAgeyBjb2xvcjogI0ZGRkZGRjsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDA4MDsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IA0KKyAgICAgICAgICAgICAgIGJvdHRvbTsgcGFkZGluZy1yaWdodDogNnB0IH0NCit0ciAgICAgICAgICAgeyB0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wIH0NCit0ZCAgICAgICAgICAgeyB0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBwYWRkaW5nLXJpZ2h0OiA2cHQgfQ0KKy5Ub29sVCAgICAgICB7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogIzgwODA4MCB9DQorLlRpbnlUICAgICAgIHsgZm9udC1zaXplOiA4cHQ7IHRleHQtYWxpZ246IENlbnRlciB9DQorY29kZSAgICAgICAgIHsgY29sb3I6ICMwMDAwMDA7IGJhY2tncm91bmQtY29sb3I6ICNFMEUwRTA7IGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb3VyaWVyOyANCisgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTIwJTsgZm9udC1zdHlsZTogbm9ybWFsIH0NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorTm90ZXMNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorcC5ub3RlICAgICAgIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNsZWFyOiBib3RoOyBtYXJnaW4tYm90dG9tOiAzcHQ7IHBhZGRpbmctdG9wOiA2cHQgfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitFeHBhbmRpbmcvQ29udHJhY3RpbmcgRGl2aXNpb25zDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNleHBhbmQgICAgICB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgbWFyZ2luLWJvdHRvbTogM3B0IH0NCitpbWcuZXhwYW5kICAgeyBib3JkZXItc3R5bGU6IG5vbmU7IGJvcmRlci13aWR0aDogbWVkaXVtIH0NCitkaXYuZXhwYW5kICAgeyBkaXNwbGF5OiBub25lOyBtYXJnaW4tbGVmdDogOXB0OyBtYXJnaW4tdG9wOiAwIH0NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorV2hlcmUgTGlzdCBUYWdzDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KK3Aud2ggICAgICAgICB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjbGVhcjogYm90aDsgbWFyZ2luLXRvcDogNnB0OyBtYXJnaW4tYm90dG9tOiAzcHQgfQ0KK3RhYmxlLndoICAgICB7IHdpZHRoOiAxMDAlIH0NCit0ZC53aEl0ZW0gICAgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyBmb250LXN0eWxlOiBpdGFsaWM7IHBhZGRpbmctcmlnaHQ6IDZwdDsgcGFkZGluZy1ib3R0b206IA0KKyAgICAgICAgICAgICAgIDZwdCB9DQordGQud2hEZXNjICAgIHsgcGFkZGluZy1ib3R0b206IDZwdCB9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0tlaWwgVGFibGUgVGFncw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCit0YWJsZS5rdCAgICAgeyBib3JkZXI6IDFwdCBzb2xpZCAjMDAwMDAwIH0NCit0aC5rdCAgICAgICAgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyBib3JkZXItYm90dG9tOiAxcHQgc29saWQgIzAwMDAwMDsgcGFkZGluZy1sZWZ0OiA2cHQ7IA0KKyAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDZwdDsgcGFkZGluZy10b3A6IDRwdDsgcGFkZGluZy1ib3R0b206IDRwdCB9DQordHIua3QgICAgICAgIHsgIH0NCit0ZC5rdCAgICAgICAgeyBjb2xvcjogIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjogI0UwRTBFMDsgYm9yZGVyLXRvcDogMXB0IHNvbGlkICNBMEEwQTA7IA0KKyAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNnB0OyBwYWRkaW5nLXJpZ2h0OiA2cHQ7IHBhZGRpbmctdG9wOiAycHQ7IA0KKyAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAycHQgfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLS0+DQorDQorPC9zdHlsZT4NCis8L2hlYWQ+DQorDQorPGJvZHk+DQorDQorPGgxPkNoYW5nZXMgdG8gQ01TSVMgdmVyc2lvbiBWMS4yMDwvaDE+DQorDQorPGhyPg0KKw0KKzxoMj4xLiBSZW1vdmVkIENNU0lTIE1pZGRlbHdhcmUgcGFja2FnZXM8L2gyPg0KKzxwPg0KKyAgQ01TSVMgTWlkZGxld2FyZSBpcyBvbiBob2xkIGZyb20gQVJNIHNpZGUgdW50aWwgYSBhZ3JlZW1lbnQgYmV0d2VlbiBhbGwgQ01TSVMgcGFydG5lcnMgaXMgZm91bmQuDQorPC9wPg0KKw0KKzxoMj4yLiBTeXN0ZW1GcmVxdWVuY3kgcmVuYW1lZCB0byBTeXN0ZW1Db3JlQ2xvY2s8L2gyPg0KKzxwPg0KKyAgVGhlIHZhcmlhYmxlIG5hbWUgPHN0cm9uZz5TeXN0ZW1Db3JlQ2xvY2s8L3N0cm9uZz4gaXMgbW9yZSBwcmVjaXNlIHRoYW4gPHN0cm9uZz5TeXN0ZW1GcmVxdWVuY3k8L3N0cm9uZz4NCisgIGJlY2F1c2UgdGhlIHZhcmlhYmxlIGhvbGRzIHRoZSBjbG9jayB2YWx1ZSBhdCB3aGljaCB0aGUgY29yZSBpcyBydW5uaW5nLg0KKzwvcD4NCisNCis8aDI+My4gQ2hhbmdlZCBzdGFydHVwIGNvbmNlcHQ8L2gyPg0KKzxwPg0KKyAgVGhlIG9sZCBzdGFydHVwIGNvbmNlcHQgKGNhbGxpbmcgU3lzdGVtSW5pdF9FeHRNZW1DdGwgZnJvbSBzdGFydHVwIGZpbGUgYW5kIGNhbGxpbmcgU3lzdGVtSW5pdCANCisgIGZyb20gbWFpbikgaGFzIHRoZSB3ZWFrbmVzcyB0aGF0IGl0IGRvZXMgbm90IHdvcmsgZm9yIGNvbnRyb2xsZXJzIHdoaWNoIG5lZWQgYSBhbHJlYWR5IA0KKyAgY29uZmlndWVyZCBjbG9jayBzeXN0ZW0gdG8gY29uZmlndXJlIHRoZSBleHRlcm5hbCBtZW1vcnkgY29udHJvbGxlci4NCis8L3A+DQorDQorPGgzPkNoYW5nZWQgc3RhcnR1cCBjb25jZXB0PC9oMz4NCis8dWw+DQorICA8bGk+DQorICAgIFN5c3RlbUluaXQoKSBpcyBjYWxsZWQgZnJvbSBzdGFydHVwIGZpbGUgYmVmb3JlIDxzdHJvbmc+cHJlbWFpbjwvc3Ryb25nPi4NCisgIDwvbGk+DQorICA8bGk+DQorICAgIDxzdHJvbmc+U3lzdGVtSW5pdCgpPC9zdHJvbmc+IGNvbmZpZ3VyZXMgdGhlIGNsb2NrIHN5c3RlbSBhbmQgYWxzbyBjb25maWd1cmVzDQorICAgIGFuIGV4aXN0aW5nIGV4dGVybmFsIG1lbW9yeSBjb250cm9sbGVyLg0KKyAgPC9saT4NCisgIDxsaT4NCisgICAgPHN0cm9uZz5TeXN0ZW1Jbml0KCk8L3N0cm9uZz4gbXVzdCBub3QgdXNlIGdsb2JhbCB2YXJpYWJsZXMuDQorICA8L2xpPg0KKyAgPGxpPg0KKyAgICA8c3Ryb25nPlN5c3RlbUNvcmVDbG9jazwvc3Ryb25nPiBpcyBpbml0aWFsaXplZCB3aXRoIGEgY29ycmVjdCBwcmVkZWZpbmVkIHZhbHVlLg0KKyAgPC9saT4NCisgIDxsaT4NCisgICAgQWRkaXRpb25hbCBmdW5jdGlvbiA8c3Ryb25nPnZvaWQgU3lzdGVtQ29yZUNsb2NrVXBkYXRlICh2b2lkKTwvc3Ryb25nPiBpcyBwcm92aWRlZC48YnI+DQorICAgPHN0cm9uZz5TeXN0ZW1Db3JlQ2xvY2tVcGRhdGUoKTwvc3Ryb25nPiB1cGRhdGVzIHRoZSB2YXJpYWJsZSA8c3Ryb25nPlN5c3RlbUNvcmVDbG9jazwvc3Ryb25nPg0KKyAgIGFuZCBtdXN0IGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgY29yZSBjbG9jayBpcyBjaGFuZ2VkLjxicj4NCisgICA8c3Ryb25nPlN5c3RlbUNvcmVDbG9ja1VwZGF0ZSgpPC9zdHJvbmc+IGV2YWx1YXRlcyB0aGUgY2xvY2sgcmVnaXN0ZXIgc2V0dGluZ3MgYW5kIGNhbGN1bGF0ZXMNCisgICB0aGUgY3VycmVudCBjb3JlIGNsb2NrLg0KKyAgPC9saT4NCis8L3VsPg0KKyAgICAgIA0KKw0KKzxoMj40LiBBZHZhbmNlZCBEZWJ1ZyBGdW5jdGlvbnM8L2gyPg0KKzxwPg0KKyAgSVRNIGNvbW11bmljYXRpb24gY2hhbm5lbCBpcyBvbmx5IGNhcGFibGUgZm9yIE9VVCBkaXJlY3Rpb24uIFRvIGFsbG93IGFsc28gY29tbXVuaWNhdGlvbiBmb3INCisgIElOIGRpcmVjdGlvbiBhIHNpbXBsZSBjb25jZXB0IGlzIHByb3ZpZGVkLg0KKzwvcD4NCis8dWw+DQorICA8bGk+DQorICAgIEdsb2JhbCB2YXJpYWJsZSA8c3Ryb25nPnZvbGF0aWxlIGludCBJVE1fUnhCdWZmZXI8L3N0cm9uZz4gdXNlZCBmb3IgSU4gZGF0YS4NCisgIDwvbGk+DQorICA8bGk+DQorICAgIEZ1bmN0aW9uIDxzdHJvbmc+aW50IElUTV9DaGVja0NoYXIgKHZvaWQpPC9zdHJvbmc+IGNoZWNrcyBpZiBhIG5ldyBjaGFyYWN0ZXIgaXMgYXZhaWxhYmxlLg0KKyAgPC9saT4NCisgIDxsaT4NCisgICAgRnVuY3Rpb24gPHN0cm9uZz5pbnQgSVRNX1JlY2VpdmVDaGFyICh2b2lkKTwvc3Ryb25nPiByZXRyaWV2ZXMgdGhlIG5ldyBjaGFyYWN0ZXIuDQorICA8L2xpPg0KKzwvdWw+DQorDQorPHA+DQorICBGb3IgZGV0YWlsZWQgZXhwbGFuYXRpb24gc2VlIGZpbGUgPHN0cm9uZz5DTVNJUyBkZWJ1ZyBzdXBwb3J0Lmh0bTwvc3Ryb25nPi4gDQorPC9wPg0KKw0KKw0KKzxoMj41LiBDb3JlIFJlZ2lzdGVyIEJpdCBEZWZpbml0aW9uczwvaDI+DQorPHA+DQorICBGaWxlcyBjb3JlX2NtMy5oIGFuZCBjb3JlX2NtMC5oIGNvbnRhaW4gbm93IGJpdCBkZWZpbml0aW9ucyBmb3IgQ29yZSBSZWdpc3RlcnMuIFRoZSBuYW1lIGZvciB0aGUNCisgIGRlZmluZXMgY29ycmVzcG9uZCB3aXRoIHRoZSBDb3J0ZXgtTSBUZWNobmljYWwgUmVmZXJlbmNlIE1hbnVhbC4gIA0KKzwvcD4NCis8cD4NCisgIGUuZy4gU3lzVGljayBzdHJ1Y3R1cmUgd2l0aCBiaXQgZGVmaW5pdGlvbnMNCis8L3A+DQorPHByZT4NCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX1N5c1RpY2sgQ01TSVMgQ00zIFN5c1RpY2sNCisgIG1lbW9yeSBtYXBwZWQgc3RydWN0dXJlIGZvciBTeXNUaWNrDQorICBAew0KKyAqLw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgX19JTyB1aW50MzJfdCBDVFJMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMCAgU3lzVGljayBDb250cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXIgKi8NCisgIF9fSU8gdWludDMyX3QgTE9BRDsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDQgIFN5c1RpY2sgUmVsb2FkIFZhbHVlIFJlZ2lzdGVyICAgICAgICovDQorICBfX0lPIHVpbnQzMl90IFZBTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDA4ICBTeXNUaWNrIEN1cnJlbnQgVmFsdWUgUmVnaXN0ZXIgICAgICAqLw0KKyAgX19JICB1aW50MzJfdCBDQUxJQjsgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwQyAgU3lzVGljayBDYWxpYnJhdGlvbiBSZWdpc3RlciAgICAgICAgKi8NCit9IFN5c1RpY2tfVHlwZTsNCisNCisvKiBTeXNUaWNrIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9DT1VOVEZMQUdfUG9zICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogQ09VTlRGTEFHIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX0NUUkxfQ09VTlRGTEFHX01zayAgICAgICAgICgxdWwgPDwgU3lzVGlja19DVFJMX0NPVU5URkxBR19Qb3MpICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IENPVU5URkxBRyBNYXNrICovDQorDQorI2RlZmluZSBTeXNUaWNrX0NUUkxfQ0xLU09VUkNFX1BvcyAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IENMS1NPVVJDRSBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19DVFJMX0NMS1NPVVJDRV9Nc2sgICAgICAgICAoMXVsIDw8IFN5c1RpY2tfQ1RSTF9DTEtTT1VSQ0VfUG9zKSAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBDTEtTT1VSQ0UgTWFzayAqLw0KKw0KKyNkZWZpbmUgU3lzVGlja19DVFJMX1RJQ0tJTlRfUG9zICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBUSUNLSU5UIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX0NUUkxfVElDS0lOVF9Nc2sgICAgICAgICAgICgxdWwgPDwgU3lzVGlja19DVFJMX1RJQ0tJTlRfUG9zKSAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IFRJQ0tJTlQgTWFzayAqLw0KKw0KKyNkZWZpbmUgU3lzVGlja19DVFJMX0VOQUJMRV9Qb3MgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBFTkFCTEUgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9FTkFCTEVfTXNrICAgICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NUUkxfRU5BQkxFX1BvcykgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogRU5BQkxFIE1hc2sgKi8NCisNCisvKiBTeXNUaWNrIFJlbG9hZCBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgU3lzVGlja19MT0FEX1JFTE9BRF9Qb3MgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBMT0FEOiBSRUxPQUQgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfTE9BRF9SRUxPQURfTXNrICAgICAgICAgICAgKDB4RkZGRkZGdWwgPDwgU3lzVGlja19MT0FEX1JFTE9BRF9Qb3MpICAgICAgICAvKiE8IFN5c1RpY2sgTE9BRDogUkVMT0FEIE1hc2sgKi8NCisNCisvKiBTeXNUaWNrIEN1cnJlbnQgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIFN5c1RpY2tfVkFMX0NVUlJFTlRfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgVkFMOiBDVVJSRU5UIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX1ZBTF9DVVJSRU5UX01zayAgICAgICAgICAgICgweEZGRkZGRnVsIDw8IFN5c1RpY2tfVkFMX0NVUlJFTlRfUG9zKSAgICAgICAgLyohPCBTeXNUaWNrIFZBTDogQ1VSUkVOVCBNYXNrICovDQorDQorLyogU3lzVGljayBDYWxpYnJhdGlvbiBSZWdpc3RlciBEZWZpbml0aW9ucyAqLw0KKyNkZWZpbmUgU3lzVGlja19DQUxJQl9OT1JFRl9Qb3MgICAgICAgICAgICAzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDQUxJQjogTk9SRUYgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfTk9SRUZfTXNrICAgICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NBTElCX05PUkVGX1BvcykgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IE5PUkVGIE1hc2sgKi8NCisNCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfU0tFV19Qb3MgICAgICAgICAgICAgMzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IFNLRVcgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfU0tFV19Nc2sgICAgICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NBTElCX1NLRVdfUG9zKSAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IFNLRVcgTWFzayAqLw0KKw0KKyNkZWZpbmUgU3lzVGlja19DQUxJQl9URU5NU19Qb3MgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDQUxJQjogVEVOTVMgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfVEVOTVNfTXNrICAgICAgICAgICAgKDB4RkZGRkZGdWwgPDwgU3lzVGlja19WQUxfQ1VSUkVOVF9Qb3MpICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IFRFTk1TIE1hc2sgKi8NCisvKkB9Ki8gLyogZW5kIG9mIGdyb3VwIENNU0lTX0NNM19TeXNUaWNrICovPC9wcmU+DQorDQorPGgyPjcuIERveHlHZW4gVGFnczwvaDI+DQorPHA+DQorICBEb3h5R2VuIHRhZ3MgaW4gZmlsZXMgY29yZV9jbTMuW2MsaF0gYW5kIGNvcmVfY20wLltjLGhdIGFyZSByZXdvcmtlZCB0byBjcmVhdGUgcHJvcGVyIGRvY3VtZW50YXRpb24NCisgIHVzaW5nIERveHlHZW4uDQorPC9wPg0KKw0KKzxoMj44LiBGb2xkZXIgU3RydWN0dXJlPC9oMj4NCis8cD4NCisgIFRoZSBmb2xkZXIgc3RydWN0dXJlIGlzIGNoYW5nZWQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgc2luZ2xlIHN1cHBvcnQgcGFja2FnZXMuDQorPC9wPg0KKw0KKyAgPHVsPg0KKyAgICA8bGk+Q00wPC9saT4NCisgICAgPGxpPkNNMw0KKyAgICAgICA8dWw+DQorICAgICAgICAgPGxpPkNvcmVTdXBwb3J0PC9saT4NCisgICAgICAgICA8bGk+RGV2aWNlU3VwcG9ydDwvbGk+DQorICAgICAgICAgICA8dWw+DQorICAgICAgICAgICAgIDxsaT5WZW5kb3IgDQorICAgICAgICAgICAgICAgPHVsPg0KKyAgICAgICAgICAgICAgICAgPGxpPkRldmljZQ0KKyAgICAgICAgICAgICAgICAgICA8dWw+DQorICAgICAgICAgICAgICAgICAgICAgIDxsaT5TdGFydHVwDQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlRvb2xjaGFpbjwvbGk+DQorICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+VG9vbGNoYWluPC9saT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4uLi48L2xpPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgICAgICAgICAgICAgIDwvbGk+DQorICAgICAgICAgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgICAgICAgICA8L2xpPg0KKyAgICAgICAgICAgICAgICAgPGxpPkRldmljZTwvbGk+DQorICAgICAgICAgICAgICAgICA8bGk+Li4uPC9saT4NCisgICAgICAgICAgICAgICA8L3VsPg0KKyAgICAgICAgICAgICA8L2xpPg0KKyAgICAgICAgICAgICA8bGk+VmVuZG9yPC9saT4NCisgICAgICAgICAgICAgPGxpPi4uLjwvbGk+DQorICAgICAgICAgICA8L3VsPg0KKyAgICAgICAgIDwvbGk+DQorICAgICAgICAgPGxpPkV4YW1wbGUNCisgICAgICAgICAgIDx1bD4NCisgICAgICAgICAgICAgPGxpPlRvb2xjaGFpbiANCisgICAgICAgICAgICAgICA8dWw+DQorICAgICAgICAgICAgICAgICA8bGk+RGV2aWNlPC9saT4NCisgICAgICAgICAgICAgICAgIDxsaT5EZXZpY2U8L2xpPg0KKyAgICAgICAgICAgICAgICAgPGxpPi4uLjwvbGk+DQorICAgICAgICAgICAgICAgPC91bD4NCisgICAgICAgICAgICAgPC9saT4NCisgICAgICAgICAgICAgPGxpPlRvb2xjaGFpbjwvbGk+DQorICAgICAgICAgICAgIDxsaT4uLi48L2xpPg0KKyAgICAgICAgICAgPC91bD4NCisgICAgICAgICA8L2xpPg0KKyAgICAgICA8L3VsPg0KKyAgICA8L2xpPg0KKyAgICAgDQorICAgIDxsaT5Eb2N1bWVudGF0aW9uPC9saT4NCisgIDwvdWw+DQorDQorPGgyPjkuIE9wZW4gUG9pbnRzPC9oMj4NCis8cD4NCisgIEZvbGxvd2luZyBwb2ludHMgbmVlZCB0byBiZSBjbGFyaWZpZWQgYW5kIHNvbHZlZDoNCis8L3A+DQorPHVsPg0KKyAgPGxpPg0KKyAgICA8cD4NCisgICAgICBFcXVpdmFsZW50IEMgYW5kIEFzc2VtYmxlciBzdGFydHVwIGZpbGVzLg0KKyAgICA8L3A+DQorICAgIDxwPg0KKyAgICAgIElzIHRoZXJlIGEgbmVlZCBmb3IgaGF2aW5nIEMgc3RhcnR1cCBmaWxlcyBhbHRob3VnaCBhc3NlbWJsZXIgc3RhcnR1cCBmaWxlcyBhcmUNCisgICAgICB2ZXJ5IGVmZmljaWVudCBhbmQgZG8gbm90IG5lZWQgdG8gYmUgY2hhbmdlZD8NCisgICAgPHAvPg0KKyAgPC9saT4NCisgIDxsaT4NCisgICAgPHA+DQorICAgICAgUGxhY2luZyBvZiBIRUFQIGluIGV4dGVybmFsIFJBTS4NCisgICAgPC9wPg0KKyAgICA8cD4NCisgICAgICBJdCBtdXN0IGJlIHBvc3NpYmxlIHRvIHBsYWNlIEhFQVAgaW4gZXh0ZXJuYWwgUkFNIGlmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgYW4gDQorICAgICAgZXh0ZXJuYWwgbWVtb3J5IGNvbnRyb2xsZXIuDQorICAgIDwvcD4NCisgIDwvbGk+DQorICA8bGk+DQorICAgIDxwPg0KKyAgICAgIFBsYWNpbmcgb2YgU1RBQ0sgL0hFQVAuDQorICAgIDwvcD4NCisgICAgPHA+DQorICAgICAgU1RBQ0sgc2hvdWxkIGFsd2F5cyBiZSBwbGFjZWQgYXQgdGhlIGVuZCBvZiBpbnRlcm5hbCBSQU0uDQorICAgIDwvcD4NCisgICAgPHA+DQorICAgICAgSWYgSEVBUCBpcyBwbGFjZWQgaW4gaW50ZXJuYWwgUkFNIHRoYW4gaXQgc2hvdWxkIGJlIHBsYWNlZCBhZnRlciBSVyBaSSBzZWN0aW9uLg0KKyAgICA8L3A+DQorICA8L2xpPg0KKyAgPGxpPg0KKyAgICA8cD4NCisgICAgICBSZW1vdmluZyBjb3JlX2NtMy5jIGFuZCBjb3JlX2NtMC5jLg0KKyAgICA8L3A+DQorICAgIDxwPg0KKyAgICAgIE9uIGEgbG9uZyB0ZXJtIHRoZSBmdW5jdGlvbnMgaW4gY29yZV9jbTMuYyBhbmQgY29yZV9jbTAuYyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggDQorICAgICAgYXBwcm9wcmlhdGUgY29tcGlsZXIgaW50cmluc2ljcy4NCisgICAgPC9wPg0KKyAgPC9saT4NCis8L3VsPg0KKw0KKw0KKzxoMj4xMC4gTGltaXRhdGlvbnM8L2gyPg0KKzxwPg0KKyAgVGhlIGZvbGxvd2luZyBsaW1pdGF0aW9ucyBhcmUgbm90IGNvdmVyZWQgd2l0aCB0aGUgY3VycmVudCBDTVNJUyB2ZXJzaW9uOg0KKzwvcD4NCis8dWw+DQorIDxsaT4NCisgIE5vIDxzdHJvbmc+QyBzdGFydHVwIGZpbGVzPC9zdHJvbmc+IGZvciBBUk0gdG9vbGNoYWluIGFyZSBwcm92aWRlZC4gDQorIDwvbGk+DQorIDxsaT4NCisgIE5vIDxzdHJvbmc+QyBzdGFydHVwIGZpbGVzPC9zdHJvbmc+IGZvciBHTlUgdG9vbGNoYWluIGFyZSBwcm92aWRlZC4gDQorIDwvbGk+DQorIDxsaT4NCisgIE5vIDxzdHJvbmc+QyBzdGFydHVwIGZpbGVzPC9zdHJvbmc+IGZvciBJQVIgdG9vbGNoYWluIGFyZSBwcm92aWRlZC4gDQorIDwvbGk+DQorIDxsaT4NCisgIE5vIDxzdHJvbmc+VGFza2luZzwvc3Ryb25nPiBwcm9qZWN0cyBhcmUgcHJvdmlkZWQgeWV0LiANCisgPC9saT4NCis8L3VsPg0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNU0lTIGRlYnVnIHN1cHBvcnQuaHRtIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvQ01TSVMgZGVidWcgc3VwcG9ydC5odG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZkYTY4NQotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNU0lTIGRlYnVnIHN1cHBvcnQuaHRtCkBAIC0wLDAgKzEsMjQzIEBACis8aHRtbD4NCisNCis8aGVhZD4NCis8dGl0bGU+Q01TSVMgRGVidWcgU3VwcG9ydDwvdGl0bGU+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4NCis8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNi4wIj4NCis8bWV0YSBuYW1lPSJQcm9nSWQiIGNvbnRlbnQ9IkZyb250UGFnZS5FZGl0b3IuRG9jdW1lbnQiPg0KKzxzdHlsZT4NCis8IS0tDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0tlaWwgU29mdHdhcmUgQ0hNIFN0eWxlIFNoZWV0DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KK2JvZHkgICAgICAgICB7IGNvbG9yOiAjMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyBmb250LXNpemU6IDc1JTsgZm9udC1mYW1pbHk6IA0KKyAgICAgICAgICAgICAgIFZlcmRhbmEsIEFyaWFsLCAnU2FucyBTZXJpZicgfQ0KK2E6bGluayAgICAgICB7IGNvbG9yOiAjMDAwMEZGOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB9DQorYTp2aXNpdGVkICAgIHsgY29sb3I6ICMwMDAwRkY7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIH0NCithOmFjdGl2ZSAgICAgeyBjb2xvcjogI0ZGMDAwMDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQ0KK2E6aG92ZXIgICAgICB7IGNvbG9yOiAjRkYwMDAwOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB9DQoraDEgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMThwdDsgY29sb3I6ICMwMDAwODA7IGZvbnQtd2VpZ2h0OiBib2xkOyANCisgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBDZW50ZXI7IG1hcmdpbi1yaWdodDogMyB9DQoraDIgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTRwdDsgY29sb3I6ICMwMDAwODA7IGZvbnQtd2VpZ2h0OiBib2xkOyANCisgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDQ0NDOyBtYXJnaW4tdG9wOiAyNDsgbWFyZ2luLWJvdHRvbTogMzsgDQorICAgICAgICAgICAgICAgcGFkZGluZzogNiB9DQoraDMgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGJhY2tncm91bmQtY29sb3I6IA0KKyAgICAgICAgICAgICAgICNDQ0NDQ0M7IG1hcmdpbi10b3A6IDI0OyBtYXJnaW4tYm90dG9tOiAzOyBwYWRkaW5nOiA2IH0NCitwcmUgICAgICAgICAgeyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGZvbnQtc2l6ZTogMTBwdDsgYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQzsgDQorICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDI0OyBtYXJnaW4tcmlnaHQ6IDI0IH0NCit1bCAgICAgICAgICAgeyBsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsgbWFyZ2luLXRvcDogNnB0OyBtYXJnaW4tYm90dG9tOiAwIH0NCitvbCAgICAgICAgICAgeyBtYXJnaW4tdG9wOiA2cHQ7IG1hcmdpbi1ib3R0b206IDAgfQ0KK2xpICAgICAgICAgICB7IGNsZWFyOiBib3RoOyBtYXJnaW4tYm90dG9tOiA2cHQgfQ0KK3RhYmxlICAgICAgICB7IGZvbnQtc2l6ZTogMTAwJTsgYm9yZGVyLXdpZHRoOiAwOyBwYWRkaW5nOiAwIH0NCit0aCAgICAgICAgICAgeyBjb2xvcjogI0ZGRkZGRjsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDA4MDsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IA0KKyAgICAgICAgICAgICAgIGJvdHRvbTsgcGFkZGluZy1yaWdodDogNnB0IH0NCit0ciAgICAgICAgICAgeyB0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wIH0NCit0ZCAgICAgICAgICAgeyB0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBwYWRkaW5nLXJpZ2h0OiA2cHQgfQ0KKy5Ub29sVCAgICAgICB7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogIzgwODA4MCB9DQorLlRpbnlUICAgICAgIHsgZm9udC1zaXplOiA4cHQ7IHRleHQtYWxpZ246IENlbnRlciB9DQorY29kZSAgICAgICAgIHsgY29sb3I6ICMwMDAwMDA7IGJhY2tncm91bmQtY29sb3I6ICNFMEUwRTA7IGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb3VyaWVyOyANCisgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTIwJTsgZm9udC1zdHlsZTogbm9ybWFsIH0NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorTm90ZXMNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorcC5ub3RlICAgICAgIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNsZWFyOiBib3RoOyBtYXJnaW4tYm90dG9tOiAzcHQ7IHBhZGRpbmctdG9wOiA2cHQgfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitFeHBhbmRpbmcvQ29udHJhY3RpbmcgRGl2aXNpb25zDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNleHBhbmQgICAgICB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgbWFyZ2luLWJvdHRvbTogM3B0IH0NCitpbWcuZXhwYW5kICAgeyBib3JkZXItc3R5bGU6IG5vbmU7IGJvcmRlci13aWR0aDogbWVkaXVtIH0NCitkaXYuZXhwYW5kICAgeyBkaXNwbGF5OiBub25lOyBtYXJnaW4tbGVmdDogOXB0OyBtYXJnaW4tdG9wOiAwIH0NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorV2hlcmUgTGlzdCBUYWdzDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KK3Aud2ggICAgICAgICB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjbGVhcjogYm90aDsgbWFyZ2luLXRvcDogNnB0OyBtYXJnaW4tYm90dG9tOiAzcHQgfQ0KK3RhYmxlLndoICAgICB7IHdpZHRoOiAxMDAlIH0NCit0ZC53aEl0ZW0gICAgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyBmb250LXN0eWxlOiBpdGFsaWM7IHBhZGRpbmctcmlnaHQ6IDZwdDsgcGFkZGluZy1ib3R0b206IA0KKyAgICAgICAgICAgICAgIDZwdCB9DQordGQud2hEZXNjICAgIHsgcGFkZGluZy1ib3R0b206IDZwdCB9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0tlaWwgVGFibGUgVGFncw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCit0YWJsZS5rdCAgICAgeyBib3JkZXI6IDFwdCBzb2xpZCAjMDAwMDAwIH0NCit0aC5rdCAgICAgICAgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyBib3JkZXItYm90dG9tOiAxcHQgc29saWQgIzAwMDAwMDsgcGFkZGluZy1sZWZ0OiA2cHQ7IA0KKyAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDZwdDsgcGFkZGluZy10b3A6IDRwdDsgcGFkZGluZy1ib3R0b206IDRwdCB9DQordHIua3QgICAgICAgIHsgIH0NCit0ZC5rdCAgICAgICAgeyBjb2xvcjogIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjogI0UwRTBFMDsgYm9yZGVyLXRvcDogMXB0IHNvbGlkICNBMEEwQTA7IA0KKyAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNnB0OyBwYWRkaW5nLXJpZ2h0OiA2cHQ7IHBhZGRpbmctdG9wOiAycHQ7IA0KKyAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAycHQgfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLS0+DQorDQorPC9zdHlsZT4NCis8L2hlYWQ+DQorDQorPGJvZHk+DQorDQorPGgxPkNNU0lTIERlYnVnIFN1cHBvcnQ8L2gxPg0KKw0KKzxocj4NCisNCis8aDI+Q29ydGV4LU0zIElUTSBEZWJ1ZyBBY2Nlc3M8L2gyPg0KKzxwPg0KKyAgVGhlIENvcnRleC1NMyBpbmNvcnBvcmF0ZXMgdGhlIEluc3RydW1lbnRlZCBUcmFjZSBNYWNyb2NlbGwgKElUTSkgdGhhdCBwcm92aWRlcyB0b2dldGhlciB3aXRoIA0KKyAgdGhlIFNlcmlhbCBWaWV3ZXIgT3V0cHV0IHRyYWNlIGNhcGFiaWxpdGllcyBmb3IgdGhlIG1pY3JvY29udHJvbGxlciBzeXN0ZW0uIFRoZSBJVE0gaGFzIA0KKyAgMzIgY29tbXVuaWNhdGlvbiBjaGFubmVscyB3aGljaCBhcmUgYWJsZSB0byB0cmFuc21pdCAzMiAvIDE2IC8gOCBiaXQgdmFsdWVzOyB0d28gSVRNIA0KKyAgY29tbXVuaWNhdGlvbiBjaGFubmVscyBhcmUgdXNlZCBieSBDTVNJUyB0byBvdXRwdXQgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoNCis8L3A+DQorPHVsPg0KKwk8bGk+SVRNIENoYW5uZWwgMDogdXNlZCBmb3IgcHJpbnRmLXN0eWxlIG91dHB1dCB2aWEgdGhlIGRlYnVnIGludGVyZmFjZS48L2xpPg0KKwk8bGk+SVRNIENoYW5uZWwgMzE6IGlzIHJlc2VydmVkIGZvciBSVE9TIGtlcm5lbCBhd2FyZW5lc3MgZGVidWdnaW5nLjwvbGk+DQorPC91bD4NCisNCis8aDI+RGVidWcgSU4gLyBPVVQgZnVuY3Rpb25zPC9oMj4NCis8cD5DTVNJUyBwcm92aWRlcyBmb2xsb3dpbmcgZGVidWcgZnVuY3Rpb25zOjwvcD4NCis8dWw+DQorCTxsaT5JVE1fU2VuZENoYXIgKHVzZXMgSVRNIGNoYW5uZWwgMCk8L2xpPg0KKwk8bGk+SVRNX1JlY2VpdmVDaGFyICh1c2VzIGdsb2JhbCB2YXJpYWJsZSk8L2xpPg0KKwk8bGk+SVRNX0NoZWNrQ2hhciAodXNlcyBnbG9iYWwgdmFyaWFibGUpPC9saT4NCis8L3VsPg0KKw0KKzxoMz5JVE1fU2VuZENoYXI8L2gzPg0KKzxwPg0KKyAgPHN0cm9uZz5JVE1fU2VuZENoYXI8L3N0cm9uZz4gaXMgdXNlZCB0byB0cmFuc21pdCBhIGNoYXJhY3RlciBvdmVyIElUTSBjaGFubmVsIDAgZnJvbSANCisgIHRoZSBtaWNyb2NvbnRyb2xsZXIgc3lzdGVtIHRvIHRoZSBkZWJ1ZyBzeXN0ZW0uIDxicj4NCisgIE9ubHkgYSA4IGJpdCB2YWx1ZSBpcyB0cmFuc21pdHRlZC4NCis8L3A+DQorPHByZT4NCitzdGF0aWMgX19JTkxJTkUgdWludDMyX3QgSVRNX1NlbmRDaGFyICh1aW50MzJfdCBjaCkNCit7DQorICAvKiBjaGVjayBpZiBkZWJ1Z2dlciBjb25uZWN0ZWQgYW5kIElUTSBjaGFubmVsIGVuYWJsZWQgZm9yIHRyYWNpbmcgKi8NCisgIGlmICgoQ29yZURlYnVnLT5ERU1DUiAmIENvcmVEZWJ1Z19ERU1DUl9UUkNFTkEpICAmYW1wOyZhbXA7DQorICAgICAgKElUTS0mZ3Q7VENSICYgSVRNX1RDUl9JVE1FTkEpICAgICAgICAgICAgICAgICAgJmFtcDsmYW1wOw0KKyAgICAgIChJVE0tJmd0O1RFUiAmICgxVUwgJmx0OyZsdDsgMCkpICApIA0KKyAgew0KKyAgICB3aGlsZSAoSVRNLSZndDtQT1JUWzBdLnUzMiA9PSAwKTsNCisgICAgSVRNLSZndDtQT1JUWzBdLnU4ID0gKHVpbnQ4X3QpY2g7DQorICB9ICANCisgIHJldHVybiAoY2gpOw0KK308L3ByZT4NCisNCis8aDM+SVRNX1JlY2VpdmVDaGFyPC9oMz4NCis8cD4NCisgIElUTSBjb21tdW5pY2F0aW9uIGNoYW5uZWwgaXMgb25seSBjYXBhYmxlIGZvciBPVVQgZGlyZWN0aW9uLiBGb3IgSU4gZGlyZWN0aW9uDQorICBhIGdsb2JlbCB2YXJpYWJsZSBpcyB1c2VkLiBBIHNpbXBsZSBtZWNoYW5zaW0gZGV0ZWN0cyBpZiBhIGNoYXJhY3RlciBpcyByZWNlaXZlZC4NCisgIFRoZSBwcm9qZWN0IHRvIHRlc3QgbmVlZCB0byBiZSBidWlsZCB3aXRoIGRlYnVnIGluZm9ybWF0aW9uLg0KKzwvcD4NCisNCis8cD4NCisgIFRoZSBnbG9iYWxlIHZhcmlhYmxlIDxzdHJvbmc+SVRNX1J4QnVmZmVyPC9zdHJvbmc+IGlzIHVzZWQgdG8gdHJhbnNtaXQgYSA4IGJpdCB2YWx1ZSBmcm9tIGRlYnVnIHN5c3RlbQ0KKyAgdG8gbWljcm9jb250cm9sbGVyIHN5c3RlbS4gPHN0cm9uZz5JVE1fUnhCdWZmZXI8L3N0cm9uZz4gaXMgMzIgYml0IHdpZGUgdG8gZW5zaHVyZSBhIHByb3BlciBoYW5kc2hha2UuDQorPC9wPg0KKzxwcmU+DQorZXh0ZXJuIHZvbGF0aWxlIGludCBJVE1fUnhCdWZmZXI7ICAgICAgICAgICAgICAgICAgICAvKiB2YXJpYWJsZSB0byByZWNlaXZlIGNoYXJhY3RlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorPC9wcmU+DQorPHA+DQorICBBIGRlZGljYXRlZCBiaXQgcGF0dGVybiBpcyB1c2VkIHRvIGRldGVybWluIGlmIDxzdHJvbmc+SVRNX1J4QnVmZmVyPC9zdHJvbmc+IGlzIGVtcHR5DQorICBvciBjb250YWlucyBhIHZhbGlkIHZhbHVlLg0KKzwvcD4NCis8cHJlPg0KKyNkZWZpbmUgICAgICAgICAgICAgSVRNX1JYQlVGRkVSX0VNUFRZICAgIDB4NUFBNTVBQTUgLyogdmFsdWUgaWRlbnRpZnlpbmcgSVRNX1J4QnVmZmVyIGlzIHJlYWR5IGZvciBuZXh0IGNoYXJhY3RlciAqLw0KKzwvcHJlPg0KKzxwPg0KKyAgPHN0cm9uZz5JVE1fUmVjZWl2ZUNoYXI8L3N0cm9uZz4gaXMgdXNlZCB0byByZWNlaXZlIGEgOCBiaXQgdmFsdWUgZnJvbSB0aGUgZGVidWcgc3lzdGVtLiBUaGUgZnVuY3Rpb24gaXMgbm9uYmxvY2tpbmcuDQorICBJdCByZXR1cm5zIHRoZSByZWNlaXZlZCBjaGFyYWN0ZXIgb3IgJy0xJyBpZiBubyBjaGFyYWN0ZXIgd2FzIGF2YWlsYWJsZS4NCis8L3A+DQorPHByZT4NCitzdGF0aWMgX19JTkxJTkUgaW50IElUTV9SZWNlaXZlQ2hhciAodm9pZCkgew0KKyAgaW50IGNoID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIGNoYXJhY3RlciBhdmFpbGFibGUgKi8NCisNCisgIGlmIChJVE1fUnhCdWZmZXIgIT0gSVRNX1JYQlVGRkVSX0VNUFRZKSB7DQorICAgIGNoID0gSVRNX1J4QnVmZmVyOw0KKyAgICBJVE1fUnhCdWZmZXIgPSBJVE1fUlhCVUZGRVJfRU1QVFk7ICAgICAgIC8qIHJlYWR5IGZvciBuZXh0IGNoYXJhY3RlciAqLw0KKyAgfQ0KKyAgDQorICByZXR1cm4gKGNoKTsgDQorfQ0KKzwvcHJlPg0KKw0KKzxoMz5JVE1fQ2hlY2tDaGFyPC9oMz4NCis8cD4NCisgIDxzdHJvbmc+SVRNX0NoZWNrQ2hhcjwvc3Ryb25nPiBpcyB1c2VkIHRvIGNoZWNrIGlmIGEgY2hhcmFjdGVyIGlzIHJlY2VpdmVkLg0KKzwvcD4NCis8cHJlPg0KK3N0YXRpYyBfX0lOTElORSBpbnQgSVRNX0NoZWNrQ2hhciAodm9pZCkgew0KKw0KKyAgaWYgKElUTV9SeEJ1ZmZlciA9PSBJVE1fUlhCVUZGRVJfRU1QVFkpIHsNCisgICAgcmV0dXJuICgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBjaGFyYWN0ZXIgYXZhaWxhYmxlICovDQorICB9IGVsc2Ugew0KKyAgICByZXR1cm4gKDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgIGNoYXJhY3RlciBhdmFpbGFibGUgKi8NCisgIH0NCit9PC9wcmU+DQorDQorDQorPGgyPklUTSBEZWJ1ZyBTdXBwb3J0IGluIHVWaXNpb248L2gyPg0KKzxwPg0KKyAgdVZpc2lvbiB1c2VzIGluIGEgZGVidWcgc2Vzc2lvbiB0aGUgPHN0cm9uZz5EZWJ1ZyAocHJpbnRmKSBWaWV3ZXI8L3N0cm9uZz4gd2luZG93IHRvIA0KKyAgZGlzcGxheSB0aGUgZGVidWcgZGF0YS4NCis8L3A+DQorPHA+RGlyZWN0aW9uIG1pY3JvY29udHJvbGxlciBzeXN0ZW0gLSZndDsgdVZpc2lvbjo8L3A+DQorPHVsPg0KKyAgPGxpPg0KKyAgICBDaGFyYWN0ZXJzIHJlY2VpdmVkIHZpYSBJVE0gY29tbXVuaWNhdGlvbiBjaGFubmVsIDAgYXJlIHdyaXR0ZW4gaW4gYSBwcmludGYgc3R5bGUNCisgICAgdG8gPHN0cm9uZz5EZWJ1ZyAocHJpbnRmKSBWaWV3ZXI8L3N0cm9uZz4gd2luZG93Lg0KKyAgPC9saT4NCis8L3VsPg0KKw0KKzxwPkRpcmVjdGlvbiB1VmlzaW9uIC0mZ3Q7IG1pY3JvY29udHJvbGxlciBzeXN0ZW06PC9wPg0KKzx1bD4NCisgIDxsaT5DaGVjayBpZiA8c3Ryb25nPklUTV9SeEJ1ZmZlcjwvc3Ryb25nPiB2YXJpYWJsZSBpcyBhdmFpbGFibGUgKG9ubHkgcGVyZm9ybWVkIG9uY2UpLjwvbGk+DQorICA8bGk+UmVhZCBjaGFyYWN0ZXIgZnJvbSA8c3Ryb25nPkRlYnVnIChwcmludGYpIFZpZXdlcjwvc3Ryb25nPiB3aW5kb3cuPC9saT4NCisgIDxsaT5JZiA8c3Ryb25nPklUTV9SeEJ1ZmZlcjwvc3Ryb25nPiBlbXB0eSB3cml0ZSBjaGFyYWN0ZXIgdG8gPHN0cm9uZz5JVE1fUnhCdWZmZXI8L3N0cm9uZz4uPC9saT4NCis8L3VsPg0KKw0KKzxwIGNsYXNzPSJOb3RlIj5Ob3RlPC9wPg0KKzx1bD4NCisgIDxsaT48cD5DdXJyZW50IHNvbHV0aW9uIGRvZXMgbm90IHVzZSBhIGJ1ZmZlciBtYWNoYW5pc20gZm9yIHRyYXNtaXR0aW5nIHRoZSBjaGFyYWN0ZXJzLjwvcD4NCisgIDwvbGk+DQorPC91bD4NCisNCis8aDI+UlRYIEtlcm5lbCBhd2FyZW5lc3MgaW4gdVZpc2lvbjwvaDI+DQorPHA+DQorICB1VmlzaW9uIC8gUlRYIGFyZSB1c2luZyBhIHNpbXBsZSBhbmQgZWZmaWNpZW50IHNvbHV0aW9uIGZvciBSVFggS2VybmVsIGF3YXJlbmVzcy4NCisgIE5vIGZvcm1hdCBvdmVyaGVhZCBpcyBuZWNlc3NhcnkuPGJyPg0KKyAgdVZzaW9uIGRlYnVnZ2VyIGRlY29kZXMgdGhlIFJUWCBldmVudHMgdmlhIHRoZSAzMiAvIDE2IC8gOCBiaXQgSVRNIHdyaXRlIGFjY2Vzcw0KKyAgdG8gSVRNIGNvbW11bmljYXRpb24gY2hhbm5lbCAzMS4NCis8L3A+DQorDQorPHA+Rm9sbG93aW5nIFJUWCBldmVudHMgYXJlIHRyYWNlZDo8L3A+DQorPHVsPg0KKyAgPGxpPlRhc2sgQ3JlYXRlIC8gRGVsZXRlIGV2ZW50DQorICAgIDxvbD4NCisgICAgICA8bGk+MzIgYml0IGFjY2Vzcy4gVGFzayBzdGFydCBhZGRyZXNzIGlzIHRyYW5zbWl0dGVkPC9saT4NCisgICAgICA8bGk+MTYgYml0IGFjY2Vzcy4gVGFzayBJRCBhbmQgQ3JlYXRlL0RlbGV0ZSBmbGFnIGFyZSB0cmFuc21pdHRlZDxicj4NCisgICAgICAgICAgSGlnaCBieXRlIGhvbGRzIENyZWF0ZS9EZWxldGUgZmxhZywgTG93IGJ5dGUgaG9sZHMgVEFTSyBJRC4NCisgICAgICA8L2xpPg0KKyAgICA8L29sPg0KKyAgPC9saT4NCisgIDxsaT5UYXNrIHN3aXRjaCBldmVudA0KKyAgICA8b2w+DQorICAgICAgPGxpPjggYml0IGFjY2Vzcy4gVGFzayBJRCBvZiBjdXJyZW50IHRhc2sgaXMgdHJhbnNtaXR0ZWQ8L2xpPg0KKyAgICA8L29sPg0KKyAgPC9saT4NCis8L3VsPg0KKw0KKzxwIGNsYXNzPSJOb3RlIj5Ob3RlPC9wPg0KKzx1bD4NCisgIDxsaT48cD5PdGhlciBSVE9TIGluZm9ybWF0aW9uIGNvdWxkIGJlIHJldHJpZXZlZCB2aWEgbWVtb3J5IHJlYWQgYWNjZXNzIGluIGEgcG9sbGluZyBtb2RlIG1hbm5lci48L3A+DQorICA8L2xpPg0KKzwvdWw+DQorDQorDQorPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tR0IiPiZuYnNwOzwvc3Bhbj48L3A+DQorDQorPGhyPg0KKw0KKzxwIGNsYXNzPSJUaW55VCI+Q29weXJpZ2h0IKkgS0VJTCAtIEFuIEFSTSBDb21wYW55Ljxicj4NCitBbGwgcmlnaHRzIHJlc2VydmVkLjxicj4NCitWaXNpdCBvdXIgd2ViIHNpdGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5rZWlsLmNvbSI+d3d3LmtlaWwuY29tPC9hPi4NCis8L3A+DQorDQorPC9ib2R5Pg0KKw0KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9DTVNJU19jaGFuZ2VzLmh0bSBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NNU0lTL0NNU0lTX2NoYW5nZXMuaHRtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MmZmY2MKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9DTVNJU19jaGFuZ2VzLmh0bQpAQCAtMCwwICsxLDMyMCBAQAorPGh0bWw+DQorDQorPGhlYWQ+DQorPHRpdGxlPkNNU0lTIENoYW5nZXM8L3RpdGxlPg0KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+DQorPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNaWNyb3NvZnQgRnJvbnRQYWdlIDYuMCI+DQorPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4NCis8c3R5bGU+DQorPCEtLQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitLZWlsIFNvZnR3YXJlIENITSBTdHlsZSBTaGVldA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCitib2R5ICAgICAgICAgeyBjb2xvcjogIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgZm9udC1zaXplOiA3NSU7IGZvbnQtZmFtaWx5OiANCisgICAgICAgICAgICAgICBWZXJkYW5hLCBBcmlhbCwgJ1NhbnMgU2VyaWYnIH0NCithOmxpbmsgICAgICAgeyBjb2xvcjogIzAwMDBGRjsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQ0KK2E6dmlzaXRlZCAgICB7IGNvbG9yOiAjMDAwMEZGOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB9DQorYTphY3RpdmUgICAgIHsgY29sb3I6ICNGRjAwMDA7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIH0NCithOmhvdmVyICAgICAgeyBjb2xvcjogI0ZGMDAwMDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQ0KK2gxICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDE4cHQ7IGNvbG9yOiAjMDAwMDgwOyBmb250LXdlaWdodDogYm9sZDsgDQorICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogQ2VudGVyOyBtYXJnaW4tcmlnaHQ6IDMgfQ0KK2gyICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDE0cHQ7IGNvbG9yOiAjMDAwMDgwOyBmb250LXdlaWdodDogYm9sZDsgDQorICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0NDQ0NDQzsgbWFyZ2luLXRvcDogMjQ7IG1hcmdpbi1ib3R0b206IDM7IA0KKyAgICAgICAgICAgICAgIHBhZGRpbmc6IDYgfQ0KK2gzICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBib2xkOyBiYWNrZ3JvdW5kLWNvbG9yOiANCisgICAgICAgICAgICAgICAjQ0NDQ0NDOyBtYXJnaW4tdG9wOiAyNDsgbWFyZ2luLWJvdHRvbTogMzsgcGFkZGluZzogNiB9DQorcHJlICAgICAgICAgIHsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBmb250LXNpemU6IDEwcHQ7IGJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0M7IA0KKyAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyNDsgbWFyZ2luLXJpZ2h0OiAyNCB9DQordWwgICAgICAgICAgIHsgbGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7IG1hcmdpbi10b3A6IDZwdDsgbWFyZ2luLWJvdHRvbTogMCB9DQorb2wgICAgICAgICAgIHsgbWFyZ2luLXRvcDogNnB0OyBtYXJnaW4tYm90dG9tOiAwIH0NCitsaSAgICAgICAgICAgeyBjbGVhcjogYm90aDsgbWFyZ2luLWJvdHRvbTogNnB0IH0NCit0YWJsZSAgICAgICAgeyBmb250LXNpemU6IDEwMCU7IGJvcmRlci13aWR0aDogMDsgcGFkZGluZzogMCB9DQordGggICAgICAgICAgIHsgY29sb3I6ICNGRkZGRkY7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwODA7IHRleHQtYWxpZ246IGxlZnQ7IHZlcnRpY2FsLWFsaWduOiANCisgICAgICAgICAgICAgICBib3R0b207IHBhZGRpbmctcmlnaHQ6IDZwdCB9DQordHIgICAgICAgICAgIHsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcCB9DQordGQgICAgICAgICAgIHsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsgcGFkZGluZy1yaWdodDogNnB0IH0NCisuVG9vbFQgICAgICAgeyBmb250LXNpemU6IDhwdDsgY29sb3I6ICM4MDgwODAgfQ0KKy5UaW55VCAgICAgICB7IGZvbnQtc2l6ZTogOHB0OyB0ZXh0LWFsaWduOiBDZW50ZXIgfQ0KK2NvZGUgICAgICAgICB7IGNvbG9yOiAjMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRTBFMEUwOyBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQ291cmllcjsgDQorICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEyMCU7IGZvbnQtc3R5bGU6IG5vcm1hbCB9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK05vdGVzDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KK3Aubm90ZSAgICAgICB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjbGVhcjogYm90aDsgbWFyZ2luLWJvdHRvbTogM3B0OyBwYWRkaW5nLXRvcDogNnB0IH0NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorRXhwYW5kaW5nL0NvbnRyYWN0aW5nIERpdmlzaW9ucw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjZXhwYW5kICAgICAgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IG1hcmdpbi1ib3R0b206IDNwdCB9DQoraW1nLmV4cGFuZCAgIHsgYm9yZGVyLXN0eWxlOiBub25lOyBib3JkZXItd2lkdGg6IG1lZGl1bSB9DQorZGl2LmV4cGFuZCAgIHsgZGlzcGxheTogbm9uZTsgbWFyZ2luLWxlZnQ6IDlwdDsgbWFyZ2luLXRvcDogMCB9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1doZXJlIExpc3QgVGFncw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCitwLndoICAgICAgICAgeyBmb250LXdlaWdodDogYm9sZDsgY2xlYXI6IGJvdGg7IG1hcmdpbi10b3A6IDZwdDsgbWFyZ2luLWJvdHRvbTogM3B0IH0NCit0YWJsZS53aCAgICAgeyB3aWR0aDogMTAwJSB9DQordGQud2hJdGVtICAgIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZm9udC1zdHlsZTogaXRhbGljOyBwYWRkaW5nLXJpZ2h0OiA2cHQ7IHBhZGRpbmctYm90dG9tOiANCisgICAgICAgICAgICAgICA2cHQgfQ0KK3RkLndoRGVzYyAgICB7IHBhZGRpbmctYm90dG9tOiA2cHQgfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitLZWlsIFRhYmxlIFRhZ3MNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQordGFibGUua3QgICAgIHsgYm9yZGVyOiAxcHQgc29saWQgIzAwMDAwMCB9DQordGgua3QgICAgICAgIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgYm9yZGVyLWJvdHRvbTogMXB0IHNvbGlkICMwMDAwMDA7IHBhZGRpbmctbGVmdDogNnB0OyANCisgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA2cHQ7IHBhZGRpbmctdG9wOiA0cHQ7IHBhZGRpbmctYm90dG9tOiA0cHQgfQ0KK3RyLmt0ICAgICAgICB7ICB9DQordGQua3QgICAgICAgIHsgY29sb3I6ICMwMDAwMDA7IGJhY2tncm91bmQtY29sb3I6ICNFMEUwRTA7IGJvcmRlci10b3A6IDFwdCBzb2xpZCAjQTBBMEEwOyANCisgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDZwdDsgcGFkZGluZy1yaWdodDogNnB0OyBwYWRkaW5nLXRvcDogMnB0OyANCisgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMnB0IH0NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKy0tPg0KKw0KKzwvc3R5bGU+DQorPC9oZWFkPg0KKw0KKzxib2R5Pg0KKw0KKzxoMT5DaGFuZ2VzIHRvIENNU0lTIHZlcnNpb24gVjEuMjA8L2gxPg0KKw0KKzxocj4NCisNCis8aDI+MS4gUmVtb3ZlZCBDTVNJUyBNaWRkZWx3YXJlIHBhY2thZ2VzPC9oMj4NCis8cD4NCisgIENNU0lTIE1pZGRsZXdhcmUgaXMgb24gaG9sZCBmcm9tIEFSTSBzaWRlIHVudGlsIGEgYWdyZWVtZW50IGJldHdlZW4gYWxsIENNU0lTIHBhcnRuZXJzIGlzIGZvdW5kLg0KKzwvcD4NCisNCis8aDI+Mi4gU3lzdGVtRnJlcXVlbmN5IHJlbmFtZWQgdG8gU3lzdGVtQ29yZUNsb2NrPC9oMj4NCis8cD4NCisgIFRoZSB2YXJpYWJsZSBuYW1lIDxzdHJvbmc+U3lzdGVtQ29yZUNsb2NrPC9zdHJvbmc+IGlzIG1vcmUgcHJlY2lzZSB0aGFuIDxzdHJvbmc+U3lzdGVtRnJlcXVlbmN5PC9zdHJvbmc+DQorICBiZWNhdXNlIHRoZSB2YXJpYWJsZSBob2xkcyB0aGUgY2xvY2sgdmFsdWUgYXQgd2hpY2ggdGhlIGNvcmUgaXMgcnVubmluZy4NCis8L3A+DQorDQorPGgyPjMuIENoYW5nZWQgc3RhcnR1cCBjb25jZXB0PC9oMj4NCis8cD4NCisgIFRoZSBvbGQgc3RhcnR1cCBjb25jZXB0IChjYWxsaW5nIFN5c3RlbUluaXRfRXh0TWVtQ3RsIGZyb20gc3RhcnR1cCBmaWxlIGFuZCBjYWxsaW5nIFN5c3RlbUluaXQgDQorICBmcm9tIG1haW4pIGhhcyB0aGUgd2Vha25lc3MgdGhhdCBpdCBkb2VzIG5vdCB3b3JrIGZvciBjb250cm9sbGVycyB3aGljaCBuZWVkIGEgYWxyZWFkeSANCisgIGNvbmZpZ3VlcmQgY2xvY2sgc3lzdGVtIHRvIGNvbmZpZ3VyZSB0aGUgZXh0ZXJuYWwgbWVtb3J5IGNvbnRyb2xsZXIuDQorPC9wPg0KKw0KKzxoMz5DaGFuZ2VkIHN0YXJ0dXAgY29uY2VwdDwvaDM+DQorPHVsPg0KKyAgPGxpPg0KKyAgICBTeXN0ZW1Jbml0KCkgaXMgY2FsbGVkIGZyb20gc3RhcnR1cCBmaWxlIGJlZm9yZSA8c3Ryb25nPnByZW1haW48L3N0cm9uZz4uDQorICA8L2xpPg0KKyAgPGxpPg0KKyAgICA8c3Ryb25nPlN5c3RlbUluaXQoKTwvc3Ryb25nPiBjb25maWd1cmVzIHRoZSBjbG9jayBzeXN0ZW0gYW5kIGFsc28gY29uZmlndXJlcw0KKyAgICBhbiBleGlzdGluZyBleHRlcm5hbCBtZW1vcnkgY29udHJvbGxlci4NCisgIDwvbGk+DQorICA8bGk+DQorICAgIDxzdHJvbmc+U3lzdGVtSW5pdCgpPC9zdHJvbmc+IG11c3Qgbm90IHVzZSBnbG9iYWwgdmFyaWFibGVzLg0KKyAgPC9saT4NCisgIDxsaT4NCisgICAgPHN0cm9uZz5TeXN0ZW1Db3JlQ2xvY2s8L3N0cm9uZz4gaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGNvcnJlY3QgcHJlZGVmaW5lZCB2YWx1ZS4NCisgIDwvbGk+DQorICA8bGk+DQorICAgIEFkZGl0aW9uYWwgZnVuY3Rpb24gPHN0cm9uZz52b2lkIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSAodm9pZCk8L3N0cm9uZz4gaXMgcHJvdmlkZWQuPGJyPg0KKyAgIDxzdHJvbmc+U3lzdGVtQ29yZUNsb2NrVXBkYXRlKCk8L3N0cm9uZz4gdXBkYXRlcyB0aGUgdmFyaWFibGUgPHN0cm9uZz5TeXN0ZW1Db3JlQ2xvY2s8L3N0cm9uZz4NCisgICBhbmQgbXVzdCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvcmUgY2xvY2sgaXMgY2hhbmdlZC48YnI+DQorICAgPHN0cm9uZz5TeXN0ZW1Db3JlQ2xvY2tVcGRhdGUoKTwvc3Ryb25nPiBldmFsdWF0ZXMgdGhlIGNsb2NrIHJlZ2lzdGVyIHNldHRpbmdzIGFuZCBjYWxjdWxhdGVzDQorICAgdGhlIGN1cnJlbnQgY29yZSBjbG9jay4NCisgIDwvbGk+DQorPC91bD4NCisgICAgICANCisNCis8aDI+NC4gQWR2YW5jZWQgRGVidWcgRnVuY3Rpb25zPC9oMj4NCis8cD4NCisgIElUTSBjb21tdW5pY2F0aW9uIGNoYW5uZWwgaXMgb25seSBjYXBhYmxlIGZvciBPVVQgZGlyZWN0aW9uLiBUbyBhbGxvdyBhbHNvIGNvbW11bmljYXRpb24gZm9yDQorICBJTiBkaXJlY3Rpb24gYSBzaW1wbGUgY29uY2VwdCBpcyBwcm92aWRlZC4NCis8L3A+DQorPHVsPg0KKyAgPGxpPg0KKyAgICBHbG9iYWwgdmFyaWFibGUgPHN0cm9uZz52b2xhdGlsZSBpbnQgSVRNX1J4QnVmZmVyPC9zdHJvbmc+IHVzZWQgZm9yIElOIGRhdGEuDQorICA8L2xpPg0KKyAgPGxpPg0KKyAgICBGdW5jdGlvbiA8c3Ryb25nPmludCBJVE1fQ2hlY2tDaGFyICh2b2lkKTwvc3Ryb25nPiBjaGVja3MgaWYgYSBuZXcgY2hhcmFjdGVyIGlzIGF2YWlsYWJsZS4NCisgIDwvbGk+DQorICA8bGk+DQorICAgIEZ1bmN0aW9uIDxzdHJvbmc+aW50IElUTV9SZWNlaXZlQ2hhciAodm9pZCk8L3N0cm9uZz4gcmV0cmlldmVzIHRoZSBuZXcgY2hhcmFjdGVyLg0KKyAgPC9saT4NCis8L3VsPg0KKw0KKzxwPg0KKyAgRm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uIHNlZSBmaWxlIDxzdHJvbmc+Q01TSVMgZGVidWcgc3VwcG9ydC5odG08L3N0cm9uZz4uIA0KKzwvcD4NCisNCisNCis8aDI+NS4gQ29yZSBSZWdpc3RlciBCaXQgRGVmaW5pdGlvbnM8L2gyPg0KKzxwPg0KKyAgRmlsZXMgY29yZV9jbTMuaCBhbmQgY29yZV9jbTAuaCBjb250YWluIG5vdyBiaXQgZGVmaW5pdGlvbnMgZm9yIENvcmUgUmVnaXN0ZXJzLiBUaGUgbmFtZSBmb3IgdGhlDQorICBkZWZpbmVzIGNvcnJlc3BvbmQgd2l0aCB0aGUgQ29ydGV4LU0gVGVjaG5pY2FsIFJlZmVyZW5jZSBNYW51YWwuICANCis8L3A+DQorPHA+DQorICBlLmcuIFN5c1RpY2sgc3RydWN0dXJlIHdpdGggYml0IGRlZmluaXRpb25zDQorPC9wPg0KKzxwcmU+DQorLyoqIEBhZGR0b2dyb3VwIENNU0lTX0NNM19TeXNUaWNrIENNU0lTIENNMyBTeXNUaWNrDQorICBtZW1vcnkgbWFwcGVkIHN0cnVjdHVyZSBmb3IgU3lzVGljaw0KKyAgQHsNCisgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIF9fSU8gdWludDMyX3QgQ1RSTDsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDAgIFN5c1RpY2sgQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyICovDQorICBfX0lPIHVpbnQzMl90IExPQUQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDA0ICBTeXNUaWNrIFJlbG9hZCBWYWx1ZSBSZWdpc3RlciAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBWQUw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwOCAgU3lzVGljayBDdXJyZW50IFZhbHVlIFJlZ2lzdGVyICAgICAgKi8NCisgIF9fSSAgdWludDMyX3QgQ0FMSUI7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MEMgIFN5c1RpY2sgQ2FsaWJyYXRpb24gUmVnaXN0ZXIgICAgICAgICovDQorfSBTeXNUaWNrX1R5cGU7DQorDQorLyogU3lzVGljayBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIERlZmluaXRpb25zICovDQorI2RlZmluZSBTeXNUaWNrX0NUUkxfQ09VTlRGTEFHX1BvcyAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IENPVU5URkxBRyBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19DVFJMX0NPVU5URkxBR19Nc2sgICAgICAgICAoMXVsIDw8IFN5c1RpY2tfQ1RSTF9DT1VOVEZMQUdfUG9zKSAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBDT1VOVEZMQUcgTWFzayAqLw0KKw0KKyNkZWZpbmUgU3lzVGlja19DVFJMX0NMS1NPVVJDRV9Qb3MgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBDTEtTT1VSQ0UgUG9zaXRpb24gKi8NCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9DTEtTT1VSQ0VfTXNrICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NUUkxfQ0xLU09VUkNFX1BvcykgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogQ0xLU09VUkNFIE1hc2sgKi8NCisNCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9USUNLSU5UX1BvcyAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogVElDS0lOVCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19DVFJMX1RJQ0tJTlRfTXNrICAgICAgICAgICAoMXVsIDw8IFN5c1RpY2tfQ1RSTF9USUNLSU5UX1BvcykgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBUSUNLSU5UIE1hc2sgKi8NCisNCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9FTkFCTEVfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogRU5BQkxFIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX0NUUkxfRU5BQkxFX01zayAgICAgICAgICAgICgxdWwgPDwgU3lzVGlja19DVFJMX0VOQUJMRV9Qb3MpICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IEVOQUJMRSBNYXNrICovDQorDQorLyogU3lzVGljayBSZWxvYWQgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIFN5c1RpY2tfTE9BRF9SRUxPQURfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgTE9BRDogUkVMT0FEIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX0xPQURfUkVMT0FEX01zayAgICAgICAgICAgICgweEZGRkZGRnVsIDw8IFN5c1RpY2tfTE9BRF9SRUxPQURfUG9zKSAgICAgICAgLyohPCBTeXNUaWNrIExPQUQ6IFJFTE9BRCBNYXNrICovDQorDQorLyogU3lzVGljayBDdXJyZW50IFJlZ2lzdGVyIERlZmluaXRpb25zICovDQorI2RlZmluZSBTeXNUaWNrX1ZBTF9DVVJSRU5UX1BvcyAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIFZBTDogQ1VSUkVOVCBQb3NpdGlvbiAqLw0KKyNkZWZpbmUgU3lzVGlja19WQUxfQ1VSUkVOVF9Nc2sgICAgICAgICAgICAoMHhGRkZGRkZ1bCA8PCBTeXNUaWNrX1ZBTF9DVVJSRU5UX1BvcykgICAgICAgIC8qITwgU3lzVGljayBWQUw6IENVUlJFTlQgTWFzayAqLw0KKw0KKy8qIFN5c1RpY2sgQ2FsaWJyYXRpb24gUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8NCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfTk9SRUZfUG9zICAgICAgICAgICAgMzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IE5PUkVGIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX0NBTElCX05PUkVGX01zayAgICAgICAgICAgICgxdWwgPDwgU3lzVGlja19DQUxJQl9OT1JFRl9Qb3MpICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENBTElCOiBOT1JFRiBNYXNrICovDQorDQorI2RlZmluZSBTeXNUaWNrX0NBTElCX1NLRVdfUG9zICAgICAgICAgICAgIDMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENBTElCOiBTS0VXIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX0NBTElCX1NLRVdfTXNrICAgICAgICAgICAgICgxdWwgPDwgU3lzVGlja19DQUxJQl9TS0VXX1BvcykgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENBTElCOiBTS0VXIE1hc2sgKi8NCisNCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfVEVOTVNfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IFRFTk1TIFBvc2l0aW9uICovDQorI2RlZmluZSBTeXNUaWNrX0NBTElCX1RFTk1TX01zayAgICAgICAgICAgICgweEZGRkZGRnVsIDw8IFN5c1RpY2tfVkFMX0NVUlJFTlRfUG9zKSAgICAgICAgLyohPCBTeXNUaWNrIENBTElCOiBURU5NUyBNYXNrICovDQorLypAfSovIC8qIGVuZCBvZiBncm91cCBDTVNJU19DTTNfU3lzVGljayAqLzwvcHJlPg0KKw0KKzxoMj43LiBEb3h5R2VuIFRhZ3M8L2gyPg0KKzxwPg0KKyAgRG94eUdlbiB0YWdzIGluIGZpbGVzIGNvcmVfY20zLltjLGhdIGFuZCBjb3JlX2NtMC5bYyxoXSBhcmUgcmV3b3JrZWQgdG8gY3JlYXRlIHByb3BlciBkb2N1bWVudGF0aW9uDQorICB1c2luZyBEb3h5R2VuLg0KKzwvcD4NCisNCis8aDI+OC4gRm9sZGVyIFN0cnVjdHVyZTwvaDI+DQorPHA+DQorICBUaGUgZm9sZGVyIHN0cnVjdHVyZSBpcyBjaGFuZ2VkIHRvIGRpZmZlcmVudGlhdGUgdGhlIHNpbmdsZSBzdXBwb3J0IHBhY2thZ2VzLg0KKzwvcD4NCisNCisgIDx1bD4NCisgICAgPGxpPkNNMDwvbGk+DQorICAgIDxsaT5DTTMNCisgICAgICAgPHVsPg0KKyAgICAgICAgIDxsaT5Db3JlU3VwcG9ydDwvbGk+DQorICAgICAgICAgPGxpPkRldmljZVN1cHBvcnQ8L2xpPg0KKyAgICAgICAgICAgPHVsPg0KKyAgICAgICAgICAgICA8bGk+VmVuZG9yIA0KKyAgICAgICAgICAgICAgIDx1bD4NCisgICAgICAgICAgICAgICAgIDxsaT5EZXZpY2UNCisgICAgICAgICAgICAgICAgICAgPHVsPg0KKyAgICAgICAgICAgICAgICAgICAgICA8bGk+U3RhcnR1cA0KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5Ub29sY2hhaW48L2xpPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlRvb2xjaGFpbjwvbGk+DQorICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+Li4uPC9saT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KKyAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KKyAgICAgICAgICAgICAgICAgICA8L3VsPg0KKyAgICAgICAgICAgICAgICAgPC9saT4NCisgICAgICAgICAgICAgICAgIDxsaT5EZXZpY2U8L2xpPg0KKyAgICAgICAgICAgICAgICAgPGxpPi4uLjwvbGk+DQorICAgICAgICAgICAgICAgPC91bD4NCisgICAgICAgICAgICAgPC9saT4NCisgICAgICAgICAgICAgPGxpPlZlbmRvcjwvbGk+DQorICAgICAgICAgICAgIDxsaT4uLi48L2xpPg0KKyAgICAgICAgICAgPC91bD4NCisgICAgICAgICA8L2xpPg0KKyAgICAgICAgIDxsaT5FeGFtcGxlDQorICAgICAgICAgICA8dWw+DQorICAgICAgICAgICAgIDxsaT5Ub29sY2hhaW4gDQorICAgICAgICAgICAgICAgPHVsPg0KKyAgICAgICAgICAgICAgICAgPGxpPkRldmljZTwvbGk+DQorICAgICAgICAgICAgICAgICA8bGk+RGV2aWNlPC9saT4NCisgICAgICAgICAgICAgICAgIDxsaT4uLi48L2xpPg0KKyAgICAgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgICAgIDwvbGk+DQorICAgICAgICAgICAgIDxsaT5Ub29sY2hhaW48L2xpPg0KKyAgICAgICAgICAgICA8bGk+Li4uPC9saT4NCisgICAgICAgICAgIDwvdWw+DQorICAgICAgICAgPC9saT4NCisgICAgICAgPC91bD4NCisgICAgPC9saT4NCisgICAgIA0KKyAgICA8bGk+RG9jdW1lbnRhdGlvbjwvbGk+DQorICA8L3VsPg0KKw0KKzxoMj45LiBPcGVuIFBvaW50czwvaDI+DQorPHA+DQorICBGb2xsb3dpbmcgcG9pbnRzIG5lZWQgdG8gYmUgY2xhcmlmaWVkIGFuZCBzb2x2ZWQ6DQorPC9wPg0KKzx1bD4NCisgIDxsaT4NCisgICAgPHA+DQorICAgICAgRXF1aXZhbGVudCBDIGFuZCBBc3NlbWJsZXIgc3RhcnR1cCBmaWxlcy4NCisgICAgPC9wPg0KKyAgICA8cD4NCisgICAgICBJcyB0aGVyZSBhIG5lZWQgZm9yIGhhdmluZyBDIHN0YXJ0dXAgZmlsZXMgYWx0aG91Z2ggYXNzZW1ibGVyIHN0YXJ0dXAgZmlsZXMgYXJlDQorICAgICAgdmVyeSBlZmZpY2llbnQgYW5kIGRvIG5vdCBuZWVkIHRvIGJlIGNoYW5nZWQ/DQorICAgIDxwLz4NCisgIDwvbGk+DQorICA8bGk+DQorICAgIDxwPg0KKyAgICAgIFBsYWNpbmcgb2YgSEVBUCBpbiBleHRlcm5hbCBSQU0uDQorICAgIDwvcD4NCisgICAgPHA+DQorICAgICAgSXQgbXVzdCBiZSBwb3NzaWJsZSB0byBwbGFjZSBIRUFQIGluIGV4dGVybmFsIFJBTSBpZiB0aGUgZGV2aWNlIHN1cHBvcnRzIGFuIA0KKyAgICAgIGV4dGVybmFsIG1lbW9yeSBjb250cm9sbGVyLg0KKyAgICA8L3A+DQorICA8L2xpPg0KKyAgPGxpPg0KKyAgICA8cD4NCisgICAgICBQbGFjaW5nIG9mIFNUQUNLIC9IRUFQLg0KKyAgICA8L3A+DQorICAgIDxwPg0KKyAgICAgIFNUQUNLIHNob3VsZCBhbHdheXMgYmUgcGxhY2VkIGF0IHRoZSBlbmQgb2YgaW50ZXJuYWwgUkFNLg0KKyAgICA8L3A+DQorICAgIDxwPg0KKyAgICAgIElmIEhFQVAgaXMgcGxhY2VkIGluIGludGVybmFsIFJBTSB0aGFuIGl0IHNob3VsZCBiZSBwbGFjZWQgYWZ0ZXIgUlcgWkkgc2VjdGlvbi4NCisgICAgPC9wPg0KKyAgPC9saT4NCisgIDxsaT4NCisgICAgPHA+DQorICAgICAgUmVtb3ZpbmcgY29yZV9jbTMuYyBhbmQgY29yZV9jbTAuYy4NCisgICAgPC9wPg0KKyAgICA8cD4NCisgICAgICBPbiBhIGxvbmcgdGVybSB0aGUgZnVuY3Rpb25zIGluIGNvcmVfY20zLmMgYW5kIGNvcmVfY20wLmMgbXVzdCBiZSByZXBsYWNlZCB3aXRoIA0KKyAgICAgIGFwcHJvcHJpYXRlIGNvbXBpbGVyIGludHJpbnNpY3MuDQorICAgIDwvcD4NCisgIDwvbGk+DQorPC91bD4NCisNCisNCis8aDI+MTAuIExpbWl0YXRpb25zPC9oMj4NCis8cD4NCisgIFRoZSBmb2xsb3dpbmcgbGltaXRhdGlvbnMgYXJlIG5vdCBjb3ZlcmVkIHdpdGggdGhlIGN1cnJlbnQgQ01TSVMgdmVyc2lvbjoNCis8L3A+DQorPHVsPg0KKyA8bGk+DQorICBObyA8c3Ryb25nPkMgc3RhcnR1cCBmaWxlczwvc3Ryb25nPiBmb3IgQVJNIHRvb2xjaGFpbiBhcmUgcHJvdmlkZWQuIA0KKyA8L2xpPg0KKyA8bGk+DQorICBObyA8c3Ryb25nPkMgc3RhcnR1cCBmaWxlczwvc3Ryb25nPiBmb3IgR05VIHRvb2xjaGFpbiBhcmUgcHJvdmlkZWQuIA0KKyA8L2xpPg0KKyA8bGk+DQorICBObyA8c3Ryb25nPkMgc3RhcnR1cCBmaWxlczwvc3Ryb25nPiBmb3IgSUFSIHRvb2xjaGFpbiBhcmUgcHJvdmlkZWQuIA0KKyA8L2xpPg0KKyA8bGk+DQorICBObyA8c3Ryb25nPlRhc2tpbmc8L3N0cm9uZz4gcHJvamVjdHMgYXJlIHByb3ZpZGVkIHlldC4gDQorIDwvbGk+DQorPC91bD4NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9Eb2N1bWVudGF0aW9uL0NNU0lTX0NvcmUuaHRtIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvRG9jdW1lbnRhdGlvbi9DTVNJU19Db3JlLmh0bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmQxMzFlCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvRG9jdW1lbnRhdGlvbi9DTVNJU19Db3JlLmh0bQpAQCAtMCwwICsxLDEzMzcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPg0KKzxodG1sIHhtbG5zOnA9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOnBvd2VycG9pbnQiIHhtbG5zOnY9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIiB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiPjxoZWFkPg0KKyAgDQorICA8dGl0bGU+Q01TSVM6IENvcnRleCBNaWNyb2NvbnRyb2xsZXIgU29mdHdhcmUgSW50ZXJmYWNlIFN0YW5kYXJkPC90aXRsZT48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPg0KKyAgPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4NCisgIDxzdHlsZT4NCis8IS0tDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUtlaWwgU29mdHdhcmUgQ0hNIFN0eWxlIFNoZWV0DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KK2JvZHkgeyBjb2xvcjogIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgZm9udC1zaXplOiA3NSU7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBBcmlhbCwgJ1NhbnMgU2VyaWYnIH0NCithOmxpbmsgeyBjb2xvcjogIzAwMDBGRjsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQ0KK2E6dmlzaXRlZCB7IGNvbG9yOiAjMDAwMEZGOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB9DQorYTphY3RpdmUgeyBjb2xvcjogI0ZGMDAwMDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQ0KK2E6aG92ZXIgeyBjb2xvcjogI0ZGMDAwMDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQ0KK2gxIHsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMThwdDsgY29sb3I6ICMwMDAwODA7IGZvbnQtd2VpZ2h0OiBib2xkOyB0ZXh0LWFsaWduOiBDZW50ZXI7IG1hcmdpbi1yaWdodDogMyB9DQoraDIgeyBmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxNHB0OyBjb2xvcjogIzAwMDA4MDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGJhY2tncm91bmQtY29sb3I6ICNDQ0NDQ0M7IG1hcmdpbi10b3A6IDI0OyBtYXJnaW4tYm90dG9tOiAzOyBwYWRkaW5nOiA2IH0NCitoMyB7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBib2xkOyBiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDQ0NDOyBtYXJnaW4tdG9wOiAyNDsgbWFyZ2luLWJvdHRvbTogMzsgcGFkZGluZzogNiB9DQorcHJlIHsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBmb250LXNpemU6IDEwcHQ7IGJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0M7IG1hcmdpbi1sZWZ0OiAyNDsgbWFyZ2luLXJpZ2h0OiAyNCB9DQordWwgeyBsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsgbWFyZ2luLXRvcDogNnB0OyBtYXJnaW4tYm90dG9tOiAwIH0NCitvbCB7IG1hcmdpbi10b3A6IDZwdDsgbWFyZ2luLWJvdHRvbTogMCB9DQorbGkgeyBjbGVhcjogYm90aDsgbWFyZ2luLWJvdHRvbTogNnB0IH0NCit0YWJsZSB7IGZvbnQtc2l6ZTogMTAwJTsgYm9yZGVyLXdpZHRoOiAwOyBwYWRkaW5nOiAwIH0NCit0aCB7IGNvbG9yOiAjRkZGRkZGOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDgwOyB0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyBwYWRkaW5nLXJpZ2h0OiA2cHQgfQ0KK3RyIHsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcCB9DQordGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBwYWRkaW5nLXJpZ2h0OiA2cHQgfQ0KKy5Ub29sVCB7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogIzgwODA4MCB9DQorLlRpbnlUIHsgZm9udC1zaXplOiA4cHQ7IHRleHQtYWxpZ246IENlbnRlciB9DQorY29kZSB7IGNvbG9yOiAjMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRTBFMEUwOyBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQ291cmllcjsgbGluZS1oZWlnaHQ6IDEyMCU7IGZvbnQtc3R5bGU6IG5vcm1hbCB9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLU5vdGVzDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KK3Aubm90ZSB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjbGVhcjogYm90aDsgbWFyZ2luLWJvdHRvbTogM3B0OyBwYWRkaW5nLXRvcDogNnB0IH0NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRXhwYW5kaW5nL0NvbnRyYWN0aW5nIERpdmlzaW9ucw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjZXhwYW5kIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBtYXJnaW4tYm90dG9tOiAzcHQgfQ0KK2ltZy5leHBhbmQgeyBib3JkZXItc3R5bGU6IG5vbmU7IGJvcmRlci13aWR0aDogbWVkaXVtIH0NCitkaXYuZXhwYW5kIHsgZGlzcGxheTogbm9uZTsgbWFyZ2luLWxlZnQ6IDlwdDsgbWFyZ2luLXRvcDogMCB9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVdoZXJlIExpc3QgVGFncw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCitwLndoIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNsZWFyOiBib3RoOyBtYXJnaW4tdG9wOiA2cHQ7IG1hcmdpbi1ib3R0b206IDNwdCB9DQordGFibGUud2ggeyB3aWR0aDogMTAwJSB9DQordGQud2hJdGVtIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZm9udC1zdHlsZTogaXRhbGljOyBwYWRkaW5nLXJpZ2h0OiA2cHQ7IHBhZGRpbmctYm90dG9tOiA2cHQgfQ0KK3RkLndoRGVzYyB7IHBhZGRpbmctYm90dG9tOiA2cHQgfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1LZWlsIFRhYmxlIFRhZ3MNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQordGFibGUua3QgeyB3aWR0aDogMTAwJTsgYm9yZGVyOiAxcHQgc29saWQgIzAwMDAwMCB9DQordGgua3QgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyBib3JkZXItYm90dG9tOiAxcHQgc29saWQgIzAwMDAwMDsgcGFkZGluZy1sZWZ0OiA2cHQ7IHBhZGRpbmctcmlnaHQ6IDZwdDsgcGFkZGluZy10b3A6IDRwdDsgcGFkZGluZy1ib3R0b206IDRwdCB9DQordHIua3QgeyB9DQordGQua3QgeyBjb2xvcjogIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjogI0UwRTBFMDsgYm9yZGVyLXRvcDogMXB0IHNvbGlkICNBMEEwQTA7IHBhZGRpbmctbGVmdDogNnB0OyBwYWRkaW5nLXJpZ2h0OiA2cHQ7IHBhZGRpbmctdG9wOiAycHQ7IHBhZGRpbmctYm90dG9tOiAycHQgfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIC5zdHlsZTEgew0KKwliYWNrZ3JvdW5kLWNvbG9yOiAjRTBFMEUwOw0KK30NCisuTw0KKwl7Y29sb3I6IzFEMzE1QjsNCisJZm9udC1zaXplOjE0OSU7fQ0KKyAgICAtLT4NCisgIDwvc3R5bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5Db3J0ZXggTWljcm9jb250cm9sbGVyIFNvZnR3YXJlIEludGVyZmFjZSBTdGFuZGFyZDwvaDE+DQorDQorPHAgYWxpZ249ImNlbnRlciI+VGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgQ29ydGV4IE1pY3JvY29udHJvbGxlciBTb2Z0d2FyZSBJbnRlcmZhY2UgU3RhbmRhcmQgKENNU0lTKS48L3A+DQorPHAgYWxpZ249ImNlbnRlciI+VmVyc2lvbjogMS4zMCAtIDMwLiBPY3RvYmVyIDIwMDk8L3A+DQorDQorPHAgY2xhc3M9IlRpbnlUIj5JbmZvcm1hdGlvbiBpbiB0aGlzIGZpbGUsIHRoZSBhY2NvbXBhbnkgbWFudWFscywgYW5kIHNvZnR3YXJlIGlzPGJyPg0KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IKkgQVJNIEx0ZC48YnI+QWxsIHJpZ2h0cyByZXNlcnZlZC4NCis8L3A+DQorDQorPGhyPg0KKw0KKzxwPjxzcGFuIHN0eWxlPSJGT05ULVdFSUdIVDogYm9sZCI+UmV2aXNpb24gSGlzdG9yeTwvc3Bhbj48L3A+DQorPHVsPg0KKwk8bGk+VmVyc2lvbiAxLjAwOiBpbml0aWFsIHJlbGVhc2UuIDwvbGk+DQorCTxsaT5WZXJzaW9uIDEuMDE6IGFkZGVkIF9fTERSRVg8ZW0+eDwvZW0+LCBfX1NUUkVYPGVtPng8L2VtPiwgYW5kIF9fQ0xSRVguPC9saT4NCisJPGxpPlZlcnNpb24gMS4wMjogYWRkZWQgQ29ydGV4LU0wLiA8L2xpPg0KKwk8bGk+VmVyc2lvbiAxLjEwOiBzZWNvbmQgcmV2aWV3LiA8L2xpPg0KKwk8bGk+VmVyc2lvbiAxLjIwOiB0aGlyZCByZXZpZXcuIDwvbGk+DQorCTxsaT5WZXJzaW9uIDEuMzAgUFJFLVJFTEVBU0U6IHJld29ya2VkIFN0YXJ0dXAgQ29uY2VwdCwgYWRkaXRpb25hbCBEZWJ1ZyBGdW5jdGlvbmFsaXR5LjwvbGk+DQorCTxsaT5WZXJzaW9uIDEuMzAgMm5kIFBSRS1SRUxFQVNFOiBjaGFuZ2VkIGZvbGRlciBzdHJ1Y3R1cmUsIGFkZGVkIGRveHlHZW4gY29tbWVudHMsIGFkZGVkIEJpdCBkZWZpbml0aW9ucy48L2xpPg0KKwk8bGk+VmVyc2lvbiAxLjMwOiB1cGRhdGVkIERldmljZSBTdXBwb3J0IFBhY2thZ2VzLjwvbGk+DQorPC91bD4NCisNCis8aHI+DQorDQorPGgyPkNvbnRlbnRzPC9oMj4NCisNCis8b2w+DQorICA8bGkgY2xhc3M9IkxJMiI+PGEgaHJlZj0iIzEiPkFib3V0PC9hPjwvbGk+DQorICA8bGkgY2xhc3M9IkxJMiI+PGEgaHJlZj0iIzIiPkNvZGluZyBSdWxlcyBhbmQgQ29udmVudGlvbnM8L2E+PC9saT4NCisgIDxsaSBjbGFzcz0iTEkyIj48YSBocmVmPSIjMyI+Q01TSVMgRmlsZXM8L2E+PC9saT4NCisgIDxsaSBjbGFzcz0iTEkyIj48YSBocmVmPSIjNCI+Q29yZSBQZXJpcGhlcmFsIEFjY2VzcyBMYXllcjwvYT48L2xpPg0KKyAgPGxpIGNsYXNzPSJMSTIiPjxhIGhyZWY9IiM1Ij5DTVNJUyBFeGFtcGxlPC9hPjwvbGk+DQorPC9vbD4NCisNCis8aDI+PGEgbmFtZT0iMSI+PC9hPkFib3V0PC9oMj4NCisNCis8cD4NCisgIFRoZSA8c3Ryb25nPkNvcnRleCBNaWNyb2NvbnRyb2xsZXIgU29mdHdhcmUgSW50ZXJmYWNlIFN0YW5kYXJkIChDTVNJUyk8L3N0cm9uZz4gYW5zd2VycyB0aGUgY2hhbGxlbmdlcw0KKyAgdGhhdCBhcmUgZmFjZWQgd2hlbiBzb2Z0d2FyZSBjb21wb25lbnRzIGFyZSBkZXBsb3llZCB0byBwaHlzaWNhbCBtaWNyb2NvbnRyb2xsZXIgZGV2aWNlcyBiYXNlZCBvbiBhDQorICBDb3J0ZXgtTTAgb3IgQ29ydGV4LU0zIHByb2Nlc3Nvci4gVGhlIENNU0lTIHdpbGwgYmUgYWxzbyBleHBhbmRlZCB0byBmdXR1cmUgQ29ydGV4LU0gDQorICBwcm9jZXNzb3IgY29yZXMgKHRoZSB0ZXJtIENvcnRleC1NIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCkuIFRoZSBDTVNJUyBpcyBkZWZpbmVkIGluIGNsb3NlIGNvLW9wZXJhdGlvbg0KKyAgd2l0aCB2YXJpb3VzIHNpbGljb24gYW5kIHNvZnR3YXJlIHZlbmRvcnMgYW5kIHByb3ZpZGVzIGEgY29tbW9uIGFwcHJvYWNoIHRvIGludGVyZmFjZSB0byBwZXJpcGhlcmFscywgDQorICByZWFsLXRpbWUgb3BlcmF0aW5nIHN5c3RlbXMsIGFuZCBtaWRkbGV3YXJlIGNvbXBvbmVudHMuDQorPC9wPg0KKw0KKzxwPkFSTSBwcm92aWRlcyBhcyBwYXJ0IG9mIHRoZSBDTVNJUyB0aGUgZm9sbG93aW5nIHNvZnR3YXJlIGxheWVycyB0aGF0IGFyZQ0KK2F2YWlsYWJsZSBmb3IgdmFyaW91cyBjb21waWxlciBpbXBsZW1lbnRhdGlvbnM6PC9wPg0KKzx1bD4NCisgIDxsaT48c3Ryb25nPkNvcmUgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXI8L3N0cm9uZz46IGNvbnRhaW5zIG5hbWUgZGVmaW5pdGlvbnMsIA0KKyAgICBhZGRyZXNzIGRlZmluaXRpb25zIGFuZCBoZWxwZXIgZnVuY3Rpb25zIHRvDQorICAgIGFjY2VzcyBjb3JlIHJlZ2lzdGVycyBhbmQgcGVyaXBoZXJhbHMuIEl0IGRlZmluZXMgYWxzbyBhIGRldmljZQ0KKyAgICBpbmRlcGVuZGVudCBpbnRlcmZhY2UgZm9yIFJUT1MgS2VybmVscyB0aGF0IGluY2x1ZGVzIGRlYnVnIGNoYW5uZWwNCisgICAgZGVmaW5pdGlvbnMuPC9saT4NCis8L3VsPg0KKw0KKzxwPlRoZXNlIHNvZnR3YXJlIGxheWVycyBhcmUgZXhwYW5kZWQgYnkgU2lsaWNvbiBwYXJ0bmVycyB3aXRoOjwvcD4NCis8dWw+DQorICA8bGk+PHN0cm9uZz5EZXZpY2UgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXI8L3N0cm9uZz46IHByb3ZpZGVzIGRlZmluaXRpb25zDQorICAgIGZvciBhbGwgZGV2aWNlIHBlcmlwaGVyYWxzPC9saT4NCisgIDxsaT48c3Ryb25nPkFjY2VzcyBGdW5jdGlvbnMgZm9yIFBlcmlwaGVyYWxzIChvcHRpb25hbCk8L3N0cm9uZz46IHByb3ZpZGVzDQorICAgIGFkZGl0aW9uYWwgaGVscGVyIGZ1bmN0aW9ucyBmb3IgcGVyaXBoZXJhbHM8L2xpPg0KKzwvdWw+DQorDQorPHA+Q01TSVMgZGVmaW5lcyBmb3IgYSBDb3J0ZXgtTSBNaWNyb2NvbnRyb2xsZXIgU3lzdGVtOjwvcD4NCis8dWw+DQorICA8bGkgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7Ij5BIGNvbW1vbiB3YXkgdG8gYWNjZXNzIHBlcmlwaGVyYWwgcmVnaXN0ZXJzDQorICAgIGFuZCBhIGNvbW1vbiB3YXkgdG8gZGVmaW5lIGV4Y2VwdGlvbiB2ZWN0b3JzLjwvbGk+DQorICA8bGkgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7Ij5UaGUgcmVnaXN0ZXIgbmFtZXMgb2YgdGhlIDxzdHJvbmc+Q29yZQ0KKyAgICBQZXJpcGhlcmFsczwvc3Ryb25nPiBhbmQ8c3Ryb25nPiA8L3N0cm9uZz50aGUgbmFtZXMgb2YgdGhlIDxzdHJvbmc+Q29yZQ0KKyAgICBFeGNlcHRpb24gVmVjdG9yczwvc3Ryb25nPi48L2xpPg0KKyAgPGxpPkFuIGRldmljZSBpbmRlcGVuZGVudCBpbnRlcmZhY2UgZm9yIFJUT1MgS2VybmVscyBpbmNsdWRpbmcgYSBkZWJ1Zw0KKyAgICBjaGFubmVsLjwvbGk+DQorPC91bD4NCisNCis8cD4NCisgIEJ5IHVzaW5nIENNU0lTIGNvbXBsaWFudCBzb2Z0d2FyZSBjb21wb25lbnRzLCB0aGUgdXNlciBjYW4gZWFzaWVyIHJlLXVzZSB0ZW1wbGF0ZSBjb2RlLiANCisgIENNU0lTIGlzIGludGVuZGVkIHRvIGVuYWJsZSB0aGUgY29tYmluYXRpb24gb2Ygc29mdHdhcmUgY29tcG9uZW50cyBmcm9tIG11bHRpcGxlIG1pZGRsZXdhcmUgdmVuZG9ycy4NCis8L3A+DQorDQorPGgyPjxhIG5hbWU9IjIiPjwvYT5Db2RpbmcgUnVsZXMgYW5kIENvbnZlbnRpb25zPC9oMj4NCisNCis8cD4NCisgIFRoZSBmb2xsb3dpbmcgc2VjdGlvbiBkZXNjcmliZXMgdGhlIGNvZGluZyBydWxlcyBhbmQgY29udmVudGlvbnMgdXNlZCBpbiB0aGUgQ01TSVMgDQorICBpbXBsZW1lbnRhdGlvbi4gSXQgY29udGFpbnMgYWxzbyBpbmZvcm1hdGlvbiBhYm91dCBkYXRhIHR5cGVzIGFuZCB2ZXJzaW9uIG51bWJlciBpbmZvcm1hdGlvbi4NCis8L3A+DQorDQorPGgzPkVzc2VudGlhbHM8L2gzPg0KKzx1bD4NCisgIDxsaT5UaGUgQ01TSVMgQyBjb2RlIGNvbmZvcm1zIHRvIE1JU1JBIDIwMDQgcnVsZXMuIEluIGNhc2Ugb2YgTUlTUkEgdmlvbGF0aW9ucywgDQorICAgICAgdGhlcmUgYXJlIGRpc2FibGUgYW5kIGVuYWJsZSBzZXF1ZW5jZXMgZm9yIFBDLUxJTlQgaW5zZXJ0ZWQuPC9saT4NCisgIDxsaT5BTlNJIHN0YW5kYXJkIGRhdGEgdHlwZXMgZGVmaW5lZCBpbiB0aGUgQU5TSSBDIGhlYWRlciBmaWxlDQorICAgIDxzdHJvbmc+Jmx0O3N0ZGludC5oJmd0Ozwvc3Ryb25nPiBhcmUgdXNlZC48L2xpPg0KKyAgPGxpPiNkZWZpbmUgY29uc3RhbnRzIHRoYXQgaW5jbHVkZSBleHByZXNzaW9ucyBtdXN0IGJlIGVuY2xvc2VkIGJ5DQorICAgIHBhcmVudGhlc2lzLjwvbGk+DQorICA8bGk+VmFyaWFibGVzIGFuZCBwYXJhbWV0ZXJzIGhhdmUgYSBjb21wbGV0ZSBkYXRhIHR5cGUuPC9saT4NCisgIDxsaT5BbGwgZnVuY3Rpb25zIGluIHRoZSA8c3Ryb25nPkNvcmUgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXI8L3N0cm9uZz4gYXJlDQorICAgIHJlLWVudHJhbnQuPC9saT4NCisgIDxsaT5UaGUgPHN0cm9uZz5Db3JlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyPC9zdHJvbmc+IGhhcyBubyBibG9ja2luZyBjb2RlDQorICAgICh3aGljaCBtZWFucyB0aGF0IHdhaXQvcXVlcnkgbG9vcHMgYXJlIGRvbmUgYXQgb3RoZXIgc29mdHdhcmUgbGF5ZXJzKS48L2xpPg0KKyAgPGxpPkZvciBlYWNoIGV4Y2VwdGlvbi9pbnRlcnJ1cHQgdGhlcmUgaXMgZGVmaW5pdGlvbiBmb3I6DQorICA8dWw+DQorICAgIDxsaT5hbiBleGNlcHRpb24vaW50ZXJydXB0IGhhbmRsZXIgd2l0aCB0aGUgcG9zdGZpeCA8c3Ryb25nPl9IYW5kbGVyIDwvc3Ryb25nPg0KKwkoZm9yIGV4Y2VwdGlvbnMpIG9yIDxzdHJvbmc+X0lSUUhhbmRsZXI8L3N0cm9uZz4gKGZvciBpbnRlcnJ1cHRzKS48L2xpPg0KKyAgICA8bGk+YSBkZWZhdWx0IGV4Y2VwdGlvbi9pbnRlcnJ1cHQgaGFuZGxlciAod2VhayBkZWZpbml0aW9uKSB0aGF0IGNvbnRhaW5zIGFuIGVuZGxlc3MgbG9vcC48L2xpPg0KKyAgICA8bGk+YSAjZGVmaW5lIG9mIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIHdpdGggdGhlIHBvc3RmaXggPHN0cm9uZz5fSVJRbjwvc3Ryb25nPi48L2xpPg0KKyAgPC91bD48L2xpPg0KKzwvdWw+DQorDQorPGgzPlJlY29tbWVuZGF0aW9uczwvaDM+DQorDQorPHA+VGhlIENNU0lTIHJlY29tbWVuZHMgdGhlIGZvbGxvd2luZyBjb252ZW50aW9ucyBmb3IgaWRlbnRpZmllcnMuPC9wPg0KKzx1bD4NCisgIDxsaT48c3Ryb25nPkNBUElUQUw8L3N0cm9uZz4gbmFtZXMgdG8gaWRlbnRpZnkgQ29yZSBSZWdpc3RlcnMsIFBlcmlwaGVyYWwgUmVnaXN0ZXJzLCBhbmQgQ1BVIEluc3RydWN0aW9ucy48L2xpPg0KKyAgPGxpPjxzdHJvbmc+Q2FtZWxDYXNlPC9zdHJvbmc+IG5hbWVzIHRvIGlkZW50aWZ5IHBlcmlwaGVyYWxzIGFjY2VzcyBmdW5jdGlvbnMgYW5kIGludGVycnVwdHMuPC9saT4NCisgIDxsaT48c3Ryb25nPlBFUklQSEVSQUxfPC9zdHJvbmc+IHByZWZpeCB0byBpZGVudGlmeSBmdW5jdGlvbnMgdGhhdCBiZWxvbmcgdG8gc3BlY2lmeSBwZXJpcGhlcmFscy48L2xpPg0KKyAgPGxpPjxzdHJvbmc+RG94eWdlbjwvc3Ryb25nPiBjb21tZW50cyBmb3IgYWxsIGZ1bmN0aW9ucyBhcmUgaW5jbHVkZWQgYXMgZGVzY3JpYmVkIHVuZGVyIDxzdHJvbmc+RnVuY3Rpb24gQ29tbWVudHM8L3N0cm9uZz4gYmVsb3cuPC9saT4NCis8L3VsPg0KKw0KKzxiPkNvbW1lbnRzPC9iPg0KKw0KKzx1bD4NCisgIDxsaT5Db21tZW50cyB1c2UgdGhlIEFOU0kgQzkwIHN0eWxlICg8ZW0+LyogY29tbWVudCAqLzwvZW0+KSBvciBDKysgc3R5bGUgDQorICAoPGVtPi8vIGNvbW1lbnQ8L2VtPikuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgcHJvZ3JhbW1pbmcgdG9vbHMgc3VwcG9ydCB0b2RheSANCisJY29uc2lzdGVudGx5IHRoZSBDKysgY29tbWVudCBzdHlsZS48L2xpPg0KKyAgPGxpPjxzdHJvbmc+RnVuY3Rpb24gQ29tbWVudHM8L3N0cm9uZz4gcHJvdmlkZSBmb3IgZWFjaCBmdW5jdGlvbiB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOg0KKyAgPHVsPg0KKyAgICA8bGk+b25lLWxpbmUgYnJpZWYgZnVuY3Rpb24gb3ZlcnZpZXcuPC9saT4NCisgICAgPGxpPmRldGFpbGVkIHBhcmFtZXRlciBleHBsYW5hdGlvbi48L2xpPg0KKyAgICA8bGk+ZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgcmV0dXJuIHZhbHVlcy48L2xpPg0KKyAgICA8bGk+ZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGFjdHVhbCBmdW5jdGlvbi48L2xpPg0KKyAgPC91bD4NCisgIDxwPjxiPkRveHlnZW4gRXhhbXBsZTo8L2I+PC9wPg0KKyAgPHByZT4NCisvKiogDQorICogQGJyaWVmICBFbmFibGUgSW50ZXJydXB0IGluIE5WSUMgSW50ZXJydXB0IENvbnRyb2xsZXINCisgKiBAcGFyYW0gIElSUW4gIGludGVycnVwdCBudW1iZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGludGVycnVwdA0KKyAqIEByZXR1cm4gbm9uZS4NCisgKiBFbmFibGUgdGhlIHNwZWNpZmllZCBpbnRlcnJ1cHQgaW4gdGhlIE5WSUMgSW50ZXJydXB0IENvbnRyb2xsZXIuDQorICogT3RoZXIgc2V0dGluZ3Mgb2YgdGhlIGludGVycnVwdCBzdWNoIGFzIHByaW9yaXR5IGFyZSBub3QgYWZmZWN0ZWQuDQorICovPC9wcmU+DQorICA8L2xpPg0KKzwvdWw+DQorDQorPGgzPkRhdGEgVHlwZXMgYW5kIElPIFR5cGUgUXVhbGlmaWVyczwvaDM+DQorDQorPHA+DQorICBUaGUgPHN0cm9uZz5Db3J0ZXgtTSBIQUw8L3N0cm9uZz4gdXNlcyB0aGUgc3RhbmRhcmQgdHlwZXMgZnJvbSB0aGUgc3RhbmRhcmQgQU5TSSBDIGhlYWRlciBmaWxlDQorICA8c3Ryb25nPiZsdDtzdGRpbnQuaCZndDs8L3N0cm9uZz4uIDxzdHJvbmc+SU8gVHlwZSBRdWFsaWZpZXJzPC9zdHJvbmc+IGFyZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGFjY2Vzcw0KKyAgdG8gcGVyaXBoZXJhbCB2YXJpYWJsZXMuIElPIFR5cGUgUXVhbGlmaWVycyBhcmUgaW5kZW50ZWQgdG8gYmUgdXNlZCBmb3IgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgDQorICBkZWJ1ZyBpbmZvcm1hdGlvbiBvZiBwZXJpcGhlcmFsIHJlZ2lzdGVycy4NCis8L3A+DQorDQorPHRhYmxlIGNsYXNzPSJrdCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KKyAgPHRib2R5Pg0KKyAgICA8dHI+DQorICAgICAgPHRoIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPklPIFR5cGUgUXVhbGlmaWVyPC90aD4NCisgICAgICA8dGggY2xhc3M9Imt0Ij4jZGVmaW5lPC90aD4NCisgICAgICA8dGggY2xhc3M9Imt0Ij5EZXNjcmlwdGlvbjwvdGg+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+X19JPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij52b2xhdGlsZSBjb25zdDwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UmVhZCBhY2Nlc3Mgb25seTwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+X19PPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij52b2xhdGlsZTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+V3JpdGUgYWNjZXNzIG9ubHk8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPl9fSU88L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPnZvbGF0aWxlPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5SZWFkIGFuZCB3cml0ZSBhY2Nlc3M8L3RkPg0KKyAgICA8L3RyPg0KKyAgPC90Ym9keT4NCis8L3RhYmxlPg0KKw0KKzxoMz5DTVNJUyBWZXJzaW9uIE51bWJlcjwvaDM+DQorPHA+DQorICBGaWxlIDxzdHJvbmc+Y29yZV9jbTMuaDwvc3Ryb25nPiBjb250YWlucyB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIENNU0lTIHdpdGggdGhlIGZvbGxvd2luZyBkZWZpbmU6DQorPC9wPg0KKw0KKzxwcmU+DQorI2RlZmluZSBfX0NNM19DTVNJU19WRVJTSU9OX01BSU4gICgweDAxKSAgICAgIC8qIFszMToxNl0gbWFpbiB2ZXJzaW9uICAgICAgICovDQorI2RlZmluZSBfX0NNM19DTVNJU19WRVJTSU9OX1NVQiAgICgweDMwKSAgICAgIC8qIFsxNTowXSAgc3ViIHZlcnNpb24gICAgICAgICovDQorI2RlZmluZSBfX0NNM19DTVNJU19WRVJTSU9OICAgICAgICgoX19DTTNfQ01TSVNfVkVSU0lPTl9NQUlOICZsdDsmbHQ7IDE2KSB8IF9fQ00zX0NNU0lTX1ZFUlNJT05fU1VCKTwvcHJlPg0KKw0KKzxwPg0KKyAgRmlsZSA8c3Ryb25nPmNvcmVfY20wLmg8L3N0cm9uZz4gY29udGFpbnMgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBDTVNJUyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVmaW5lOg0KKzwvcD4NCisNCis8cHJlPg0KKyNkZWZpbmUgX19DTTBfQ01TSVNfVkVSU0lPTl9NQUlOICAoMHgwMSkgICAgICAvKiBbMzE6MTZdIG1haW4gdmVyc2lvbiAgICAgICAqLw0KKyNkZWZpbmUgX19DTTBfQ01TSVNfVkVSU0lPTl9TVUIgICAoMHgzMCkgICAgICAvKiBbMTU6MF0gIHN1YiB2ZXJzaW9uICAgICAgICAqLw0KKyNkZWZpbmUgX19DTTBfQ01TSVNfVkVSU0lPTiAgICAgICAoKF9fQ00wX0NNU0lTX1ZFUlNJT05fTUFJTiAmbHQ7Jmx0OyAxNikgfCBfX0NNMF9DTVNJU19WRVJTSU9OX1NVQik8L3ByZT4NCisNCisNCis8aDM+Q01TSVMgQ29ydGV4IENvcmU8L2gzPg0KKzxwPg0KKyAgRmlsZSA8c3Ryb25nPmNvcmVfY20zLmg8L3N0cm9uZz4gY29udGFpbnMgdGhlIHR5cGUgb2YgdGhlIENNU0lTIENvcnRleC1NIHdpdGggdGhlIGZvbGxvd2luZyBkZWZpbmU6DQorPC9wPg0KKw0KKzxwcmU+DQorI2RlZmluZSBfX0NPUlRFWF9NICAgICAgICAgICAgICAgICgweDAzKTwvcHJlPg0KKw0KKzxwPg0KKyAgRmlsZSA8c3Ryb25nPmNvcmVfY20wLmg8L3N0cm9uZz4gY29udGFpbnMgdGhlIHR5cGUgb2YgdGhlIENNU0lTIENvcnRleC1NIHdpdGggdGhlIGZvbGxvd2luZyBkZWZpbmU6DQorPC9wPg0KKw0KKzxwcmU+DQorI2RlZmluZSBfX0NPUlRFWF9NICAgICAgICAgICAgICAgICgweDAwKTwvcHJlPg0KKw0KKw0KKzxoMj48YSBuYW1lPSIzIj48L2E+Q01TSVMgRmlsZXM8L2gyPg0KKzxwPg0KKyAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgRmlsZXMgcHJvdmlkZWQgaW4gY29udGV4dCB3aXRoIHRoZSBDTVNJUyB0byBhY2Nlc3MgdGhlIENvcnRleC1NDQorICBoYXJkd2FyZSBhbmQgcGVyaXBoZXJhbHMuDQorPC9wPg0KKw0KKzx0YWJsZSBjbGFzcz0ia3QiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCisgIDx0Ym9keT4NCisgICAgPHRyPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5GaWxlPC90aD4NCisgICAgICA8dGggY2xhc3M9Imt0Ij5Qcm92aWRlcjwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+RGVzY3JpcHRpb248L3RoPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPjxpPmRldmljZS5oPC9pPjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+RGV2aWNlIHNwZWNpZmljIChwcm92aWRlZCBieSBzaWxpY29uIHBhcnRuZXIpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5EZWZpbmVzIHRoZSBwZXJpcGhlcmFscyBmb3IgdGhlIGFjdHVhbCBkZXZpY2UuIFRoZSBmaWxlIG1heSB1c2UgDQorICAgICAgICBzZXZlcmFsIG90aGVyIGluY2x1ZGUgZmlsZXMgdG8gZGVmaW5lIHRoZSBwZXJpcGhlcmFscyBvZiB0aGUgYWN0dWFsIGRldmljZS48L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPmNvcmVfY20wLmg8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkFSTSAoZm9yIFJlYWxWaWV3IEFSTUNDLCBJQVIsIGFuZCBHTlUgR0NDKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+RGVmaW5lcyB0aGUgY29yZSBwZXJpcGhlcmFscyBmb3IgdGhlIENvcnRleC1NMCBDUFUgYW5kIGNvcmUgcGVyaXBoZXJhbHMuPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5jb3JlX2NtMy5oPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5BUk0gKGZvciBSZWFsVmlldyBBUk1DQywgSUFSLCBhbmQgR05VIEdDQyk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkRlZmluZXMgdGhlIGNvcmUgcGVyaXBoZXJhbHMgZm9yIHRoZSBDb3J0ZXgtTTMgQ1BVIGFuZCBjb3JlIHBlcmlwaGVyYWxzLjwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+Y29yZV9jbTAuYzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+QVJNIChmb3IgUmVhbFZpZXcgQVJNQ0MsIElBUiwgYW5kIEdOVSBHQ0MpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Qcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgYWNjZXNzIGNvcmUgcmVnaXN0ZXJzLjwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+Y29yZV9jbTMuYzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+QVJNIChmb3IgUmVhbFZpZXcgQVJNQ0MsIElBUiwgYW5kIEdOVSBHQ0MpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Qcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgYWNjZXNzIGNvcmUgcmVnaXN0ZXJzLjwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+c3RhcnR1cDxpPl9kZXZpY2U8L2k+PC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5BUk0gKGFkYXB0ZWQgYnkgY29tcGlsZXIgcGFydG5lciAvIHNpbGljb24gcGFydG5lcik8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlByb3ZpZGVzIHRoZSBDb3J0ZXgtTSBzdGFydHVwIGNvZGUgYW5kIHRoZSBjb21wbGV0ZSAoZGV2aWNlIHNwZWNpZmljKSBJbnRlcnJ1cHQgVmVjdG9yIFRhYmxlPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5zeXN0ZW08aT5fZGV2aWNlPC9pPjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+QVJNIChhZGFwdGVkIGJ5IHNpbGljb24gcGFydG5lcik8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlByb3ZpZGVzIGEgZGV2aWNlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIGRldmljZS4gSXQgY29uZmlndXJlcyB0aGUgZGV2aWNlIGluaXRpYWxpemVzIA0KKyAgICAgICAgdHlwaWNhbGx5IHRoZSBvc2NpbGxhdG9yIChQTEwpIHRoYXQgaXMgcGFydCBvZiB0aGUgbWljcm9jb250cm9sbGVyIGRldmljZTwvdGQ+DQorICAgIDwvdHI+DQorICA8L3Rib2R5Pg0KKzwvdGFibGU+DQorDQorPGgzPjxlbT5kZXZpY2UuaDwvZW0+PC9oMz4NCisNCis8cD4NCisgIFRoZSBmaWxlIDxlbT48c3Ryb25nPmRldmljZS5oPC9zdHJvbmc+PC9lbT4gaXMgcHJvdmlkZWQgYnkgdGhlIHNpbGljb24gdmVuZG9yIGFuZCBpcyB0aGUgDQorICA8dT48c3Ryb25nPmNlbnRyYWwgaW5jbHVkZSBmaWxlPC9zdHJvbmc+PC91PiB0aGF0IHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtbWVyIGlzIHVzaW5nIGluIA0KKyAgdGhlIEMgc291cmNlIGNvZGUuIFRoaXMgZmlsZSBjb250YWluczoNCis8L3A+DQorPHVsPg0KKyAgPGxpPg0KKwk8cD48c3Ryb25nPkludGVycnVwdCBOdW1iZXIgRGVmaW5pdGlvbjwvc3Ryb25nPjogcHJvdmlkZXMgaW50ZXJydXB0IG51bWJlcnMgDQorCShJUlFuKSBmb3IgYWxsIGNvcmUgYW5kIGRldmljZSBzcGVjaWZpYyBleGNlcHRpb25zIGFuZCBpbnRlcnJ1cHRzLjwvcD4NCisJPC9saT4NCisJPGxpPg0KKwk8cD48c3Ryb25nPkNvbmZpZ3VyYXRpb24gZm9yIGNvcmVfY20wLmggLyBjb3JlX2NtMy5oPC9zdHJvbmc+OiByZWZsZWN0cyB0aGUgDQorCWFjdHVhbCBjb25maWd1cmF0aW9uIG9mIHRoZSBDb3J0ZXgtTSBwcm9jZXNzb3IgdGhhdCBpcyBwYXJ0IG9mIHRoZSBhY3R1YWwgDQorCWRldmljZS4gQXMgc3VjaCB0aGUgZmlsZSA8c3Ryb25nPmNvcmVfY20wLmggLyBjb3JlX2NtMy5oPC9zdHJvbmc+IGlzIGluY2x1ZGVkIHRoYXQgDQorCWltcGxlbWVudHMgYWNjZXNzIHRvIHByb2Nlc3NvciByZWdpc3RlcnMgYW5kIGNvcmUgcGVyaXBoZXJhbHMuIDwvcD4NCisJPC9saT4NCisJPGxpPg0KKwk8cD48c3Ryb25nPkRldmljZSBQZXJpcGhlcmFsIEFjY2VzcyBMYXllcjwvc3Ryb25nPjogcHJvdmlkZXMgZGVmaW5pdGlvbnMNCisgICAgZm9yIGFsbCBkZXZpY2UgcGVyaXBoZXJhbHMuIEl0IGNvbnRhaW5zIGFsbCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSBhZGRyZXNzIA0KKwltYXBwaW5nIGZvciB0aGUgZGV2aWNlIHNwZWNpZmljIHBlcmlwaGVyYWxzLiA8L3A+DQorCTwvbGk+DQorICA8bGk+PHN0cm9uZz5BY2Nlc3MgRnVuY3Rpb25zIGZvciBQZXJpcGhlcmFscyAob3B0aW9uYWwpPC9zdHJvbmc+OiBwcm92aWRlcw0KKyAgICBhZGRpdGlvbmFsIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBlcmlwaGVyYWxzIHRoYXQgYXJlIHVzZWZ1bCBmb3IgcHJvZ3JhbW1pbmcgDQorCW9mIHRoZXNlIHBlcmlwaGVyYWxzLiBBY2Nlc3MgRnVuY3Rpb25zIG1heSBiZSBwcm92aWRlZCBhcyBpbmxpbmUgZnVuY3Rpb25zIA0KKwlvciBjYW4gYmUgZXh0ZXJuIHJlZmVyZW5jZXMgdG8gYSBkZXZpY2Ugc3BlY2lmaWMgbGlicmFyeSBwcm92aWRlZCBieSB0aGUgDQorCXNpbGljb24gdmVuZG9yLjwvbGk+DQorPC91bD4NCisNCisNCis8aDQ+PHN0cm9uZz5JbnRlcnJ1cHQgTnVtYmVyIERlZmluaXRpb248L3N0cm9uZz48L2g0Pg0KKw0KKzxwPlRvIGFjY2VzcyB0aGUgZGV2aWNlIHNwZWNpZmljIGludGVycnVwdHMgdGhlIGRldmljZS5oIGZpbGUgZGVmaW5lcyBJUlFuIA0KK251bWJlcnMgZm9yIHRoZSBjb21wbGV0ZSBkZXZpY2UgdXNpbmcgYSBlbnVtIHR5cGVkZWYgYXMgc2hvd24gYmVsb3c6PC9wPg0KKzxwcmU+DQordHlwZWRlZiBlbnVtIElSUW4NCit7DQorLyoqKioqKiAgQ29ydGV4LU0zIFByb2Nlc3NvciBFeGNlcHRpb25zL0ludGVycnVwdCBOdW1iZXJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIE5vbk1hc2thYmxlSW50X0lSUW4gICAgICAgICAgICAgPSAtMTQsICAgICAgLyohJmx0OyAyIE5vbiBNYXNrYWJsZSBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgSGFyZEZhdWx0X0lSUW4gICAgICAgICAgICAgICAgICA9IC0xMywgICAgICAvKiEmbHQ7IDMgQ29ydGV4LU0zIEhhcmQgRmF1bHQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovDQorICBNZW1vcnlNYW5hZ2VtZW50X0lSUW4gICAgICAgICAgID0gLTEyLCAgICAgIC8qISZsdDsgNCBDb3J0ZXgtTTMgTWVtb3J5IE1hbmFnZW1lbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAgKi8NCisgIEJ1c0ZhdWx0X0lSUW4gICAgICAgICAgICAgICAgICAgPSAtMTEsICAgICAgLyohJmx0OyA1IENvcnRleC1NMyBCdXMgRmF1bHQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgVXNhZ2VGYXVsdF9JUlFuICAgICAgICAgICAgICAgICA9IC0xMCwgICAgICAvKiEmbHQ7IDYgQ29ydGV4LU0zIFVzYWdlIEZhdWx0IEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICovDQorICBTVkNhbGxfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gLTUsICAgICAgIC8qISZsdDsgMTEgQ29ydGV4LU0zIFNWIENhbGwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIERlYnVnTW9uaXRvcl9JUlFuICAgICAgICAgICAgICAgPSAtNCwgICAgICAgLyohJmx0OyAxMiBDb3J0ZXgtTTMgRGVidWcgTW9uaXRvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAqLw0KKyAgUGVuZFNWX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IC0yLCAgICAgICAvKiEmbHQ7IDE0IENvcnRleC1NMyBQZW5kIFNWIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBTeXNUaWNrX0lSUW4gICAgICAgICAgICAgICAgICAgID0gLTEsICAgICAgIC8qISZsdDsgMTUgQ29ydGV4LU0zIFN5c3RlbSBUaWNrIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqICBTVE0zMiBzcGVjaWZpYyBJbnRlcnJ1cHQgTnVtYmVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgV1dER19TVE1fSVJRbiAgICAgICAgICAgICAgICAgICA9IDAsICAgICAgICAvKiEmbHQ7IFdpbmRvdyBXYXRjaERvZyBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBQVkRfU1RNX0lSUW4gICAgICAgICAgICAgICAgICAgID0gMSwgICAgICAgIC8qISZsdDsgUFZEIHRocm91Z2ggRVhUSSBMaW5lIGRldGVjdGlvbiBJbnRlcnJ1cHQgICAgICAgICAgICAgKi8NCisgIDoNCisgIDoNCisgIH0gSVJRbl9UeXBlOzwvcHJlPg0KKw0KKw0KKzxoND5Db25maWd1cmF0aW9uIGZvciBjb3JlX2NtMC5oIC8gY29yZV9jbTMuaDwvaDQ+DQorPHA+DQorICBUaGUgQ29ydGV4LU0gY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2hpY2ggYXJlIGRlZmluZWQgZm9yIGVhY2ggZGV2aWNlIGltcGxlbWVudGF0aW9uLiBTb21lIA0KKyAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZWZsZWN0ZWQgaW4gdGhlIENNU0lTIGxheWVyIHVzaW5nIHRoZSAjZGVmaW5lIHNldHRpbmdzIGRlc2NyaWJlZCBiZWxvdy4NCis8L3A+DQorPHA+DQorICBUbyBhY2Nlc3MgY29yZSBwZXJpcGhlcmFscyBmaWxlIDxlbT48c3Ryb25nPmRldmljZS5oPC9zdHJvbmc+PC9lbT4gaW5jbHVkZXMgZmlsZSA8Yj5jb3JlX2NtMC5oIC8gY29yZV9jbTMuaDwvYj4uDQorICBTZXZlcmFsIGZlYXR1cmVzIGluIDxzdHJvbmc+Y29yZV9jbTAuaCAvIGNvcmVfY20zLmg8L3N0cm9uZz4gYXJlIGNvbmZpZ3VyZWQgYnkgdGhlIGZvbGxvd2luZyBkZWZpbmVzIHRoYXQgbXVzdCBiZSANCisgIGRlZmluZWQgYmVmb3JlIDxzdHJvbmc+I2luY2x1ZGUgJmx0O2NvcmVfY20wLmgmZ3Q7PC9zdHJvbmc+IC8gPHN0cm9uZz4jaW5jbHVkZSAmbHQ7Y29yZV9jbTMuaCZndDs8L3N0cm9uZz4NCisgIHByZXByb2Nlc3NvciBjb21tYW5kLg0KKzwvcD4NCisNCis8dGFibGUgY2xhc3M9Imt0IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+DQorICA8dGJvZHk+DQorICAgIDx0cj4NCisgICAgICA8dGggY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+I2RlZmluZTwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPkZpbGU8L3RoPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5WYWx1ZTwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+RGVzY3JpcHRpb248L3RoPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPl9fTlZJQ19QUklPX0JJVFM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPmNvcmVfY20wLmg8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj4oMik8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk51bWJlciBvZiBwcmlvcml0eSBiaXRzIGltcGxlbWVudGVkIGluIHRoZSBOVklDIChkZXZpY2Ugc3BlY2lmaWMpPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5fX05WSUNfUFJJT19CSVRTPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5jb3JlX2NtMy5oPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+KDIgLi4uIDgpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5OdW1iZXIgb2YgcHJpb3JpdHkgYml0cyBpbXBsZW1lbnRlZCBpbiB0aGUgTlZJQyAoZGV2aWNlIHNwZWNpZmljKTwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+X19NUFVfUFJFU0VOVDwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+Y29yZV9jbTAuaCwgY29yZV9jbTMuaDwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPigwLCAxKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+RGVmaW5lcyBpZiBhbiBNUFUgaXMgcHJlc2VudCBvciBub3Q8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPl9fVmVuZG9yX1N5c1RpY2tDb25maWc8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPmNvcmVfY20wLmgsIGNvcmVfY20zLmg8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj4oMSk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPldoZW4gdGhpcyBkZWZpbmUgaXMgc2V0dXAgdG8gMSwgdGhlIDxzdHJvbmc+U3lzVGlja0NvbmZpZzwvc3Ryb25nPiBmdW5jdGlvbiANCisJCWluIDxzdHJvbmc+Y29yZV9jbTMuaDwvc3Ryb25nPiBpcyBleGNsdWRlZC4gSW4gdGhpcyBjYXNlIHRoZSA8ZW0+PHN0cm9uZz5kZXZpY2UuaDwvc3Ryb25nPjwvZW0+IA0KKwkJZmlsZSBtdXN0IGNvbnRhaW4gYSB2ZW5kb3Igc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbi48L3RkPg0KKyAgICA8L3RyPg0KKyAgPC90Ym9keT4NCis8L3RhYmxlPg0KKw0KKw0KKzxoND5EZXZpY2UgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXI8L2g0Pg0KKzxwPg0KKyAgRWFjaCBwZXJpcGhlcmFsIHVzZXMgYSBwcmVmaXggd2hpY2ggY29uc2lzdHMgb2YgPHN0cm9uZz4mbHQ7ZGV2aWNlIGFiYnJldmlhdGlvbiZndDtfPC9zdHJvbmc+IA0KKyAgYW5kIDxzdHJvbmc+Jmx0O3BlcmlwaGVyYWwgbmFtZSZndDtfPC9zdHJvbmc+IHRvIGlkZW50aWZ5IHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRoYXQgYWNjZXNzIHRoaXMgDQorICBzcGVjaWZpYyBwZXJpcGhlcmFsLiBUaGUgaW50ZW50aW9uIG9mIHRoaXMgaXMgdG8gYXZvaWQgbmFtZSBjb2xsaXNpb25zIGNhdXNlZA0KKyAgZHVlIHRvIHNob3J0IG5hbWVzLiBJZiBtb3JlIHRoYW4gb25lIHBlcmlwaGVyYWwgb2YgdGhlIHNhbWUgdHlwZSBleGlzdHMsIA0KKyAgaWRlbnRpZmllcnMgaGF2ZSBhIHBvc3RmaXggKGRpZ2l0IG9yIGxldHRlcikuIEZvciBleGFtcGxlOg0KKzwvcD4NCis8dWw+DQorCTxsaT4mbHQ7ZGV2aWNlIGFiYnJldmlhdGlvbiZndDtfVUFSVF9UeXBlOiBkZWZpbmVzIHRoZSBnZW5lcmljIHJlZ2lzdGVyIGxheW91dCBmb3IgYWxsIFVBUlQgY2hhbm5lbHMgaW4gYSBkZXZpY2UuDQorICAgICAgPHByZT4NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIHVuaW9uIHsNCisgIF9fSSAgdWludDhfdCAgUkJSOyAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDAwMCAgIFJlY2VpdmVyIEJ1ZmZlciBSZWdpc3RlciAgICAqLw0KKyAgX19PICB1aW50OF90ICBUSFI7ICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDAwICAgVHJhbnNtaXQgSG9sZGluZyBSZWdpc3RlciAgICovDQorICBfX0lPIHVpbnQ4X3QgIERMTDsgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMDAgICBEaXZpc29yIExhdGNoIExTQiAgICAgICAgICAgKi8NCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQwOw0KKyAgfTsNCisgIHVuaW9uIHsNCisgIF9fSU8gdWludDhfdCAgRExNOyAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDAwNCAgIERpdmlzb3IgTGF0Y2ggTVNCICAgICAgICAgICAqLw0KKyAgX19JTyB1aW50MzJfdCBJRVI7ICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDA0ICAgSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAgICovDQorICB9Ow0KKyAgdW5pb24gew0KKyAgX19JICB1aW50MzJfdCBJSVI7ICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDA4ICAgSW50ZXJydXB0IElEIFJlZ2lzdGVyICAgICAgICovDQorICBfX08gIHVpbnQ4X3QgIEZDUjsgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMDggICBGSUZPIENvbnRyb2wgUmVnaXN0ZXIgICAgICAgKi8NCisgIH07DQorICBfX0lPIHVpbnQ4X3QgIExDUjsgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMEMgICBMaW5lIENvbnRyb2wgUmVnaXN0ZXIgICAgICAgKi8NCisgICAgICAgdWludDhfdCAgUkVTRVJWRUQxWzddOw0KKyAgX19JICB1aW50OF90ICBMU1I7ICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDE0ICAgTGluZSBTdGF0dXMgUmVnaXN0ZXIgICAgICAgICovDQorICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVEMls3XTsNCisgIF9fSU8gdWludDhfdCAgU0NSOyAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDAxQyAgIFNjcmF0Y2ggUGFkIFJlZ2lzdGVyICAgICAgICAqLw0KKyAgICAgICB1aW50OF90ICBSRVNFUlZFRDNbM107DQorICBfX0lPIHVpbnQzMl90IEFDUjsgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMjAgICBBdXRvYmF1ZCBDb250cm9sIFJlZ2lzdGVyICAgKi8NCisgIF9fSU8gdWludDhfdCAgSUNSOyAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDAyNCAgIElyREEgQ29udHJvbCBSZWdpc3RlciAgICAgICAqLw0KKyAgICAgICB1aW50OF90ICBSRVNFUlZFRDRbM107DQorICBfX0lPIHVpbnQ4X3QgIEZEUjsgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMjggICBGcmFjdGlvbmFsIERpdmlkZXIgUmVnaXN0ZXIgKi8NCisgICAgICAgdWludDhfdCAgUkVTRVJWRUQ1WzddOw0KKyAgX19JTyB1aW50OF90ICBURVI7ICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDMwICAgVHJhbnNtaXQgRW5hYmxlIFJlZ2lzdGVyICAgICovDQorICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVENlszOV07DQorICBfX0kgIHVpbnQ4X3QgIEZJRk9MVkw7ICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwNTggICBGSUZPIExldmVsIFJlZ2lzdGVyICAgICAgICAgKi8NCit9IExQQ19VQVJUX1R5cGVEZWY7PC9wcmU+DQorICA8L2xpPg0KKwk8bGk+Jmx0O2RldmljZSBhYmJyZXZpYXRpb24mZ3Q7X1VBUlQxOiBpcyBhIHBvaW50ZXIgdG8gYSByZWdpc3RlciBzdHJ1Y3R1cmUgdGhhdCByZWZlcnMgdG8gYSBzcGVjaWZpYyBVQVJULiANCisgICAgICBGb3IgZXhhbXBsZSBVQVJUMS0mZ3Q7RFIgaXMgdGhlIGRhdGEgcmVnaXN0ZXIgb2YgVUFSVDEuDQorICAgICAgPHByZT4NCisjZGVmaW5lIExQQ19VQVJUMiAgICAgICAgICAgICAoKExQQ19VQVJUX1R5cGVEZWYgICAgICAqKSBMUENfVUFSVDJfQkFTRSAgICApDQorI2RlZmluZSBMUENfVUFSVDMgICAgICAgICAgICAgKChMUENfVUFSVF9UeXBlRGVmICAgICAgKikgTFBDX1VBUlQzX0JBU0UgICAgKTwvcHJlPg0KKyAgPC9saT4NCis8L3VsPg0KKw0KKzxoNT5NaW5pbWFsIFJlcXVpZW1lbnRzPC9oNT4NCis8cD4NCisgIFRvIGFjY2VzcyB0aGUgcGVyaXBoZXJhbCByZWdpc3RlcnMgYW5kIHJlbGF0ZWQgZnVuY3Rpb24gaW4gYSBkZXZpY2UgdGhlIGZpbGVzIDxzdHJvbmc+PGVtPmRldmljZS5oPC9lbT48L3N0cm9uZz4gDQorICBhbmQgPHN0cm9uZz5jb3JlX2NtMC5oPC9zdHJvbmc+IC8gPHN0cm9uZz5jb3JlX2NtMy5oPC9zdHJvbmc+IGRlZmluZXMgYXMgYSBtaW5pbXVtOg0KKzwvcD4NCis8dWw+DQorICA8bGk+VGhlIDxzdHJvbmc+UmVnaXN0ZXIgTGF5b3V0IFR5cGVkZWY8L3N0cm9uZz4gZm9yIGVhY2ggcGVyaXBoZXJhbCB0aGF0IGRlZmluZXMgYWxsIHJlZ2lzdGVyIG5hbWVzLg0KKyAgICAgIE5hbWVzIHRoYXQgc3RhcnQgd2l0aCBSRVNFUlZFIGFyZSB1c2VkIHRvIGludHJvZHVjZSBzcGFjZSBpbnRvIHRoZSBzdHJ1Y3R1cmUgdG8gYWRqdXN0IHRoZSBhZGRyZXNzZXMgb2YNCisgICAgICB0aGUgcGVyaXBoZXJhbCByZWdpc3RlcnMuIEZvciBleGFtcGxlOg0KKyAgICAgIDxwcmU+DQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgX19JTyB1aW50MzJfdCBDVFJMOyAgICAgIC8qIFN5c1RpY2sgQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyICovDQorICBfX0lPIHVpbnQzMl90IExPQUQ7ICAgICAgLyogU3lzVGljayBSZWxvYWQgVmFsdWUgUmVnaXN0ZXIgICAgICAgKi8NCisgIF9fSU8gdWludDMyX3QgVkFMOyAgICAgICAvKiBTeXNUaWNrIEN1cnJlbnQgVmFsdWUgUmVnaXN0ZXIgICAgICAqLw0KKyAgX19JICB1aW50MzJfdCBDQUxJQjsgICAgIC8qIFN5c1RpY2sgQ2FsaWJyYXRpb24gUmVnaXN0ZXIgICAgICAgICovDQorICB9IFN5c1RpY2tfVHlwZTs8L3ByZT4NCisgIDwvbGk+DQorDQorICA8bGk+DQorICAgIDxzdHJvbmc+QmFzZSBBZGRyZXNzPC9zdHJvbmc+IGZvciBlYWNoIHBlcmlwaGVyYWwgKGluIGNhc2Ugb2YgbXVsdGlwbGUgcGVyaXBoZXJhbHMgDQorICAgIHRoYXQgdXNlIHRoZSBzYW1lIDxzdHJvbmc+cmVnaXN0ZXIgbGF5b3V0IHR5cGVkZWY8L3N0cm9uZz4gbXVsdGlwbGUgYmFzZSBhZGRyZXNzZXMgYXJlIGRlZmluZWQpLiBGb3IgZXhhbXBsZToNCisgICAgPHByZT4NCisjZGVmaW5lIFN5c1RpY2tfQkFTRSAoU0NTX0JBU0UgKyAweDAwMTApICAgICAgICAgICAgLyogU3lzVGljayBCYXNlIEFkZHJlc3MgKi88L3ByZT4NCisgIDwvbGk+DQorDQorICA8bGk+DQorICAgIDxzdHJvbmc+QWNjZXNzIERlZmluaXRpb248L3N0cm9uZz4gZm9yIGVhY2ggcGVyaXBoZXJhbCAoaW4gY2FzZSBvZiBtdWx0aXBsZSBwZXJpcGhlcmFscyB0aGF0IHVzZSANCisgICAgdGhlIHNhbWUgPHN0cm9uZz5yZWdpc3RlciBsYXlvdXQgdHlwZWRlZjwvc3Ryb25nPiBtdWx0aXBsZSBhY2Nlc3MgZGVmaW5pdGlvbnMgZXhpc3QsIGkuZS4gTFBDX1VBUlQwLCANCisgICAgTFBDX1VBUlQyKS4gRm9yIEV4YW1wbGU6DQorICAgIDxwcmU+DQorI2RlZmluZSBTeXNUaWNrICgoU3lzVGlja19UeXBlICopIFN5c1RpY2tfQkFTRSkgICAgIC8qIFN5c1RpY2sgYWNjZXNzIGRlZmluaXRpb24gKi88L3ByZT4NCisgIDwvbGk+DQorPC91bD4NCisNCis8cD4NCisgIFRoZXNlIGRlZmluaXRpb25zIGFsbG93IHRvIGFjY2VzcyB0aGUgcGVyaXBoZXJhbCByZWdpc3RlcnMgZnJvbSB1c2VyIGNvZGUgd2l0aCBzaW1wbGUgYXNzaWdubWVudHMgbGlrZToNCis8L3A+DQorPHByZT5TeXNUaWNrLSZndDtDVFJMID0gMDs8L3ByZT4NCisNCis8aDU+T3B0aW9uYWwgRmVhdHVyZXM8L2g1Pg0KKzxwPkluIGFkZGl0aW9uIHRoZSA8ZW0+IDxzdHJvbmc+ZGV2aWNlLmggPC9zdHJvbmc+PC9lbT5maWxlIG1heSBkZWZpbmU6PC9wPg0KKzx1bD4NCisJPGxpPg0KKyAgICAjZGVmaW5lIGNvbnN0YW50cyB0aGF0IHNpbXBsaWZ5IGFjY2VzcyB0byB0aGUgcGVyaXBoZXJhbCByZWdpc3RlcnMuIA0KKwkgIFRoZXNlIGNvbnN0YW50IGRlZmluZSBiaXQtcG9zaXRpb25zIG9yIG90aGVyIHNwZWNpZmljIHBhdHRlcm5zIGFyZSB0aGF0IHJlcXVpcmVkIGZvciB0aGUgDQorICAgIHByb2dyYW1taW5nIG9mIHRoZSBwZXJpcGhlcmFsIHJlZ2lzdGVycy4gVGhlIGlkZW50aWZpZXJzIHVzZWQgc3RhcnQgd2l0aCANCisgICAgPHN0cm9uZz4mbHQ7ZGV2aWNlIGFiYnJldmlhdGlvbiZndDtfPC9zdHJvbmc+IGFuZCA8c3Ryb25nPiZsdDtwZXJpcGhlcmFsIG5hbWUmZ3Q7Xzwvc3Ryb25nPi4gDQorICAgIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBDQVBJVEFMIGxldHRlcnMgZm9yIHN1Y2ggI2RlZmluZSBjb25zdGFudHMuDQorICA8L2xpPg0KKwk8bGk+DQorICAgIEZ1bmN0aW9ucyB0aGF0IHBlcmZvcm0gbW9yZSBjb21wbGV4IGZ1bmN0aW9ucyB3aXRoIHRoZSBwZXJpcGhlcmFsIChpLmUuIHN0YXR1cyBxdWVyeSBiZWZvcmUgDQorICAgIGEgc2VuZGluZyByZWdpc3RlciBpcyBhY2Nlc3NlZCkuIEFnYWluIHRoZXNlIGZ1bmN0aW9uIHN0YXJ0IHdpdGggDQorICAgIDxzdHJvbmc+Jmx0O2RldmljZSBhYmJyZXZpYXRpb24mZ3Q7Xzwvc3Ryb25nPiBhbmQgPHN0cm9uZz4mbHQ7cGVyaXBoZXJhbCBuYW1lJmd0O188L3N0cm9uZz4uIA0KKyAgPC9saT4NCis8L3VsPg0KKw0KKzxoMz5jb3JlX2NtMC5oIGFuZCBjb3JlX2NtMC5jPC9oMz4NCis8cD4NCisgIEZpbGUgPGI+Y29yZV9jbTAuaDwvYj4gZGVzY3JpYmVzIHRoZSBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoZSBDb3J0ZXgtTTAgY29yZSBwZXJpcGhlcmFscyBhbmQgZG9lcyANCisgIHRoZSBhZGRyZXNzIG1hcHBpbmcgb2YgdGhpcyBzdHJ1Y3R1cmVzLiBJdCBhbHNvIHByb3ZpZGVzIGJhc2ljIGFjY2VzcyB0byB0aGUgQ29ydGV4LU0wIGNvcmUgcmVnaXN0ZXJzIA0KKyAgYW5kIGNvcmUgcGVyaXBoZXJhbHMgd2l0aCBlZmZpY2llbnQgZnVuY3Rpb25zIChkZWZpbmVkIGFzIDxzdHJvbmc+c3RhdGljIGlubGluZTwvc3Ryb25nPikuDQorPC9wPg0KKzxwPg0KKyAgRmlsZSA8Yj5jb3JlX2NtMC5jPC9iPiBkZWZpbmVzIHNldmVyYWwgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IGFjY2VzcyBwcm9jZXNzb3IgcmVnaXN0ZXJzLg0KKzwvcD4NCis8cD5Ub2dldGhlciB0aGVzZSBmaWxlcyBpbXBsZW1lbnQgdGhlIDxhIGhyZWY9IiM0Ij5Db3JlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyPC9hPiBmb3IgYSBDb3J0ZXgtTTAuPC9wPg0KKw0KKzxoMz5jb3JlX2NtMy5oIGFuZCBjb3JlX2NtMy5jPC9oMz4NCis8cD4NCisgIEZpbGUgPGI+Y29yZV9jbTMuaDwvYj4gZGVzY3JpYmVzIHRoZSBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoZSBDb3J0ZXgtTTMgY29yZSBwZXJpcGhlcmFscyBhbmQgZG9lcyANCisgIHRoZSBhZGRyZXNzIG1hcHBpbmcgb2YgdGhpcyBzdHJ1Y3R1cmVzLiBJdCBhbHNvIHByb3ZpZGVzIGJhc2ljIGFjY2VzcyB0byB0aGUgQ29ydGV4LU0zIGNvcmUgcmVnaXN0ZXJzIA0KKyAgYW5kIGNvcmUgcGVyaXBoZXJhbHMgd2l0aCBlZmZpY2llbnQgZnVuY3Rpb25zIChkZWZpbmVkIGFzIDxzdHJvbmc+c3RhdGljIGlubGluZTwvc3Ryb25nPikuDQorPC9wPg0KKzxwPg0KKyAgRmlsZSA8Yj5jb3JlX2NtMy5jPC9iPiBkZWZpbmVzIHNldmVyYWwgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IGFjY2VzcyBwcm9jZXNzb3IgcmVnaXN0ZXJzLg0KKzwvcD4NCis8cD5Ub2dldGhlciB0aGVzZSBmaWxlcyBpbXBsZW1lbnQgdGhlIDxhIGhyZWY9IiM0Ij5Db3JlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyPC9hPiBmb3IgYSBDb3J0ZXgtTTMuPC9wPg0KKw0KKzxoMz5zdGFydHVwXzxlbT5kZXZpY2U8L2VtPjwvaDM+DQorPHA+DQorICBBIHRlbXBsYXRlIGZpbGUgZm9yIDxzdHJvbmc+c3RhcnR1cF88ZW0+ZGV2aWNlPC9lbT48L3N0cm9uZz4gaXMgcHJvdmlkZWQgYnkgQVJNIGZvciBlYWNoIHN1cHBvcnRlZA0KKyAgY29tcGlsZXIuIEl0IGlzIGFkYXB0ZWQgYnkgdGhlIHNpbGljb24gdmVuZG9yIHRvIGluY2x1ZGUgaW50ZXJydXB0IHZlY3RvcnMgZm9yIGFsbCBkZXZpY2Ugc3BlY2lmaWMgDQorICBpbnRlcnJ1cHQgaGFuZGxlcnMuIEVhY2ggaW50ZXJydXB0IGhhbmRsZXIgaXMgZGVmaW5lZCBhcyA8c3Ryb25nPjxlbT53ZWFrPC9lbT48L3N0cm9uZz4gZnVuY3Rpb24gDQorICB0byBhbiBkdW1teSBoYW5kbGVyLiBUaGVyZWZvcmUgdGhlIGludGVycnVwdCBoYW5kbGVyIGNhbiBiZSBkaXJlY3RseSB1c2VkIGluIGFwcGxpY2F0aW9uIHNvZnR3YXJlIA0KKyAgd2l0aG91dCBhbnkgcmVxdWlyZW1lbnRzIHRvIGFkYXB0IHRoZSA8c3Ryb25nPnN0YXJ0dXBfPGVtPmRldmljZTwvZW0+PC9zdHJvbmc+IGZpbGUuDQorPC9wPg0KKzxwPg0KKyAgVGhlIGZvbGxvd2luZyBleGNlcHRpb24gbmFtZXMgYXJlIGZpeGVkIGFuZCBkZWZpbmUgdGhlIHN0YXJ0IG9mIHRoZSB2ZWN0b3IgdGFibGUgZm9yIGEgQ29ydGV4LU0wOg0KKzwvcD4NCis8cHJlPg0KK19fVmVjdG9ycyAgICAgICBEQ0QgICAgIF9faW5pdGlhbF9zcCAgICAgICAgICAgICAgOyBUb3Agb2YgU3RhY2sNCisgICAgICAgICAgICAgICAgRENEICAgICBSZXNldF9IYW5kbGVyICAgICAgICAgICAgIDsgUmVzZXQgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIE5NSV9IYW5kbGVyICAgICAgICAgICAgICAgOyBOTUkgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIEhhcmRGYXVsdF9IYW5kbGVyICAgICAgICAgOyBIYXJkIEZhdWx0IEhhbmRsZXINCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICBTVkNfSGFuZGxlciAgICAgICAgICAgICAgIDsgU1ZDYWxsIEhhbmRsZXINCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgICAgICAgICAgRENEICAgICBQZW5kU1ZfSGFuZGxlciAgICAgICAgICAgIDsgUGVuZFNWIEhhbmRsZXINCisgICAgICAgICAgICAgICAgRENEICAgICBTeXNUaWNrX0hhbmRsZXIgICAgICAgICAgIDsgU3lzVGljayBIYW5kbGVyPC9wcmU+DQorDQorPHA+DQorICBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbiBuYW1lcyBhcmUgZml4ZWQgYW5kIGRlZmluZSB0aGUgc3RhcnQgb2YgdGhlIHZlY3RvciB0YWJsZSBmb3IgYSBDb3J0ZXgtTTM6DQorPC9wPg0KKzxwcmU+DQorX19WZWN0b3JzICAgICAgIERDRCAgICAgX19pbml0aWFsX3NwICAgICAgICAgICAgICA7IFRvcCBvZiBTdGFjaw0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFJlc2V0X0hhbmRsZXIgICAgICAgICAgICAgOyBSZXNldCBIYW5kbGVyDQorICAgICAgICAgICAgICAgIERDRCAgICAgTk1JX0hhbmRsZXIgICAgICAgICAgICAgICA7IE5NSSBIYW5kbGVyDQorICAgICAgICAgICAgICAgIERDRCAgICAgSGFyZEZhdWx0X0hhbmRsZXIgICAgICAgICA7IEhhcmQgRmF1bHQgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIE1lbU1hbmFnZV9IYW5kbGVyICAgICAgICAgOyBNUFUgRmF1bHQgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIEJ1c0ZhdWx0X0hhbmRsZXIgICAgICAgICAgOyBCdXMgRmF1bHQgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVzYWdlRmF1bHRfSGFuZGxlciAgICAgICAgOyBVc2FnZSBGYXVsdCBIYW5kbGVyDQorICAgICAgICAgICAgICAgIERDRCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICA7IFJlc2VydmVkDQorICAgICAgICAgICAgICAgIERDRCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICA7IFJlc2VydmVkDQorICAgICAgICAgICAgICAgIERDRCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICA7IFJlc2VydmVkDQorICAgICAgICAgICAgICAgIERDRCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICA7IFJlc2VydmVkDQorICAgICAgICAgICAgICAgIERDRCAgICAgU1ZDX0hhbmRsZXIgICAgICAgICAgICAgICA7IFNWQ2FsbCBIYW5kbGVyDQorICAgICAgICAgICAgICAgIERDRCAgICAgRGVidWdNb25fSGFuZGxlciAgICAgICAgICA7IERlYnVnIE1vbml0b3IgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFBlbmRTVl9IYW5kbGVyICAgICAgICAgICAgOyBQZW5kU1YgSGFuZGxlcg0KKyAgICAgICAgICAgICAgICBEQ0QgICAgIFN5c1RpY2tfSGFuZGxlciAgICAgICAgICAgOyBTeXNUaWNrIEhhbmRsZXI8L3ByZT4NCisNCis8cD4NCisgIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgZm9yIGRldmljZSBzcGVjaWZpYyBpbnRlcnJ1cHRzIGFyZSBzaG93bjoNCis8L3A+DQorPHByZT4NCis7IEV4dGVybmFsIEludGVycnVwdHMNCisgICAgICAgICAgICAgICAgRENEICAgICBXV0RHX0lSUUhhbmRsZXIgICAgICAgICAgIDsgV2luZG93IFdhdGNoZG9nDQorICAgICAgICAgICAgICAgIERDRCAgICAgUFZEX0lSUUhhbmRsZXIgICAgICAgICAgICA7IFBWRCB0aHJvdWdoIEVYVEkgTGluZSBkZXRlY3QNCisgICAgICAgICAgICAgICAgRENEICAgICBUQU1QRVJfSVJRSGFuZGxlciAgICAgICAgIDsgVGFtcGVyPC9wcmU+DQorDQorPHA+DQorICBEZXZpY2Ugc3BlY2lmaWMgaW50ZXJydXB0cyBtdXN0IGhhdmUgYSBkdW1teSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBvdmVyd3JpdHRlbiBpbiB1c2VyIGNvZGUuIA0KKyAgQmVsb3cgaXMgYW4gZXhhbXBsZSBmb3IgdGhpcyBkdW1teSBmdW5jdGlvbi4NCis8L3A+DQorPHByZT4NCitEZWZhdWx0X0hhbmRsZXIgUFJPQw0KKyAgICAgICAgICAgICAgICBFWFBPUlQgV1dER19JUlFIYW5kbGVyICAgW1dFQUtdDQorICAgICAgICAgICAgICAgIEVYUE9SVCBQVkRfSVJRSGFuZGxlciAgICBbV0VBS10NCisgICAgICAgICAgICAgICAgRVhQT1JUIFRBTVBFUl9JUlFIYW5kbGVyIFtXRUFLXQ0KKyAgICAgICAgICAgICAgICA6DQorICAgICAgICAgICAgICAgIDoNCisgICAgICAgICAgICAgICAgV1dER19JUlFIYW5kbGVyDQorICAgICAgICAgICAgICAgIFBWRF9JUlFIYW5kbGVyDQorICAgICAgICAgICAgICAgIFRBTVBFUl9JUlFIYW5kbGVyDQorICAgICAgICAgICAgICAgIDoNCisgICAgICAgICAgICAgICAgOg0KKyAgICAgICAgICAgICAgICBCIC4NCisgICAgICAgICAgICAgICAgRU5EUDwvcHJlPg0KKyAgICAgICAgICAgICAgICANCis8cD4NCisgIFRoZSB1c2VyIGFwcGxpY2F0aW9uIG1heSBzaW1wbHkgZGVmaW5lIGFuIGludGVycnVwdCBoYW5kbGVyIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZSBoYW5kbGVyIG5hbWUNCisgIGFzIHNob3duIGJlbG93Lg0KKzwvcD4NCis8cHJlPg0KK3ZvaWQgV1dER19JUlFIYW5kbGVyKHZvaWQpDQorew0KKyAgOg0KKyAgOg0KK308L3ByZT4NCisNCisNCis8aDM+PGEgbmFtZT0iNCI+PC9hPnN5c3RlbV88ZW0+ZGV2aWNlPC9lbT4uYzwvaDM+DQorPHA+DQorICBBIHRlbXBsYXRlIGZpbGUgZm9yIDxzdHJvbmc+c3lzdGVtXzxlbT5kZXZpY2U8L2VtPi5jPC9zdHJvbmc+IGlzIHByb3ZpZGVkIGJ5IEFSTSBidXQgYWRhcHRlZCBieSANCisgIHRoZSBzaWxpY29uIHZlbmRvciB0byBtYXRjaCB0aGVpciBhY3R1YWwgZGV2aWNlLiBBcyBhIDxzdHJvbmc+bWluaW11bSByZXF1aXJlbWVudDwvc3Ryb25nPiANCisgIHRoaXMgZmlsZSBtdXN0IHByb3ZpZGUgYSBkZXZpY2Ugc3BlY2lmaWMgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24gYW5kIGEgZ2xvYmFsIHZhcmlhYmxlIA0KKyAgdGhhdCBjb250YWlucyB0aGUgc3lzdGVtIGZyZXF1ZW5jeS4gSXQgY29uZmlndXJlcyB0aGUgZGV2aWNlIGFuZCBpbml0aWFsaXplcyB0eXBpY2FsbHkgdGhlIA0KKyAgb3NjaWxsYXRvciAoUExMKSB0aGF0IGlzIHBhcnQgb2YgdGhlIG1pY3JvY29udHJvbGxlciBkZXZpY2UuDQorPC9wPg0KKzxwPg0KKyAgVGhlIGZpbGUgPHN0cm9uZz5zeXN0ZW1fPC9zdHJvbmc+PGVtPjxzdHJvbmc+ZGV2aWNlPC9zdHJvbmc+PC9lbT48c3Ryb25nPi5jPC9zdHJvbmc+IG11c3QgcHJvdmlkZQ0KKyAgYXMgYSBtaW5pbXVtIHJlcXVpcmVtZW50IHRoZSBTeXN0ZW1Jbml0IGZ1bmN0aW9uIGFzIHNob3duIGJlbG93Lg0KKzwvcD4NCisNCis8dGFibGUgY2xhc3M9Imt0IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+DQorICA8dGJvZHk+DQorICAgIDx0cj4NCisgICAgICA8dGggY2xhc3M9Imt0Ij5GdW5jdGlvbiBEZWZpbml0aW9uPC90aD4NCisgICAgICA8dGggY2xhc3M9Imt0Ij5EZXNjcmlwdGlvbjwvdGg+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dm9pZCBTeXN0ZW1Jbml0ICh2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+U2V0dXAgdGhlIG1pY3JvY29udHJvbGxlciBzeXN0ZW0uIFR5cGljYWxseSB0aGlzIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIA0KKyAgICAgICAgICAgICAgICAgICAgIG9zY2lsbGF0b3IgKFBMTCkgdGhhdCBpcyBwYXJ0IG9mIHRoZSBtaWNyb2NvbnRyb2xsZXIgZGV2aWNlLiBGb3Igc3lzdGVtcyANCisgICAgICAgICAgICAgICAgICAgICB3aXRoIHZhcmlhYmxlIGNsb2NrIHNwZWVkIGl0IGFsc28gdXBkYXRlcyB0aGUgdmFyaWFibGUgU3lzdGVtQ29yZUNsb2NrLjxicj4NCisgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1Jbml0IGlzIGNhbGxlZCBmcm9tIHN0YXJ0dXA8aT5fZGV2aWNlPC9pPiBmaWxlLjwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dm9pZCBTeXN0ZW1Db3JlQ2xvY2tVcGRhdGUgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5VcGRhdGVzIHRoZSB2YXJpYWJsZSBTeXN0ZW1Db3JlQ2xvY2sgYW5kIG11c3QgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSANCisgICAgICAgICAgICAgICAgICAgICBjb3JlIGNsb2NrIGlzIGNoYW5nZWQgZHVyaW5nIHByb2dyYW0gZXhlY3V0aW9uLiBTeXN0ZW1Db3JlQ2xvY2tVcGRhdGUoKQ0KKyAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlcyB0aGUgY2xvY2sgcmVnaXN0ZXIgc2V0dGluZ3MgYW5kIGNhbGN1bGF0ZXMgdGhlIGN1cnJlbnQgY29yZSBjbG9jay4NCis8L3RkPg0KKyAgICA8L3RyPg0KKyAgPC90Ym9keT4NCis8L3RhYmxlPg0KKw0KKzxwPg0KKyAgQWxzbyBwYXJ0IG9mIHRoZSBmaWxlIDxzdHJvbmc+c3lzdGVtXzwvc3Ryb25nPjxlbT48c3Ryb25nPmRldmljZTwvc3Ryb25nPjwvZW0+PHN0cm9uZz4uYzwvc3Ryb25nPiANCisgIGlzIHRoZSB2YXJpYWJsZSA8c3Ryb25nPlN5c3RlbUNvcmVDbG9jazwvc3Ryb25nPiB3aGljaCBjb250YWlucyB0aGUgY3VycmVudCBDUFUgY2xvY2sgc3BlZWQgc2hvd24gYmVsb3cuDQorPC9wPg0KKw0KKzx0YWJsZSBjbGFzcz0ia3QiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCisgIDx0Ym9keT4NCisgICAgPHRyPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiPlZhcmlhYmxlIERlZmluaXRpb248L3RoPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiPkRlc2NyaXB0aW9uPC90aD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj51aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2s8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkNvbnRhaW5zIHRoZSBzeXN0ZW0gY29yZSBjbG9jayAod2hpY2ggaXMgdGhlIHN5c3RlbSBjbG9jawlmcmVxdWVuY3kgc3VwcGxpZWQgDQorICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIFN5c1RpY2sgdGltZXIgYW5kIHRoZSBwcm9jZXNzb3IgY29yZSBjbG9jaykuIFRoaXMgdmFyaWFibGUgY2FuIGJlIA0KKyAgICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIHVzZXIgYXBwbGljYXRpb24gdG8gc2V0dXAgdGhlIFN5c1RpY2sgdGltZXIgb3IgY29uZmlndXJlIG90aGVyIA0KKyAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuIEl0IG1heSBhbHNvIGJlIHVzZWQgYnkgZGVidWdnZXIgdG8gcXVlcnkgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgDQorICAgICAgICAgICAgICAgICAgICAgZGVidWcgdGltZXIgb3IgY29uZmlndXJlIHRoZSB0cmFjZSBjbG9jayBzcGVlZC48YnI+DQorICAgICAgICAgICAgICAgICAgICAgU3lzdGVtQ29yZUNsb2NrIGlzIGluaXRpYWxpemVkIHdpdGggYSBjb3JyZWN0IHByZWRlZmluZWQgdmFsdWUuPGJyPjxicj4NCisJCSAgICAgICAgICAgICAgICAgVGhlIGNvbXBpbGVyIG11c3QgYmUgY29uZmlndXJlZCB0byBhdm9pZCB0aGUgcmVtb3ZhbCBvZiB0aGlzIHZhcmlhYmxlIGluIA0KKwkJICAgICAgICAgICAgICAgICBjYXNlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gaXMgbm90IHVzaW5nIGl0LiBJdCBpcyBpbXBvcnRhbnQgZm9yIA0KKwkJICAgICAgICAgICAgICAgICBkZWJ1ZyBzeXN0ZW1zIHRoYXQgdGhlIHZhcmlhYmxlIGlzIHBoeXNpY2FsbHkgcHJlc2VudCBpbiBtZW1vcnkgc28gdGhhdCANCisJCSAgICAgICAgICAgICAgICAgaXQgY2FuIGJlIGV4YW1pbmVkIHRvIGNvbmZpZ3VyZSB0aGUgZGVidWdnZXIuPC90ZD4NCisgICAgPC90cj4NCisgIDwvdGJvZHk+DQorPC90YWJsZT4NCisNCis8cCBjbGFzcz0iTm90ZSI+Tm90ZTwvcD4NCis8dWw+DQorICA8bGk+PHA+VGhlIGFib3ZlIGRlZmluaXRpb25zIGFyZSB0aGUgbWluaW11bSByZXF1aXJlbWVudHMgZm9yIHRoZSBmaWxlIDxzdHJvbmc+DQorCXN5c3RlbV88L3N0cm9uZz48ZW0+PHN0cm9uZz5kZXZpY2U8L3N0cm9uZz48L2VtPjxzdHJvbmc+LmM8L3N0cm9uZz4uIFRoaXMgDQorCWZpbGUgbWF5IGV4cG9ydCBtb3JlIGZ1bmN0aW9ucyBvciB2YXJpYWJsZXMgdGhhdCBwcm92aWRlIGEgbW9yZSBmbGV4aWJsZSANCisJY29uZmlndXJhdGlvbiBvZiB0aGUgbWljcm9jb250cm9sbGVyIHN5c3RlbS48L3A+DQorICA8L2xpPg0KKzwvdWw+DQorDQorDQorPGgyPkNvcmUgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXI8L2gyPg0KKw0KKzxoMz5Db3J0ZXgtTSBDb3JlIFJlZ2lzdGVyIEFjY2VzczwvaDM+DQorPHA+DQorICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBpbiA8c3Ryb25nPmNvcmVfY20wLmg8L3N0cm9uZz4gLyA8c3Ryb25nPmNvcmVfY20zLmg8L3N0cm9uZz4NCisgIGFuZCBwcm92aWRlIGFjY2VzcyB0byBDb3J0ZXgtTSBjb3JlIHJlZ2lzdGVycy4NCis8L3A+DQorDQorPHRhYmxlIGNsYXNzPSJrdCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KKyAgPHRib2R5Pg0KKyAgICA8dHI+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+RnVuY3Rpb24gRGVmaW5pdGlvbjwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+Q29yZTwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+Q29yZSBSZWdpc3RlcjwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+RGVzY3JpcHRpb248L3RoPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19lbmFibGVfaXJxICh2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5QUklNQVNLID0gMDwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+R2xvYmFsIEludGVycnVwdCBlbmFibGUgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbiA8c3Ryb25nPkNQU0lFIA0KKwkJaTwvc3Ryb25nPik8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19kaXNhYmxlX2lycSAodm9pZCk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UFJJTUFTSyA9IDE8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkdsb2JhbCBJbnRlcnJ1cHQgZGlzYWJsZSAodXNpbmcgdGhlIGluc3RydWN0aW9uIDxzdHJvbmc+DQorCQlDUFNJRCBpPC9zdHJvbmc+KTwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dm9pZCBfX3NldF9QUklNQVNLICh1aW50MzJfdCB2YWx1ZSk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UFJJTUFTSyA9IHZhbHVlPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Bc3NpZ24gdmFsdWUgdG8gUHJpb3JpdHkgTWFzayBSZWdpc3RlciAodXNpbmcgdGhlIGluc3RydWN0aW9uIA0KKwkJPHN0cm9uZz5NU1I8L3N0cm9uZz4pPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj51aW50MzJfdCBfX2dldF9QUklNQVNLICh2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5yZXR1cm4gUFJJTUFTSzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UmV0dXJuIFByaW9yaXR5IE1hc2sgUmVnaXN0ZXIgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbiANCisJCTxzdHJvbmc+TVJTPC9zdHJvbmc+KTwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dm9pZCBfX2VuYWJsZV9mYXVsdF9pcnEgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+RkFVTFRNQVNLID0gMDwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+R2xvYmFsIEZhdWx0IGV4Y2VwdGlvbiBhbmQgSW50ZXJydXB0IGVuYWJsZSAodXNpbmcgdGhlIA0KKwkJaW5zdHJ1Y3Rpb24gPHN0cm9uZz5DUFNJRSANCisJCWY8L3N0cm9uZz4pPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj52b2lkIF9fZGlzYWJsZV9mYXVsdF9pcnEgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+RkFVTFRNQVNLID0gMTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+R2xvYmFsIEZhdWx0IGV4Y2VwdGlvbiBhbmQgSW50ZXJydXB0IGRpc2FibGUgKHVzaW5nIHRoZSANCisJCWluc3RydWN0aW9uIDxzdHJvbmc+Q1BTSUQgZjwvc3Ryb25nPik8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19zZXRfRkFVTFRNQVNLICh1aW50MzJfdCB2YWx1ZSk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5GQVVMVE1BU0sgPSB2YWx1ZTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+QXNzaWduIHZhbHVlIHRvIEZhdWx0IE1hc2sgUmVnaXN0ZXIgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbiANCisJCTxzdHJvbmc+TVNSPC9zdHJvbmc+KTwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dWludDMyX3QgX19nZXRfRkFVTFRNQVNLICh2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPnJldHVybiBGQVVMVE1BU0s8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlJldHVybiBGYXVsdCBNYXNrIFJlZ2lzdGVyICh1c2luZyB0aGUgaW5zdHJ1Y3Rpb24gPHN0cm9uZz5NUlM8L3N0cm9uZz4pPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj52b2lkIF9fc2V0X0JBU0VQUkkgKHVpbnQzMl90IHZhbHVlKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkJBU0VQUkkgPSB2YWx1ZTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+U2V0IEJhc2UgUHJpb3JpdHkgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbiA8c3Ryb25nPk1TUjwvc3Ryb25nPik8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnVpdWludDMyX3QgX19nZXRfQkFTRVBSSSAodm9pZCk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5yZXR1cm4gQkFTRVBSSTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UmV0dXJuIEJhc2UgUHJpb3JpdHkgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbiA8c3Ryb25nPk1SUzwvc3Ryb25nPik8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19zZXRfQ09OVFJPTCAodWludDMyX3QgdmFsdWUpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkNPTlRST0wgPSB2YWx1ZTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+U2V0IENPTlRST0wgcmVnaXN0ZXIgdmFsdWUgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbiA8c3Ryb25nPk1TUjwvc3Ryb25nPik8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnVpbnQzMl90IF9fZ2V0X0NPTlRST0wgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPnJldHVybiBDT05UUk9MPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5SZXR1cm4gQ29udHJvbCBSZWdpc3RlciBWYWx1ZSAodXNpbmcgdGhlIGluc3RydWN0aW9uDQorCQk8c3Ryb25nPk1SUzwvc3Ryb25nPik8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19zZXRfUFNQICh1aW50MzJfdCBUb3BPZlByb2NTdGFjayk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UFNQID0gVG9wT2ZQcm9jU3RhY2s8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlNldCBQcm9jZXNzIFN0YWNrIFBvaW50ZXIgdmFsdWUgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbg0KKwkJPHN0cm9uZz5NU1I8L3N0cm9uZz4pPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj51aW50MzJfdCBfX2dldF9QU1AgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPnJldHVybiBQU1A8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlJldHVybiBQcm9jZXNzIFN0YWNrIFBvaW50ZXIgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbiA8c3Ryb25nPk1SUzwvc3Ryb25nPik8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19zZXRfTVNQICh1aW50MzJfdCBUb3BPZk1haW5TdGFjayk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TVNQID0gVG9wT2ZNYWluU3RhY2s8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlNldCBNYWluIFN0YWNrIFBvaW50ZXIgKHVzaW5nIHRoZSBpbnN0cnVjdGlvbiA8c3Ryb25nPk1TUjwvc3Ryb25nPik8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnVpbnQzMl90IF9fZ2V0X01TUCAodm9pZCk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+cmV0dXJuIE1TUDwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UmV0dXJuIE1haW4gU3RhY2sgUG9pbnRlciAodXNpbmcgdGhlIGluc3RydWN0aW9uIDxzdHJvbmc+TVJTPC9zdHJvbmc+KTwvdGQ+DQorICAgIDwvdHI+DQorICA8L3Rib2R5Pg0KKzwvdGFibGU+DQorDQorPGgzPkNvcnRleC1NIEluc3RydWN0aW9uIEFjY2VzczwvaDM+DQorPHA+DQorICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBpbiA8c3Ryb25nPmNvcmVfY20wLmg8L3N0cm9uZz4gLyA8c3Ryb25nPmNvcmVfY20zLmg8L3N0cm9uZz5hbmQNCisgIGdlbmVyYXRlIHNwZWNpZmljIENvcnRleC1NIGluc3RydWN0aW9ucy4gVGhlIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIGZpbGUgDQorICA8c3Ryb25nPmNvcmVfY20wLmM8L3N0cm9uZz4gLyA8c3Ryb25nPmNvcmVfY20zLmM8L3N0cm9uZz4uDQorPC9wPg0KKw0KKzx0YWJsZSBjbGFzcz0ia3QiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCisgIDx0Ym9keT4NCisgICAgPHRyPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiPk5hbWU8L3RoPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiPkNvcmU8L3RoPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiPkdlbmVyYXRlZCBDUFUgSW5zdHJ1Y3Rpb248L3RoPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiPkRlc2NyaXB0aW9uPC90aD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj52b2lkIF9fTk9QICh2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5OT1A8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk5vIE9wZXJhdGlvbjwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dm9pZCBfX1dGSSAodm9pZCk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+V0ZJPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5XYWl0IGZvciBJbnRlcnJ1cHQ8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19XRkUgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPldGRTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+V2FpdCBmb3IgRXZlbnQ8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19TRVYgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlNFVjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+U2V0IEV2ZW50PC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj52b2lkIF9fSVNCICh2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5JU0I8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkluc3RydWN0aW9uIFN5bmNocm9uaXphdGlvbiBCYXJyaWVyPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj52b2lkIF9fRFNCICh2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5EU0I8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkRhdGEgU3luY2hyb25pemF0aW9uIEJhcnJpZXI8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgX19ETUIgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkRNQjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+RGF0YSBNZW1vcnkgQmFycmllcjwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dWludDMyX3QgX19SRVYgKHVpbnQzMl90IHZhbHVlKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5SRVY8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlJldmVyc2UgYnl0ZSBvcmRlciBpbiBpbnRlZ2VyIHZhbHVlLjwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dWludDMyX3QgX19SRVYxNiAodWludDE2X3QgdmFsdWUpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlJFVjE2PC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5SZXZlcnNlIGJ5dGUgb3JkZXIgaW4gdW5zaWduZWQgc2hvcnQgdmFsdWUuIDwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+c2ludDMyX3QgX19SRVZTSCAoc2ludDE2X3QgdmFsdWUpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlJFVlNIPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5SZXZlcnNlIGJ5dGUgb3JkZXIgaW4gc2lnbmVkIHNob3J0IHZhbHVlIHdpdGggc2lnbiBleHRlbnNpb24gdG8gaW50ZWdlci48L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnVpbnQzMl90IF9fUkJJVCAodWludDMyX3QgdmFsdWUpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UkJJVDwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UmV2ZXJzZSBiaXQgb3JkZXIgb2YgdmFsdWU8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnVpbnQ4X3QgX19MRFJFWEIgKHVpbnQ4X3QgKmFkZHIpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TERSRVhCPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Mb2FkIGV4Y2x1c2l2ZSBieXRlPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj51aW50MTZfdCBfX0xEUkVYSCAodWludDE2X3QgKmFkZHIpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TERSRVhIPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Mb2FkIGV4Y2x1c2l2ZSBoYWxmLXdvcmQ8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnVpbnQzMl90IF9fTERSRVhXICh1aW50MzJfdCAqYWRkcik8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5MRFJFWFc8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkxvYWQgZXhjbHVzaXZlIHdvcmQ8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnVpbnQzMl90IF9fU1RSRVhCICh1aW50OF90IHZhbHVlLCB1aW50OF90ICphZGRyKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlNUUkVYQjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+U3RvcmUgZXhjbHVzaXZlIGJ5dGU8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnVpbnQzMl90IF9fU1RSRVhCICh1aW50MTZfdCB2YWx1ZSwgdWludDE2X3QgKmFkZHIpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+U1RSRVhIPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5TdG9yZSBleGNsdXNpdmUgaGFsZi13b3JkPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj51aW50MzJfdCBfX1NUUkVYQiAodWludDMyX3QgdmFsdWUsIHVpbnQzMl90ICphZGRyKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlNUUkVYVzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+U3RvcmUgZXhjbHVzaXZlIHdvcmQ8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgIF9fQ0xSRVggKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+Q0xSRVg8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlJlbW92ZSB0aGUgZXhjbHVzaXZlIGxvY2sgY3JlYXRlZCBieSBfX0xEUkVYQiwgX19MRFJFWEgsIG9yIF9fTERSRVhXPC90ZD4NCisgICAgPC90cj4NCisgIDwvdGJvZHk+DQorPC90YWJsZT4NCisNCisNCis8aDM+TlZJQyBBY2Nlc3MgRnVuY3Rpb25zPC9oMz4NCis8cD4NCisgIFRoZSBDTVNJUyBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIE5WSUMgdmlhIHRoZSByZWdpc3RlciBpbnRlcmZhY2Ugc3RydWN0dXJlIGFuZCBzZXZlcmFsIGhlbHBlcg0KKyAgZnVuY3Rpb25zIHRoYXQgc2ltcGxpZnkgdGhlIHNldHVwIG9mIHRoZSBOVklDLiBUaGUgQ01TSVMgSEFMIHVzZXMgSVJRIG51bWJlcnMgKElSUW4pIHRvIA0KKyAgaWRlbnRpZnkgdGhlIGludGVycnVwdHMuIFRoZSBmaXJzdCBkZXZpY2UgaW50ZXJydXB0IGhhcyB0aGUgSVJRbiB2YWx1ZSAwLiBUaGVyZWZvcmUgbmVnYXRpdmUgDQorICBJUlFuIHZhbHVlcyBhcmUgdXNlZCBmb3IgcHJvY2Vzc29yIGNvcmUgZXhjZXB0aW9ucy4NCis8L3A+DQorPHA+DQorICBGb3IgdGhlIElSUW4gdmFsdWVzIG9mIGNvcmUgZXhjZXB0aW9ucyB0aGUgZmlsZSA8c3Ryb25nPjxlbT5kZXZpY2UuaDwvZW0+PC9zdHJvbmc+IHByb3ZpZGVzIA0KKyAgdGhlIGZvbGxvd2luZyBlbnVtIG5hbWVzLg0KKzwvcD4NCisNCis8dGFibGUgY2xhc3M9Imt0IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+DQorICA8dGJvZHk+DQorICAgIDx0cj4NCisgICAgICA8dGggY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+Q29yZSBFeGNlcHRpb24gZW51bSBWYWx1ZTwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+Q29yZTwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+SVJRbjwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+RGVzY3JpcHRpb248L3RoPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPk5vbk1hc2thYmxlSW50X0lSUW48L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+LTE0PC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Db3J0ZXgtTSBOb24gTWFza2FibGUgSW50ZXJydXB0PC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5IYXJkRmF1bHRfSVJRbjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij4tMTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkNvcnRleC1NIEhhcmQgRmF1bHQgSW50ZXJydXB0PC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5NZW1vcnlNYW5hZ2VtZW50X0lSUW48L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij4tMTI8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkNvcnRleC1NIE1lbW9yeSBNYW5hZ2VtZW50IEludGVycnVwdDwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+QnVzRmF1bHRfSVJRbjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPi0xMTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+Q29ydGV4LU0gQnVzIEZhdWx0IEludGVycnVwdDwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+VXNhZ2VGYXVsdF9JUlFuPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+LTEwPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Db3J0ZXgtTSBVc2FnZSBGYXVsdCBJbnRlcnJ1cHQ8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPlNWQ2FsbF9JUlFuPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPi01PC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Db3J0ZXgtTSBTViBDYWxsIEludGVycnVwdCA8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPkRlYnVnTW9uaXRvcl9JUlFuPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+LTQ8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkNvcnRleC1NIERlYnVnIE1vbml0b3IgSW50ZXJydXB0PC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5QZW5kU1ZfSVJRbjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij4tMjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+Q29ydGV4LU0gUGVuZCBTViBJbnRlcnJ1cHQ8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPlN5c1RpY2tfSVJRbjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij4tMTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+Q29ydGV4LU0gU3lzdGVtIFRpY2sgSW50ZXJydXB0PC90ZD4NCisgICAgPC90cj4NCisgIDwvdGJvZHk+DQorPC90YWJsZT4NCisNCis8cD5UaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzaW1wbGlmeSB0aGUgc2V0dXAgb2YgdGhlIE5WSUMuDQorVGhlIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBhcyA8c3Ryb25nPnN0YXRpYyBpbmxpbmU8L3N0cm9uZz4uPC9wPg0KKw0KKzx0YWJsZSBjbGFzcz0ia3QiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCisgIDx0Ym9keT4NCisgICAgPHRyPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5OYW1lPC90aD4NCisgICAgICA8dGggY2xhc3M9Imt0Ij5Db3JlPC90aD4NCisgICAgICA8dGggY2xhc3M9Imt0Ij5QYXJhbWV0ZXI8L3RoPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiPkRlc2NyaXB0aW9uPC90aD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj52b2lkIE5WSUNfU2V0UHJpb3JpdHlHcm91cGluZyAodWludDMyX3QgUHJpb3JpdHlHcm91cCk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5Qcmlvcml0eSBHcm91cGluZyBWYWx1ZTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+U2V0IHRoZSBQcmlvcml0eSBHcm91cGluZyAoR3JvdXBzIC4gU3ViZ3JvdXBzKTwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dWludDMyX3QgTlZJQ19HZXRQcmlvcml0eUdyb3VwaW5nICh2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPih2b2lkKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+R2V0IHRoZSBQcmlvcml0eSBHcm91cGluZyAoR3JvdXBzIC4gU3ViZ3JvdXBzKTwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dm9pZCBOVklDX0VuYWJsZUlSUSAoSVJRbl9UeXBlIElSUW4pPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPklSUSBOdW1iZXI8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkVuYWJsZSBJUlFuPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj52b2lkIE5WSUNfRGlzYWJsZUlSUSAoSVJRbl9UeXBlIElSUW4pPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPklSUSBOdW1iZXI8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkRpc2FibGUgSVJRbjwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dWludDMyX3QgTlZJQ19HZXRQZW5kaW5nSVJRIChJUlFuX1R5cGUgSVJRbik8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+SVJRIE51bWJlcjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+UmV0dXJuIDEgaWYgSVJRbiBpcyBwZW5kaW5nIGVsc2UgMDwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dm9pZCBOVklDX1NldFBlbmRpbmdJUlEgKElSUW5fVHlwZSBJUlFuKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTAsIE0zPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5JUlEgTnVtYmVyPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5TZXQgSVJRbiBQZW5kaW5nPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj52b2lkIE5WSUNfQ2xlYXJQZW5kaW5nSVJRIChJUlFuX1R5cGUgSVJRbik8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+SVJRIE51bWJlcjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+Q2xlYXIgSVJRbiBQZW5kaW5nIFN0YXR1czwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dWludDMyX3QgTlZJQ19HZXRBY3RpdmUgKElSUW5fVHlwZSBJUlFuKTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPklSUSBOdW1iZXI8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlJldHVybiAxIGlmIElSUW4gaXMgYWN0aXZlIGVsc2UgMDwvdGQ+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dm9pZCBOVklDX1NldFByaW9yaXR5IChJUlFuX1R5cGUgSVJRbiwgdWludDMyX3QgcHJpb3JpdHkpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5NMCwgTTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPklSUSBOdW1iZXIsIFByaW9yaXR5PC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5TZXQgUHJpb3JpdHkgZm9yIElSUW48YnI+DQorICAgICAgICAgICAgICAgICAgICAgKG5vdCB0aHJlYWRzYWZlIGZvciBDb3J0ZXgtTTApPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj51aW50MzJfdCBOVklDX0dldFByaW9yaXR5IChJUlFuX1R5cGUgSVJRbik8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+SVJRIE51bWJlcjwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+R2V0IFByaW9yaXR5IGZvciBJUlFuPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKzwhLS0gICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dWludDMyX3QgTlZJQ19FbmNvZGVQcmlvcml0eSAodWludDMyX3QgUHJpb3JpdHlHcm91cCwgdWludDMyX3QgUHJlZW1wdFByaW9yaXR5LCB1aW50MzJfdCBTdWJQcmlvcml0eSk8L3RkPiAtLT4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij51aW50MzJfdCBOVklDX0VuY29kZVByaW9yaXR5ICh1aW50MzJfdCBQcmlvcml0eUdyb3VwLCB1aW50MzJfdCBQcmVlbXB0UHJpb3JpdHksIHVpbnQzMl90IFN1YlByaW9yaXR5KTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPklSUSBOdW1iZXIsIFByaW9yaXR5IEdyb3VwLCBQcmVlbXB0aXZlIFByaW9yaXR5LCBTdWIgUHJpb3JpdHk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkVuY29kZSBwcmlvcml0eSBmb3IgZ2l2ZW4gZ3JvdXAsIHByZWVtcHRpdmUgYW5kIHN1YiBwcmlvcml0eTwvdGQ+DQorICAgIDwvdHI+DQorPCEtLSAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5OVklDX0RlY29kZVByaW9yaXR5ICh1aW50MzJfdCBQcmlvcml0eSwgdWludDMyX3QgUHJpb3JpdHlHcm91cCwgdWludDMyX3QqIHBQcmVlbXB0UHJpb3JpdHksIHVpbnQzMl90KiBwU3ViUHJpb3JpdHkpPC90ZD4gLS0+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TlZJQ19EZWNvZGVQcmlvcml0eSAodWludDMyX3QgUHJpb3JpdHksIHVpbnQzMl90IFByaW9yaXR5R3JvdXAsIHVpbnQzMl90KiBwUHJlZW1wdFByaW9yaXR5LCB1aW50MzJfdCogcFN1YlByaW9yaXR5KTwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+TTM8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPklSUSBOdW1iZXIsIFByaW9yaXR5LCBwb2ludGVyIHRvIFByaW9yaXR5IEdyb3VwLCBwb2ludGVyIHRvIFByZWVtcHRpdmUgUHJpb3JpdHksIHBvaW50ZXIgdG8gU3ViIFByaW9yaXR5PC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5EZWNjb2RlIGdpdmVuIHByaW9yaXR5IHRvIGdyb3VwLCBwcmVlbXB0aXZlIGFuZCBzdWIgcHJpb3JpdHk8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgTlZJQ19TeXN0ZW1SZXNldCAodm9pZCk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPk0wLCBNMzwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJrdCI+KHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5SZXNldHMgdGhlIFN5c3RlbTwvdGQ+DQorICAgIDwvdHI+DQorICA8L3Rib2R5Pg0KKzwvdGFibGU+DQorPHAgY2xhc3M9Ik5vdGUiPk5vdGU8L3A+DQorPHVsPg0KKyAgPGxpPjxwPlRoZSBwcm9jZXNzb3IgZXhjZXB0aW9ucyBoYXZlIG5lZ2F0aXZlIGVudW0gdmFsdWVzLiBEZXZpY2Ugc3BlY2lmaWMgaW50ZXJydXB0cyANCisJICAgICAgIGhhdmUgcG9zaXRpdmUgZW51bSB2YWx1ZXMgYW5kIHN0YXJ0IHdpdGggMC4gVGhlIHZhbHVlcyBhcmUgZGVmaW5lZCBpbg0KKyAgICAgICAgIDxiPjxlbT5kZXZpY2UuaDwvZW0+PC9iPiBmaWxlLg0KKyAgICAgIDwvcD4NCisgIDwvbGk+DQorICA8bGk+PHA+VGhlIHZhbHVlcyBmb3IgPGI+UHJlZW1wdFByaW9yaXR5PC9iPiBhbmQgPGI+U3ViUHJpb3JpdHk8L2I+DQorICAgICAgICAgdXNlZCBpbiBmdW5jdGlvbnMgPGI+TlZJQ19FbmNvZGVQcmlvcml0eTwvYj4gYW5kIDxiPk5WSUNfRGVjb2RlUHJpb3JpdHk8L2I+DQorICAgICAgICAgZGVwZW5kIG9uIHRoZSBhdmFpbGFibGUgX19OVklDX1BSSU9fQklUUyBpbXBsZW1lbnRlZCBpbiB0aGUgTlZJQy4NCisgICAgICA8L3A+DQorICA8L2xpPg0KKzwvdWw+DQorDQorDQorPGgzPlN5c1RpY2sgQ29uZmlndXJhdGlvbiBGdW5jdGlvbjwvaDM+DQorDQorPHA+VGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgU3lzVGljayB0aW1lciBhbmQgc3RhcnQgdGhlIA0KK1N5c1RpY2sgaW50ZXJydXB0LjwvcD4NCisNCis8dGFibGUgY2xhc3M9Imt0IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+DQorICA8dGJvZHk+DQorICAgIDx0cj4NCisgICAgICA8dGggY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+TmFtZTwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+UGFyYW1ldGVyPC90aD4NCisgICAgICA8dGggY2xhc3M9Imt0Ij5EZXNjcmlwdGlvbjwvdGg+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+dWludDMyX3QgU3lzPHNwYW4gY2xhc3M9InN0eWxlMSI+VGlja0NvbmZpZyANCisJCSh1aW50MzJfdCB0aWNrcyk8L3NwYW4+PC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij50aWNrcyBpcyBTeXNUaWNrIGNvdW50ZXIgcmVsb2FkIHZhbHVlPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5TZXR1cCB0aGUgU3lzVGljayB0aW1lciBhbmQgZW5hYmxlIHRoZSBTeXNUaWNrIGludGVycnVwdC4gQWZ0ZXIgdGhpcyANCisJCWNhbGwgdGhlIFN5c1RpY2sgdGltZXIgY3JlYXRlcyBpbnRlcnJ1cHRzIHdpdGggdGhlIHNwZWNpZmllZCB0aW1lIA0KKwkJaW50ZXJ2YWwuIDxicj4NCisJCTxicj4NCisJCVJldHVybjogMCB3aGVuIHN1Y2Nlc3NmdWwsIDEgb24gZmFpbHVyZS48YnI+DQorCQk8L3RkPg0KKyAgICA8L3RyPg0KKyAgPC90Ym9keT4NCis8L3RhYmxlPg0KKw0KKw0KKzxoMz5Db3J0ZXgtTTMgSVRNIERlYnVnIEFjY2VzczwvaDM+DQorDQorPHA+VGhlIENvcnRleC1NMyBpbmNvcnBvcmF0ZXMgdGhlIEluc3RydW1lbnRlZCBUcmFjZSBNYWNyb2NlbGwgKElUTSkgdGhhdCANCitwcm92aWRlcyB0b2dldGhlciB3aXRoIHRoZSBTZXJpYWwgVmlld2VyIE91dHB1dCB0cmFjZSBjYXBhYmlsaXRpZXMgZm9yIHRoZSANCittaWNyb2NvbnRyb2xsZXIgc3lzdGVtLiBUaGUgSVRNIGhhcyAzMiBjb21tdW5pY2F0aW9uIGNoYW5uZWxzOyB0d28gSVRNIA0KK2NvbW11bmljYXRpb24gY2hhbm5lbHMgYXJlIHVzZWQgYnkgQ01TSVMgdG8gb3V0cHV0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPg0KKzx1bD4NCisJPGxpPklUTSBDaGFubmVsIDA6IGltcGxlbWVudHMgdGhlIDxzdHJvbmc+SVRNX1NlbmRDaGFyPC9zdHJvbmc+IGZ1bmN0aW9uIA0KKwl3aGljaCBjYW4gYmUgdXNlZCBmb3IgcHJpbnRmLXN0eWxlIG91dHB1dCB2aWEgdGhlIGRlYnVnIGludGVyZmFjZS48L2xpPg0KKwk8bGk+SVRNIENoYW5uZWwgMzE6IGlzIHJlc2VydmVkIGZvciB0aGUgUlRPUyBrZXJuZWwgYW5kIGNhbiBiZSB1c2VkIGZvciANCisJa2VybmVsIGF3YXJlbmVzcyBkZWJ1Z2dpbmcuPC9saT4NCis8L3VsPg0KKzxwIGNsYXNzPSJOb3RlIj5Ob3RlPC9wPg0KKzx1bD4NCisgIDxsaT48cD5UaGUgSVRNIGNoYW5uZWwgMzEgaXMgc2VsZWN0ZWQgZm9yIHRoZSBSVE9TIGtlcm5lbCBzaW5jZSBzb21lIGtlcm5lbHMgDQorCW1heSB1c2UgdGhlIFByaXZpbGVnZWQgbGV2ZWwgZm9yIHByb2dyYW0gZXhlY3V0aW9uLiBJVE0gDQorCWNoYW5uZWxzIGhhdmUgNCBncm91cHMgd2l0aCA4IGNoYW5uZWxzIGVhY2gsIHdoZXJlYnkgZWFjaCBncm91cCBjYW4gYmUgDQorCWNvbmZpZ3VyZWQgZm9yIGFjY2VzcyByaWdodHMgaW4gdGhlIFVucHJpdmlsZWdlZCBsZXZlbC4gVGhlIElUTSBjaGFubmVsIDAgDQorCW1heSBiZSB0aGVyZWZvcmUgZW5hYmxlZCBmb3IgdGhlIHVzZXIgdGFzayB3aGVyZWFzIElUTSBjaGFubmVsIDMxIG1heSBiZSANCisJYWNjZXNzaWJsZSBvbmx5IGluIFByaXZpbGVnZWQgbGV2ZWwgZnJvbSB0aGUgUlRPUyBrZXJuZWwgaXRzZWxmLjwvcD4NCisgIDwvbGk+DQorPC91bD4NCisNCis8cD5UaGUgcHJvdG90eXBlIG9mIHRoZSA8c3Ryb25nPklUTV9TZW5kQ2hhcjwvc3Ryb25nPiByb3V0aW5lIGlzIHNob3duIGluIHRoZSANCit0YWJsZSBiZWxvdy48L3A+DQorDQorPHRhYmxlIGNsYXNzPSJrdCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KKyAgPHRib2R5Pg0KKyAgICA8dHI+DQorICAgICAgPHRoIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPk5hbWU8L3RoPg0KKyAgICAgIDx0aCBjbGFzcz0ia3QiPlBhcmFtZXRlcjwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+RGVzY3JpcHRpb248L3RoPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPnZvaWQgdWludDMyX3QgSVRNX1NlbmRDaGFyKHVpbnQzMl90IGNocik8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPmNoYXJhY3RlciB0byBvdXRwdXQ8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlRoZSBmdW5jdGlvbiBvdXRwdXRzIGEgY2hhcmFjdGVyIHZpYSB0aGUgSVRNIGNoYW5uZWwgMC4gVGhlIA0KKwkJICAgICAgICAgICAgICAgICBmdW5jdGlvbiByZXR1cm5zIHdoZW4gbm8gZGVidWdnZXIgaXMgY29ubmVjdGVkIHRoYXQgaGFzIGJvb2tlZCB0aGUgDQorCQkgICAgICAgICAgICAgICAgIG91dHB1dC4gSXQgaXMgYmxvY2tpbmcgd2hlbiBhIGRlYnVnZ2VyIGlzIGNvbm5lY3RlZCwgYnV0IHRoZSANCisJCSAgICAgICAgICAgICAgICAgcHJldmlvdXMgY2hhcmFjdGVyIHNlbmQgaXMgbm90IHRyYW5zbWl0dGVkLiA8YnI+PGJyPg0KKwkJICAgICAgICAgICAgICAgICBSZXR1cm46IHRoZSBpbnB1dCBjaGFyYWN0ZXIgJ2NocicuPC90ZD4NCisgICAgPC90cj4NCisgIDwvdGJvZHk+DQorPC90YWJsZT4NCisNCis8cD4NCisgIEV4YW1wbGUgZm9yIHRoZSB1c2FnZSBvZiB0aGUgSVRNIENoYW5uZWwgMzEgZm9yIFJUT1MgS2VybmVsczoNCis8L3A+DQorPHByZT4NCisgIC8vIGNoZWNrIGlmIGRlYnVnZ2VyIGNvbm5lY3RlZCBhbmQgSVRNIGNoYW5uZWwgZW5hYmxlZCBmb3IgdHJhY2luZw0KKyAgaWYgKChDb3JlRGVidWctJmd0O0RFTUNSICZhbXA7IENvcmVEZWJ1Z19ERU1DUl9UUkNFTkEpICZhbXA7JmFtcDsNCisgIChJVE0tJmd0O1RDUiAmYW1wOyBJVE1fVENSX0lUTUVOQSkgJmFtcDsmYW1wOw0KKyAgKElUTS0mZ3Q7VEVSICZhbXA7ICgxVUwgJmx0OyZsdDsgMzEpKSkgew0KKyAgICAvLyB0cmFuc21pdCB0cmFjZSBkYXRhDQorICAgIHdoaWxlIChJVE0tJmd0O1BPUlQzMV9VMzIgPT0gMCk7DQorICAgIElUTS0mZ3Q7UE9SVFszMV0udTggPSB0YXNrX2lkOyAgICAgIC8vIGlkIG9mIG5leHQgdGFzaw0KKyAgICB3aGlsZSAoSVRNLSZndDtQT1JUWzMxXS51MzIgPT0gMCk7DQorICAgIElUTS0mZ3Q7UE9SVFszMV0udTMyID0gdGFza19zdGF0dXM7IC8vIHN0YXR1cyBpbmZvcm1hdGlvbg0KKyAgfTwvcHJlPg0KKw0KKw0KKzxoMz5Db3J0ZXgtTTMgYWRkaXRpb25hbCBEZWJ1ZyBBY2Nlc3M8L2gzPg0KKw0KKzxwPkNNU0lTIHByb3ZpZGVzIGFkZGl0aW9uYWwgZGVidWcgZnVuY3Rpb25zIHRvIGVubGFyZ2UgdGhlIENvcnRleC1NMyBEZWJ1ZyBBY2Nlc3MuDQorRGF0YSBjYW4gYmUgdHJhbnNtaXR0ZWQgdmlhIGEgY2VydGFpbiBnbG9iYWwgYnVmZmVyIHZhcmlhYmxlIHRvd2FyZHMgdGhlIHRhcmdldCBzeXN0ZW0uPC9wPg0KKw0KKzxwPlRoZSBidWZmZXIgdmFyaWFibGUgYW5kIHRoZSBwcm90b3R5cGVzIG9mIHRoZSBhZGRpdGlvbmFsIGZ1bmN0aW9ucyBhcmUgc2hvd24gaW4gdGhlIA0KK3RhYmxlIGJlbG93LjwvcD4NCisNCis8dGFibGUgY2xhc3M9Imt0IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+DQorICA8dGJvZHk+DQorICAgIDx0cj4NCisgICAgICA8dGggY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+TmFtZTwvdGg+DQorICAgICAgPHRoIGNsYXNzPSJrdCI+UGFyYW1ldGVyPC90aD4NCisgICAgICA8dGggY2xhc3M9Imt0Ij5EZXNjcmlwdGlvbjwvdGg+DQorICAgIDwvdHI+DQorICAgIDx0cj4NCisgICAgICA8dGQgY2xhc3M9Imt0IiBub3dyYXA9Im5vd3JhcCI+ZXh0ZXJuIHZvbGF0aWxlIGludCBJVE1fUnhCdWZmZXI8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPiA8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPkJ1ZmZlciB0byB0cmFuc21pdCBkYXRhIHRvd2FyZHMgZGVidWcgc3lzdGVtLiA8YnI+PGJyPg0KKwkJICAgICAgICAgICAgICAgICBWYWx1ZSAweDVBQTU1QUE1IGluZGljYXRlcyB0aGF0IGJ1ZmZlciBpcyBlbXB0eS48L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJrdCIgbm93cmFwPSJub3dyYXAiPmludCBJVE1fUmVjZWl2ZUNoYXIgKHZvaWQpPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5ub25lPC90ZD4NCisgICAgICA8dGQgY2xhc3M9Imt0Ij5UaGUgbm9uYmxvY2tpbmcgZnVuY3Rpb25zIHJldHVybnMgdGhlIGNoYXJhY3RlciBzdG9yZWQgaW4gDQorICAgICAgICAgICAgICAgICAgICAgSVRNX1J4QnVmZmVyLiA8YnI+PGJyPg0KKwkJICAgICAgICAgICAgICAgICBSZXR1cm46IC0xIGluZGljYXRlcyB0aGF0IG5vIGNoYXJhY3RlciB3YXMgcmVjZWl2ZWQuPC90ZD4NCisgICAgPC90cj4NCisgICAgPHRyPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiIG5vd3JhcD0ibm93cmFwIj5pbnQgSVRNX0NoZWNrQ2hhciAodm9pZCk8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPm5vbmU8L3RkPg0KKyAgICAgIDx0ZCBjbGFzcz0ia3QiPlRoZSBmdW5jdGlvbiBjaGVja3MgaWYgYSBjaGFyYWN0ZXIgaXMgYXZhaWxhYmxlIGluIElUTV9SeEJ1ZmZlci4gPGJyPjxicj4NCisJCSAgICAgICAgICAgICAgICAgUmV0dXJuOiAxIGluZGljYXRlcyB0aGF0IGEgY2hhcmFjdGVyIGlzIGF2YWlsYWJsZSwgMCBpbmRpY2F0ZXMgdGhhdA0KKyAgICAgICAgICAgICAgICAgICAgIG5vIGNoYXJhY3RlciBpcyBhdmFpbGFibGUuPC90ZD4NCisgICAgPC90cj4NCisgIDwvdGJvZHk+DQorPC90YWJsZT4NCisNCisNCis8aDI+PGEgbmFtZT0iNSI+PC9hPkNNU0lTIEV4YW1wbGU8L2gyPg0KKzxwPg0KKyAgVGhlIGZvbGxvd2luZyBzZWN0aW9uIHNob3dzIGEgdHlwaWNhbCBleGFtcGxlIGZvciB1c2luZyB0aGUgQ01TSVMgbGF5ZXIgaW4gdXNlciBhcHBsaWNhdGlvbnMuDQorICBUaGUgZXhhbXBsZSBpcyBiYXNlZCBvbiBhIFNUTTMyRjEweCBEZXZpY2UuDQorPC9wPg0KKzxwcmU+DQorI2luY2x1ZGUgInN0bTMyZjEweC5oIg0KKw0KK3ZvbGF0aWxlIHVpbnQzMl90IG1zVGlja3M7ICAgICAgICAgICAgICAgICAgICAgICAvKiB0aW1lVGlja3MgY291bnRlciAqLw0KKw0KK3ZvaWQgU3lzVGlja19IYW5kbGVyKHZvaWQpIHsNCisgIG1zVGlja3MrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5jcmVtZW50IHRpbWVUaWNrcyBjb3VudGVyICovDQorfQ0KKw0KK19fSU5MSU5FIHN0YXRpYyB2b2lkIERlbGF5ICh1aW50MzJfdCBkbHlUaWNrcykgew0KKyAgdWludDMyX3QgY3VyVGlja3MgPSBtc1RpY2tzOw0KKw0KKyAgd2hpbGUgKChtc1RpY2tzIC0gY3VyVGlja3MpICZsdDsgZGx5VGlja3MpOw0KK30NCisNCitfX0lOTElORSBzdGF0aWMgdm9pZCBMRURfQ29uZmlnKHZvaWQpIHsNCisgIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29uZmlndXJlIHRoZSBMRURzICovDQorfQ0KKw0KK19fSU5MSU5FIHN0YXRpYyB2b2lkIExFRF9PbiAodWludDMyX3QgbGVkKSB7DQorICA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFR1cm4gT24gIExFRCAqLw0KK30NCisNCitfX0lOTElORSBzdGF0aWMgdm9pZCBMRURfT2ZmICh1aW50MzJfdCBsZWQpIHsNCisgIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVHVybiBPZmYgTEVEICovDQorfQ0KKw0KK2ludCBtYWluICh2b2lkKSB7DQorICBpZiAoU3lzVGlja19Db25maWcgKFN5c3RlbUNvcmVDbG9jayAvIDEwMDApKSB7IC8qIFNldHVwIFN5c1RpY2sgZm9yIDEgbXNlYyBpbnRlcnJ1cHRzICovDQorICAgIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEhhbmRsZSBFcnJvciAqLw0KKyAgICB3aGlsZSAoMSk7DQorICB9DQorICANCisgIExFRF9Db25maWcoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29uZmlndXJlIHRoZSBMRURzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyANCisgIHdoaWxlKDEpIHsNCisgICAgTEVEX09uICgweDEwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVHVybiAgb24gdGhlIExFRCAgICovDQorICAgIERlbGF5ICgxMDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlbGF5ICAxMDAgTXNlYyAgICAqLw0KKyAgICBMRURfT2ZmICgweDEwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUdXJuIG9mZiB0aGUgTEVEICAgKi8NCisgICAgRGVsYXkgKDEwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGVsYXkgIDEwMCBNc2VjICAgICovDQorICB9DQorfTwvcHJlPg0KKw0KKw0KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvTGljZW5zZS5kb2MgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9DTVNJUy9MaWNlbnNlLmRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmI4YWNlCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ01TSVMvTGljZW5zZS5kb2MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ29tbW9uL2ZvbnRzLmMgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9Db21tb24vZm9udHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDUxMTFiCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvQ29tbW9uL2ZvbnRzLmMKQEAgLTAsMCArMSw5OTYgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIGZvbnRzLmMNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjQuNC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIHRleHQgZm9udHMgZm9yIFNUTTMyeHgtRVZBTCdzIExDRCBkcml2ZXIuIA0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBjb3B5DQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKi8gDQorICANCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpbmNsdWRlICJmb250cy5oIg0KKw0KKy8qKiBAYWRkdG9ncm91cCBVdGlsaXRpZXMNCisgICogQHsNCisgICovDQorICANCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJfRVZBTA0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqIEBhZGR0b2dyb3VwIENvbW1vbg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgRk9OVFMNCisgICogQGJyaWVmICAgICAgVGhpcyBmaWxlIGluY2x1ZGVzIHRoZSBGb250cyBkcml2ZXIgb2YgU1RNMzItRVZBTCBib2FyZHMuDQorICAqIEB7DQorICAqLyAgDQorDQorLyoqIEBkZWZncm91cCBGT05UU19Qcml2YXRlX1R5cGVzDQorICAqIEB7DQorICAqLyANCisvKioNCisgICogQH0NCisgICovIA0KKw0KKw0KKy8qKiBAZGVmZ3JvdXAgRk9OVFNfUHJpdmF0ZV9EZWZpbmVzDQorICAqIEB7DQorICAqLw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorDQorLyoqIEBkZWZncm91cCBGT05UU19Qcml2YXRlX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisvKioNCisgICogQH0NCisgICovIA0KKyAgDQorDQorLyoqIEBkZWZncm91cCBGT05UU19Qcml2YXRlX1ZhcmlhYmxlcw0KKyAgKiBAew0KKyAgKi8NCitjb25zdCB1aW50MTZfdCBBU0NJSTE2eDI0X1RhYmxlIFtdID0gew0KKy8qKiANCisgICogQGJyaWVmICAgICAgICBTcGFjZSAnICcgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICchJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwNCisgICAgICAgICAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDAxODAsIDB4MDE4MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJyInICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwQ0MsIDB4MDBDQywgMHgwMENDLCAweDAwQ0MsIDB4MDBDQywgMHgwMENDLA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnIycgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwQzYwLCAweDBDNjAsDQorICAgICAgICAgMHgwQzYwLCAweDA2MzAsIDB4MDYzMCwgMHgxRkZFLCAweDFGRkUsIDB4MDYzMCwgMHgwNzM4LCAweDAzMTgsDQorICAgICAgICAgMHgxRkZFLCAweDFGRkUsIDB4MDMxOCwgMHgwMzE4LCAweDAxOEMsIDB4MDE4QywgMHgwMThDLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICckJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDA4MCwgMHgwM0UwLCAweDBGRjgsIDB4MEU5QywgMHgxQzhDLCAweDE4OEMsIDB4MDA4QywNCisgICAgICAgICAweDAwOTgsIDB4MDFGOCwgMHgwN0UwLCAweDBFODAsIDB4MUM4MCwgMHgxODhDLCAweDE4OEMsIDB4MTg5QywNCisgICAgICAgICAweDBDQjgsIDB4MEZGMCwgMHgwM0UwLCAweDAwODAsIDB4MDA4MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJyUnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MTgwRSwgMHgwQzFCLCAweDBDMTEsIDB4MDYxMSwgMHgwNjExLA0KKyAgICAgICAgIDB4MDMxMSwgMHgwMzExLCAweDAxOUIsIDB4MDE4RSwgMHgzOEMwLCAweDZDQzAsIDB4NDQ2MCwgMHg0NDYwLA0KKyAgICAgICAgIDB4NDQzMCwgMHg0NDMwLCAweDQ0MTgsIDB4NkMxOCwgMHgzODBDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnJicgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAxRTAsIDB4MDNGMCwgMHgwNzM4LCAweDA2MTgsIDB4MDYxOCwgMHgwMzMwLCAweDAxRjAsDQorICAgICAgICAgMHgwMEYwLCAweDAwRjgsIDB4MzE5QywgMHgzMzBFLCAweDFFMDYsIDB4MUMwNiwgMHgxQzA2LCAweDNGMDYsDQorICAgICAgICAgMHg3M0ZDLCAweDIxRjAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICcnJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDBDLCAweDAwMEMsIDB4MDAwQywgMHgwMDBDLCAweDAwMEMsIDB4MDAwQywNCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJygnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMjAwLCAweDAzMDAsIDB4MDE4MCwgMHgwMEMwLCAweDAwQzAsIDB4MDA2MCwgMHgwMDYwLA0KKyAgICAgICAgIDB4MDAzMCwgMHgwMDMwLCAweDAwMzAsIDB4MDAzMCwgMHgwMDMwLCAweDAwMzAsIDB4MDAzMCwgMHgwMDMwLA0KKyAgICAgICAgIDB4MDA2MCwgMHgwMDYwLCAweDAwQzAsIDB4MDBDMCwgMHgwMTgwLCAweDAzMDAsIDB4MDIwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnKScgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMjAsIDB4MDA2MCwgMHgwMEMwLCAweDAxODAsIDB4MDE4MCwgMHgwMzAwLCAweDAzMDAsDQorICAgICAgICAgMHgwNjAwLCAweDA2MDAsIDB4MDYwMCwgMHgwNjAwLCAweDA2MDAsIDB4MDYwMCwgMHgwNjAwLCAweDA2MDAsDQorICAgICAgICAgMHgwMzAwLCAweDAzMDAsIDB4MDE4MCwgMHgwMTgwLCAweDAwQzAsIDB4MDA2MCwgMHgwMDIwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICcqJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwQzAsIDB4MDBDMCwNCisgICAgICAgICAweDA2RDgsIDB4MDdGOCwgMHgwMUUwLCAweDAzMzAsIDB4MDczOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJysnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDE4MCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4M0ZGQywgMHgzRkZDLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnLCcgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgICAgICAgMHgwMDAwLCAweDAxODAsIDB4MDE4MCwgMHgwMTAwLCAweDAxMDAsIDB4MDA4MCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICctJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDdFMCwgMHgwN0UwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJy4nICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMEMwLCAweDAwQzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnLycgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDBDMDAsIDB4MEMwMCwgMHgwNjAwLCAweDA2MDAsIDB4MDYwMCwgMHgwMzAwLCAweDAzMDAsDQorICAgICAgICAgMHgwMzAwLCAweDAzODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsDQorICAgICAgICAgMHgwMDYwLCAweDAwNjAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICcwJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDNFMCwgMHgwN0YwLCAweDBFMzgsIDB4MEMxOCwgMHgxODBDLCAweDE4MEMsIDB4MTgwQywNCisgICAgICAgICAweDE4MEMsIDB4MTgwQywgMHgxODBDLCAweDE4MEMsIDB4MTgwQywgMHgxODBDLCAweDBDMTgsIDB4MEUzOCwNCisgICAgICAgICAweDA3RjAsIDB4MDNFMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJzEnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMTAwLCAweDAxODAsIDB4MDFDMCwgMHgwMUYwLCAweDAxOTgsIDB4MDE4OCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnMicgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAzRTAsIDB4MEZGOCwgMHgwQzE4LCAweDE4MEMsIDB4MTgwQywgMHgxODAwLCAweDE4MDAsDQorICAgICAgICAgMHgwQzAwLCAweDA2MDAsIDB4MDMwMCwgMHgwMTgwLCAweDAwQzAsIDB4MDA2MCwgMHgwMDMwLCAweDAwMTgsDQorICAgICAgICAgMHgxRkZDLCAweDFGRkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICczJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDFFMCwgMHgwN0Y4LCAweDBFMTgsIDB4MEMwQywgMHgwQzBDLCAweDBDMDAsIDB4MDYwMCwNCisgICAgICAgICAweDAzQzAsIDB4MDdDMCwgMHgwQzAwLCAweDE4MDAsIDB4MTgwMCwgMHgxODBDLCAweDE4MEMsIDB4MEMxOCwNCisgICAgICAgICAweDA3RjgsIDB4MDNFMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJzQnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwQzAwLCAweDBFMDAsIDB4MEYwMCwgMHgwRjAwLCAweDBEODAsIDB4MENDMCwgMHgwQzYwLA0KKyAgICAgICAgIDB4MEM2MCwgMHgwQzMwLCAweDBDMTgsIDB4MEMwQywgMHgzRkZDLCAweDNGRkMsIDB4MEMwMCwgMHgwQzAwLA0KKyAgICAgICAgIDB4MEMwMCwgMHgwQzAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnNScgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDBGRjgsIDB4MEZGOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAwQywgMHgwM0VDLCAweDA3RkMsDQorICAgICAgICAgMHgwRTFDLCAweDFDMDAsIDB4MTgwMCwgMHgxODAwLCAweDE4MDAsIDB4MTgwQywgMHgwQzFDLCAweDBFMTgsDQorICAgICAgICAgMHgwN0Y4LCAweDAzRTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICc2JyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDdDMCwgMHgwRkYwLCAweDFDMzgsIDB4MTgxOCwgMHgwMDE4LCAweDAwMEMsIDB4MDNDQywNCisgICAgICAgICAweDBGRUMsIDB4MEUzQywgMHgxQzFDLCAweDE4MEMsIDB4MTgwQywgMHgxODBDLCAweDFDMTgsIDB4MEUzOCwNCisgICAgICAgICAweDA3RjAsIDB4MDNFMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJzcnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgxRkZDLCAweDFGRkMsIDB4MEMwMCwgMHgwNjAwLCAweDA2MDAsIDB4MDMwMCwgMHgwMzgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMUMwLCAweDAwQzAsIDB4MDBFMCwgMHgwMDYwLCAweDAwNjAsIDB4MDA3MCwgMHgwMDMwLA0KKyAgICAgICAgIDB4MDAzMCwgMHgwMDMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnOCcgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAzRTAsIDB4MDdGMCwgMHgwRTM4LCAweDBDMTgsIDB4MEMxOCwgMHgwQzE4LCAweDA2MzgsDQorICAgICAgICAgMHgwN0YwLCAweDA3RjAsIDB4MEMxOCwgMHgxODBDLCAweDE4MEMsIDB4MTgwQywgMHgxODBDLCAweDBDMzgsDQorICAgICAgICAgMHgwRkY4LCAweDAzRTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICc5JyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDNFMCwgMHgwN0YwLCAweDBFMzgsIDB4MEMxQywgMHgxODBDLCAweDE4MEMsIDB4MTgwQywNCisgICAgICAgICAweDFDMUMsIDB4MUUzOCwgMHgxQkY4LCAweDE5RTAsIDB4MTgwMCwgMHgwQzAwLCAweDBDMDAsIDB4MEUxQywNCisgICAgICAgICAweDA3RjgsIDB4MDFGMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJzonICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDE4MCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnOycgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMTgwLCAweDAxODAsDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgICAgICAgMHgwMTgwLCAweDAxODAsIDB4MDEwMCwgMHgwMTAwLCAweDAwODAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICc8JyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDEwMDAsIDB4MUMwMCwgMHgwRjgwLCAweDAzRTAsIDB4MDBGOCwgMHgwMDE4LCAweDAwRjgsIDB4MDNFMCwNCisgICAgICAgICAweDBGODAsIDB4MUMwMCwgMHgxMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJz0nICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAgICAgIDB4MUZGOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgxRkY4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnPicgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgICAgICAgMHgwMDA4LCAweDAwMzgsIDB4MDFGMCwgMHgwN0MwLCAweDFGMDAsIDB4MTgwMCwgMHgxRjAwLCAweDA3QzAsDQorICAgICAgICAgMHgwMUYwLCAweDAwMzgsIDB4MDAwOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICc/JyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDNFMCwgMHgwRkY4LCAweDBDMTgsIDB4MTgwQywgMHgxODBDLCAweDE4MDAsIDB4MEMwMCwNCisgICAgICAgICAweDA2MDAsIDB4MDMwMCwgMHgwMTgwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDAwQzAsIDB4MDBDMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ0AnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDA3RTAsIDB4MTgxOCwgMHgyMDA0LCAweDI5QzIsIDB4NEEyMiwgMHg0NDExLA0KKyAgICAgICAgIDB4NDQwOSwgMHg0NDA5LCAweDQ0MDksIDB4MjIwOSwgMHgxMzExLCAweDBDRTIsIDB4NDAwMiwgMHgyMDA0LA0KKyAgICAgICAgIDB4MTgxOCwgMHgwN0UwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnQScgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAzODAsIDB4MDM4MCwgMHgwNkMwLCAweDA2QzAsIDB4MDZDMCwgMHgwQzYwLCAweDBDNjAsDQorICAgICAgICAgMHgxODMwLCAweDE4MzAsIDB4MTgzMCwgMHgzRkY4LCAweDNGRjgsIDB4NzAxQywgMHg2MDBDLCAweDYwMEMsDQorICAgICAgICAgMHhDMDA2LCAweEMwMDYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdCJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDNGQywgMHgwRkZDLCAweDBDMEMsIDB4MTgwQywgMHgxODBDLCAweDE4MEMsIDB4MEMwQywNCisgICAgICAgICAweDA3RkMsIDB4MEZGQywgMHgxODBDLCAweDMwMEMsIDB4MzAwQywgMHgzMDBDLCAweDMwMEMsIDB4MTgwQywNCisgICAgICAgICAweDFGRkMsIDB4MDdGQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ0MnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwN0MwLCAweDFGRjAsIDB4MzgzOCwgMHgzMDFDLCAweDcwMEMsIDB4NjAwNiwgMHgwMDA2LA0KKyAgICAgICAgIDB4MDAwNiwgMHgwMDA2LCAweDAwMDYsIDB4MDAwNiwgMHgwMDA2LCAweDYwMDYsIDB4NzAwQywgMHgzMDFDLA0KKyAgICAgICAgIDB4MUZGMCwgMHgwN0UwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnRCcgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAzRkUsIDB4MEZGRSwgMHgwRTA2LCAweDE4MDYsIDB4MTgwNiwgMHgzMDA2LCAweDMwMDYsDQorICAgICAgICAgMHgzMDA2LCAweDMwMDYsIDB4MzAwNiwgMHgzMDA2LCAweDMwMDYsIDB4MTgwNiwgMHgxODA2LCAweDBFMDYsDQorICAgICAgICAgMHgwRkZFLCAweDAzRkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdFJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4M0ZGQywgMHgzRkZDLCAweDAwMEMsIDB4MDAwQywgMHgwMDBDLCAweDAwMEMsIDB4MDAwQywNCisgICAgICAgICAweDFGRkMsIDB4MUZGQywgMHgwMDBDLCAweDAwMEMsIDB4MDAwQywgMHgwMDBDLCAweDAwMEMsIDB4MDAwQywNCisgICAgICAgICAweDNGRkMsIDB4M0ZGQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ0YnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgzRkY4LCAweDNGRjgsIDB4MDAxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LA0KKyAgICAgICAgIDB4MUZGOCwgMHgxRkY4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LA0KKyAgICAgICAgIDB4MDAxOCwgMHgwMDE4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnRycgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDBGRTAsIDB4M0ZGOCwgMHg3ODNDLCAweDYwMEUsIDB4RTAwNiwgMHhDMDA3LCAweDAwMDMsDQorICAgICAgICAgMHgwMDAzLCAweEZFMDMsIDB4RkUwMywgMHhDMDAzLCAweEMwMDcsIDB4QzAwNiwgMHhDMDBFLCAweEYwM0MsDQorICAgICAgICAgMHgzRkY4LCAweDBGRTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdIJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MzAwQywgMHgzMDBDLCAweDMwMEMsIDB4MzAwQywgMHgzMDBDLCAweDMwMEMsIDB4MzAwQywNCisgICAgICAgICAweDNGRkMsIDB4M0ZGQywgMHgzMDBDLCAweDMwMEMsIDB4MzAwQywgMHgzMDBDLCAweDMwMEMsIDB4MzAwQywNCisgICAgICAgICAweDMwMEMsIDB4MzAwQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ0knICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnSicgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDA2MDAsIDB4MDYwMCwgMHgwNjAwLCAweDA2MDAsIDB4MDYwMCwgMHgwNjAwLCAweDA2MDAsDQorICAgICAgICAgMHgwNjAwLCAweDA2MDAsIDB4MDYwMCwgMHgwNjAwLCAweDA2MDAsIDB4MDYxOCwgMHgwNjE4LCAweDA3MzgsDQorICAgICAgICAgMHgwM0YwLCAweDAxRTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdLJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MzAwNiwgMHgxODA2LCAweDBDMDYsIDB4MDYwNiwgMHgwMzA2LCAweDAxODYsIDB4MDBDNiwNCisgICAgICAgICAweDAwNjYsIDB4MDA3NiwgMHgwMERFLCAweDAxOEUsIDB4MDMwNiwgMHgwNjA2LCAweDBDMDYsIDB4MTgwNiwNCisgICAgICAgICAweDMwMDYsIDB4NjAwNiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ0wnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LA0KKyAgICAgICAgIDB4MDAxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LA0KKyAgICAgICAgIDB4MUZGOCwgMHgxRkY4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnTScgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweEUwMEUsIDB4RjAxRSwgMHhGMDFFLCAweEYwMUUsIDB4RDgzNiwgMHhEODM2LCAweEQ4MzYsDQorICAgICAgICAgMHhEODM2LCAweENDNjYsIDB4Q0M2NiwgMHhDQzY2LCAweEM2QzYsIDB4QzZDNiwgMHhDNkM2LCAweEM2QzYsDQorICAgICAgICAgMHhDMzg2LCAweEMzODYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdOJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MzAwQywgMHgzMDFDLCAweDMwM0MsIDB4MzAzQywgMHgzMDZDLCAweDMwNkMsIDB4MzBDQywNCisgICAgICAgICAweDMwQ0MsIDB4MzE4QywgMHgzMzBDLCAweDMzMEMsIDB4MzYwQywgMHgzNjBDLCAweDNDMEMsIDB4M0MwQywNCisgICAgICAgICAweDM4MEMsIDB4MzAwQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ08nICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwN0UwLCAweDFGRjgsIDB4MzgxQywgMHg3MDBFLCAweDYwMDYsIDB4QzAwMywgMHhDMDAzLA0KKyAgICAgICAgIDB4QzAwMywgMHhDMDAzLCAweEMwMDMsIDB4QzAwMywgMHhDMDAzLCAweDYwMDYsIDB4NzAwRSwgMHgzODFDLA0KKyAgICAgICAgIDB4MUZGOCwgMHgwN0UwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnUCcgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDBGRkMsIDB4MUZGQywgMHgzODBDLCAweDMwMEMsIDB4MzAwQywgMHgzMDBDLCAweDMwMEMsDQorICAgICAgICAgMHgxODBDLCAweDFGRkMsIDB4MDdGQywgMHgwMDBDLCAweDAwMEMsIDB4MDAwQywgMHgwMDBDLCAweDAwMEMsDQorICAgICAgICAgMHgwMDBDLCAweDAwMEMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdRJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDdFMCwgMHgxRkY4LCAweDM4MUMsIDB4NzAwRSwgMHg2MDA2LCAweEUwMDMsIDB4QzAwMywNCisgICAgICAgICAweEMwMDMsIDB4QzAwMywgMHhDMDAzLCAweEMwMDMsIDB4RTAwNywgMHg2MzA2LCAweDNGMEUsIDB4M0MxQywNCisgICAgICAgICAweDNGRjgsIDB4RjdFMCwgMHhDMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ1InICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwRkZFLCAweDFGRkUsIDB4MzgwNiwgMHgzMDA2LCAweDMwMDYsIDB4MzAwNiwgMHgzODA2LA0KKyAgICAgICAgIDB4MUZGRSwgMHgwN0ZFLCAweDAzMDYsIDB4MDYwNiwgMHgwQzA2LCAweDE4MDYsIDB4MTgwNiwgMHgzMDA2LA0KKyAgICAgICAgIDB4MzAwNiwgMHg2MDA2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnUycgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAzRTAsIDB4MEZGOCwgMHgwQzFDLCAweDE4MEMsIDB4MTgwQywgMHgwMDBDLCAweDAwMUMsDQorICAgICAgICAgMHgwM0Y4LCAweDBGRTAsIDB4MUUwMCwgMHgzODAwLCAweDMwMDYsIDB4MzAwNiwgMHgzMDBFLCAweDFDMUMsDQorICAgICAgICAgMHgwRkY4LCAweDA3RTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdUJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4N0ZGRSwgMHg3RkZFLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwNCisgICAgICAgICAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwNCisgICAgICAgICAweDAxODAsIDB4MDE4MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ1UnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgzMDBDLCAweDMwMEMsIDB4MzAwQywgMHgzMDBDLCAweDMwMEMsIDB4MzAwQywgMHgzMDBDLA0KKyAgICAgICAgIDB4MzAwQywgMHgzMDBDLCAweDMwMEMsIDB4MzAwQywgMHgzMDBDLCAweDMwMEMsIDB4MzAwQywgMHgxODE4LA0KKyAgICAgICAgIDB4MUZGOCwgMHgwN0UwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnVicgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDYwMDMsIDB4MzAwNiwgMHgzMDA2LCAweDMwMDYsIDB4MTgwQywgMHgxODBDLCAweDE4MEMsDQorICAgICAgICAgMHgwQzE4LCAweDBDMTgsIDB4MEUzOCwgMHgwNjMwLCAweDA2MzAsIDB4MDc3MCwgMHgwMzYwLCAweDAzNjAsDQorICAgICAgICAgMHgwMUMwLCAweDAxQzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdXJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4NjAwMywgMHg2MUMzLCAweDYxQzMsIDB4NjFDMywgMHgzMzY2LCAweDMzNjYsIDB4MzM2NiwNCisgICAgICAgICAweDMzNjYsIDB4MzM2NiwgMHgzMzY2LCAweDFCNkMsIDB4MUI2QywgMHgxQjZDLCAweDFBMkMsIDB4MUUzQywNCisgICAgICAgICAweDBFMzgsIDB4MEUzOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ1gnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHhFMDBGLCAweDcwMEMsIDB4MzAxOCwgMHgxODMwLCAweDBDNzAsIDB4MEU2MCwgMHgwN0MwLA0KKyAgICAgICAgIDB4MDM4MCwgMHgwMzgwLCAweDAzQzAsIDB4MDZFMCwgMHgwQzcwLCAweDFDMzAsIDB4MTgxOCwgMHgzMDBDLA0KKyAgICAgICAgIDB4NjAwRSwgMHhFMDA3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnWScgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweEMwMDMsIDB4NjAwNiwgMHgzMDBDLCAweDM4MUMsIDB4MTgzOCwgMHgwQzMwLCAweDA2NjAsDQorICAgICAgICAgMHgwN0UwLCAweDAzQzAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsDQorICAgICAgICAgMHgwMTgwLCAweDAxODAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdaJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4N0ZGQywgMHg3RkZDLCAweDYwMDAsIDB4MzAwMCwgMHgxODAwLCAweDBDMDAsIDB4MDYwMCwNCisgICAgICAgICAweDAzMDAsIDB4MDE4MCwgMHgwMEMwLCAweDAwNjAsIDB4MDAzMCwgMHgwMDE4LCAweDAwMEMsIDB4MDAwNiwNCisgICAgICAgICAweDdGRkUsIDB4N0ZGRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ1snICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwM0UwLCAweDAzRTAsIDB4MDA2MCwgMHgwMDYwLCAweDAwNjAsIDB4MDA2MCwgMHgwMDYwLA0KKyAgICAgICAgIDB4MDA2MCwgMHgwMDYwLCAweDAwNjAsIDB4MDA2MCwgMHgwMDYwLCAweDAwNjAsIDB4MDA2MCwgMHgwMDYwLA0KKyAgICAgICAgIDB4MDA2MCwgMHgwMDYwLCAweDAwNjAsIDB4MDA2MCwgMHgwMDYwLCAweDAzRTAsIDB4MDNFMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnXCcgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMzAsIDB4MDAzMCwgMHgwMDYwLCAweDAwNjAsIDB4MDA2MCwgMHgwMEMwLCAweDAwQzAsDQorICAgICAgICAgMHgwMEMwLCAweDAxQzAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDMwMCwgMHgwMzAwLCAweDAzMDAsDQorICAgICAgICAgMHgwNjAwLCAweDA2MDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICddJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDNFMCwgMHgwM0UwLCAweDAzMDAsIDB4MDMwMCwgMHgwMzAwLCAweDAzMDAsIDB4MDMwMCwNCisgICAgICAgICAweDAzMDAsIDB4MDMwMCwgMHgwMzAwLCAweDAzMDAsIDB4MDMwMCwgMHgwMzAwLCAweDAzMDAsIDB4MDMwMCwNCisgICAgICAgICAweDAzMDAsIDB4MDMwMCwgMHgwMzAwLCAweDAzMDAsIDB4MDMwMCwgMHgwM0UwLCAweDAzRTAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ14nICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAxQzAsIDB4MDFDMCwgMHgwMzYwLCAweDAzNjAsIDB4MDM2MCwgMHgwNjMwLA0KKyAgICAgICAgIDB4MDYzMCwgMHgwQzE4LCAweDBDMTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnXycgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgICAgICAgMHgwMDAwLCAweEZGRkYsIDB4RkZGRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICcnJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwQywgMHgwMDBDLCAweDAwMEMsIDB4MDAwQywgMHgwMDBDLCAweDAwMEMsIDB4MDAwMCwNCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ2EnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDNGMCwgMHgwN0Y4LA0KKyAgICAgICAgIDB4MEMxQywgMHgwQzBDLCAweDBGMDAsIDB4MEZGMCwgMHgwQ0Y4LCAweDBDMEMsIDB4MEMwQywgMHgwRjFDLA0KKyAgICAgICAgIDB4MEZGOCwgMHgxOEYwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnYicgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwM0Q4LCAweDBGRjgsDQorICAgICAgICAgMHgwQzM4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDBDMzgsDQorICAgICAgICAgMHgwRkY4LCAweDAzRDgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdjJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAzQzAsIDB4MDdGMCwNCisgICAgICAgICAweDBFMzAsIDB4MEMxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LCAweDBDMTgsIDB4MEUzMCwNCisgICAgICAgICAweDA3RjAsIDB4MDNDMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ2QnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgxODAwLCAweDE4MDAsIDB4MTgwMCwgMHgxODAwLCAweDE4MDAsIDB4MUJDMCwgMHgxRkYwLA0KKyAgICAgICAgIDB4MUMzMCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxQzMwLA0KKyAgICAgICAgIDB4MUZGMCwgMHgxQkMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnZScgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwM0MwLCAweDBGRjAsDQorICAgICAgICAgMHgwQzMwLCAweDE4MTgsIDB4MUZGOCwgMHgxRkY4LCAweDAwMTgsIDB4MDAxOCwgMHgxODM4LCAweDFDMzAsDQorICAgICAgICAgMHgwRkYwLCAweDA3QzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdmJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MEY4MCwgMHgwRkMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDA3RjAsIDB4MDdGMCwNCisgICAgICAgICAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwNCisgICAgICAgICAweDAwQzAsIDB4MDBDMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ2cnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MERFMCwgMHgwRkY4LA0KKyAgICAgICAgIDB4MEUxOCwgMHgwQzBDLCAweDBDMEMsIDB4MEMwQywgMHgwQzBDLCAweDBDMEMsIDB4MEMwQywgMHgwRTE4LA0KKyAgICAgICAgIDB4MEZGOCwgMHgwREUwLCAweDBDMDAsIDB4MEMwQywgMHgwNjFDLCAweDA3RjgsIDB4MDFGMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnaCcgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwN0Q4LCAweDBGRjgsDQorICAgICAgICAgMHgxQzM4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsDQorICAgICAgICAgMHgxODE4LCAweDE4MTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdpJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDBDMCwgMHgwMEMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwQzAsIDB4MDBDMCwNCisgICAgICAgICAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwNCisgICAgICAgICAweDAwQzAsIDB4MDBDMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ2onICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMEMwLCAweDAwQzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDBDMCwgMHgwMEMwLA0KKyAgICAgICAgIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLA0KKyAgICAgICAgIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwRjgsIDB4MDA3OCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnaycgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMEMsIDB4MDAwQywgMHgwMDBDLCAweDAwMEMsIDB4MDAwQywgMHgwQzBDLCAweDA2MEMsDQorICAgICAgICAgMHgwMzBDLCAweDAxOEMsIDB4MDBDQywgMHgwMDZDLCAweDAwRkMsIDB4MDE5QywgMHgwMzhDLCAweDAzMEMsDQorICAgICAgICAgMHgwNjBDLCAweDBDMEMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdsJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwNCisgICAgICAgICAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwNCisgICAgICAgICAweDAwQzAsIDB4MDBDMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ20nICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4M0M3QywgMHg3RUZGLA0KKyAgICAgICAgIDB4RTNDNywgMHhDMTgzLCAweEMxODMsIDB4QzE4MywgMHhDMTgzLCAweEMxODMsIDB4QzE4MywgMHhDMTgzLA0KKyAgICAgICAgIDB4QzE4MywgMHhDMTgzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnbicgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwNzk4LCAweDBGRjgsDQorICAgICAgICAgMHgxQzM4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsDQorICAgICAgICAgMHgxODE4LCAweDE4MTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdvJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAzQzAsIDB4MEZGMCwNCisgICAgICAgICAweDBDMzAsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MEMzMCwNCisgICAgICAgICAweDBGRjAsIDB4MDNDMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ3AnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDNEOCwgMHgwRkY4LA0KKyAgICAgICAgIDB4MEMzOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgwQzM4LA0KKyAgICAgICAgIDB4MEZGOCwgMHgwM0Q4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDE4LCAweDAwMTgsIDB4MDAxOCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAncScgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgxQkMwLCAweDFGRjAsDQorICAgICAgICAgMHgxQzMwLCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDFDMzAsDQorICAgICAgICAgMHgxRkYwLCAweDFCQzAsIDB4MTgwMCwgMHgxODAwLCAweDE4MDAsIDB4MTgwMCwgMHgxODAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICdyJyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDA3QjAsIDB4MDNGMCwNCisgICAgICAgICAweDAwNzAsIDB4MDAzMCwgMHgwMDMwLCAweDAwMzAsIDB4MDAzMCwgMHgwMDMwLCAweDAwMzAsIDB4MDAzMCwNCisgICAgICAgICAweDAwMzAsIDB4MDAzMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ3MnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDNFMCwgMHgwM0YwLA0KKyAgICAgICAgIDB4MEUzOCwgMHgwQzE4LCAweDAwMzgsIDB4MDNGMCwgMHgwN0MwLCAweDBDMDAsIDB4MEMxOCwgMHgwRTM4LA0KKyAgICAgICAgIDB4MDdGMCwgMHgwM0UwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAndCcgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDA4MCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwN0YwLCAweDA3RjAsDQorICAgICAgICAgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsDQorICAgICAgICAgMHgwN0MwLCAweDA3ODAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICd1JyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDE4MTgsIDB4MTgxOCwNCisgICAgICAgICAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MTgxOCwgMHgxODE4LCAweDE4MTgsIDB4MUMzOCwNCisgICAgICAgICAweDFGRjAsIDB4MTlFMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ3YnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MTgwQywgMHgwQzE4LA0KKyAgICAgICAgIDB4MEMxOCwgMHgwQzE4LCAweDA2MzAsIDB4MDYzMCwgMHgwNjMwLCAweDAzNjAsIDB4MDM2MCwgMHgwMzYwLA0KKyAgICAgICAgIDB4MDFDMCwgMHgwMUMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAndycgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg0MUMxLCAweDQxQzEsDQorICAgICAgICAgMHg2MUMzLCAweDYzNjMsIDB4NjM2MywgMHg2MzYzLCAweDM2MzYsIDB4MzYzNiwgMHgzNjM2LCAweDFDMUMsDQorICAgICAgICAgMHgxQzFDLCAweDFDMUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICd4JyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDM4MUMsIDB4MUMzOCwNCisgICAgICAgICAweDBDMzAsIDB4MDY2MCwgMHgwMzYwLCAweDAzNjAsIDB4MDM2MCwgMHgwMzYwLCAweDA2NjAsIDB4MEMzMCwNCisgICAgICAgICAweDFDMzgsIDB4MzgxQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ3knICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MzAxOCwgMHgxODMwLA0KKyAgICAgICAgIDB4MTgzMCwgMHgxODcwLCAweDBDNjAsIDB4MEM2MCwgMHgwQ0UwLCAweDA2QzAsIDB4MDZDMCwgMHgwMzgwLA0KKyAgICAgICAgIDB4MDM4MCwgMHgwMzgwLCAweDAxODAsIDB4MDE4MCwgMHgwMUMwLCAweDAwRjAsIDB4MDA3MCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAneicgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgxRkZDLCAweDFGRkMsDQorICAgICAgICAgMHgwQzAwLCAweDA2MDAsIDB4MDMwMCwgMHgwMTgwLCAweDAwQzAsIDB4MDA2MCwgMHgwMDMwLCAweDAwMTgsDQorICAgICAgICAgMHgxRkZDLCAweDFGRkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICd7JyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDMwMCwgMHgwMTgwLCAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDBDMCwNCisgICAgICAgICAweDAwQzAsIDB4MDA2MCwgMHgwMDYwLCAweDAwMzAsIDB4MDA2MCwgMHgwMDQwLCAweDAwQzAsIDB4MDBDMCwNCisgICAgICAgICAweDAwQzAsIDB4MDBDMCwgMHgwMEMwLCAweDAwQzAsIDB4MDE4MCwgMHgwMzAwLCAweDAwMDAsIDB4MDAwMCwNCisvKiogDQorICAqIEBicmllZiAgICAgICAgJ3wnICANCisgICovIA0KKyAgICAgICAgIDB4MDAwMCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLA0KKyAgICAgICAgIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMDAwLA0KKy8qKiANCisgICogQGJyaWVmICAgICAgICAnfScgIA0KKyAgKi8gDQorICAgICAgICAgMHgwMDAwLCAweDAwNjAsIDB4MDBDMCwgMHgwMUMwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAxODAsDQorICAgICAgICAgMHgwMTgwLCAweDAzMDAsIDB4MDMwMCwgMHgwNjAwLCAweDAzMDAsIDB4MDEwMCwgMHgwMTgwLCAweDAxODAsDQorICAgICAgICAgMHgwMTgwLCAweDAxODAsIDB4MDE4MCwgMHgwMTgwLCAweDAwQzAsIDB4MDA2MCwgMHgwMDAwLCAweDAwMDAsDQorLyoqIA0KKyAgKiBAYnJpZWYgICAgICAgICd+JyAgDQorICAqLyANCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDEwRjAsIDB4MUZGOCwgMHgwRjA4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMH07DQorDQorY29uc3QgdWludDE2X3QgQVNDSUkxMngxMl9UYWJsZSBbXSA9IHsNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgwMDAwLDB4MjAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHg1MDAwLDB4NTAwMCwweDUwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDkwMCwweDA5MDAsMHgxMjAwLDB4N2YwMCwweDEyMDAsMHg3ZjAwLDB4MTIwMCwweDI0MDAsMHgyNDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MTAwMCwweDM4MDAsMHg1NDAwLDB4NTAwMCwweDUwMDAsMHgzODAwLDB4MTQwMCwweDU0MDAsMHg1NDAwLDB4MzgwMCwweDEwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgzMDgwLDB4NDkwMCwweDQ5MDAsMHg0YTAwLDB4MzJjMCwweDA1MjAsMHgwOTIwLDB4MDkyMCwweDEwYzAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MGMwMCwweDEyMDAsMHgxMjAwLDB4MTQwMCwweDE4MDAsMHgyNTAwLDB4MjMwMCwweDIzMDAsMHgxZDgwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwODAwLDB4MTAwMCwweDEwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgxMDAwLDB4MTAwMCwNCisgICAgMHgwMDAwLDB4NDAwMCwweDIwMDAsMHgyMDAwLDB4MTAwMCwweDEwMDAsMHgxMDAwLDB4MTAwMCwweDEwMDAsMHgxMDAwLDB4MjAwMCwweDIwMDAsDQorICAgIDB4MDAwMCwweDIwMDAsMHg3MDAwLDB4MjAwMCwweDUwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDA4MDAsMHgwODAwLDB4N2YwMCwweDA4MDAsMHgwODAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgyMDAwLDB4MjAwMCwweDQwMDAsDQorICAgIDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4NzAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDIwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MTAwMCwweDEwMDAsMHgxMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDQwMDAsMHg0MDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDEwMDAsMHgyODAwLDB4NDQwMCwweDQ0MDAsMHg0NDAwLDB4NDQwMCwweDQ0MDAsMHgyODAwLDB4MTAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgxMDAwLDB4MzAwMCwweDUwMDAsMHgxMDAwLDB4MTAwMCwweDEwMDAsMHgxMDAwLDB4MTAwMCwweDEwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MzAwMCwweDQ4MDAsMHg0NDAwLDB4MDQwMCwweDA4MDAsMHgxMDAwLDB4MjAwMCwweDQwMDAsMHg3YzAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDMwMDAsMHg0ODAwLDB4MDQwMCwweDA4MDAsMHgxMDAwLDB4MDgwMCwweDQ0MDAsMHg0ODAwLDB4MzAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwODAwLDB4MTgwMCwweDE4MDAsMHgyODAwLDB4MjgwMCwweDQ4MDAsMHg3YzAwLDB4MDgwMCwweDA4MDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4M2MwMCwweDIwMDAsMHg0MDAwLDB4NzAwMCwweDQ4MDAsMHgwNDAwLDB4NDQwMCwweDQ4MDAsMHgzMDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDE4MDAsMHgyNDAwLDB4NDAwMCwweDUwMDAsMHg2ODAwLDB4NDQwMCwweDQ0MDAsMHgyODAwLDB4MTAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHg3YzAwLDB4MDQwMCwweDA4MDAsMHgxMDAwLDB4MTAwMCwweDEwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MTAwMCwweDI4MDAsMHg0NDAwLDB4MjgwMCwweDEwMDAsMHgyODAwLDB4NDQwMCwweDI4MDAsMHgxMDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDEwMDAsMHgyODAwLDB4NDQwMCwweDQ0MDAsMHgyYzAwLDB4MTQwMCwweDA0MDAsMHg0ODAwLDB4MzAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDIwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDIwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgyMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgyMDAwLDB4MjAwMCwweDQwMDAsDQorICAgIDB4MDAwMCwweDAwMDAsMHgwNDAwLDB4MDgwMCwweDMwMDAsMHg0MDAwLDB4MzAwMCwweDA4MDAsMHgwNDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDdjMDAsMHgwMDAwLDB4MDAwMCwweDdjMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDQwMDAsMHgyMDAwLDB4MTgwMCwweDA0MDAsMHgxODAwLDB4MjAwMCwweDQwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDM4MDAsMHg2NDAwLDB4NDQwMCwweDA0MDAsMHgwODAwLDB4MTAwMCwweDEwMDAsMHgwMDAwLDB4MTAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwZjgwLDB4MTA0MCwweDJlYTAsMHg1MWEwLDB4NTEyMCwweDUxMjAsMHg1MTIwLDB4NTMyMCwweDRkYzAsMHgyMDIwLDB4MTA0MCwNCisgICAgMHgwMDAwLDB4MDgwMCwweDE0MDAsMHgxNDAwLDB4MTQwMCwweDIyMDAsMHgzZTAwLDB4MjIwMCwweDQxMDAsMHg0MTAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDNjMDAsMHgyMjAwLDB4MjIwMCwweDIyMDAsMHgzYzAwLDB4MjIwMCwweDIyMDAsMHgyMjAwLDB4M2MwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwZTAwLDB4MTEwMCwweDIxMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMTAwLDB4MTEwMCwweDBlMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4M2MwMCwweDIyMDAsMHgyMTAwLDB4MjEwMCwweDIxMDAsMHgyMTAwLDB4MjEwMCwweDIyMDAsMHgzYzAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDNlMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgzZTAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4M2UwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgzZTAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4M2MwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MGUwMCwweDExMDAsMHgyMTAwLDB4MjAwMCwweDI3MDAsMHgyMTAwLDB4MjEwMCwweDExMDAsMHgwZTAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDIxMDAsMHgyMTAwLDB4MjEwMCwweDIxMDAsMHgzZjAwLDB4MjEwMCwweDIxMDAsMHgyMTAwLDB4MjEwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDgwMCwweDA4MDAsMHgwODAwLDB4MDgwMCwweDA4MDAsMHgwODAwLDB4NDgwMCwweDQ4MDAsMHgzMDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDIyMDAsMHgyNDAwLDB4MjgwMCwweDI4MDAsMHgzODAwLDB4MjgwMCwweDI0MDAsMHgyNDAwLDB4MjIwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDNlMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MjA4MCwweDMxODAsMHgzMTgwLDB4MzE4MCwweDJhODAsMHgyYTgwLDB4MmE4MCwweDJhODAsMHgyNDgwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDIxMDAsMHgzMTAwLDB4MzEwMCwweDI5MDAsMHgyOTAwLDB4MjUwMCwweDIzMDAsMHgyMzAwLDB4MjEwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwYzAwLDB4MTIwMCwweDIxMDAsMHgyMTAwLDB4MjEwMCwweDIxMDAsMHgyMTAwLDB4MTIwMCwweDBjMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4M2MwMCwweDIyMDAsMHgyMjAwLDB4MjIwMCwweDNjMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDBjMDAsMHgxMjAwLDB4MjEwMCwweDIxMDAsMHgyMTAwLDB4MjEwMCwweDIxMDAsMHgxNjAwLDB4MGQwMCwweDAxMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgzZTAwLDB4MjEwMCwweDIxMDAsMHgyMTAwLDB4M2UwMCwweDI0MDAsMHgyMjAwLDB4MjEwMCwweDIwODAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MWMwMCwweDIyMDAsMHgyMjAwLDB4MjAwMCwweDFjMDAsMHgwMjAwLDB4MjIwMCwweDIyMDAsMHgxYzAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDNlMDAsMHgwODAwLDB4MDgwMCwweDA4MDAsMHgwODAwLDB4MDgwMCwweDA4MDAsMHgwODAwLDB4MDgwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgyMTAwLDB4MjEwMCwweDIxMDAsMHgyMTAwLDB4MjEwMCwweDIxMDAsMHgyMTAwLDB4MTIwMCwweDBjMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4NDEwMCwweDQxMDAsMHgyMjAwLDB4MjIwMCwweDIyMDAsMHgxNDAwLDB4MTQwMCwweDE0MDAsMHgwODAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDQ0NDAsMHg0YTQwLDB4MmE0MCwweDJhODAsMHgyYTgwLDB4MmE4MCwweDJhODAsMHgyYTgwLDB4MTEwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHg0MTAwLDB4MjIwMCwweDE0MDAsMHgxNDAwLDB4MDgwMCwweDE0MDAsMHgxNDAwLDB4MjIwMCwweDQxMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4NDEwMCwweDIyMDAsMHgyMjAwLDB4MTQwMCwweDA4MDAsMHgwODAwLDB4MDgwMCwweDA4MDAsMHgwODAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDdlMDAsMHgwMjAwLDB4MDQwMCwweDA4MDAsMHgxMDAwLDB4MTAwMCwweDIwMDAsMHg0MDAwLDB4N2UwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgzMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwNCisgICAgMHgwMDAwLDB4NDAwMCwweDQwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDEwMDAsMHgxMDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDYwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLA0KKyAgICAweDAwMDAsMHgxMDAwLDB4MjgwMCwweDI4MDAsMHgyODAwLDB4NDQwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDdlMDAsDQorICAgIDB4NDAwMCwweDIwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDM4MDAsMHg0NDAwLDB4MDQwMCwweDNjMDAsMHg0NDAwLDB4NDQwMCwweDNjMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4NDAwMCwweDQwMDAsMHg1ODAwLDB4NjQwMCwweDQ0MDAsMHg0NDAwLDB4NDQwMCwweDY0MDAsMHg1ODAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MzAwMCwweDQ4MDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg0ODAwLDB4MzAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwNDAwLDB4MDQwMCwweDM0MDAsMHg0YzAwLDB4NDQwMCwweDQ0MDAsMHg0NDAwLDB4NGMwMCwweDM0MDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgzODAwLDB4NDQwMCwweDQ0MDAsMHg3YzAwLDB4NDAwMCwweDQ0MDAsMHgzODAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDYwMDAsMHg0MDAwLDB4ZTAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDM0MDAsMHg0YzAwLDB4NDQwMCwweDQ0MDAsMHg0NDAwLDB4NGMwMCwweDM0MDAsMHgwNDAwLDB4NDQwMCwNCisgICAgMHgwMDAwLDB4NDAwMCwweDQwMDAsMHg1ODAwLDB4NjQwMCwweDQ0MDAsMHg0NDAwLDB4NDQwMCwweDQ0MDAsMHg0NDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDQwMDAsMHgwMDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHg0MDAwLDB4MDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwNCisgICAgMHgwMDAwLDB4NDAwMCwweDQwMDAsMHg0ODAwLDB4NTAwMCwweDYwMDAsMHg1MDAwLDB4NTAwMCwweDQ4MDAsMHg0ODAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDUyMDAsMHg2ZDAwLDB4NDkwMCwweDQ5MDAsMHg0OTAwLDB4NDkwMCwweDQ5MDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHg1ODAwLDB4NjQwMCwweDQ0MDAsMHg0NDAwLDB4NDQwMCwweDQ0MDAsMHg0NDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MzgwMCwweDQ0MDAsMHg0NDAwLDB4NDQwMCwweDQ0MDAsMHg0NDAwLDB4MzgwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDU4MDAsMHg2NDAwLDB4NDQwMCwweDQ0MDAsMHg0NDAwLDB4NjQwMCwweDU4MDAsMHg0MDAwLDB4NDAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgzNDAwLDB4NGMwMCwweDQ0MDAsMHg0NDAwLDB4NDQwMCwweDRjMDAsMHgzNDAwLDB4MDQwMCwweDA0MDAsDQorICAgIDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4NTAwMCwweDYwMDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDMwMDAsMHg0ODAwLDB4NDAwMCwweDMwMDAsMHgwODAwLDB4NDgwMCwweDMwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4NDAwMCwweDQwMDAsMHhlMDAwLDB4NDAwMCwweDQwMDAsMHg0MDAwLDB4NDAwMCwweDQwMDAsMHg2MDAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4NDQwMCwweDQ0MDAsMHg0NDAwLDB4NDQwMCwweDQ0MDAsMHg0YzAwLDB4MzQwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDQ0MDAsMHg0NDAwLDB4MjgwMCwweDI4MDAsMHgyODAwLDB4MjgwMCwweDEwMDAsMHgwMDAwLDB4MDAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHg0OTAwLDB4NDkwMCwweDU1MDAsMHg1NTAwLDB4NTUwMCwweDU1MDAsMHgyMjAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4NDQwMCwweDI4MDAsMHgyODAwLDB4MTAwMCwweDI4MDAsMHgyODAwLDB4NDQwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4MDAwMCwweDQ0MDAsMHg0NDAwLDB4MjgwMCwweDI4MDAsMHgyODAwLDB4MTAwMCwweDEwMDAsMHgxMDAwLDB4MTAwMCwNCisgICAgMHgwMDAwLDB4MDAwMCwweDAwMDAsMHg3ODAwLDB4MDgwMCwweDEwMDAsMHgyMDAwLDB4MjAwMCwweDQwMDAsMHg3ODAwLDB4MDAwMCwweDAwMDAsDQorICAgIDB4MDAwMCwweDEwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4NDAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLA0KKyAgICAweDAwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwNCisgICAgMHgwMDAwLDB4NDAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsMHgxMDAwLDB4MjAwMCwweDIwMDAsMHgyMDAwLDB4MjAwMCwweDIwMDAsDQorICAgIDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDc0MDAsMHg1ODAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLA0KKyAgICAweDAwMDAsMHgwMDAwLDB4NzAwMCwweDUwMDAsMHg1MDAwLDB4NTAwMCwweDUwMDAsMHg1MDAwLDB4NTAwMCwweDcwMDAsMHgwMDAwLDB4MDAwMH07DQorDQorY29uc3QgdWludDE2X3QgQVNDSUk4eDEyX1RhYmxlIFtdID0gew0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgwMCwweDEwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MjgsMHgyOCwweDI4LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDE0LDB4MTQsMHgzZSwweDE0LDB4MjgsMHg3YywweDI4LDB4MjgsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MTAsMHgzOCwweDU0LDB4NTAsMHgzOCwweDE0LDB4MTQsMHg1NCwweDM4LDB4MTAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4NDQsMHhhOCwweGE4LDB4NTAsMHgxNCwweDFhLDB4MmEsMHgyNCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDIwLDB4NTAsMHg1MCwweDIwLDB4ZTgsMHg5OCwweDk4LDB4NjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg4MCwweDgwLDB4ODAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4NDAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDgwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg0MCwweGUwLDB4NDAsMHhhMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDIwLDB4MjAsMHhmOCwweDIwLDB4MjAsMHgwMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4NDAsMHg0MCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4YzAsMHgwMCwweDAwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg0MCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDIwLDB4MjAsMHgyMCwweDQwLDB4NDAsMHg4MCwweDgwLDB4ODAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg2MCwweDkwLDB4OTAsMHg5MCwweDkwLDB4OTAsMHg5MCwweDYwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MjAsMHg2MCwweGEwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDYwLDB4OTAsMHgxMCwweDEwLDB4MjAsMHg0MCwweDgwLDB4ZjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg2MCwweDkwLDB4MTAsMHg2MCwweDEwLDB4MTAsMHg5MCwweDYwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MTAsMHgzMCwweDUwLDB4NTAsMHg5MCwweGY4LDB4MTAsMHgxMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDcwLDB4NDAsMHg4MCwweGUwLDB4MTAsMHgxMCwweDkwLDB4NjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg2MCwweDkwLDB4ODAsMHhhMCwweGQwLDB4OTAsMHg5MCwweDYwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4ZjAsMHgxMCwweDIwLDB4MjAsMHgyMCwweDQwLDB4NDAsMHg0MCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDYwLDB4OTAsMHg5MCwweDYwLDB4OTAsMHg5MCwweDkwLDB4NjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg2MCwweDkwLDB4OTAsMHhiMCwweDUwLDB4MTAsMHg5MCwweDYwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDQwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg0MCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg0MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4NDAsMHg0MCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MTAsMHg2MCwweDgwLDB4NjAsMHgxMCwweDAwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4ZjAsMHgwMCwweGYwLDB4MDAsMHgwMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg4MCwweDYwLDB4MTAsMHg2MCwweDgwLDB4MDAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg2MCwweDkwLDB4MTAsMHgyMCwweDQwLDB4NDAsMHgwMCwweDQwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MWMsMHgyMiwweDViLDB4YTUsMHhhNSwweGE1LDB4YTUsMHg5ZSwweDQxLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDIwLDB4NTAsMHg1MCwweDUwLDB4NTAsMHg3MCwweDg4LDB4ODgsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHhmMCwweDg4LDB4ODgsMHhmMCwweDg4LDB4ODgsMHg4OCwweGYwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MzgsMHg0NCwweDg0LDB4ODAsMHg4MCwweDg0LDB4NDQsMHgzOCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweGUwLDB4OTAsMHg4OCwweDg4LDB4ODgsMHg4OCwweDkwLDB4ZTAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHhmOCwweDgwLDB4ODAsMHhmOCwweDgwLDB4ODAsMHg4MCwweGY4LDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4NzgsMHg0MCwweDQwLDB4NzAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDM4LDB4NDQsMHg4NCwweDgwLDB4OWMsMHg4NCwweDQ0LDB4MzgsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg4OCwweDg4LDB4ODgsMHhmOCwweDg4LDB4ODgsMHg4OCwweDg4LDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHg5MCwweDkwLDB4NjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg4OCwweDkwLDB4YTAsMHhlMCwweGEwLDB4OTAsMHg5MCwweDg4LDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHhmMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDgyLDB4YzYsMHhjNiwweGFhLDB4YWEsMHhhYSwweGFhLDB4OTIsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg4NCwweGM0LDB4YTQsMHhhNCwweDk0LDB4OTQsMHg4YywweDg0LDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MzAsMHg0OCwweDg0LDB4ODQsMHg4NCwweDg0LDB4NDgsMHgzMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweGYwLDB4ODgsMHg4OCwweDg4LDB4ZjAsMHg4MCwweDgwLDB4ODAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgzMCwweDQ4LDB4ODQsMHg4NCwweDg0LDB4ODQsMHg1OCwweDM0LDB4MDQsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4NzgsMHg0NCwweDQ0LDB4NzgsMHg1MCwweDQ4LDB4NDQsMHg0MiwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDcwLDB4ODgsMHg4MCwweDcwLDB4MDgsMHg4OCwweDg4LDB4NzAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHhmOCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4ODQsMHg4NCwweDg0LDB4ODQsMHg4NCwweDg0LDB4NDgsMHgzMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDg4LDB4ODgsMHg1MCwweDUwLDB4NTAsMHg1MCwweDUwLDB4MjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg5MiwweGFhLDB4YWEsMHhhYSwweGFhLDB4YWEsMHhhYSwweDQ0LDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4ODQsMHg0OCwweDQ4LDB4MzAsMHgzMCwweDQ4LDB4NDgsMHg4NCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDg4LDB4NTAsMHg1MCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHhmOCwweDA4LDB4MTAsMHgyMCwweDIwLDB4NDAsMHg4MCwweGY4LDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4YzAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDgwLDB4ODAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDIwLDB4MjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHhjMCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4NDAsMHhhMCwweGEwLDB4YTAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHhmOCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg4MCwweDQwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweGUwLDB4MTAsMHg3MCwweDkwLDB4OTAsMHg3MCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDgwLDB4ODAsMHhhMCwweGQwLDB4OTAsMHg5MCwweGQwLDB4YTAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4NjAsMHg5MCwweDgwLDB4ODAsMHg5MCwweDYwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MTAsMHgxMCwweDUwLDB4YjAsMHg5MCwweDkwLDB4YjAsMHg1MCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg2MCwweDkwLDB4ZjAsMHg4MCwweDkwLDB4NjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHhjMCwweDgwLDB4YzAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDUwLDB4YjAsMHg5MCwweDkwLDB4YjAsMHg1MCwweDEwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDgwLDB4ODAsMHhhMCwweGQwLDB4OTAsMHg5MCwweDkwLDB4OTAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg4MCwweDAwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4ODAsMHgwMCwweDgwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDgwLDB4ODAsMHg5MCwweGEwLDB4YzAsMHhhMCwweDkwLDB4OTAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweGE2LDB4ZGEsMHg5MiwweDkyLDB4OTIsMHg5MiwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHhhMCwweGQwLDB4OTAsMHg5MCwweDkwLDB4OTAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4NjAsMHg5MCwweDkwLDB4OTAsMHg5MCwweDYwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweGEwLDB4ZDAsMHg5MCwweDkwLDB4ZDAsMHhhMCwweDgwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg1MCwweGIwLDB4OTAsMHg5MCwweGIwLDB4NTAsMHgxMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4YTAsMHhjMCwweDgwLDB4ODAsMHg4MCwweDgwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweGUwLDB4OTAsMHg0MCwweDIwLDB4OTAsMHg2MCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDgwLDB4ODAsMHhjMCwweDgwLDB4ODAsMHg4MCwweDgwLDB4YzAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4OTAsMHg5MCwweDkwLDB4OTAsMHhiMCwweDUwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDg4LDB4ODgsMHg1MCwweDUwLDB4NTAsMHgyMCwweDAwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg5MiwweGFhLDB4YWEsMHhhYSwweGFhLDB4NDQsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4ODgsMHg1MCwweDIwLDB4MjAsMHg1MCwweDg4LDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDg4LDB4NTAsMHg1MCwweDUwLDB4MjAsMHgyMCwweDIwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHhmMCwweDEwLDB4MjAsMHg0MCwweDgwLDB4ZjAsMHgwMCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHhjMCwweDgwLDB4ODAsMHg4MCwweDAwLDB4ODAsMHg4MCwweDgwLDB4ODAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLDB4ODAsMHg4MCwweDgwLA0KKyAgICAweDAwLDB4MDAsMHgwMCwweGMwLDB4NDAsMHg0MCwweDQwLDB4MjAsMHg0MCwweDQwLDB4NDAsMHg0MCwNCisgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHhlOCwweGIwLDB4MDAsMHgwMCwweDAwLDB4MDAsDQorICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHhlMCwweGEwLDB4YTAsMHhhMCwweGEwLDB4YTAsMHhlMCwweDAwfTsNCisNCitjb25zdCB1aW50MTZfdCBBU0NJSTh4OF9UYWJsZSBbXSA9IHsNCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHg0MCwgMHg0MCwgMHg0MCwgMHg0MCwgMHg0MCwgMHg0MCwgMHgwMCwgMHg0MCwNCisgICAgMHhhMCwgMHhhMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHgwMCwgMHgyNCwgMHgyNCwgMHhmZSwgMHg0OCwgMHhmYywgMHg0OCwgMHg0OCwNCisgICAgMHgzOCwgMHg1NCwgMHg1MCwgMHgzOCwgMHgxNCwgMHgxNCwgMHg1NCwgMHgzOCwNCisgICAgMHg0NCwgMHhhOCwgMHhhOCwgMHg1MCwgMHgxNCwgMHgxYSwgMHgyYSwgMHgyNCwNCisgICAgMHgxMCwgMHgyOCwgMHgyOCwgMHgxMCwgMHg3NCwgMHg0YywgMHg0YywgMHgzMCwNCisgICAgMHgxMCwgMHgxMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHgwOCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgwOCwNCisgICAgMHgxMCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgxMCwNCisgICAgMHgwMCwgMHgwMCwgMHgyNCwgMHgxOCwgMHgzYywgMHgxOCwgMHgyNCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgxMCwgMHgxMCwgMHg3YywgMHgxMCwgMHgxMCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHgxMCwNCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgxOCwNCisgICAgMHgwOCwgMHgwOCwgMHgwOCwgMHgxMCwgMHgxMCwgMHgyMCwgMHgyMCwgMHgyMCwNCisgICAgMHgxOCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgxOCwNCisgICAgMHgwOCwgMHgxOCwgMHgyOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwNCisgICAgMHgzOCwgMHg0NCwgMHgwMCwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg3YywNCisgICAgMHgxOCwgMHgyNCwgMHgwNCwgMHgxOCwgMHgwNCwgMHgwNCwgMHgyNCwgMHgxOCwNCisgICAgMHgwNCwgMHgwYywgMHgxNCwgMHgyNCwgMHg0NCwgMHg3ZSwgMHgwNCwgMHgwNCwNCisgICAgMHgzYywgMHgyMCwgMHgyMCwgMHgzOCwgMHgwNCwgMHgwNCwgMHgyNCwgMHgxOCwNCisgICAgMHgxOCwgMHgyNCwgMHgyMCwgMHgzOCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgxOCwNCisgICAgMHgzYywgMHgwNCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHgxOCwgMHgyNCwgMHgyNCwgMHgxOCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgxOCwNCisgICAgMHgxOCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgxYywgMHgwNCwgMHgyNCwgMHgxOCwNCisgICAgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgxMCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgwNCwgMHgxOCwgMHgyMCwgMHgxOCwgMHgwNCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMCwgMHgzYywgMHgwMCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgyMCwgMHgxOCwgMHgwNCwgMHgxOCwgMHgyMCwgMHgwMCwNCisgICAgMHgxOCwgMHgyNCwgMHgwNCwgMHgwOCwgMHgxMCwgMHgxMCwgMHgwMCwgMHgxMCwNCisgICAgMHgzYywgMHg0MiwgMHg5OSwgMHhhNSwgMHhhNSwgMHg5ZCwgMHg0MiwgMHgzOCwNCisgICAgMHgzOCwgMHg0NCwgMHg0NCwgMHg0NCwgMHg3YywgMHg0NCwgMHg0NCwgMHg0NCwNCisgICAgMHg3OCwgMHg0NCwgMHg0NCwgMHg3OCwgMHg0NCwgMHg0NCwgMHg0NCwgMHg3OCwNCisgICAgMHgxYywgMHgyMiwgMHg0MiwgMHg0MCwgMHg0MCwgMHg0MiwgMHgyMiwgMHgxYywNCisgICAgMHg3MCwgMHg0OCwgMHg0NCwgMHg0NCwgMHg0NCwgMHg0NCwgMHg0OCwgMHg3MCwNCisgICAgMHg3YywgMHg0MCwgMHg0MCwgMHg3YywgMHg0MCwgMHg0MCwgMHg0MCwgMHg3YywNCisgICAgMHgzYywgMHgyMCwgMHgyMCwgMHgzOCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwNCisgICAgMHgxYywgMHgyMiwgMHg0MiwgMHg0MCwgMHg0ZSwgMHg0MiwgMHgyMiwgMHgxYywNCisgICAgMHg0NCwgMHg0NCwgMHg0NCwgMHg3YywgMHg0NCwgMHg0NCwgMHg0NCwgMHg0NCwNCisgICAgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHgwNCwgMHgwNCwgMHgwNCwgMHgwNCwgMHgwNCwgMHgyNCwgMHgyNCwgMHgxOCwNCisgICAgMHg0NCwgMHg0OCwgMHg1MCwgMHg3MCwgMHg1MCwgMHg0OCwgMHg0OCwgMHg0NCwNCisgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgzYywNCisgICAgMHg4MiwgMHhjNiwgMHhjNiwgMHhhYSwgMHhhYSwgMHhhYSwgMHhhYSwgMHg5MiwNCisgICAgMHg0MiwgMHg2MiwgMHg1MiwgMHg1MiwgMHg0YSwgMHg0YSwgMHg0NiwgMHg0MiwNCisgICAgMHgxOCwgMHgyNCwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHgyNCwgMHgxOCwNCisgICAgMHg3OCwgMHg0NCwgMHg0NCwgMHg0NCwgMHg3OCwgMHg0MCwgMHg0MCwgMHg0MCwNCisgICAgMHgxOCwgMHgyNCwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHgyYywgMHgxYSwNCisgICAgMHg3OCwgMHg0NCwgMHg0NCwgMHg3OCwgMHg1MCwgMHg0OCwgMHg0NCwgMHg0MiwNCisgICAgMHgzOCwgMHg0NCwgMHg0MCwgMHgzOCwgMHgwNCwgMHg0NCwgMHg0NCwgMHgzOCwNCisgICAgMHg3YywgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHgyNCwgMHgxOCwNCisgICAgMHg0NCwgMHg0NCwgMHgyOCwgMHgyOCwgMHgyOCwgMHgyOCwgMHgyOCwgMHgxMCwNCisgICAgMHg5MiwgMHhhYSwgMHhhYSwgMHhhYSwgMHhhYSwgMHhhYSwgMHhhYSwgMHg0NCwNCisgICAgMHg0MiwgMHgyNCwgMHgyNCwgMHgxOCwgMHgxOCwgMHgyNCwgMHgyNCwgMHg0MiwNCisgICAgMHg0NCwgMHgyOCwgMHgyOCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHg3YywgMHgwNCwgMHgwOCwgMHgxMCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg3YywNCisgICAgMHgxYywgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxYywNCisgICAgMHgxMCwgMHgxMCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwNCwgMHgwNCwNCisgICAgMHgxYywgMHgwNCwgMHgwNCwgMHgwNCwgMHgwNCwgMHgwNCwgMHgwNCwgMHgxYywNCisgICAgMHgxMCwgMHgyOCwgMHg0NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHgyMCwgMHgxMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHgwMCwgMHgwMCwgMHgxOCwgMHgwNCwgMHgxYywgMHgyNCwgMHgyNCwgMHgxYywNCisgICAgMHgyMCwgMHgyMCwgMHgyOCwgMHgzNCwgMHgyNCwgMHgyNCwgMHgzNCwgMHgyOCwNCisgICAgMHgwMCwgMHgwMCwgMHgxOCwgMHgyNCwgMHgyMCwgMHgyMCwgMHgyNCwgMHgxOCwNCisgICAgMHgwNCwgMHgwNCwgMHgxNCwgMHgyYywgMHgyNCwgMHgyNCwgMHgyYywgMHgxNCwNCisgICAgMHgwMCwgMHgwMCwgMHgxOCwgMHgyNCwgMHgzYywgMHgyMCwgMHgyNCwgMHgxOCwNCisgICAgMHgwMCwgMHgxOCwgMHgxMCwgMHgxMCwgMHgxOCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHgwMCwgMHgxOCwgMHgyNCwgMHgyNCwgMHgxOCwgMHgwNCwgMHgyNCwgMHgxOCwNCisgICAgMHgyMCwgMHgyMCwgMHgyOCwgMHgzNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwNCisgICAgMHgxMCwgMHgwMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHgwOCwgMHgwMCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgyOCwgMHgxMCwNCisgICAgMHgyMCwgMHgyMCwgMHgyNCwgMHgyOCwgMHgzMCwgMHgyOCwgMHgyNCwgMHgyNCwNCisgICAgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHgwMCwgMHgwMCwgMHhhNiwgMHhkYSwgMHg5MiwgMHg5MiwgMHg5MiwgMHg5MiwNCisgICAgMHgwMCwgMHgwMCwgMHgyOCwgMHgzNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwNCisgICAgMHgwMCwgMHgwMCwgMHgxOCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgxOCwNCisgICAgMHgwMCwgMHgyOCwgMHgzNCwgMHgyNCwgMHgzOCwgMHgyMCwgMHgyMCwgMHgyMCwNCisgICAgMHgwMCwgMHgxNCwgMHgyYywgMHgyNCwgMHgxYywgMHgwNCwgMHgwNCwgMHgwNCwNCisgICAgMHgwMCwgMHgwMCwgMHgyYywgMHgzMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwNCisgICAgMHgwMCwgMHgwMCwgMHgxOCwgMHgyNCwgMHgxMCwgMHgwOCwgMHgyNCwgMHgxOCwNCisgICAgMHgwMCwgMHgxMCwgMHgzOCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxOCwNCisgICAgMHgwMCwgMHgwMCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyYywgMHgxNCwNCisgICAgMHgwMCwgMHgwMCwgMHg0NCwgMHg0NCwgMHgyOCwgMHgyOCwgMHgyOCwgMHgxMCwNCisgICAgMHgwMCwgMHgwMCwgMHg5MiwgMHhhYSwgMHhhYSwgMHhhYSwgMHhhYSwgMHg0NCwNCisgICAgMHgwMCwgMHgwMCwgMHg0NCwgMHgyOCwgMHgxMCwgMHgxMCwgMHgyOCwgMHg0NCwNCisgICAgMHgwMCwgMHgyOCwgMHgyOCwgMHgyOCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHgwMCwgMHgwMCwgMHgzYywgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHgzYywNCisgICAgMHgwMCwgMHgwOCwgMHgxMCwgMHgxMCwgMHgyMCwgMHgxMCwgMHgxMCwgMHgwOCwNCisgICAgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwgMHgxMCwNCisgICAgMHgwMCwgMHgxMCwgMHgwOCwgMHgwOCwgMHgwNCwgMHgwOCwgMHgwOCwgMHgxMCwNCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHg5MiwgMHgwYywgMHgwMCwgMHgwMCwNCisgICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZn07DQorDQorDQorc0ZPTlQgRm9udDE2eDI0ID0gew0KKyAgQVNDSUkxNngyNF9UYWJsZSwNCisgIDE2LCAvKiBXaWR0aCAqLw0KKyAgMjQsIC8qIEhlaWdodCAqLw0KK307DQorDQorc0ZPTlQgRm9udDEyeDEyID0gew0KKyAgQVNDSUkxMngxMl9UYWJsZSwNCisgIDEyLCAvKiBXaWR0aCAqLw0KKyAgMTIsIC8qIEhlaWdodCAqLw0KK307DQorDQorc0ZPTlQgRm9udDh4MTIgPSB7DQorICBBU0NJSTh4MTJfVGFibGUsDQorICA4LCAvKiBXaWR0aCAqLw0KKyAgMTIsIC8qIEhlaWdodCAqLw0KK307DQorDQorDQorc0ZPTlQgRm9udDh4OCA9IHsNCisgIEFTQ0lJOHg4X1RhYmxlLA0KKyAgOCwgLyogV2lkdGggKi8NCisgIDgsIC8qIEhlaWdodCAqLw0KK307DQorICAgDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisNCisvKiogQGRlZmdyb3VwIEZPTlRTX1ByaXZhdGVfRnVuY3Rpb25fUHJvdG90eXBlcw0KKyAgKiBAew0KKyAgKi8gDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisNCisvKiogQGRlZmdyb3VwIEZPTlRTX1ByaXZhdGVfRnVuY3Rpb25zDQorICAqIEB7DQorICAqLw0KKyAgICANCisvKioNCisgICogQH0NCisgICovDQorICANCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLyAgDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9Db21tb24vZm9udHMuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL0NvbW1vbi9mb250cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwZmExMTYKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9Db21tb24vZm9udHMuaApAQCAtMCwwICsxLDExNyBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgZm9udHMuaA0KKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWNC40LjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBIZWFkZXIgZm9yIGZvbnRzLmMNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKw0KKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmbmRlZiBfX0ZPTlRTX0gNCisjZGVmaW5lIF9fRk9OVFNfSA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyBleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCisvKiogQGFkZHRvZ3JvdXAgVXRpbGl0aWVzDQorICAqIEB7DQorICAqLw0KKyAgDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyX0VWQUwNCisgICogQHsNCisgICovIA0KKw0KKy8qKiBAYWRkdG9ncm91cCBDb21tb24NCisgICogQHsNCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIEZPTlRTDQorICAqIEB7DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIEZPTlRTX0V4cG9ydGVkX1R5cGVzDQorICAqIEB7DQorICAqLyANCit0eXBlZGVmIHN0cnVjdCBfdEZvbnQNCit7ICAgIA0KKyAgY29uc3QgdWludDE2X3QgKnRhYmxlOw0KKyAgdWludDE2X3QgV2lkdGg7DQorICB1aW50MTZfdCBIZWlnaHQ7DQorICANCit9IHNGT05UOw0KKw0KK2V4dGVybiBzRk9OVCBGb250MTZ4MjQ7DQorZXh0ZXJuIHNGT05UIEZvbnQxMngxMjsNCitleHRlcm4gc0ZPTlQgRm9udDh4MTI7DQorZXh0ZXJuIHNGT05UIEZvbnQ4eDg7DQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIEZPTlRTX0V4cG9ydGVkX0NvbnN0YW50cw0KKyAgKiBAew0KKyAgKi8gDQorI2RlZmluZSBMSU5FKHgpICgoeCkgKiAoKChzRk9OVCAqKUxDRF9HZXRGb250KCkpLT5IZWlnaHQpKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBGT05UU19FeHBvcnRlZF9NYWNyb3MNCisgICogQHsNCisgICovIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBGT05UU19FeHBvcnRlZF9GdW5jdGlvbnMNCisgICogQHsNCisgICovIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorICANCisjZW5kaWYgLyogX19GT05UU19IICovDQorIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLyAgICAgIA0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMTUyX0VWQUwvc3RtMzJsMTUyX2V2YWwuYyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDE1Ml9FVkFML3N0bTMybDE1Ml9ldmFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYwODdhNwotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDE1Ml9FVkFML3N0bTMybDE1Ml9ldmFsLmMKQEAgLTAsMCArMSw1ODQgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDE1Ml9ldmFsLmMNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjQuNC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzDQorICAqICAgICAgICAgICAgLSBzZXQgb2YgZmlybXdhcmUgZnVuY3Rpb25zIHRvIG1hbmFnZSBMZWRzLCBwdXNoLWJ1dHRvbiBhbmQgQ09NIHBvcnRzDQorICAqICAgICAgICAgICAgLSBsb3cgbGV2ZWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGZvciBTRCBjYXJkIChvbiBTUEkpIGFuZA0KKyAgKiAgICAgICAgICAgICAgdGVtcGVyYXR1cmUgc2Vuc29yIChMTTc1KQ0KKyAgKiAgICAgICAgICBhdmFpbGFibGUgb24gU1RNMzJMMTUyLUVWQUwgZXZhbHVhdGlvbiBib2FyZCBmcm9tIFNUTWljcm9lbGVjdHJvbmljcy4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKyAgDQorLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaW5jbHVkZSAic3RtMzJsMTUyX2V2YWwuaCINCisjaW5jbHVkZSAic3RtMzJsMXh4X3NwaS5oIg0KKyNpbmNsdWRlICJzdG0zMmwxeHhfaTJjLmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFV0aWxpdGllcw0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyX0VWQUwNCisgICogQHsNCisgICovIA0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxNTJfRVZBTA0KKyAgKiBAew0KKyAgKi8gICANCisgICAgDQorLyoqIEBkZWZncm91cCBTVE0zMkwxNTJfRVZBTF9MT1dfTEVWRUwgDQorICAqIEBicmllZiBUaGlzIGZpbGUgcHJvdmlkZXMgZmlybXdhcmUgZnVuY3Rpb25zIHRvIG1hbmFnZSBMZWRzLCBwdXNoLWJ1dHRvbnMsIA0KKyAgKiAgICAgICAgQ09NIHBvcnRzLCBTRCBjYXJkIG9uIFNQSSBhbmQgdGVtcGVyYXR1cmUgc2Vuc29yIChMTTc1KSBhdmFpbGFibGUgb24gDQorICAqICAgICAgICBTVE0zMkwxNTItRVZBTCBldmFsdWF0aW9uIGJvYXJkIGZyb20gU1RNaWNyb2VsZWN0cm9uaWNzLg0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTVE0zMkwxNTJfRVZBTF9MT1dfTEVWRUxfUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zDQorICAqIEB7DQorICAqLyANCisvKioNCisgICogQH0NCisgICovIA0KKw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTE9XX0xFVkVMX1ByaXZhdGVfRGVmaW5lcw0KKyAgKiBAew0KKyAgKi8gDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xPV19MRVZFTF9Qcml2YXRlX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8gDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xPV19MRVZFTF9Qcml2YXRlX1ZhcmlhYmxlcw0KKyAgKiBAew0KKyAgKi8gDQorR1BJT19UeXBlRGVmKiBHUElPX1BPUlRbTEVEbl0gPSB7TEVEMV9HUElPX1BPUlQsIExFRDJfR1BJT19QT1JULCBMRUQzX0dQSU9fUE9SVCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUQ0X0dQSU9fUE9SVH07DQorY29uc3QgdWludDE2X3QgR1BJT19QSU5bTEVEbl0gPSB7TEVEMV9QSU4sIExFRDJfUElOLCBMRUQzX1BJTiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUQ0X1BJTn07DQorY29uc3QgdWludDMyX3QgR1BJT19DTEtbTEVEbl0gPSB7TEVEMV9HUElPX0NMSywgTEVEMl9HUElPX0NMSywgTEVEM19HUElPX0NMSywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUQ0X0dQSU9fQ0xLfTsNCisNCitHUElPX1R5cGVEZWYqIEJVVFRPTl9QT1JUW0JVVFRPTm5dID0ge1dBS0VVUF9CVVRUT05fR1BJT19QT1JULCBUQU1QRVJfQlVUVE9OX0dQSU9fUE9SVCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtFWV9CVVRUT05fR1BJT19QT1JULCBSSUdIVF9CVVRUT05fR1BJT19QT1JULA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVGVF9CVVRUT05fR1BJT19QT1JULCBVUF9CVVRUT05fR1BJT19QT1JULA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9XTl9CVVRUT05fR1BJT19QT1JULCBTRUxfQlVUVE9OX0dQSU9fUE9SVH07IA0KKw0KK2NvbnN0IHVpbnQxNl90IEJVVFRPTl9QSU5bQlVUVE9Obl0gPSB7V0FLRVVQX0JVVFRPTl9QSU4sIFRBTVBFUl9CVVRUT05fUElOLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZX0JVVFRPTl9QSU4sIFJJR0hUX0JVVFRPTl9QSU4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUZUX0JVVFRPTl9QSU4sIFVQX0JVVFRPTl9QSU4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET1dOX0JVVFRPTl9QSU4sIFNFTF9CVVRUT05fUElOfTsgDQorDQorY29uc3QgdWludDMyX3QgQlVUVE9OX0NMS1tCVVRUT05uXSA9IHtXQUtFVVBfQlVUVE9OX0dQSU9fQ0xLLCBUQU1QRVJfQlVUVE9OX0dQSU9fQ0xLLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZX0JVVFRPTl9HUElPX0NMSywgUklHSFRfQlVUVE9OX0dQSU9fQ0xLLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVGVF9CVVRUT05fR1BJT19DTEssIFVQX0JVVFRPTl9HUElPX0NMSywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPV05fQlVUVE9OX0dQSU9fQ0xLLCBTRUxfQlVUVE9OX0dQSU9fQ0xLfTsNCisNCitjb25zdCB1aW50MTZfdCBCVVRUT05fRVhUSV9MSU5FW0JVVFRPTm5dID0ge1dBS0VVUF9CVVRUT05fRVhUSV9MSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFNUEVSX0JVVFRPTl9FWFRJX0xJTkUsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZX0JVVFRPTl9FWFRJX0xJTkUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSSUdIVF9CVVRUT05fRVhUSV9MSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVGVF9CVVRUT05fRVhUSV9MSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVBfQlVUVE9OX0VYVElfTElORSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPV05fQlVUVE9OX0VYVElfTElORSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTF9CVVRUT05fRVhUSV9MSU5FfTsNCisNCitjb25zdCB1aW50MTZfdCBCVVRUT05fUE9SVF9TT1VSQ0VbQlVUVE9Obl0gPSB7V0FLRVVQX0JVVFRPTl9FWFRJX1BPUlRfU09VUkNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQU1QRVJfQlVUVE9OX0VYVElfUE9SVF9TT1VSQ0UsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLRVlfQlVUVE9OX0VYVElfUE9SVF9TT1VSQ0UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJJR0hUX0JVVFRPTl9FWFRJX1BPUlRfU09VUkNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUZUX0JVVFRPTl9FWFRJX1BPUlRfU09VUkNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUF9CVVRUT05fRVhUSV9QT1JUX1NPVVJDRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9XTl9CVVRUT05fRVhUSV9QT1JUX1NPVVJDRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMX0JVVFRPTl9FWFRJX1BPUlRfU09VUkNFfTsNCisJCQkJCQkJCSANCitjb25zdCB1aW50MTZfdCBCVVRUT05fUElOX1NPVVJDRVtCVVRUT05uXSA9IHtXQUtFVVBfQlVUVE9OX0VYVElfUElOX1NPVVJDRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQU1QRVJfQlVUVE9OX0VYVElfUElOX1NPVVJDRSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUklHSFRfQlVUVE9OX0VYVElfUElOX1NPVVJDRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUZUX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVBfQlVUVE9OX0VYVElfUElOX1NPVVJDRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET1dOX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0V9OyANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCitjb25zdCB1aW50MTZfdCBCVVRUT05fSVJRbltCVVRUT05uXSA9IHtXQUtFVVBfQlVUVE9OX0VYVElfSVJRbiwgVEFNUEVSX0JVVFRPTl9FWFRJX0lSUW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZX0JVVFRPTl9FWFRJX0lSUW4sIFJJR0hUX0JVVFRPTl9FWFRJX0lSUW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVGVF9CVVRUT05fRVhUSV9JUlFuLCBVUF9CVVRUT05fRVhUSV9JUlFuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPV05fQlVUVE9OX0VYVElfSVJRbiwgU0VMX0JVVFRPTl9FWFRJX0lSUW59Ow0KKw0KK1VTQVJUX1R5cGVEZWYqIENPTV9VU0FSVFtDT01uXSA9IHtFVkFMX0NPTTEsIEVWQUxfQ09NMn07IA0KKw0KK0dQSU9fVHlwZURlZiogQ09NX1RYX1BPUlRbQ09Nbl0gPSB7RVZBTF9DT00xX1RYX0dQSU9fUE9SVCwgRVZBTF9DT00yX1RYX0dQSU9fUE9SVH07DQorIA0KK0dQSU9fVHlwZURlZiogQ09NX1JYX1BPUlRbQ09Nbl0gPSB7RVZBTF9DT00xX1JYX0dQSU9fUE9SVCwgRVZBTF9DT00yX1JYX0dQSU9fUE9SVH07DQorDQorY29uc3QgdWludDMyX3QgQ09NX1VTQVJUX0NMS1tDT01uXSA9IHtFVkFMX0NPTTFfQ0xLLCBFVkFMX0NPTTJfQ0xLfTsNCisNCitjb25zdCB1aW50MzJfdCBDT01fVFhfUE9SVF9DTEtbQ09Nbl0gPSB7RVZBTF9DT00xX1RYX0dQSU9fQ0xLLCBFVkFMX0NPTTJfVFhfR1BJT19DTEt9Ow0KKyANCitjb25zdCB1aW50MzJfdCBDT01fUlhfUE9SVF9DTEtbQ09Nbl0gPSB7RVZBTF9DT00xX1JYX0dQSU9fQ0xLLCBFVkFMX0NPTTJfUlhfR1BJT19DTEt9Ow0KKw0KK2NvbnN0IHVpbnQxNl90IENPTV9UWF9QSU5bQ09Nbl0gPSB7RVZBTF9DT00xX1RYX1BJTiwgRVZBTF9DT00yX1RYX1BJTn07DQorDQorY29uc3QgdWludDE2X3QgQ09NX1JYX1BJTltDT01uXSA9IHtFVkFMX0NPTTFfUlhfUElOLCBFVkFMX0NPTTJfUlhfUElOfTsNCisgDQorY29uc3QgdWludDE2X3QgQ09NX1RYX1BJTl9TT1VSQ0VbQ09Nbl0gPSB7RVZBTF9DT00xX1RYX1NPVVJDRSwgRVZBTF9DT00yX1RYX1NPVVJDRX07DQorDQorY29uc3QgdWludDE2X3QgQ09NX1JYX1BJTl9TT1VSQ0VbQ09Nbl0gPSB7RVZBTF9DT00xX1JYX1NPVVJDRSwgRVZBTF9DT00yX1JYX1NPVVJDRX07DQorIA0KK2NvbnN0IHVpbnQxNl90IENPTV9UWF9BRltDT01uXSA9IHtFVkFMX0NPTTFfVFhfQUYsIEVWQUxfQ09NMl9UWF9BRn07DQorIA0KK2NvbnN0IHVpbnQxNl90IENPTV9SWF9BRltDT01uXSA9IHtFVkFMX0NPTTFfUlhfQUYsIEVWQUxfQ09NMl9SWF9BRn07DQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xPV19MRVZFTF9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcw0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xPV19MRVZFTF9Qcml2YXRlX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyBMRUQgR1BJTy4NCisgICogQHBhcmFtICBMZWQ6IFNwZWNpZmllcyB0aGUgTGVkIHRvIGJlIGNvbmZpZ3VyZWQuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgZm9sbG93aW5nIHBhcmFtZXRlcnM6DQorICAqICAgICBAYXJnIExFRDENCisgICogICAgIEBhcmcgTEVEMg0KKyAgKiAgICAgQGFyZyBMRUQzDQorICAqICAgICBAYXJnIExFRDQNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1RNX0VWQUxfTEVESW5pdChMZWRfVHlwZURlZiBMZWQpDQorew0KKyAgR1BJT19Jbml0VHlwZURlZiAgR1BJT19Jbml0U3RydWN0dXJlOw0KKyAgDQorICAvKiBFbmFibGUgdGhlIEdQSU9fTEVEIENsb2NrICovDQorICBSQ0NfQUhCUGVyaXBoQ2xvY2tDbWQoR1BJT19DTEtbTGVkXSwgRU5BQkxFKTsNCisNCisgIC8qIENvbmZpZ3VyZSB0aGUgR1BJT19MRUQgcGluICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBHUElPX1BJTltMZWRdOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSA9IEdQSU9fTW9kZV9PVVQ7DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19PVHlwZSA9IEdQSU9fT1R5cGVfUFA7DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QdVBkID0gR1BJT19QdVBkX05PUFVMTDsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1NwZWVkID0gR1BJT19TcGVlZF80ME1IejsNCisgIEdQSU9fSW5pdChHUElPX1BPUlRbTGVkXSwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7DQorICBHUElPX1BPUlRbTGVkXS0+QlNSUkwgPSBHUElPX1BJTltMZWRdOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBUdXJucyBzZWxlY3RlZCBMRUQgT24uDQorICAqIEBwYXJhbSAgTGVkOiBTcGVjaWZpZXMgdGhlIExlZCB0byBiZSBzZXQgb24uIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgZm9sbG93aW5nIHBhcmFtZXRlcnM6DQorICAqICAgICBAYXJnIExFRDENCisgICogICAgIEBhcmcgTEVEMg0KKyAgKiAgICAgQGFyZyBMRUQzDQorICAqICAgICBAYXJnIExFRDQgIA0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTVE1fRVZBTF9MRURPbihMZWRfVHlwZURlZiBMZWQpDQorew0KKyAgR1BJT19QT1JUW0xlZF0tPkJTUlJIID0gR1BJT19QSU5bTGVkXTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgVHVybnMgc2VsZWN0ZWQgTEVEIE9mZi4NCisgICogQHBhcmFtICBMZWQ6IFNwZWNpZmllcyB0aGUgTGVkIHRvIGJlIHNldCBvZmYuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgZm9sbG93aW5nIHBhcmFtZXRlcnM6DQorICAqICAgICBAYXJnIExFRDENCisgICogICAgIEBhcmcgTEVEMg0KKyAgKiAgICAgQGFyZyBMRUQzDQorICAqICAgICBAYXJnIExFRDQgDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNUTV9FVkFMX0xFRE9mZihMZWRfVHlwZURlZiBMZWQpDQorew0KKyAgR1BJT19QT1JUW0xlZF0tPkJTUlJMID0gR1BJT19QSU5bTGVkXTsgIA0KK30NCisNCisvKioNCisgICogQGJyaWVmICBUb2dnbGVzIHRoZSBzZWxlY3RlZCBMRUQuDQorICAqIEBwYXJhbSAgTGVkOiBTcGVjaWZpZXMgdGhlIExlZCB0byBiZSB0b2dnbGVkLiANCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIGZvbGxvd2luZyBwYXJhbWV0ZXJzOg0KKyAgKiAgICAgQGFyZyBMRUQxDQorICAqICAgICBAYXJnIExFRDINCisgICogICAgIEBhcmcgTEVEMw0KKyAgKiAgICAgQGFyZyBMRUQ0ICANCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1RNX0VWQUxfTEVEVG9nZ2xlKExlZF9UeXBlRGVmIExlZCkNCit7DQorICBHUElPX1BPUlRbTGVkXS0+T0RSIF49IEdQSU9fUElOW0xlZF07DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgQnV0dG9uIEdQSU8gYW5kIEVYVEkgTGluZS4NCisgICogQHBhcmFtICBCdXR0b246IFNwZWNpZmllcyB0aGUgQnV0dG9uIHRvIGJlIGNvbmZpZ3VyZWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiBmb2xsb3dpbmcgcGFyYW1ldGVyczogICANCisgICogICAgIEBhcmcgQlVUVE9OX1dBS0VVUDogV2FrZXVwIFB1c2ggQnV0dG9uDQorICAqICAgICBAYXJnIEJVVFRPTl9UQU1QRVI6IFRhbXBlciBQdXNoIEJ1dHRvbiAgDQorICAqICAgICBAYXJnIEJVVFRPTl9LRVk6IEtleSBQdXNoIEJ1dHRvbiANCisgICogICAgIEBhcmcgQlVUVE9OX1JJR0hUOiBKb3lzdGljayBSaWdodCBQdXNoIEJ1dHRvbiANCisgICogICAgIEBhcmcgQlVUVE9OX0xFRlQ6IEpveXN0aWNrIExlZnQgUHVzaCBCdXR0b24gDQorICAqICAgICBAYXJnIEJVVFRPTl9VUDogSm95c3RpY2sgVXAgUHVzaCBCdXR0b24gDQorICAqICAgICBAYXJnIEJVVFRPTl9ET1dOOiBKb3lzdGljayBEb3duIFB1c2ggQnV0dG9uDQorICAqICAgICBAYXJnIEJVVFRPTl9TRUw6IEpveXN0aWNrIFNlbCBQdXNoIEJ1dHRvbg0KKyAgKiBAcGFyYW0gIEJ1dHRvbl9Nb2RlOiBTcGVjaWZpZXMgQnV0dG9uIG1vZGUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiBmb2xsb3dpbmcgcGFyYW1ldGVyczogICANCisgICogICAgIEBhcmcgQlVUVE9OX01PREVfR1BJTzogQnV0dG9uIHdpbGwgYmUgdXNlZCBhcyBzaW1wbGUgSU8gDQorICAqICAgICBAYXJnIEJVVFRPTl9NT0RFX0VYVEk6IEJ1dHRvbiB3aWxsIGJlIGNvbm5lY3RlZCB0byBFWFRJIGxpbmUgd2l0aCBpbnRlcnJ1cHQNCisgICogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uIGNhcGFiaWxpdHkgIA0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTVE1fRVZBTF9QQkluaXQoQnV0dG9uX1R5cGVEZWYgQnV0dG9uLCBCdXR0b25Nb2RlX1R5cGVEZWYgQnV0dG9uX01vZGUpDQorew0KKyAgR1BJT19Jbml0VHlwZURlZiBHUElPX0luaXRTdHJ1Y3R1cmU7DQorICBFWFRJX0luaXRUeXBlRGVmIEVYVElfSW5pdFN0cnVjdHVyZTsNCisgIE5WSUNfSW5pdFR5cGVEZWYgTlZJQ19Jbml0U3RydWN0dXJlOw0KKw0KKyAgLyogRW5hYmxlIHRoZSBCVVRUT04gQ2xvY2sgKi8NCisgIFJDQ19BSEJQZXJpcGhDbG9ja0NtZChCVVRUT05fQ0xLW0J1dHRvbl0sIEVOQUJMRSk7DQorICBSQ0NfQVBCMlBlcmlwaENsb2NrQ21kKFJDQ19BUEIyUGVyaXBoX1NZU0NGRywgRU5BQkxFKTsNCisNCisgIC8qIENvbmZpZ3VyZSBCdXR0b24gcGluIGFzIGlucHV0ICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19Nb2RlID0gR1BJT19Nb2RlX0lOOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUHVQZCA9IEdQSU9fUHVQZF9OT1BVTEw7DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBCVVRUT05fUElOW0J1dHRvbl07DQorICBHUElPX0luaXQoQlVUVE9OX1BPUlRbQnV0dG9uXSwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7DQorDQorDQorICBpZiAoQnV0dG9uX01vZGUgPT0gQlVUVE9OX01PREVfRVhUSSkNCisgIHsNCisgICAgLyogQ29ubmVjdCBCdXR0b24gRVhUSSBMaW5lIHRvIEJ1dHRvbiBHUElPIFBpbiAqLw0KKyAgICBTWVNDRkdfRVhUSUxpbmVDb25maWcoQlVUVE9OX1BPUlRfU09VUkNFW0J1dHRvbl0sIEJVVFRPTl9QSU5fU09VUkNFW0J1dHRvbl0pOw0KKw0KKyAgICAvKiBDb25maWd1cmUgQnV0dG9uIEVYVEkgbGluZSAqLw0KKyAgICBFWFRJX0luaXRTdHJ1Y3R1cmUuRVhUSV9MaW5lID0gQlVUVE9OX0VYVElfTElORVtCdXR0b25dOw0KKyAgICBFWFRJX0luaXRTdHJ1Y3R1cmUuRVhUSV9Nb2RlID0gRVhUSV9Nb2RlX0ludGVycnVwdDsNCisgICAgDQorICAgIGlmKChCdXR0b24gIT0gQlVUVE9OX1dBS0VVUCkgJiYgKEJ1dHRvbiAhPSBCVVRUT05fS0VZKSAmJiAoQnV0dG9uICE9IEJVVFRPTl9UQU1QRVIpKQ0KKyAgICB7DQorICAgICAgRVhUSV9Jbml0U3RydWN0dXJlLkVYVElfVHJpZ2dlciA9IEVYVElfVHJpZ2dlcl9GYWxsaW5nOyAgDQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgRVhUSV9Jbml0U3RydWN0dXJlLkVYVElfVHJpZ2dlciA9IEVYVElfVHJpZ2dlcl9SaXNpbmc7ICANCisgICAgfQ0KKyAgICBFWFRJX0luaXRTdHJ1Y3R1cmUuRVhUSV9MaW5lQ21kID0gRU5BQkxFOw0KKyAgICBFWFRJX0luaXQoJkVYVElfSW5pdFN0cnVjdHVyZSk7DQorDQorICAgIC8qIEVuYWJsZSBhbmQgc2V0IEJ1dHRvbiBFWFRJIEludGVycnVwdCB0byB0aGUgbG93ZXN0IHByaW9yaXR5ICovDQorICAgIE5WSUNfSW5pdFN0cnVjdHVyZS5OVklDX0lSUUNoYW5uZWwgPSBCVVRUT05fSVJRbltCdXR0b25dOw0KKyAgICBOVklDX0luaXRTdHJ1Y3R1cmUuTlZJQ19JUlFDaGFubmVsUHJlZW1wdGlvblByaW9yaXR5ID0gMHgwRjsNCisgICAgTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbFN1YlByaW9yaXR5ID0gMHgwRjsNCisgICAgTlZJQ19Jbml0U3RydWN0dXJlLk5WSUNfSVJRQ2hhbm5lbENtZCA9IEVOQUJMRTsNCisNCisgICAgTlZJQ19Jbml0KCZOVklDX0luaXRTdHJ1Y3R1cmUpOyANCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgUmV0dXJucyB0aGUgc2VsZWN0ZWQgQnV0dG9uIHN0YXRlLg0KKyAgKiBAcGFyYW0gIEJ1dHRvbjogU3BlY2lmaWVzIHRoZSBCdXR0b24gdG8gYmUgY2hlY2tlZC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIGZvbGxvd2luZyBwYXJhbWV0ZXJzOiAgICANCisgICogICAgIEBhcmcgQlVUVE9OX1dBS0VVUDogV2FrZXVwIFB1c2ggQnV0dG9uDQorICAqICAgICBAYXJnIEJVVFRPTl9UQU1QRVI6IFRhbXBlciBQdXNoIEJ1dHRvbiAgDQorICAqICAgICBAYXJnIEJVVFRPTl9LRVk6IEtleSBQdXNoIEJ1dHRvbiANCisgICogICAgIEBhcmcgQlVUVE9OX1JJR0hUOiBKb3lzdGljayBSaWdodCBQdXNoIEJ1dHRvbiANCisgICogICAgIEBhcmcgQlVUVE9OX0xFRlQ6IEpveXN0aWNrIExlZnQgUHVzaCBCdXR0b24gDQorICAqICAgICBAYXJnIEJVVFRPTl9VUDogSm95c3RpY2sgVXAgUHVzaCBCdXR0b24gDQorICAqICAgICBAYXJnIEJVVFRPTl9ET1dOOiBKb3lzdGljayBEb3duIFB1c2ggQnV0dG9uDQorICAqICAgICBAYXJnIEJVVFRPTl9TRUw6IEpveXN0aWNrIFNlbCBQdXNoIEJ1dHRvbiAgICANCisgICogQHJldHZhbCBUaGUgQnV0dG9uIEdQSU8gcGluIHZhbHVlLg0KKyAgKi8NCit1aW50MzJfdCBTVE1fRVZBTF9QQkdldFN0YXRlKEJ1dHRvbl9UeXBlRGVmIEJ1dHRvbikNCit7DQorICByZXR1cm4gR1BJT19SZWFkSW5wdXREYXRhQml0KEJVVFRPTl9QT1JUW0J1dHRvbl0sIEJVVFRPTl9QSU5bQnV0dG9uXSk7DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgQ09NIHBvcnQuDQorICAqIEBwYXJhbSAgQ09NOiBTcGVjaWZpZXMgdGhlIENPTSBwb3J0IHRvIGJlIGNvbmZpZ3VyZWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiBmb2xsb3dpbmcgcGFyYW1ldGVyczogICAgDQorICAqICAgICBAYXJnIENPTTENCisgICogICAgIEBhcmcgQ09NMiAgDQorICAqIEBwYXJhbSAgVVNBUlRfSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFVTQVJUX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0DQorICAqICAgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgVVNBUlQgcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1RNX0VWQUxfQ09NSW5pdChDT01fVHlwZURlZiBDT00sIFVTQVJUX0luaXRUeXBlRGVmKiBVU0FSVF9Jbml0U3RydWN0KQ0KK3sNCisgIEdQSU9fSW5pdFR5cGVEZWYgR1BJT19Jbml0U3RydWN0dXJlOw0KKw0KKyAgLyogRW5hYmxlIEdQSU8gY2xvY2sgKi8NCisgIFJDQ19BSEJQZXJpcGhDbG9ja0NtZChDT01fVFhfUE9SVF9DTEtbQ09NXSB8IENPTV9SWF9QT1JUX0NMS1tDT01dLCBFTkFCTEUpOw0KKw0KKyAgLyogRW5hYmxlIFVBUlQgY2xvY2sgKi8NCisgIFJDQ19BUEIxUGVyaXBoQ2xvY2tDbWQoQ09NX1VTQVJUX0NMS1tDT01dLCBFTkFCTEUpOw0KKw0KKyAgLyogQ29ubmVjdCBQWHggdG8gVVNBUlR4X1R4Ki8NCisgIEdQSU9fUGluQUZDb25maWcoQ09NX1RYX1BPUlRbQ09NXSwgQ09NX1RYX1BJTl9TT1VSQ0VbQ09NXSwgQ09NX1RYX0FGW0NPTV0pOw0KKw0KKyAgLyogQ29ubmVjdCBQWHggdG8gVVNBUlR4X1J4Ki8NCisgIEdQSU9fUGluQUZDb25maWcoQ09NX1JYX1BPUlRbQ09NXSwgQ09NX1JYX1BJTl9TT1VSQ0VbQ09NXSwgQ09NX1JYX0FGW0NPTV0pOw0KKyAgDQorICAvKiBDb25maWd1cmUgVVNBUlQgVHggYXMgYWx0ZXJuYXRlIGZ1bmN0aW9uIHB1c2gtcHVsbCAqLw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gQ09NX1RYX1BJTltDT01dOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSA9IEdQSU9fTW9kZV9BRjsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1NwZWVkID0gR1BJT19TcGVlZF80ME1IejsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX09UeXBlID0gR1BJT19PVHlwZV9QUDsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1B1UGQgPSBHUElPX1B1UGRfVVA7DQorICBHUElPX0luaXQoQ09NX1RYX1BPUlRbQ09NXSwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7DQorICAgIA0KKyAgLyogQ29uZmlndXJlIFVTQVJUIFJ4IGFzIGlucHV0IGZsb2F0aW5nICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBDT01fUlhfUElOW0NPTV07DQorICBHUElPX0luaXQoQ09NX1JYX1BPUlRbQ09NXSwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7DQorDQorICAvKiBVU0FSVCBjb25maWd1cmF0aW9uICovDQorICBVU0FSVF9Jbml0KENPTV9VU0FSVFtDT01dLCBVU0FSVF9Jbml0U3RydWN0KTsNCisgICAgDQorICAvKiBFbmFibGUgVVNBUlQgKi8NCisgIFVTQVJUX0NtZChDT01fVVNBUlRbQ09NXSwgRU5BQkxFKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRGVJbml0aWFsaXplcyB0aGUgU1BJIGludGVyZmFjZS4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNEX0xvd0xldmVsX0RlSW5pdCh2b2lkKQ0KK3sNCisgIEdQSU9fSW5pdFR5cGVEZWYgIEdQSU9fSW5pdFN0cnVjdHVyZTsNCisgIA0KKyAgU1BJX0NtZChTRF9TUEksIERJU0FCTEUpOyAvKiE8IFNEX1NQSSBkaXNhYmxlICovDQorICBTUElfRGVJbml0KFNEX1NQSSk7ICAgLyohPCBEZUluaXRpYWxpemVzIHRoZSBTRF9TUEkgKi8NCisgIA0KKyAgLyohPCBTRF9TUEkgUGVyaXBoIGNsb2NrIGRpc2FibGUgKi8NCisgIFJDQ19BUEIxUGVyaXBoQ2xvY2tDbWQoU0RfU1BJX0NMSywgRElTQUJMRSk7IA0KKw0KKyAgLyohPCBDb25maWd1cmUgU0RfU1BJIHBpbnM6IFNDSyAqLw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gU0RfU1BJX1NDS19QSU47DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19Nb2RlID0gR1BJT19Nb2RlX0lOOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUHVQZCA9IEdQSU9fUHVQZF9OT1BVTEw7DQorICBHUElPX0luaXQoU0RfU1BJX1NDS19HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KKw0KKyAgLyohPCBDb25maWd1cmUgU0RfU1BJIHBpbnM6IE1JU08gKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IFNEX1NQSV9NSVNPX1BJTjsNCisgIEdQSU9fSW5pdChTRF9TUElfTUlTT19HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KKw0KKyAgLyohPCBDb25maWd1cmUgU0RfU1BJIHBpbnM6IE1PU0kgKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IFNEX1NQSV9NT1NJX1BJTjsNCisgIEdQSU9fSW5pdChTRF9TUElfTU9TSV9HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KKw0KKyAgLyohPCBDb25maWd1cmUgU0RfU1BJX0NTX1BJTiBwaW46IFNEIENhcmQgQ1MgcGluICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBTRF9DU19QSU47DQorICBHUElPX0luaXQoU0RfQ1NfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIC8qITwgQ29uZmlndXJlIFNEX1NQSV9ERVRFQ1RfUElOIHBpbjogU0QgQ2FyZCBkZXRlY3QgcGluICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBTRF9ERVRFQ1RfUElOOw0KKyAgR1BJT19Jbml0KFNEX0RFVEVDVF9HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgU0QgQ2FyZCBhbmQgcHV0IGl0IGludG8gU3RhbmRCeSBTdGF0ZSAoUmVhZHkgZm9yIA0KKyAgKiAgICAgICAgIGRhdGEgdHJhbnNmZXIpLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU0RfTG93TGV2ZWxfSW5pdCh2b2lkKQ0KK3sNCisgIEdQSU9fSW5pdFR5cGVEZWYgIEdQSU9fSW5pdFN0cnVjdHVyZTsNCisgIFNQSV9Jbml0VHlwZURlZiAgIFNQSV9Jbml0U3RydWN0dXJlOw0KKw0KKyAgLyohPCBTRF9TUElfQ1NfR1BJTywgU0RfU1BJX01PU0lfR1BJTywgU0RfU1BJX01JU09fR1BJTywgU0RfU1BJX0RFVEVDVF9HUElPIA0KKyAgICAgICBhbmQgU0RfU1BJX1NDS19HUElPIFBlcmlwaCBjbG9jayBlbmFibGUgKi8NCisgIFJDQ19BSEJQZXJpcGhDbG9ja0NtZChTRF9DU19HUElPX0NMSyB8IFNEX1NQSV9NT1NJX0dQSU9fQ0xLIHwgU0RfU1BJX01JU09fR1BJT19DTEsgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNEX1NQSV9TQ0tfR1BJT19DTEsgfCBTRF9ERVRFQ1RfR1BJT19DTEssIEVOQUJMRSk7DQorDQorICAvKiE8IFNEX1NQSSBQZXJpcGggY2xvY2sgZW5hYmxlICovDQorICBSQ0NfQVBCMVBlcmlwaENsb2NrQ21kKFNEX1NQSV9DTEssIEVOQUJMRSk7IA0KKw0KKyAgLyohPCBDb25maWd1cmUgU0RfU1BJIHBpbnM6IFNDSyAqLw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gU0RfU1BJX1NDS19QSU47DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19Nb2RlID0gR1BJT19Nb2RlX0FGOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fU3BlZWQgPSBHUElPX1NwZWVkXzQwTUh6Ow0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fT1R5cGUgPSBHUElPX09UeXBlX1BQOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUHVQZCAgPSBHUElPX1B1UGRfVVA7DQorICBHUElPX0luaXQoU0RfU1BJX1NDS19HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KKw0KKyAgLyohPCBDb25maWd1cmUgU0RfU1BJIHBpbnM6IE1JU08gKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IFNEX1NQSV9NSVNPX1BJTjsNCisgIEdQSU9fSW5pdChTRF9TUElfTUlTT19HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KKw0KKyAgLyohPCBDb25maWd1cmUgU0RfU1BJIHBpbnM6IE1PU0kgKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IFNEX1NQSV9NT1NJX1BJTjsNCisgIEdQSU9fSW5pdChTRF9TUElfTU9TSV9HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KKw0KKyAgLyohPCBDb25maWd1cmUgU0RfU1BJX0NTX1BJTiBwaW46IFNEIENhcmQgQ1MgcGluICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBTRF9DU19QSU47DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19Nb2RlID0gR1BJT19Nb2RlX09VVDsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX09UeXBlID0gR1BJT19PVHlwZV9QUDsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1B1UGQgPSBHUElPX1B1UGRfVVA7DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19TcGVlZCA9IEdQSU9fU3BlZWRfNDBNSHo7DQorICBHUElPX0luaXQoU0RfQ1NfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIC8qITwgQ29uZmlndXJlIFNEX1NQSV9ERVRFQ1RfUElOIHBpbjogU0QgQ2FyZCBkZXRlY3QgcGluICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBTRF9ERVRFQ1RfUElOOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSA9IEdQSU9fTW9kZV9JTjsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1B1UGQgPSBHUElPX1B1UGRfVVA7DQorICBHUElPX0luaXQoU0RfREVURUNUX0dQSU9fUE9SVCwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7DQorDQorICAvKiBDb25uZWN0IFBYeCB0byBTRF9TUElfU0NLICovDQorICBHUElPX1BpbkFGQ29uZmlnKFNEX1NQSV9TQ0tfR1BJT19QT1JULCBTRF9TUElfU0NLX1NPVVJDRSwgU0RfU1BJX1NDS19BRik7DQorDQorICAvKiBDb25uZWN0IFBYeCB0byBTRF9TUElfTUlTTyAqLw0KKyAgR1BJT19QaW5BRkNvbmZpZyhTRF9TUElfTUlTT19HUElPX1BPUlQsIFNEX1NQSV9NSVNPX1NPVVJDRSwgU0RfU1BJX01JU09fQUYpOyANCisNCisgIC8qIENvbm5lY3QgUFh4IHRvIFNEX1NQSV9NT1NJICovDQorICBHUElPX1BpbkFGQ29uZmlnKFNEX1NQSV9NT1NJX0dQSU9fUE9SVCwgU0RfU1BJX01PU0lfU09VUkNFLCBTRF9TUElfTU9TSV9BRik7ICANCisgIA0KKyAgLyohPCBTRF9TUEkgQ29uZmlnICovDQorICBTUElfSW5pdFN0cnVjdHVyZS5TUElfRGlyZWN0aW9uID0gU1BJX0RpcmVjdGlvbl8yTGluZXNfRnVsbER1cGxleDsNCisgIFNQSV9Jbml0U3RydWN0dXJlLlNQSV9Nb2RlID0gU1BJX01vZGVfTWFzdGVyOw0KKyAgU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX0RhdGFTaXplID0gU1BJX0RhdGFTaXplXzhiOw0KKyAgU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX0NQT0wgPSBTUElfQ1BPTF9IaWdoOw0KKyAgU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX0NQSEEgPSBTUElfQ1BIQV8yRWRnZTsNCisgIFNQSV9Jbml0U3RydWN0dXJlLlNQSV9OU1MgPSBTUElfTlNTX1NvZnQ7DQorICBTUElfSW5pdFN0cnVjdHVyZS5TUElfQmF1ZFJhdGVQcmVzY2FsZXIgPSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMjsNCisNCisgIFNQSV9Jbml0U3RydWN0dXJlLlNQSV9GaXJzdEJpdCA9IFNQSV9GaXJzdEJpdF9NU0I7DQorICBTUElfSW5pdFN0cnVjdHVyZS5TUElfQ1JDUG9seW5vbWlhbCA9IDc7DQorICBTUElfSW5pdChTRF9TUEksICZTUElfSW5pdFN0cnVjdHVyZSk7DQorICANCisgIFNQSV9DbWQoU0RfU1BJLCBFTkFCTEUpOyAvKiE8IFNEX1NQSSBlbmFibGUgKi8NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRGVJbml0aWFsaXplcyB0aGUgTE03NV9JMkMuDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMTTc1X0xvd0xldmVsX0RlSW5pdCh2b2lkKQ0KK3sgDQorICBHUElPX0luaXRUeXBlRGVmICBHUElPX0luaXRTdHJ1Y3R1cmU7DQorDQorICAvKiE8IERpc2FibGUgTE03NV9JMkMgKi8NCisgIEkyQ19DbWQoTE03NV9JMkMsIERJU0FCTEUpOw0KKyAgDQorICAvKiE8IERlSW5pdGlhbGl6ZXMgdGhlIExNNzVfSTJDICovDQorICBJMkNfRGVJbml0KExNNzVfSTJDKTsNCisgIA0KKyAgLyohPCBMTTc1X0kyQyBQZXJpcGggY2xvY2sgZGlzYWJsZSAqLw0KKyAgUkNDX0FQQjFQZXJpcGhDbG9ja0NtZChMTTc1X0kyQ19DTEssIERJU0FCTEUpOw0KKyAgICANCisgIC8qITwgQ29uZmlndXJlIExNNzVfSTJDIHBpbnM6IFNDTCAqLw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gTE03NV9JMkNfU0NMX1BJTjsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX01vZGUgPSBHUElPX01vZGVfSU47DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QdVBkID0gR1BJT19QdVBkX05PUFVMTDsNCisgIEdQSU9fSW5pdChMTTc1X0kyQ19TQ0xfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIC8qITwgQ29uZmlndXJlIExNNzVfSTJDIHBpbnM6IFNEQSAqLw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gTE03NV9JMkNfU0RBX1BJTjsNCisgIEdQSU9fSW5pdChMTTc1X0kyQ19TREFfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIC8qITwgQ29uZmlndXJlIExNNzVfSTJDIHBpbjogU01CVVMgQUxFUlQgKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IExNNzVfSTJDX1NNQlVTQUxFUlRfUElOOw0KKyAgR1BJT19Jbml0KExNNzVfSTJDX1NNQlVTQUxFUlRfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIExNNzVfSTJDLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTE03NV9Mb3dMZXZlbF9Jbml0KHZvaWQpDQoreyANCisgIEdQSU9fSW5pdFR5cGVEZWYgIEdQSU9fSW5pdFN0cnVjdHVyZTsNCisNCisgIC8qITwgTE03NV9JMkMgUGVyaXBoIGNsb2NrIGVuYWJsZSAqLw0KKyAgUkNDX0FQQjFQZXJpcGhDbG9ja0NtZChMTTc1X0kyQ19DTEssIEVOQUJMRSk7DQorICAgIA0KKyAgLyohPCBMTTc1X0kyQ19TQ0xfR1BJT19DTEssIExNNzVfSTJDX1NEQV9HUElPX0NMSyANCisgICAgICAgYW5kIExNNzVfSTJDX1NNQlVTQUxFUlRfR1BJT19DTEsgUGVyaXBoIGNsb2NrIGVuYWJsZSAqLw0KKyAgUkNDX0FIQlBlcmlwaENsb2NrQ21kKExNNzVfSTJDX1NDTF9HUElPX0NMSyB8IExNNzVfSTJDX1NEQV9HUElPX0NMSyB8DQorICAgICAgICAgICAgICAgICAgICAgICAgTE03NV9JMkNfU01CVVNBTEVSVF9HUElPX0NMSywgRU5BQkxFKTsNCisgIA0KKyAgLyohPCBDb25maWd1cmUgTE03NV9JMkMgcGluczogU0NMICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBMTTc1X0kyQ19TQ0xfUElOOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSA9IEdQSU9fTW9kZV9BRjsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1NwZWVkID0gR1BJT19TcGVlZF80ME1IejsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX09UeXBlID0gR1BJT19PVHlwZV9PRDsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1B1UGQgID0gR1BJT19QdVBkX05PUFVMTDsNCisgIEdQSU9fSW5pdChMTTc1X0kyQ19TQ0xfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIC8qITwgQ29uZmlndXJlIExNNzVfSTJDIHBpbnM6IFNEQSAqLw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gTE03NV9JMkNfU0RBX1BJTjsNCisgIEdQSU9fSW5pdChMTTc1X0kyQ19TREFfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIC8qITwgQ29uZmlndXJlIExNNzVfSTJDIHBpbjogU01CVVMgQUxFUlQgKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IExNNzVfSTJDX1NNQlVTQUxFUlRfUElOOw0KKyAgR1BJT19Jbml0KExNNzVfSTJDX1NNQlVTQUxFUlRfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisNCisgIC8qIENvbm5lY3QgUFh4IHRvIEkyQ19TQ0wgKi8NCisgIEdQSU9fUGluQUZDb25maWcoTE03NV9JMkNfU0NMX0dQSU9fUE9SVCwgTE03NV9JMkNfU0NMX1NPVVJDRSwgTE03NV9JMkNfU0NMX0FGKTsNCisNCisgIC8qIENvbm5lY3QgUFh4IHRvIEkyQ19TREEgKi8NCisgIEdQSU9fUGluQUZDb25maWcoTE03NV9JMkNfU0RBX0dQSU9fUE9SVCwgTE03NV9JMkNfU0RBX1NPVVJDRSwgTE03NV9JMkNfU0RBX0FGKTsgDQorDQorICAvKiBDb25uZWN0IFBYeCB0byBJMkNfU01CVVNBTEVSICovDQorICBHUElPX1BpbkFGQ29uZmlnKExNNzVfSTJDX1NNQlVTQUxFUlRfR1BJT19QT1JULCBMTTc1X0kyQ19TTUJVU0FMRVJUX1NPVVJDRSwgTE03NV9JMkNfU01CVVNBTEVSVF9BRik7ICAgICANCit9DQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovICAgIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorICAgIA0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMTUyX0VWQUwvc3RtMzJsMTUyX2V2YWwuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDE1Ml9FVkFML3N0bTMybDE1Ml9ldmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZkZjBmYgotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDE1Ml9FVkFML3N0bTMybDE1Ml9ldmFsLmgKQEAgLTAsMCArMSwzMzcgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDE1Ml9ldmFsLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjQuNC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGRlZmluaXRpb25zIGZvciBTVE0zMkwxNTJfRVZBTCdzIExlZHMsIHB1c2gtYnV0dG9ucw0KKyAgKiAgICAgICAgICBhbmQgQ09NIHBvcnRzIGhhcmR3YXJlIHJlc291cmNlcy4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKyAgDQorLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaWZuZGVmIF9fU1RNMzJMMTUyX0VWQUxfSA0KKyNkZWZpbmUgX19TVE0zMkwxNTJfRVZBTF9IDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorIGV4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMyX2V2YWwuaCINCisNCisvKiogQGFkZHRvZ3JvdXAgVXRpbGl0aWVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMl9FVkFMDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxNTJfRVZBTA0KKyAgKiBAew0KKyAgKi8NCisgICAgICANCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTE9XX0xFVkVMDQorICAqIEB7DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xPV19MRVZFTF9FeHBvcnRlZF9UeXBlcw0KKyAgKiBAew0KKyAgKi8NCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTE9XX0xFVkVMX0V4cG9ydGVkX0NvbnN0YW50cw0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDE1Ml9FVkFMX0xPV19MRVZFTF9MRUQNCisgICogQHsNCisgICovDQorI2RlZmluZSBMRURuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0DQorDQorI2RlZmluZSBMRUQxX1BJTiAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1Bpbl8wDQorI2RlZmluZSBMRUQxX0dQSU9fUE9SVCAgICAgICAgICAgICAgICAgICBHUElPRA0KKyNkZWZpbmUgTEVEMV9HUElPX0NMSyAgICAgICAgICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPRCAgDQorICANCisjZGVmaW5lIExFRDJfUElOICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzENCisjZGVmaW5lIExFRDJfR1BJT19QT1JUICAgICAgICAgICAgICAgICAgIEdQSU9EDQorI2RlZmluZSBMRUQyX0dQSU9fQ0xLICAgICAgICAgICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9EICANCisgIA0KKyNkZWZpbmUgTEVEM19QSU4gICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19QaW5fNA0KKyNkZWZpbmUgTEVEM19HUElPX1BPUlQgICAgICAgICAgICAgICAgICAgR1BJT0QNCisjZGVmaW5lIExFRDNfR1BJT19DTEsgICAgICAgICAgICAgICAgICAgIFJDQ19BSEJQZXJpcGhfR1BJT0QgIA0KKyAgDQorI2RlZmluZSBMRUQ0X1BJTiAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1Bpbl81DQorI2RlZmluZSBMRUQ0X0dQSU9fUE9SVCAgICAgICAgICAgICAgICAgICBHUElPRA0KKyNkZWZpbmUgTEVENF9HUElPX0NMSyAgICAgICAgICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPRA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorICANCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTE9XX0xFVkVMX0JVVFRPTg0KKyAgKiBAew0KKyAgKi8gIA0KKyNkZWZpbmUgQlVUVE9ObiAgICAgICAgICAgICAgICAgICAgICAgICAgOCANCisNCisvKioNCisgKiBAYnJpZWYgV2FrZXVwIHB1c2gtYnV0dG9uDQorICovDQorI2RlZmluZSBXQUtFVVBfQlVUVE9OX1BJTiAgICAgICAgICAgICAgICBHUElPX1Bpbl8xMw0KKyNkZWZpbmUgV0FLRVVQX0JVVFRPTl9HUElPX1BPUlQgICAgICAgICAgR1BJT0MNCisjZGVmaW5lIFdBS0VVUF9CVVRUT05fR1BJT19DTEsgICAgICAgICAgIFJDQ19BSEJQZXJpcGhfR1BJT0MNCisjZGVmaW5lIFdBS0VVUF9CVVRUT05fRVhUSV9MSU5FICAgICAgICAgIEVYVElfTGluZTEzDQorI2RlZmluZSBXQUtFVVBfQlVUVE9OX0VYVElfUE9SVF9TT1VSQ0UgICBFWFRJX1BvcnRTb3VyY2VHUElPQw0KKyNkZWZpbmUgV0FLRVVQX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0UgICAgRVhUSV9QaW5Tb3VyY2UxMw0KKyNkZWZpbmUgV0FLRVVQX0JVVFRPTl9FWFRJX0lSUW4gICAgICAgICAgRVhUSTE1XzEwX0lSUW4gDQorDQorLyoqDQorICogQGJyaWVmIFRhbXBlciBwdXNoLWJ1dHRvbg0KKyAqLw0KKyNkZWZpbmUgVEFNUEVSX0JVVFRPTl9QSU4gICAgICAgICAgICAgICAgR1BJT19QaW5fMTMNCisjZGVmaW5lIFRBTVBFUl9CVVRUT05fR1BJT19QT1JUICAgICAgICAgIEdQSU9DDQorI2RlZmluZSBUQU1QRVJfQlVUVE9OX0dQSU9fQ0xLICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9DDQorI2RlZmluZSBUQU1QRVJfQlVUVE9OX0VYVElfTElORSAgICAgICAgICBFWFRJX0xpbmUxMw0KKyNkZWZpbmUgVEFNUEVSX0JVVFRPTl9FWFRJX1BPUlRfU09VUkNFICAgRVhUSV9Qb3J0U291cmNlR1BJT0MNCisjZGVmaW5lIFRBTVBFUl9CVVRUT05fRVhUSV9QSU5fU09VUkNFICAgIEVYVElfUGluU291cmNlMTMNCisjZGVmaW5lIFRBTVBFUl9CVVRUT05fRVhUSV9JUlFuICAgICAgICAgIEVYVEkxNV8xMF9JUlFuIA0KKw0KKy8qKg0KKyAqIEBicmllZiBLZXkgcHVzaC1idXR0b24NCisgKi8NCisjZGVmaW5lIEtFWV9CVVRUT05fUElOICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzEzDQorI2RlZmluZSBLRVlfQlVUVE9OX0dQSU9fUE9SVCAgICAgICAgICAgICBHUElPQw0KKyNkZWZpbmUgS0VZX0JVVFRPTl9HUElPX0NMSyAgICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPQw0KKyNkZWZpbmUgS0VZX0JVVFRPTl9FWFRJX0xJTkUgICAgICAgICAgICAgRVhUSV9MaW5lMTMNCisjZGVmaW5lIEtFWV9CVVRUT05fRVhUSV9QT1JUX1NPVVJDRSAgICAgIEVYVElfUG9ydFNvdXJjZUdQSU9DDQorI2RlZmluZSBLRVlfQlVUVE9OX0VYVElfUElOX1NPVVJDRSAgICAgICBFWFRJX1BpblNvdXJjZTEzDQorI2RlZmluZSBLRVlfQlVUVE9OX0VYVElfSVJRbiAgICAgICAgICAgICBFWFRJMTVfMTBfSVJRbg0KKw0KKy8qKg0KKyAqIEBicmllZiBKb3lzdGljayBSaWdodCBwdXNoLWJ1dHRvbg0KKyAqLw0KKyNkZWZpbmUgUklHSFRfQlVUVE9OX1BJTiAgICAgICAgICAgICAgICAgR1BJT19QaW5fMTENCisjZGVmaW5lIFJJR0hUX0JVVFRPTl9HUElPX1BPUlQgICAgICAgICAgIEdQSU9FDQorI2RlZmluZSBSSUdIVF9CVVRUT05fR1BJT19DTEsgICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9FDQorI2RlZmluZSBSSUdIVF9CVVRUT05fRVhUSV9MSU5FICAgICAgICAgICBFWFRJX0xpbmUxMQ0KKyNkZWZpbmUgUklHSFRfQlVUVE9OX0VYVElfUE9SVF9TT1VSQ0UgICAgRVhUSV9Qb3J0U291cmNlR1BJT0UNCisjZGVmaW5lIFJJR0hUX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0UgICAgIEVYVElfUGluU291cmNlMTENCisjZGVmaW5lIFJJR0hUX0JVVFRPTl9FWFRJX0lSUW4gICAgICAgICAgIEVYVEkxNV8xMF9JUlFuDQorDQorLyoqDQorICogQGJyaWVmIEpveXN0aWNrIExlZnQgcHVzaC1idXR0b24NCisgKi8NCisjZGVmaW5lIExFRlRfQlVUVE9OX1BJTiAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzEyDQorI2RlZmluZSBMRUZUX0JVVFRPTl9HUElPX1BPUlQgICAgICAgICAgICBHUElPRQ0KKyNkZWZpbmUgTEVGVF9CVVRUT05fR1BJT19DTEsgICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPRQ0KKyNkZWZpbmUgTEVGVF9CVVRUT05fRVhUSV9MSU5FICAgICAgICAgICAgRVhUSV9MaW5lMTINCisjZGVmaW5lIExFRlRfQlVUVE9OX0VYVElfUE9SVF9TT1VSQ0UgICAgIEVYVElfUG9ydFNvdXJjZUdQSU9FDQorI2RlZmluZSBMRUZUX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0UgICAgICBFWFRJX1BpblNvdXJjZTEyDQorI2RlZmluZSBMRUZUX0JVVFRPTl9FWFRJX0lSUW4gICAgICAgICAgICBFWFRJMTVfMTBfSVJRbiAgDQorDQorLyoqDQorICogQGJyaWVmIEpveXN0aWNrIFVwIHB1c2gtYnV0dG9uDQorICovDQorI2RlZmluZSBVUF9CVVRUT05fUElOICAgICAgICAgICAgICAgICAgICBHUElPX1Bpbl85DQorI2RlZmluZSBVUF9CVVRUT05fR1BJT19QT1JUICAgICAgICAgICAgICBHUElPRQ0KKyNkZWZpbmUgVVBfQlVUVE9OX0dQSU9fQ0xLICAgICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPRQ0KKyNkZWZpbmUgVVBfQlVUVE9OX0VYVElfTElORSAgICAgICAgICAgICAgRVhUSV9MaW5lOQ0KKyNkZWZpbmUgVVBfQlVUVE9OX0VYVElfUE9SVF9TT1VSQ0UgICAgICAgRVhUSV9Qb3J0U291cmNlR1BJT0UNCisjZGVmaW5lIFVQX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0UgICAgICAgIEVYVElfUGluU291cmNlOQ0KKyNkZWZpbmUgVVBfQlVUVE9OX0VYVElfSVJRbiAgICAgICAgICAgICAgRVhUSTlfNV9JUlFuICANCisNCisvKioNCisgKiBAYnJpZWYgSm95c3RpY2sgRG93biBwdXNoLWJ1dHRvbg0KKyAqLyAgDQorI2RlZmluZSBET1dOX0JVVFRPTl9QSU4gICAgICAgICAgICAgICAgICBHUElPX1Bpbl8xMA0KKyNkZWZpbmUgRE9XTl9CVVRUT05fR1BJT19QT1JUICAgICAgICAgICAgR1BJT0UNCisjZGVmaW5lIERPV05fQlVUVE9OX0dQSU9fQ0xLICAgICAgICAgICAgIFJDQ19BSEJQZXJpcGhfR1BJT0UNCisjZGVmaW5lIERPV05fQlVUVE9OX0VYVElfTElORSAgICAgICAgICAgIEVYVElfTGluZTEwDQorI2RlZmluZSBET1dOX0JVVFRPTl9FWFRJX1BPUlRfU09VUkNFICAgICBFWFRJX1BvcnRTb3VyY2VHUElPRQ0KKyNkZWZpbmUgRE9XTl9CVVRUT05fRVhUSV9QSU5fU09VUkNFICAgICAgRVhUSV9QaW5Tb3VyY2UxMA0KKyNkZWZpbmUgRE9XTl9CVVRUT05fRVhUSV9JUlFuICAgICAgICAgICAgRVhUSTE1XzEwX0lSUW4gIA0KKw0KKy8qKg0KKyAqIEBicmllZiBKb3lzdGljayBTZWwgcHVzaC1idXR0b24NCisgKi8NCisjZGVmaW5lIFNFTF9CVVRUT05fUElOICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzgNCisjZGVmaW5lIFNFTF9CVVRUT05fR1BJT19QT1JUICAgICAgICAgICAgIEdQSU9FDQorI2RlZmluZSBTRUxfQlVUVE9OX0dQSU9fQ0xLICAgICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9FDQorI2RlZmluZSBTRUxfQlVUVE9OX0VYVElfTElORSAgICAgICAgICAgICBFWFRJX0xpbmU4DQorI2RlZmluZSBTRUxfQlVUVE9OX0VYVElfUE9SVF9TT1VSQ0UgICAgICBFWFRJX1BvcnRTb3VyY2VHUElPRQ0KKyNkZWZpbmUgU0VMX0JVVFRPTl9FWFRJX1BJTl9TT1VSQ0UgICAgICAgRVhUSV9QaW5Tb3VyY2U4DQorI2RlZmluZSBTRUxfQlVUVE9OX0VYVElfSVJRbiAgICAgICAgICAgICBFWFRJOV81X0lSUW4gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTE9XX0xFVkVMX0NPTQ0KKyAgKiBAew0KKyAgKi8NCisjZGVmaW5lIENPTW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDINCisNCisvKioNCisgKiBAYnJpZWYgRGVmaW5pdGlvbiBmb3IgQ09NIHBvcnQxLCBjb25uZWN0ZWQgdG8gVVNBUlQyDQorICovIA0KKyNkZWZpbmUgRVZBTF9DT00xICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlQyDQorI2RlZmluZSBFVkFMX0NPTTFfQ0xLICAgICAgICAgICAgICAgICAgICBSQ0NfQVBCMVBlcmlwaF9VU0FSVDINCisjZGVmaW5lIEVWQUxfQ09NMV9UWF9QSU4gICAgICAgICAgICAgICAgIEdQSU9fUGluXzUNCisjZGVmaW5lIEVWQUxfQ09NMV9UWF9HUElPX1BPUlQgICAgICAgICAgIEdQSU9EDQorI2RlZmluZSBFVkFMX0NPTTFfVFhfR1BJT19DTEsgICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9EDQorI2RlZmluZSBFVkFMX0NPTTFfVFhfU09VUkNFICAgICAgICAgICAgICBHUElPX1BpblNvdXJjZTUNCisjZGVmaW5lIEVWQUxfQ09NMV9UWF9BRiAgICAgICAgICAgICAgICAgIEdQSU9fQUZfVVNBUlQyDQorI2RlZmluZSBFVkFMX0NPTTFfUlhfUElOICAgICAgICAgICAgICAgICBHUElPX1Bpbl82DQorI2RlZmluZSBFVkFMX0NPTTFfUlhfR1BJT19QT1JUICAgICAgICAgICBHUElPRA0KKyNkZWZpbmUgRVZBTF9DT00xX1JYX0dQSU9fQ0xLICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPRA0KKyNkZWZpbmUgRVZBTF9DT00xX1JYX1NPVVJDRSAgICAgICAgICAgICAgR1BJT19QaW5Tb3VyY2U2DQorI2RlZmluZSBFVkFMX0NPTTFfUlhfQUYgICAgICAgICAgICAgICAgICBHUElPX0FGX1VTQVJUMg0KKyNkZWZpbmUgRVZBTF9DT00xX0lSUW4gICAgICAgICAgICAgICAgICAgVVNBUlQyX0lSUW4NCisNCisvKioNCisgKiBAYnJpZWYgRGVmaW5pdGlvbiBmb3IgQ09NIHBvcnQyLCBjb25uZWN0ZWQgdG8gVVNBUlQzDQorICovIA0KKyNkZWZpbmUgRVZBTF9DT00yICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlQzDQorI2RlZmluZSBFVkFMX0NPTTJfQ0xLICAgICAgICAgICAgICAgICAgICBSQ0NfQVBCMVBlcmlwaF9VU0FSVDMNCisNCisjZGVmaW5lIEVWQUxfQ09NMl9UWF9QSU4gICAgICAgICAgICAgICAgIEdQSU9fUGluXzEwDQorI2RlZmluZSBFVkFMX0NPTTJfVFhfR1BJT19QT1JUICAgICAgICAgICBHUElPQw0KKyNkZWZpbmUgRVZBTF9DT00yX1RYX0dQSU9fQ0xLICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPQw0KKyNkZWZpbmUgRVZBTF9DT00yX1RYX1NPVVJDRSAgICAgICAgICAgICAgR1BJT19QaW5Tb3VyY2UxMA0KKyNkZWZpbmUgRVZBTF9DT00yX1RYX0FGICAgICAgICAgICAgICAgICAgR1BJT19BRl9VU0FSVDMNCisNCisjZGVmaW5lIEVWQUxfQ09NMl9SWF9QSU4gICAgICAgICAgICAgICAgIEdQSU9fUGluXzExDQorI2RlZmluZSBFVkFMX0NPTTJfUlhfR1BJT19QT1JUICAgICAgICAgICBHUElPQw0KKyNkZWZpbmUgRVZBTF9DT00yX1JYX0dQSU9fQ0xLICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPQw0KKyNkZWZpbmUgRVZBTF9DT00yX1JYX1NPVVJDRSAgICAgICAgICAgICAgR1BJT19QaW5Tb3VyY2UxMQ0KKyNkZWZpbmUgRVZBTF9DT00yX1JYX0FGICAgICAgICAgICAgICAgICAgR1BJT19BRl9VU0FSVDMNCisjZGVmaW5lIEVWQUxfQ09NMl9JUlFuICAgICAgICAgICAgICAgICAgIFVTQVJUM19JUlFuDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTE9XX0xFVkVMX1NEX0ZMQVNIDQorICAqIEB7DQorICAqLyANCisvKioNCisgICogQGJyaWVmICBTRCBDYXJkIFNQSSBJbnRlcmZhY2UNCisgICovICANCisjZGVmaW5lIFNEX1NQSSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSTINCisjZGVmaW5lIFNEX1NQSV9DTEsgICAgICAgICAgICAgICAgICAgICAgIFJDQ19BUEIxUGVyaXBoX1NQSTINCisjZGVmaW5lIFNEX1NQSV9TQ0tfUElOICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzEzICAgICAgICAgICAgICAgICAvKiBQQi4xMyAqLw0KKyNkZWZpbmUgU0RfU1BJX1NDS19HUElPX1BPUlQgICAgICAgICAgICAgR1BJT0IgICAgICAgICAgICAgICAgICAgICAgIC8qIEdQSU9CICovDQorI2RlZmluZSBTRF9TUElfU0NLX0dQSU9fQ0xLICAgICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9CDQorI2RlZmluZSBTRF9TUElfU0NLX1NPVVJDRSAgICAgICAgICAgICAgICBHUElPX1BpblNvdXJjZTEzDQorI2RlZmluZSBTRF9TUElfU0NLX0FGICAgICAgICAgICAgICAgICAgICBHUElPX0FGX1NQSTINCisjZGVmaW5lIFNEX1NQSV9NSVNPX1BJTiAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzE0ICAgICAgICAgICAgICAgICAvKiBQQi4xNCAqLw0KKyNkZWZpbmUgU0RfU1BJX01JU09fR1BJT19QT1JUICAgICAgICAgICAgR1BJT0IgICAgICAgICAgICAgICAgICAgICAgIC8qIEdQSU9CICovDQorI2RlZmluZSBTRF9TUElfTUlTT19HUElPX0NMSyAgICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9CDQorI2RlZmluZSBTRF9TUElfTUlTT19TT1VSQ0UgICAgICAgICAgICAgICBHUElPX1BpblNvdXJjZTE0DQorI2RlZmluZSBTRF9TUElfTUlTT19BRiAgICAgICAgICAgICAgICAgICBHUElPX0FGX1NQSTINCisjZGVmaW5lIFNEX1NQSV9NT1NJX1BJTiAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzE1ICAgICAgICAgICAgICAgICAvKiBQQi4xNSAqLw0KKyNkZWZpbmUgU0RfU1BJX01PU0lfR1BJT19QT1JUICAgICAgICAgICAgR1BJT0IgICAgICAgICAgICAgICAgICAgICAgIC8qIEdQSU9CICovDQorI2RlZmluZSBTRF9TUElfTU9TSV9HUElPX0NMSyAgICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9CDQorI2RlZmluZSBTRF9TUElfTU9TSV9TT1VSQ0UgICAgICAgICAgICAgICBHUElPX1BpblNvdXJjZTE1DQorI2RlZmluZSBTRF9TUElfTU9TSV9BRiAgICAgICAgICAgICAgICAgICBHUElPX0FGX1NQSTINCisjZGVmaW5lIFNEX0NTX1BJTiAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzcgICAgICAgICAgICAgICAgICAvKiBQRC4wNyAqLw0KKyNkZWZpbmUgU0RfQ1NfR1BJT19QT1JUICAgICAgICAgICAgICAgICAgR1BJT0QgICAgICAgICAgICAgICAgICAgICAgIC8qIEdQSU9EICovDQorI2RlZmluZSBTRF9DU19HUElPX0NMSyAgICAgICAgICAgICAgICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9EDQorI2RlZmluZSBTRF9ERVRFQ1RfUElOICAgICAgICAgICAgICAgICAgICBHUElPX1Bpbl83ICAgICAgICAgICAgICAgICAgLyogUEUuMDcgKi8NCisjZGVmaW5lIFNEX0RFVEVDVF9HUElPX1BPUlQgICAgICAgICAgICAgIEdQSU9FICAgICAgICAgICAgICAgICAgICAgICAvKiBHUElPRSAqLw0KKyNkZWZpbmUgU0RfREVURUNUX0dQSU9fQ0xLICAgICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPRQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorICANCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTE9XX0xFVkVMX1RTRU5TT1JfSTJDDQorICAqIEB7DQorICAqLw0KKy8qKg0KKyAgKiBAYnJpZWYgIExNNzUgVGVtcGVyYXR1cmUgU2Vuc29yIEkyQyBJbnRlcmZhY2UgcGlucw0KKyAgKi8gIA0KKyNkZWZpbmUgTE03NV9JMkMgICAgICAgICAgICAgICAgICAgICAgICAgSTJDMQ0KKyNkZWZpbmUgTE03NV9JMkNfQ0xLICAgICAgICAgICAgICAgICAgICAgUkNDX0FQQjFQZXJpcGhfSTJDMQ0KKyNkZWZpbmUgTE03NV9JMkNfU0NMX1BJTiAgICAgICAgICAgICAgICAgR1BJT19QaW5fNiAgICAgICAgICAgICAgICAgIC8qIFBCLjA2ICovDQorI2RlZmluZSBMTTc1X0kyQ19TQ0xfR1BJT19QT1JUICAgICAgICAgICBHUElPQiAgICAgICAgICAgICAgICAgICAgICAgLyogR1BJT0IgKi8NCisjZGVmaW5lIExNNzVfSTJDX1NDTF9HUElPX0NMSyAgICAgICAgICAgIFJDQ19BSEJQZXJpcGhfR1BJT0INCisjZGVmaW5lIExNNzVfSTJDX1NDTF9TT1VSQ0UgICAgICAgICAgICAgIEdQSU9fUGluU291cmNlNg0KKyNkZWZpbmUgTE03NV9JMkNfU0NMX0FGICAgICAgICAgICAgICAgICAgR1BJT19BRl9JMkMxDQorI2RlZmluZSBMTTc1X0kyQ19TREFfUElOICAgICAgICAgICAgICAgICBHUElPX1Bpbl83ICAgICAgICAgICAgICAgICAgLyogUEIuMDcgKi8NCisjZGVmaW5lIExNNzVfSTJDX1NEQV9HUElPX1BPUlQgICAgICAgICAgIEdQSU9CICAgICAgICAgICAgICAgICAgICAgICAvKiBHUElPQiAqLw0KKyNkZWZpbmUgTE03NV9JMkNfU0RBX0dQSU9fQ0xLICAgICAgICAgICAgUkNDX0FIQlBlcmlwaF9HUElPQg0KKyNkZWZpbmUgTE03NV9JMkNfU0RBX1NPVVJDRSAgICAgICAgICAgICAgR1BJT19QaW5Tb3VyY2U3DQorI2RlZmluZSBMTTc1X0kyQ19TREFfQUYgICAgICAgICAgICAgICAgICBHUElPX0FGX0kyQzENCisjZGVmaW5lIExNNzVfSTJDX1NNQlVTQUxFUlRfUElOICAgICAgICAgIEdQSU9fUGluXzUgICAgICAgICAgICAgICAgICAvKiBQQi4wNSAqLw0KKyNkZWZpbmUgTE03NV9JMkNfU01CVVNBTEVSVF9HUElPX1BPUlQgICAgR1BJT0IgICAgICAgICAgICAgICAgICAgICAgIC8qIEdQSU9CICovDQorI2RlZmluZSBMTTc1X0kyQ19TTUJVU0FMRVJUX0dQSU9fQ0xLICAgICBSQ0NfQUhCUGVyaXBoX0dQSU9CDQorI2RlZmluZSBMTTc1X0kyQ19TTUJVU0FMRVJUX1NPVVJDRSAgICAgICBHUElPX1BpblNvdXJjZTUNCisjZGVmaW5lIExNNzVfSTJDX1NNQlVTQUxFUlRfQUYgICAgICAgICAgIEdQSU9fQUZfSTJDMQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorICANCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xPV19MRVZFTF9FeHBvcnRlZF9NYWNyb3MNCisgICogQHsNCisgICovICANCisvKioNCisgICogQH0NCisgICovIA0KKw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTE9XX0xFVkVMX0V4cG9ydGVkX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCit2b2lkIFNUTV9FVkFMX0xFREluaXQoTGVkX1R5cGVEZWYgTGVkKTsNCit2b2lkIFNUTV9FVkFMX0xFRE9uKExlZF9UeXBlRGVmIExlZCk7DQordm9pZCBTVE1fRVZBTF9MRURPZmYoTGVkX1R5cGVEZWYgTGVkKTsNCit2b2lkIFNUTV9FVkFMX0xFRFRvZ2dsZShMZWRfVHlwZURlZiBMZWQpOw0KK3ZvaWQgU1RNX0VWQUxfUEJJbml0KEJ1dHRvbl9UeXBlRGVmIEJ1dHRvbiwgQnV0dG9uTW9kZV9UeXBlRGVmIEJ1dHRvbl9Nb2RlKTsNCit1aW50MzJfdCBTVE1fRVZBTF9QQkdldFN0YXRlKEJ1dHRvbl9UeXBlRGVmIEJ1dHRvbik7DQordm9pZCBTVE1fRVZBTF9DT01Jbml0KENPTV9UeXBlRGVmIENPTSwgVVNBUlRfSW5pdFR5cGVEZWYqIFVTQVJUX0luaXRTdHJ1Y3QpOyANCit2b2lkIFNEX0xvd0xldmVsX0RlSW5pdCh2b2lkKTsNCit2b2lkIFNEX0xvd0xldmVsX0luaXQodm9pZCk7IA0KK3ZvaWQgTE03NV9Mb3dMZXZlbF9EZUluaXQodm9pZCk7DQordm9pZCBMTTc1X0xvd0xldmVsX0luaXQodm9pZCk7ICANCisvKioNCisgICogQH0NCisgICovDQorICANCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorI2VuZGlmIC8qIF9fU1RNMzJMMTUyX0VWQUxfSCAqLw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLyAgDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxNTJfRVZBTC9zdG0zMmwxNTJfZXZhbF9sY2QuYyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDE1Ml9FVkFML3N0bTMybDE1Ml9ldmFsX2xjZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjM2YwNWEKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxNTJfRVZBTC9zdG0zMmwxNTJfZXZhbF9sY2QuYwpAQCAtMCwwICsxLDE1MjggQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDE1Ml9ldmFsX2xjZC5jDQorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorICAqIEB2ZXJzaW9uIFY0LjQuMFJDMQ0KKyAgKiBAZGF0ZSAgICAwNy8wMi8yMDEwDQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBpbmNsdWRlcyB0aGUgTENEIGRyaXZlciBmb3IgQU0tMjQwMzIwTDhUTlFXMDBIIChMQ0RfSUxJOTMyMCksDQorICAqICAgICAgICAgIEFNLTI0MDMyMExEVE5RVzAwSCAoTENEX1NQRkQ1NDA4QikgTGlxdWlkIENyeXN0YWwgRGlzcGxheSBNb2R1bGUNCisgICogICAgICAgICAgb2YgU1RNMzJMMTUyLUVWQUwgYm9hcmQuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLw0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDE1Ml9ldmFsX2xjZC5oIg0KKyNpbmNsdWRlICIuLi9Db21tb24vZm9udHMuYyINCisNCisvKiogQGFkZHRvZ3JvdXAgVXRpbGl0aWVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMl9FVkFMDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxNTJfRVZBTA0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xDRA0KKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgaW5jbHVkZXMgdGhlIExDRCBkcml2ZXIgZm9yIEFNLTI0MDMyMEw4VE5RVzAwSCAoTENEX0lMSTkzMjApLA0KKyAgKiAgICAgICAgICBBTS0yNDAzMjBMRFROUVcwMEggKExDRF9TUEZENTQwOEIpIExpcXVpZCBDcnlzdGFsIERpc3BsYXkgTW9kdWxlDQorICAqICAgICAgICAgIG9mIFNUTTMyTDE1Mi1FVkFMIGJvYXJkLg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xDRF9Qcml2YXRlX1R5cGVzDQorICAqIEB7DQorICAqLw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xDRF9Qcml2YXRlX0RlZmluZXMNCisgICogQHsNCisgICovDQorI2RlZmluZSBMQ0RfSUxJOTMyMCAgICAgICAgMHg5MzIwDQorI2RlZmluZSBMQ0RfU1BGRDU0MDggICAgICAgMHg1NDA4DQorI2RlZmluZSBTVEFSVF9CWVRFICAgICAgICAgMHg3MA0KKyNkZWZpbmUgU0VUX0lOREVYICAgICAgICAgIDB4MDANCisjZGVmaW5lIFJFQURfU1RBVFVTICAgICAgICAweDAxDQorI2RlZmluZSBMQ0RfV1JJVEVfUkVHICAgICAgMHgwMg0KKyNkZWZpbmUgTENEX1JFQURfUkVHICAgICAgIDB4MDMNCisjZGVmaW5lIE1BWF9QT0xZX0NPUk5FUlMgICAyMDANCisjZGVmaW5lIFBPTFlfWShaKSAgICAgICAgICAoKGludDMyX3QpKChQb2ludHMgKyBaKS0+WCkpDQorI2RlZmluZSBQT0xZX1goWikgICAgICAgICAgKChpbnQzMl90KSgoUG9pbnRzICsgWiktPlkpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xDRF9Qcml2YXRlX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisjZGVmaW5lIEFCUyhYKSAgKChYKSA+IDAgPyAoWCkgOiAtKFgpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xDRF9Qcml2YXRlX1ZhcmlhYmxlcw0KKyAgKiBAew0KKyAgKi8NCitzdGF0aWMgc0ZPTlQgKkxDRF9DdXJyZW50Zm9udHM7DQorLyogR2xvYmFsIHZhcmlhYmxlcyB0byBzZXQgdGhlIHdyaXR0ZW4gdGV4dCBjb2xvciAqLw0KK3N0YXRpYyBfX0lPIHVpbnQxNl90IFRleHRDb2xvciA9IDB4MDAwMCwgQmFja0NvbG9yID0gMHhGRkZGOw0KK3N0YXRpYyBfX0lPIHVpbnQzMl90IExDRFR5cGUgPSBMQ0RfU1BGRDU0MDg7DQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTENEX1ByaXZhdGVfRnVuY3Rpb25fUHJvdG90eXBlcw0KKyAgKiBAew0KKyAgKi8NCisjaWZuZGVmIFVTRV9EZWxheQ0KK3N0YXRpYyB2b2lkIGRlbGF5KF9fSU8gdWludDMyX3QgbkNvdW50KTsNCisjZW5kaWYgLyogVVNFX0RlbGF5Ki8NCisNCitzdGF0aWMgdm9pZCBQdXRQaXhlbChpbnQxNl90IHgsIGludDE2X3QgeSk7DQorc3RhdGljIHZvaWQgTENEX1BvbHlMaW5lUmVsYXRpdmVDbG9zZWQocFBvaW50IFBvaW50cywgdWludDE2X3QgUG9pbnRDb3VudCwgdWludDE2X3QgQ2xvc2VkKTsNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBTVE0zMkwxNTJfRVZBTF9MQ0RfUHJpdmF0ZV9GdW5jdGlvbnMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEBicmllZiAgRGVJbml0aWFsaXplcyB0aGUgTENELg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1RNMzJMMTUyX0xDRF9EZUluaXQodm9pZCkNCit7DQorICBHUElPX0luaXRUeXBlRGVmIEdQSU9fSW5pdFN0cnVjdHVyZTsNCisNCisgIC8qITwgTENEIERpc3BsYXkgT2ZmICovDQorICBMQ0RfRGlzcGxheU9mZigpOw0KKw0KKyAgLyohPCBMQ0RfU1BJIGRpc2FibGUgKi8NCisgIFNQSV9DbWQoTENEX1NQSSwgRElTQUJMRSk7DQorDQorICAvKiE8IExDRF9TUEkgRGVJbml0ICovDQorICBTUElfRGVJbml0KExDRF9TUEkpOw0KKw0KKyAgLyohPCBEaXNhYmxlIFNQSSBjbG9jayAgKi8NCisgIFJDQ19BUEIxUGVyaXBoQ2xvY2tDbWQoTENEX1NQSV9DTEssIERJU0FCTEUpOw0KKw0KKyAgLyogQ29uZmlndXJlIE5DUyBpbiBPdXRwdXQgUHVzaC1QdWxsIG1vZGUgKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IExDRF9OQ1NfUElOOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSA9IEdQSU9fTW9kZV9JTjsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1B1UGQgPSBHUElPX1B1UGRfTk9QVUxMOw0KKyAgR1BJT19Jbml0KExDRF9OQ1NfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIC8qIENvbmZpZ3VyZSBTUEkgcGluczogU0NLLCBNSVNPIGFuZCBNT1NJICovDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBMQ0RfU1BJX1NDS19QSU47DQorICBHUElPX0luaXQoTENEX1NQSV9TQ0tfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IExDRF9TUElfTUlTT19QSU47DQorICBHUElPX0luaXQoTENEX1NQSV9NSVNPX0dQSU9fUE9SVCwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7DQorDQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBMQ0RfU1BJX01PU0lfUElOOw0KKyAgR1BJT19Jbml0KExDRF9TUElfTU9TSV9HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZXR1cHMgdGhlIExDRC4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9TZXR1cCh2b2lkKQ0KK3sNCisvKiBDb25maWd1cmUgdGhlIExDRCBDb250cm9sIHBpbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgTENEX0N0cmxMaW5lc0NvbmZpZygpOw0KKw0KKy8qIENvbmZpZ3VyZSB0aGUgTENEX1NQSSBpbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICBMQ0RfU1BJQ29uZmlnKCk7DQorDQorICBpZihMQ0RUeXBlID09IExDRF9TUEZENTQwOCkNCisgIHsNCisgICAgLyogU3RhcnQgSW5pdGlhbCBTZXF1ZW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzIyNywgMHgzMDA4KTsgLyogU2V0IGludGVybmFsIHRpbWluZyAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18yMzEsIDB4MDAxMik7IC8qIFNldCBpbnRlcm5hbCB0aW1pbmcgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMjM5LCAweDEyMzEpOyAvKiBTZXQgaW50ZXJuYWwgdGltaW5nICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzEsIDB4MDEwMCk7ICAgLyogU2V0IFNTIGFuZCBTTSBiaXQgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMiwgMHgwNzAwKTsgICAvKiBTZXQgMSBsaW5lIGludmVyc2lvbiAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18zLCAweDEwMzApOyAgIC8qIFNldCBHUkFNIHdyaXRlIGRpcmVjdGlvbiBhbmQgQkdSPTEuICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzQsIDB4MDAwMCk7ICAgLyogUmVzaXplIHJlZ2lzdGVyICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzgsIDB4MDIwMik7ICAgLyogU2V0IHRoZSBiYWNrIHBvcmNoIGFuZCBmcm9udCBwb3JjaCAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR185LCAweDAwMDApOyAgIC8qIFNldCBub24tZGlzcGxheSBhcmVhIHJlZnJlc2ggY3ljbGUgSVNDWzM6MF0gKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTAsIDB4MDAwMCk7ICAvKiBGTUFSSyBmdW5jdGlvbiAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xMiwgMHgwMDAwKTsgIC8qIFJHQiBpbnRlcmZhY2Ugc2V0dGluZyAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xMywgMHgwMDAwKTsgIC8qIEZyYW1lIG1hcmtlciBQb3NpdGlvbiAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNSwgMHgwMDAwKTsgIC8qIFJHQiBpbnRlcmZhY2UgcG9sYXJpdHkgKi8NCisgICAgLyogUG93ZXIgT24gc2VxdWVuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE2LCAweDAwMDApOyAgLyogU0FQLCBCVFszOjBdLCBBUCwgRFNUQiwgU0xQLCBTVEIgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTcsIDB4MDAwMCk7ICAvKiBEQzFbMjowXSwgREMwWzI6MF0sIFZDWzI6MF0gKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTgsIDB4MDAwMCk7ICAvKiBWUkVHMU9VVCB2b2x0YWdlICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE5LCAweDAwMDApOyAgLyogVkRWWzQ6MF0gZm9yIFZDT00gYW1wbGl0dWRlICovDQorICAgIF9kZWxheV8oMjApOyAgICAgICAgICAgICAgICAvKiBEaXMtY2hhcmdlIGNhcGFjaXRvciBwb3dlciB2b2x0YWdlICgyMDBtcykgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTcsIDB4MDAwNyk7ICAvKiBEQzFbMjowXSwgREMwWzI6MF0sIFZDWzI6MF0gKi8NCisgICAgX2RlbGF5Xyg1KTsgICAgICAgICAgICAgICAgIC8qIERlbGF5IDUwIG1zICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE2LCAweDEyQjApOyAgLyogU0FQLCBCVFszOjBdLCBBUCwgRFNUQiwgU0xQLCBTVEIgKi8NCisgICAgX2RlbGF5Xyg1KTsgICAgICAgICAgICAgICAgICAvKiBEZWxheSA1MCBtcyAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xOCwgMHgwMUJEKTsgIC8qIEV4dGVybmFsIHJlZmVyZW5jZSB2b2x0YWdlPSBWY2kgKi8NCisgICAgX2RlbGF5Xyg1KTsgICAgICAgICAgICAgICAgIC8qIERlbGF5IDUwIG1zICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE5LCAweDE0MDApOyAgICAgICAvKiBWRFZbNDowXSBmb3IgVkNPTSBhbXBsaXR1ZGUgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfNDEsIDB4MDAwRSk7ICAvKiBWQ01bNDowXSBmb3IgVkNPTUggKi8NCisgICAgX2RlbGF5Xyg1KTsgICAgICAgICAgICAgICAgIC8qIERlbGF5IDUwIG1zICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzMyLCAweDAwMDApOyAgLyogR1JBTSBob3Jpem9udGFsIEFkZHJlc3MgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMzMsIDB4MDEzRik7ICAvKiBHUkFNIFZlcnRpY2FsIEFkZHJlc3MgKi8NCisgICAgLyogQWRqdXN0IHRoZSBHYW1tYSBDdXJ2ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzQ4LCAweDAwMDcpOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR180OSwgMHgwMzAyKTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfNTAsIDB4MDEwNSk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzUzLCAweDAyMDYpOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR181NCwgMHgwODA4KTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfNTUsIDB4MDIwNik7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzU2LCAweDA1MDQpOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR181NywgMHgwMDA3KTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfNjAsIDB4MDEwNSk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzYxLCAweDA4MDgpOw0KKyAgICAvKiBTZXQgR1JBTSBhcmVhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfODAsIDB4MDAwMCk7ICAvKiBIb3Jpem9udGFsIEdSQU0gU3RhcnQgQWRkcmVzcyAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR184MSwgMHgwMEVGKTsgIC8qIEhvcml6b250YWwgR1JBTSBFbmQgQWRkcmVzcyAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR184MiwgMHgwMDAwKTsgIC8qIFZlcnRpY2FsIEdSQU0gU3RhcnQgQWRkcmVzcyAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR184MywgMHgwMTNGKTsgIC8qIFZlcnRpY2FsIEdSQU0gRW5kIEFkZHJlc3MgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfOTYsICAweEE3MDApOyAvKiBHYXRlIFNjYW4gTGluZSAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR185NywgIDB4MDAwMSk7IC8qIE5ETCxWTEUsIFJFViAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xMDYsIDB4MDAwMCk7IC8qIFNldCBzY3JvbGxpbmcgbGluZSAqLw0KKyAgICAvKiBQYXJ0aWFsIERpc3BsYXkgQ29udHJvbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTI4LCAweDAwMDApOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xMjksIDB4MDAwMCk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzEzMCwgMHgwMDAwKTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTMxLCAweDAwMDApOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xMzIsIDB4MDAwMCk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzEzMywgMHgwMDAwKTsNCisgICAgLyogUGFuZWwgQ29udHJvbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE0NCwgMHgwMDEwKTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTQ2LCAweDAwMDApOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNDcsIDB4MDAwMyk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE0OSwgMHgwMTEwKTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTUxLCAweDAwMDApOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNTIsIDB4MDAwMCk7DQorICAgIC8qIFNldCBHUkFNIHdyaXRlIGRpcmVjdGlvbiBhbmQgQkdSID0gMQ0KKyAgICAgICBJL0Q9MDEgKEhvcml6b250YWwgOiBpbmNyZW1lbnQsIFZlcnRpY2FsIDogZGVjcmVtZW50KQ0KKyAgICAgICBBTT0xIChhZGRyZXNzIGlzIHVwZGF0ZWQgaW4gdmVydGljYWwgd3JpdGluZyBkaXJlY3Rpb24pICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzMsIDB4MTAxOCk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzcsIDB4MDExMik7ICAgLyogMjYySyBjb2xvciBhbmQgZGlzcGxheSBPTiAqLw0KKyAgfQ0KKyAgZWxzZSBpZihMQ0RUeXBlID09IExDRF9JTEk5MzIwKQ0KKyAgew0KKyAgICBfZGVsYXlfKDUpOyAvKiBEZWxheSA1MCBtcyAqLw0KKyAgICAvKiBTdGFydCBJbml0aWFsIFNlcXVlbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzIyOSwgMHg4MDAwKTsgLyogU2V0IHRoZSBpbnRlcm5hbCB2Y29yZSB2b2x0YWdlICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzAsICAweDAwMDEpOyAvKiBTdGFydCBpbnRlcm5hbCBPU0MuICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzEsICAweDAxMDApOyAvKiBzZXQgU1MgYW5kIFNNIGJpdCAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18yLCAgMHgwNzAwKTsgLyogc2V0IDEgbGluZSBpbnZlcnNpb24gKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMywgIDB4MTAzMCk7IC8qIHNldCBHUkFNIHdyaXRlIGRpcmVjdGlvbiBhbmQgQkdSPTEuICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzQsICAweDAwMDApOyAvKiBSZXNpemUgcmVnaXN0ZXIgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfOCwgIDB4MDIwMik7IC8qIHNldCB0aGUgYmFjayBwb3JjaCBhbmQgZnJvbnQgcG9yY2ggKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfOSwgIDB4MDAwMCk7IC8qIHNldCBub24tZGlzcGxheSBhcmVhIHJlZnJlc2ggY3ljbGUgSVNDWzM6MF0gKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTAsIDB4MDAwMCk7IC8qIEZNQVJLIGZ1bmN0aW9uICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzEyLCAweDAwMDApOyAvKiBSR0IgaW50ZXJmYWNlIHNldHRpbmcgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTMsIDB4MDAwMCk7IC8qIEZyYW1lIG1hcmtlciBQb3NpdGlvbiAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNSwgMHgwMDAwKTsgLyogUkdCIGludGVyZmFjZSBwb2xhcml0eSAqLw0KKyAgICAvKiBQb3dlciBPbiBzZXF1ZW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE2LCAweDAwMDApOyAvKiBTQVAsIEJUWzM6MF0sIEFQLCBEU1RCLCBTTFAsIFNUQiAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNywgMHgwMDAwKTsgLyogREMxWzI6MF0sIERDMFsyOjBdLCBWQ1syOjBdICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE4LCAweDAwMDApOyAvKiBWUkVHMU9VVCB2b2x0YWdlICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE5LCAweDAwMDApOyAvKiBWRFZbNDowXSBmb3IgVkNPTSBhbXBsaXR1ZGUgKi8NCisgICAgX2RlbGF5XygyMCk7ICAgICAgICAgICAgICAgICAgICAgIC8qIERpcy1jaGFyZ2UgY2FwYWNpdG9yIHBvd2VyIHZvbHRhZ2UgKDIwMG1zKSAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNiwgMHgxN0IwKTsgLyogU0FQLCBCVFszOjBdLCBBUCwgRFNUQiwgU0xQLCBTVEIgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTcsIDB4MDEzNyk7IC8qIERDMVsyOjBdLCBEQzBbMjowXSwgVkNbMjowXSAqLw0KKyAgICBfZGVsYXlfKDUpOyAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgNTAgbXMgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTgsIDB4MDEzOSk7IC8qIFZSRUcxT1VUIHZvbHRhZ2UgKi8NCisgICAgX2RlbGF5Xyg1KTsgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IDUwIG1zICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE5LCAweDFkMDApOyAvKiBWRFZbNDowXSBmb3IgVkNPTSBhbXBsaXR1ZGUgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfNDEsIDB4MDAxMyk7IC8qIFZDTVs0OjBdIGZvciBWQ09NSCAqLw0KKyAgICBfZGVsYXlfKDUpOyAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgNTAgbXMgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMzIsIDB4MDAwMCk7IC8qIEdSQU0gaG9yaXpvbnRhbCBBZGRyZXNzICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzMzLCAweDAwMDApOyAvKiBHUkFNIFZlcnRpY2FsIEFkZHJlc3MgKi8NCisgICAgLyogQWRqdXN0IHRoZSBHYW1tYSBDdXJ2ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR180OCwgMHgwMDA2KTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfNDksIDB4MDEwMSk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzUwLCAweDAwMDMpOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR181MywgMHgwMTA2KTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfNTQsIDB4MGIwMik7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzU1LCAweDAzMDIpOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR181NiwgMHgwNzA3KTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfNTcsIDB4MDAwNyk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzYwLCAweDA2MDApOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR182MSwgMHgwMjBiKTsNCisNCisgICAgLyogU2V0IEdSQU0gYXJlYSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR184MCwgMHgwMDAwKTsgLyogSG9yaXpvbnRhbCBHUkFNIFN0YXJ0IEFkZHJlc3MgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfODEsIDB4MDBFRik7IC8qIEhvcml6b250YWwgR1JBTSBFbmQgQWRkcmVzcyAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR184MiwgMHgwMDAwKTsgLyogVmVydGljYWwgR1JBTSBTdGFydCBBZGRyZXNzICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzgzLCAweDAxM0YpOyAvKiBWZXJ0aWNhbCBHUkFNIEVuZCBBZGRyZXNzICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzk2LCAgMHgyNzAwKTsgLyogR2F0ZSBTY2FuIExpbmUgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfOTcsICAweDAwMDEpOyAvKiBOREwsVkxFLCBSRVYgKi8NCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTA2LCAweDAwMDApOyAvKiBzZXQgc2Nyb2xsaW5nIGxpbmUgKi8NCisgICAgLyogUGFydGlhbCBEaXNwbGF5IENvbnRyb2wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xMjgsIDB4MDAwMCk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzEyOSwgMHgwMDAwKTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTMwLCAweDAwMDApOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xMzEsIDB4MDAwMCk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzEzMiwgMHgwMDAwKTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTMzLCAweDAwMDApOw0KKyAgICAvKiBQYW5lbCBDb250cm9sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE0NCwgMHgwMDEwKTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTQ2LCAweDAwMDApOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNDcsIDB4MDAwMyk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE0OSwgMHgwMTEwKTsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTUxLCAweDAwMDApOw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNTIsIDB4MDAwMCk7DQorICAgIC8qIFNldCBHUkFNIHdyaXRlIGRpcmVjdGlvbiBhbmQgQkdSID0gMSAqLw0KKyAgICAvKiBJL0Q9MDEgKEhvcml6b250YWwgOiBpbmNyZW1lbnQsIFZlcnRpY2FsIDogZGVjcmVtZW50KSAqLw0KKyAgICAvKiBBTT0xIChhZGRyZXNzIGlzIHVwZGF0ZWQgaW4gdmVydGljYWwgd3JpdGluZyBkaXJlY3Rpb24pICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzMsIDB4MTAxOCk7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzcsIDB4MDE3Myk7IC8qIDI2MksgY29sb3IgYW5kIGRpc3BsYXkgT04gKi8NCisgIH0NCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIExDRC4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNUTTMyTDE1Ml9MQ0RfSW5pdCh2b2lkKQ0KK3sNCisgIC8qIFNldHVwcyB0aGUgTENEICovDQorICBMQ0RfU2V0dXAoKTsNCisNCisgIC8qIFRyeSB0byByZWFkIG5ldyBMQ0QgY29udHJvbGxlciBJRCAweDU0MDggKi8NCisgIGlmIChMQ0RfUmVhZFJlZyhMQ0RfUkVHXzApID09IExDRF9TUEZENTQwOCkNCisgIHsNCisgICAgTENEVHlwZSA9IExDRF9TUEZENTQwODsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgTENEVHlwZSA9IExDRF9JTEk5MzIwOw0KKyAgICAvKiBTZXR1cHMgdGhlIExDRCAqLw0KKyAgICBMQ0RfU2V0dXAoKTsNCisgIH0NCisNCisgIExDRF9TZXRGb250KCZMQ0RfREVGQVVMVF9GT05UKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgTENEIFRleHQgYW5kIEJhY2tncm91bmQgY29sb3JzLg0KKyAgKiBAcGFyYW0gIF9UZXh0Q29sb3I6IHNwZWNpZmllcyB0aGUgVGV4dCBDb2xvci4NCisgICogQHBhcmFtICBfQmFja0NvbG9yOiBzcGVjaWZpZXMgdGhlIEJhY2tncm91bmQgQ29sb3IuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9TZXRDb2xvcnMoX19JTyB1aW50MTZfdCBfVGV4dENvbG9yLCBfX0lPIHVpbnQxNl90IF9CYWNrQ29sb3IpDQorew0KKyAgVGV4dENvbG9yID0gX1RleHRDb2xvcjsNCisgIEJhY2tDb2xvciA9IF9CYWNrQ29sb3I7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEdldHMgdGhlIExDRCBUZXh0IGFuZCBCYWNrZ3JvdW5kIGNvbG9ycy4NCisgICogQHBhcmFtICBfVGV4dENvbG9yOiBwb2ludGVyIHRvIHRoZSB2YXJpYWJsZSB0aGF0IHdpbGwgY29udGFpbiB0aGUgVGV4dA0KKyAgICAgICAgICAgIENvbG9yLg0KKyAgKiBAcGFyYW0gIF9CYWNrQ29sb3I6IHBvaW50ZXIgdG8gdGhlIHZhcmlhYmxlIHRoYXQgd2lsbCBjb250YWluIHRoZSBCYWNrZ3JvdW5kDQorICAgICAgICAgICAgQ29sb3IuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9HZXRDb2xvcnMoX19JTyB1aW50MTZfdCAqX1RleHRDb2xvciwgX19JTyB1aW50MTZfdCAqX0JhY2tDb2xvcikNCit7DQorICAqX1RleHRDb2xvciA9IFRleHRDb2xvcjsgKl9CYWNrQ29sb3IgPSBCYWNrQ29sb3I7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgdGhlIFRleHQgY29sb3IuDQorICAqIEBwYXJhbSAgQ29sb3I6IHNwZWNpZmllcyB0aGUgVGV4dCBjb2xvciBjb2RlIFJHQig1LTYtNSkuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9TZXRUZXh0Q29sb3IoX19JTyB1aW50MTZfdCBDb2xvcikNCit7DQorICBUZXh0Q29sb3IgPSBDb2xvcjsNCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgQmFja2dyb3VuZCBjb2xvci4NCisgICogQHBhcmFtICBDb2xvcjogc3BlY2lmaWVzIHRoZSBCYWNrZ3JvdW5kIGNvbG9yIGNvZGUgUkdCKDUtNi01KS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX1NldEJhY2tDb2xvcihfX0lPIHVpbnQxNl90IENvbG9yKQ0KK3sNCisgIEJhY2tDb2xvciA9IENvbG9yOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZXRzIHRoZSBUZXh0IEZvbnQuDQorICAqIEBwYXJhbSAgZm9udHM6IHNwZWNpZmllcyB0aGUgZm9udCB0byBiZSB1c2VkLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfU2V0Rm9udChzRk9OVCAqZm9udHMpDQorew0KKyAgTENEX0N1cnJlbnRmb250cyA9IGZvbnRzOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBHZXRzIHRoZSBUZXh0IEZvbnQuDQorICAqIEBwYXJhbSAgTm9uZS4NCisgICogQHJldHZhbCB0aGUgdXNlZCBmb250Lg0KKyAgKi8NCitzRk9OVCAqTENEX0dldEZvbnQodm9pZCkNCit7DQorICByZXR1cm4gTENEX0N1cnJlbnRmb250czsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBzZWxlY3RlZCBsaW5lLg0KKyAgKiBAcGFyYW0gIExpbmU6IHRoZSBMaW5lIHRvIGJlIGNsZWFyZWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgTGluZXg6IHdoZXJlIHggY2FuIGJlIDAuLm4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX0NsZWFyTGluZSh1aW50OF90IExpbmUpDQorew0KKyAgdWludDE2X3QgcmVmY29sdW1uID0gTENEX1BJWEVMX1dJRFRIIC0gMTsNCisNCisgIC8qIFNlbmQgdGhlIHN0cmluZyBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyIG9uIGxDRCAqLw0KKyAgd2hpbGUgKCgocmVmY29sdW1uICsgMSkgJiAweEZGRkYpID49IExDRF9DdXJyZW50Zm9udHMtPldpZHRoKQ0KKyAgew0KKyAgICAvKiBEaXNwbGF5IG9uZSBjaGFyYWN0ZXIgb24gTENEICovDQorICAgIExDRF9EaXNwbGF5Q2hhcihMaW5lLCByZWZjb2x1bW4sICcgJyk7DQorICAgIC8qIERlY3JlbWVudCB0aGUgY29sdW1uIHBvc2l0aW9uIGJ5IDE2ICovDQorICAgIHJlZmNvbHVtbiAtPSBMQ0RfQ3VycmVudGZvbnRzLT5XaWR0aDsNCisgIH0NCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBob2xlIExDRC4NCisgICogQHBhcmFtICBDb2xvcjogdGhlIGNvbG9yIG9mIHRoZSBiYWNrZ3JvdW5kLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfQ2xlYXIodWludDE2X3QgQ29sb3IpDQorew0KKyAgdWludDMyX3QgaW5kZXggPSAwOw0KKw0KKyAgTENEX1NldEN1cnNvcigweDAwLCAweDAxM0YpOw0KKw0KKyAgTENEX1dyaXRlUkFNX1ByZXBhcmUoKTsgLyogUHJlcGFyZSB0byB3cml0ZSBHUkFNICovDQorDQorICBmb3IoaW5kZXggPSAwOyBpbmRleCA8IDc2ODAwOyBpbmRleCsrKQ0KKyAgew0KKyAgICBMQ0RfV3JpdGVSQU0oQ29sb3IpOw0KKyAgfQ0KKw0KKyAgTENEX0N0cmxMaW5lc1dyaXRlKExDRF9OQ1NfR1BJT19QT1JULCBMQ0RfTkNTX1BJTiwgQml0X1NFVCk7DQorDQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgdGhlIGN1cnNvciBwb3NpdGlvbi4NCisgICogQHBhcmFtICBYcG9zOiBzcGVjaWZpZXMgdGhlIFggcG9zaXRpb24uDQorICAqIEBwYXJhbSAgWXBvczogc3BlY2lmaWVzIHRoZSBZIHBvc2l0aW9uLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfU2V0Q3Vyc29yKHVpbnQ4X3QgWHBvcywgdWludDE2X3QgWXBvcykNCit7DQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR18zMiwgWHBvcyk7DQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR18zMywgWXBvcyk7DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERyYXdzIGEgY2hhcmFjdGVyIG9uIExDRC4NCisgICogQHBhcmFtICBYcG9zOiB0aGUgTGluZSB3aGVyZSB0byBkaXNwbGF5IHRoZSBjaGFyYWN0ZXIgc2hhcGUuDQorICAqIEBwYXJhbSAgWXBvczogc3RhcnQgY29sdW1uIGFkZHJlc3MuDQorICAqIEBwYXJhbSAgYzogcG9pbnRlciB0byB0aGUgY2hhcmFjdGVyIGRhdGEuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9EcmF3Q2hhcih1aW50OF90IFhwb3MsIHVpbnQxNl90IFlwb3MsIGNvbnN0IHVpbnQxNl90ICpjKQ0KK3sNCisgIHVpbnQzMl90IGluZGV4ID0gMCwgaSA9IDA7DQorICB1aW50OF90IFhhZGRyZXNzID0gMDsNCisNCisgIFhhZGRyZXNzID0gWHBvczsNCisNCisgIExDRF9TZXRDdXJzb3IoWGFkZHJlc3MsIFlwb3MpOw0KKw0KKyAgZm9yKGluZGV4ID0gMDsgaW5kZXggPCBMQ0RfQ3VycmVudGZvbnRzLT5IZWlnaHQ7IGluZGV4KyspDQorICB7DQorICAgIExDRF9Xcml0ZVJBTV9QcmVwYXJlKCk7IC8qIFByZXBhcmUgdG8gd3JpdGUgR1JBTSAqLw0KKw0KKyAgICBmb3IoaSA9IDA7IGkgPCBMQ0RfQ3VycmVudGZvbnRzLT5XaWR0aDsgaSsrKQ0KKyAgICB7DQorICAgICAgaWYoKCgoY1tpbmRleF0gJiAoKDB4ODAgPDwgKChMQ0RfQ3VycmVudGZvbnRzLT5XaWR0aCAvIDEyICkgKiA4ICkgKSA+PiBpKSkgPT0gMHgwMCkgJiYoTENEX0N1cnJlbnRmb250cy0+V2lkdGggPD0gMTIpKXx8DQorICAgICAgICAoKChjW2luZGV4XSAmICgweDEgPDwgaSkpID09IDB4MDApJiYoTENEX0N1cnJlbnRmb250cy0+V2lkdGggPiAxMiApKSkNCisNCisgICAgICB7DQorICAgICAgICBMQ0RfV3JpdGVSQU0oQmFja0NvbG9yKTsNCisgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICAgIExDRF9Xcml0ZVJBTShUZXh0Q29sb3IpOw0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBMQ0RfQ3RybExpbmVzV3JpdGUoTENEX05DU19HUElPX1BPUlQsIExDRF9OQ1NfUElOLCBCaXRfU0VUKTsNCisgICAgWGFkZHJlc3MrKzsNCisgICAgTENEX1NldEN1cnNvcihYYWRkcmVzcywgWXBvcyk7DQorICB9DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERpc3BsYXlzIG9uZSBjaGFyYWN0ZXIgKDE2ZG90cyB3aWR0aCwgMjRkb3RzIGhlaWdodCkuDQorICAqIEBwYXJhbSAgTGluZTogdGhlIExpbmUgd2hlcmUgdG8gZGlzcGxheSB0aGUgY2hhcmFjdGVyIHNoYXBlIC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBMaW5leDogd2hlcmUgeCBjYW4gYmUgMC4uOQ0KKyAgKiBAcGFyYW0gIENvbHVtbjogc3RhcnQgY29sdW1uIGFkZHJlc3MuDQorICAqIEBwYXJhbSAgQXNjaWk6IGNoYXJhY3RlciBhc2NpaSBjb2RlLCBtdXN0IGJlIGJldHdlZW4gMHgyMCBhbmQgMHg3RS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX0Rpc3BsYXlDaGFyKHVpbnQ4X3QgTGluZSwgdWludDE2X3QgQ29sdW1uLCB1aW50OF90IEFzY2lpKQ0KK3sNCisgIEFzY2lpIC09IDMyOw0KKyAgTENEX0RyYXdDaGFyKExpbmUsIENvbHVtbiwgJkxDRF9DdXJyZW50Zm9udHMtPnRhYmxlW0FzY2lpICogTENEX0N1cnJlbnRmb250cy0+SGVpZ2h0XSk7DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERpc3BsYXlzIGEgbWF4aW11bSBvZiAyMCBjaGFyIG9uIHRoZSBMQ0QuDQorICAqIEBwYXJhbSAgTGluZTogdGhlIExpbmUgd2hlcmUgdG8gZGlzcGxheSB0aGUgY2hhcmFjdGVyIHNoYXBlIC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBMaW5leDogd2hlcmUgeCBjYW4gYmUgMC4uOQ0KKyAgKiBAcGFyYW0gICpwdHI6IHBvaW50ZXIgdG8gc3RyaW5nIHRvIGRpc3BsYXkgb24gTENELg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfRGlzcGxheVN0cmluZ0xpbmUodWludDhfdCBMaW5lLCB1aW50OF90ICpwdHIpDQorew0KKyAgdWludDE2X3QgcmVmY29sdW1uID0gTENEX1BJWEVMX1dJRFRIIC0gMTsNCisNCisgIC8qIFNlbmQgdGhlIHN0cmluZyBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyIG9uIGxDRCAqLw0KKyAgd2hpbGUgKCgqcHRyICE9IDApICYgKCgocmVmY29sdW1uICsgMSkgJiAweEZGRkYpID49IExDRF9DdXJyZW50Zm9udHMtPldpZHRoKSkNCisgIHsNCisgICAgLyogRGlzcGxheSBvbmUgY2hhcmFjdGVyIG9uIExDRCAqLw0KKyAgICBMQ0RfRGlzcGxheUNoYXIoTGluZSwgcmVmY29sdW1uLCAqcHRyKTsNCisgICAgLyogRGVjcmVtZW50IHRoZSBjb2x1bW4gcG9zaXRpb24gYnkgMTYgKi8NCisgICAgcmVmY29sdW1uIC09IExDRF9DdXJyZW50Zm9udHMtPldpZHRoOw0KKyAgICAvKiBQb2ludCBvbiB0aGUgbmV4dCBjaGFyYWN0ZXIgKi8NCisgICAgcHRyKys7DQorICB9DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgYSBkaXNwbGF5IHdpbmRvdw0KKyAgKiBAcGFyYW0gIFhwb3M6IHNwZWNpZmllcyB0aGUgWCBidXR0b20gbGVmdCBwb3NpdGlvbi4NCisgICogQHBhcmFtICBZcG9zOiBzcGVjaWZpZXMgdGhlIFkgYnV0dG9tIGxlZnQgcG9zaXRpb24uDQorICAqIEBwYXJhbSAgSGVpZ2h0OiBkaXNwbGF5IHdpbmRvdyBoZWlnaHQuDQorICAqIEBwYXJhbSAgV2lkdGg6IGRpc3BsYXkgd2luZG93IHdpZHRoLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfU2V0RGlzcGxheVdpbmRvdyh1aW50OF90IFhwb3MsIHVpbnQxNl90IFlwb3MsIHVpbnQ4X3QgSGVpZ2h0LCB1aW50MTZfdCBXaWR0aCkNCit7DQorICAvKiBIb3Jpem9udGFsIEdSQU0gU3RhcnQgQWRkcmVzcyAqLw0KKyAgaWYoWHBvcyA+PSBIZWlnaHQpDQorICB7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzgwLCAoWHBvcyAtIEhlaWdodCArIDEpKTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgTENEX1dyaXRlUmVnKExDRF9SRUdfODAsIDApOw0KKyAgfQ0KKyAgLyogSG9yaXpvbnRhbCBHUkFNIEVuZCBBZGRyZXNzICovDQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR184MSwgWHBvcyk7DQorICAvKiBWZXJ0aWNhbCBHUkFNIFN0YXJ0IEFkZHJlc3MgKi8NCisgIGlmKFlwb3MgPj0gV2lkdGgpDQorICB7DQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzgyLCAoWXBvcyAtIFdpZHRoICsgMSkpOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR184MiwgMCk7DQorICB9DQorICAvKiBWZXJ0aWNhbCBHUkFNIEVuZCBBZGRyZXNzICovDQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR184MywgWXBvcyk7DQorDQorICBMQ0RfU2V0Q3Vyc29yKFhwb3MsIFlwb3MpOw0KK30NCisNCisNCisvKioNCisgICogQGJyaWVmICBEaXNhYmxlcyBMQ0QgV2luZG93IG1vZGUuDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfV2luZG93TW9kZURpc2FibGUodm9pZCkNCit7DQorICBMQ0RfU2V0RGlzcGxheVdpbmRvdygyMzksIDB4MTNGLCAyNDAsIDMyMCk7DQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR18zLCAweDEwMTgpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBEaXNwbGF5cyBhIGxpbmUuDQorICAqIEBwYXJhbSAgWHBvczogc3BlY2lmaWVzIHRoZSBYIHBvc2l0aW9uLg0KKyAgKiBAcGFyYW0gIFlwb3M6IHNwZWNpZmllcyB0aGUgWSBwb3NpdGlvbi4NCisgICogQHBhcmFtICBMZW5ndGg6IGxpbmUgbGVuZ3RoLg0KKyAgKiBAcGFyYW0gIERpcmVjdGlvbjogbGluZSBkaXJlY3Rpb24uDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogVmVydGljYWwgb3IgSG9yaXpvbnRhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX0RyYXdMaW5lKHVpbnQ4X3QgWHBvcywgdWludDE2X3QgWXBvcywgdWludDE2X3QgTGVuZ3RoLCB1aW50OF90IERpcmVjdGlvbikNCit7DQorICB1aW50MzJfdCBpID0gMDsNCisNCisgIExDRF9TZXRDdXJzb3IoWHBvcywgWXBvcyk7DQorDQorICBpZihEaXJlY3Rpb24gPT0gTENEX0RJUl9IT1JJWk9OVEFMKQ0KKyAgew0KKyAgICBMQ0RfV3JpdGVSQU1fUHJlcGFyZSgpOyAvKiBQcmVwYXJlIHRvIHdyaXRlIEdSQU0gKi8NCisNCisgICAgZm9yKGkgPSAwOyBpIDwgTGVuZ3RoOyBpKyspDQorICAgIHsNCisgICAgICBMQ0RfV3JpdGVSQU0oVGV4dENvbG9yKTsNCisgICAgfQ0KKyAgICBMQ0RfQ3RybExpbmVzV3JpdGUoTENEX05DU19HUElPX1BPUlQsIExDRF9OQ1NfUElOLCBCaXRfU0VUKTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgZm9yKGkgPSAwOyBpIDwgTGVuZ3RoOyBpKyspDQorICAgIHsNCisgICAgICBMQ0RfV3JpdGVSQU1Xb3JkKFRleHRDb2xvcik7DQorICAgICAgWHBvcysrOw0KKyAgICAgIExDRF9TZXRDdXJzb3IoWHBvcywgWXBvcyk7DQorICAgIH0NCisgIH0NCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgRGlzcGxheXMgYSByZWN0YW5nbGUuDQorICAqIEBwYXJhbSAgWHBvczogc3BlY2lmaWVzIHRoZSBYIHBvc2l0aW9uLg0KKyAgKiBAcGFyYW0gIFlwb3M6IHNwZWNpZmllcyB0aGUgWSBwb3NpdGlvbi4NCisgICogQHBhcmFtICBIZWlnaHQ6IGRpc3BsYXkgcmVjdGFuZ2xlIGhlaWdodC4NCisgICogQHBhcmFtICBXaWR0aDogZGlzcGxheSByZWN0YW5nbGUgd2lkdGguDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9EcmF3UmVjdCh1aW50OF90IFhwb3MsIHVpbnQxNl90IFlwb3MsIHVpbnQ4X3QgSGVpZ2h0LCB1aW50MTZfdCBXaWR0aCkNCit7DQorICBMQ0RfRHJhd0xpbmUoWHBvcywgWXBvcywgV2lkdGgsIExDRF9ESVJfSE9SSVpPTlRBTCk7DQorICBMQ0RfRHJhd0xpbmUoKFhwb3MgKyBIZWlnaHQpLCBZcG9zLCBXaWR0aCwgTENEX0RJUl9IT1JJWk9OVEFMKTsNCisNCisgIExDRF9EcmF3TGluZShYcG9zLCBZcG9zLCBIZWlnaHQsIExDRF9ESVJfVkVSVElDQUwpOw0KKyAgTENEX0RyYXdMaW5lKFhwb3MsIChZcG9zIC0gV2lkdGggKyAxKSwgSGVpZ2h0LCBMQ0RfRElSX1ZFUlRJQ0FMKTsNCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgRGlzcGxheXMgYSBjaXJjbGUuDQorICAqIEBwYXJhbSAgWHBvczogc3BlY2lmaWVzIHRoZSBYIHBvc2l0aW9uLg0KKyAgKiBAcGFyYW0gIFlwb3M6IHNwZWNpZmllcyB0aGUgWSBwb3NpdGlvbi4NCisgICogQHBhcmFtICBSYWRpdXMNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX0RyYXdDaXJjbGUodWludDhfdCBYcG9zLCB1aW50MTZfdCBZcG9zLCB1aW50MTZfdCBSYWRpdXMpDQorew0KKyAgaW50MzJfdCAgRDsvKiBEZWNpc2lvbiBWYXJpYWJsZSAqLw0KKyAgdWludDMyX3QgIEN1clg7LyogQ3VycmVudCBYIFZhbHVlICovDQorICB1aW50MzJfdCAgQ3VyWTsvKiBDdXJyZW50IFkgVmFsdWUgKi8NCisNCisgIEQgPSAzIC0gKFJhZGl1cyA8PCAxKTsNCisgIEN1clggPSAwOw0KKyAgQ3VyWSA9IFJhZGl1czsNCisNCisgIHdoaWxlIChDdXJYIDw9IEN1clkpDQorICB7DQorICAgIExDRF9TZXRDdXJzb3IoWHBvcyArIEN1clgsIFlwb3MgKyBDdXJZKTsNCisgICAgTENEX1dyaXRlUkFNV29yZChUZXh0Q29sb3IpOw0KKyAgICBMQ0RfU2V0Q3Vyc29yKFhwb3MgKyBDdXJYLCBZcG9zIC0gQ3VyWSk7DQorICAgIExDRF9Xcml0ZVJBTVdvcmQoVGV4dENvbG9yKTsNCisNCisgICAgTENEX1NldEN1cnNvcihYcG9zIC0gQ3VyWCwgWXBvcyArIEN1clkpOw0KKyAgICBMQ0RfV3JpdGVSQU1Xb3JkKFRleHRDb2xvcik7DQorDQorICAgIExDRF9TZXRDdXJzb3IoWHBvcyAtIEN1clgsIFlwb3MgLSBDdXJZKTsNCisgICAgTENEX1dyaXRlUkFNV29yZChUZXh0Q29sb3IpOw0KKw0KKyAgICBMQ0RfU2V0Q3Vyc29yKFhwb3MgKyBDdXJZLCBZcG9zICsgQ3VyWCk7DQorICAgIExDRF9Xcml0ZVJBTVdvcmQoVGV4dENvbG9yKTsNCisNCisgICAgTENEX1NldEN1cnNvcihYcG9zICsgQ3VyWSwgWXBvcyAtIEN1clgpOw0KKyAgICBMQ0RfV3JpdGVSQU1Xb3JkKFRleHRDb2xvcik7DQorDQorICAgIExDRF9TZXRDdXJzb3IoWHBvcyAtIEN1clksIFlwb3MgKyBDdXJYKTsNCisgICAgTENEX1dyaXRlUkFNV29yZChUZXh0Q29sb3IpOw0KKw0KKyAgICBMQ0RfU2V0Q3Vyc29yKFhwb3MgLSBDdXJZLCBZcG9zIC0gQ3VyWCk7DQorICAgIExDRF9Xcml0ZVJBTVdvcmQoVGV4dENvbG9yKTsNCisNCisgICAgaWYgKEQgPCAwKQ0KKyAgICB7DQorICAgICAgRCArPSAoQ3VyWCA8PCAyKSArIDY7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgRCArPSAoKEN1clggLSBDdXJZKSA8PCAyKSArIDEwOw0KKyAgICAgIEN1clktLTsNCisgICAgfQ0KKyAgICBDdXJYKys7DQorICB9DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERpc3BsYXlzIGEgbW9ub2NvbG9yIHBpY3R1cmUuDQorICAqIEBwYXJhbSAgUGljdDogcG9pbnRlciB0byB0aGUgcGljdHVyZSBhcnJheS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX0RyYXdNb25vUGljdChjb25zdCB1aW50MzJfdCAqUGljdCkNCit7DQorICB1aW50MzJfdCBpbmRleCA9IDAsIGkgPSAwOw0KKyAgTENEX1NldEN1cnNvcigwLCAoTENEX1BJWEVMX1dJRFRIIC0gMSkpOw0KKw0KKyAgTENEX1dyaXRlUkFNX1ByZXBhcmUoKTsgLyogUHJlcGFyZSB0byB3cml0ZSBHUkFNICovDQorDQorICBmb3IoaW5kZXggPSAwOyBpbmRleCA8IDI0MDA7IGluZGV4KyspDQorICB7DQorICAgIGZvcihpID0gMDsgaSA8IDMyOyBpKyspDQorICAgIHsNCisgICAgICBpZigoUGljdFtpbmRleF0gJiAoMSA8PCBpKSkgPT0gMHgwMCkNCisgICAgICB7DQorICAgICAgICBMQ0RfV3JpdGVSQU0oQmFja0NvbG9yKTsNCisgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICAgIExDRF9Xcml0ZVJBTShUZXh0Q29sb3IpOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAgTENEX0N0cmxMaW5lc1dyaXRlKExDRF9OQ1NfR1BJT19QT1JULCBMQ0RfTkNTX1BJTiwgQml0X1NFVCk7DQorfQ0KKw0KKyNpZmRlZiBVU0VfTENEX0RyYXdCTVANCisvKioNCisgICogQGJyaWVmICBEaXNwbGF5cyBhIGJpdG1hcCBwaWN0dXJlIGxvYWRlZCBpbiB0aGUgU1BJIEZsYXNoLg0KKyAgKiBAcGFyYW0gIEJtcEFkZHJlc3M6IEJtcCBwaWN0dXJlIGFkZHJlc3MgaW4gdGhlIFNQSSBGbGFzaC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX0RyYXdCTVAodWludDMyX3QgQm1wQWRkcmVzcykNCit7DQorICB1aW50MzJfdCBpID0gMCwgc2l6ZSA9IDA7DQorICAvKiBSZWFkIGJpdG1hcCBzaXplICovDQorICBTUElfRkxBU0hfQnVmZmVyUmVhZCgodWludDhfdCopJnNpemUsIEJtcEFkZHJlc3MgKyAyLCA0KTsNCisgIC8qIGdldCBiaXRtYXAgZGF0YSBhZGRyZXNzIG9mZnNldCAqLw0KKyAgU1BJX0ZMQVNIX0J1ZmZlclJlYWQoKHVpbnQ4X3QqKSZpLCBCbXBBZGRyZXNzICsgMTAsIDQpOw0KKw0KKyAgc2l6ZSA9IChzaXplIC0gaSkvMjsNCisgIFNQSV9GTEFTSF9TdGFydFJlYWRTZXF1ZW5jZShCbXBBZGRyZXNzICsgaSk7DQorICAvKiBEaXNhYmxlIFNQSTEgICovDQorICBTUElfQ21kKFNQSTEsIERJU0FCTEUpOw0KKyAgLyogU1BJIGluIDE2LWJpdCBtb2RlICovDQorICBTUElfRGF0YVNpemVDb25maWcoU1BJMSwgU1BJX0RhdGFTaXplXzE2Yik7DQorICAvKiBFbmFibGUgU1BJMSAgKi8NCisgIFNQSV9DbWQoU1BJMSwgRU5BQkxFKTsNCisNCisgIGlmKChMQ0RUeXBlID09IExDRF9JTEk5MzIwKSB8fCAoTENEVHlwZSA9PSBMQ0RfU1BGRDU0MDgpKQ0KKyAgew0KKyAgICAvKiBTZXQgR1JBTSB3cml0ZSBkaXJlY3Rpb24gYW5kIEJHUiA9IDEgKi8NCisgICAgLyogSS9EPTAwIChIb3Jpem9udGFsIDogZGVjcmVtZW50LCBWZXJ0aWNhbCA6IGRlY3JlbWVudCkgKi8NCisgICAgLyogQU09MSAoYWRkcmVzcyBpcyB1cGRhdGVkIGluIHZlcnRpY2FsIHdyaXRpbmcgZGlyZWN0aW9uKSAqLw0KKyAgICBMQ0RfV3JpdGVSZWcoTENEX1JFR18zLCAweDEwMDgpOw0KKyAgICBMQ0RfV3JpdGVSQU1fUHJlcGFyZSgpOyAvKiBQcmVwYXJlIHRvIHdyaXRlIEdSQU0gKi8NCisgIH0NCisNCisgIC8qIFJlYWQgYml0bWFwIGRhdGEgZnJvbSBTUEkgRmxhc2ggYW5kIHNlbmQgdGhlbSB0byBMQ0QgKi8NCisgIGZvcihpID0gMDsgaSA8IHNpemU7IGkrKykNCisgIHsNCisgICAgTENEX1dyaXRlUkFNKF9fUkVWMTYoU1BJX0ZMQVNIX1NlbmRIYWxmV29yZCgweEE1QTUpKSk7DQorICB9DQorICBpZigoTENEVHlwZSA9PSBMQ0RfSUxJOTMyMCkgfHwgKExDRFR5cGUgPT0gTENEX1NQRkQ1NDA4KSkNCisgIHsNCisgICAgTENEX0N0cmxMaW5lc1dyaXRlKExDRF9OQ1NfR1BJT19QT1JULCBMQ0RfTkNTX1BJTiwgQml0X1NFVCk7DQorICB9DQorDQorICAvKiBEZXNlbGVjdCB0aGUgRkxBU0g6IENoaXAgU2VsZWN0IGhpZ2ggKi8NCisgIFNQSV9GTEFTSF9DU19ISUdIKCk7DQorICAvKiBEaXNhYmxlIFNQSTEgICovDQorICBTUElfQ21kKFNQSTEsIERJU0FCTEUpOw0KKyAgLyogU1BJIGluIDgtYml0IG1vZGUgKi8NCisgIFNQSV9EYXRhU2l6ZUNvbmZpZyhTUEkxLCBTUElfRGF0YVNpemVfOGIpOw0KKyAgLyogRW5hYmxlIFNQSTEgICovDQorICBTUElfQ21kKFNQSTEsIEVOQUJMRSk7DQorDQorICBpZigoTENEVHlwZSA9PSBMQ0RfSUxJOTMyMCkgfHwgKExDRFR5cGUgPT0gTENEX1NQRkQ1NDA4KSkNCisgIHsNCisgICAgLyogU2V0IEdSQU0gd3JpdGUgZGlyZWN0aW9uIGFuZCBCR1IgPSAxICovDQorICAgIC8qIEkvRCA9IDAxIChIb3Jpem9udGFsIDogaW5jcmVtZW50LCBWZXJ0aWNhbCA6IGRlY3JlbWVudCkgKi8NCisgICAgLyogQU0gPSAxIChhZGRyZXNzIGlzIHVwZGF0ZWQgaW4gdmVydGljYWwgd3JpdGluZyBkaXJlY3Rpb24pICovDQorICAgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzMsIDB4MTAxOCk7DQorICB9DQorfQ0KKyNlbmRpZiAvKiBVU0VfTENEX0RyYXdCTVAgKi8NCisNCisvKioNCisgICogQGJyaWVmICBEaXNwbGF5cyBhIGZ1bGwgcmVjdGFuZ2xlLg0KKyAgKiBAcGFyYW0gIFhwb3M6IHNwZWNpZmllcyB0aGUgWCBwb3NpdGlvbi4NCisgICogQHBhcmFtICBZcG9zOiBzcGVjaWZpZXMgdGhlIFkgcG9zaXRpb24uDQorICAqIEBwYXJhbSAgSGVpZ2h0OiByZWN0YW5nbGUgaGVpZ2h0Lg0KKyAgKiBAcGFyYW0gIFdpZHRoOiByZWN0YW5nbGUgd2lkdGguDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9EcmF3RnVsbFJlY3QodWludDE2X3QgWHBvcywgdWludDE2X3QgWXBvcywgdWludDE2X3QgV2lkdGgsIHVpbnQxNl90IEhlaWdodCkNCit7DQorICBMQ0RfU2V0VGV4dENvbG9yKFRleHRDb2xvcik7DQorDQorICBMQ0RfRHJhd0xpbmUoWHBvcywgWXBvcywgV2lkdGgsIExDRF9ESVJfSE9SSVpPTlRBTCk7DQorICBMQ0RfRHJhd0xpbmUoKFhwb3MgKyBIZWlnaHQpLCBZcG9zLCBXaWR0aCwgTENEX0RJUl9IT1JJWk9OVEFMKTsNCisNCisgIExDRF9EcmF3TGluZShYcG9zLCBZcG9zLCBIZWlnaHQsIExDRF9ESVJfVkVSVElDQUwpOw0KKyAgTENEX0RyYXdMaW5lKFhwb3MsIChZcG9zIC0gV2lkdGggKyAxKSwgSGVpZ2h0LCBMQ0RfRElSX1ZFUlRJQ0FMKTsNCisNCisgIFdpZHRoIC09IDI7DQorICBIZWlnaHQtLTsNCisgIFlwb3MtLTsNCisNCisgIExDRF9TZXRUZXh0Q29sb3IoQmFja0NvbG9yKTsNCisNCisgIHdoaWxlKEhlaWdodC0tKQ0KKyAgew0KKyAgICBMQ0RfRHJhd0xpbmUoKytYcG9zLCBZcG9zLCBXaWR0aCwgTENEX0RJUl9IT1JJWk9OVEFMKTsNCisgIH0NCisNCisgIExDRF9TZXRUZXh0Q29sb3IoVGV4dENvbG9yKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRGlzcGxheXMgYSBmdWxsIGNpcmNsZS4NCisgICogQHBhcmFtICBYcG9zOiBzcGVjaWZpZXMgdGhlIFggcG9zaXRpb24uDQorICAqIEBwYXJhbSAgWXBvczogc3BlY2lmaWVzIHRoZSBZIHBvc2l0aW9uLg0KKyAgKiBAcGFyYW0gIFJhZGl1cw0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfRHJhd0Z1bGxDaXJjbGUodWludDE2X3QgWHBvcywgdWludDE2X3QgWXBvcywgdWludDE2X3QgUmFkaXVzKQ0KK3sNCisgIGludDMyX3QgIEQ7ICAgIC8qIERlY2lzaW9uIFZhcmlhYmxlICovDQorICB1aW50MzJfdCAgQ3VyWDsvKiBDdXJyZW50IFggVmFsdWUgKi8NCisgIHVpbnQzMl90ICBDdXJZOy8qIEN1cnJlbnQgWSBWYWx1ZSAqLw0KKw0KKyAgRCA9IDMgLSAoUmFkaXVzIDw8IDEpOw0KKw0KKyAgQ3VyWCA9IDA7DQorICBDdXJZID0gUmFkaXVzOw0KKw0KKyAgTENEX1NldFRleHRDb2xvcihCYWNrQ29sb3IpOw0KKw0KKyAgd2hpbGUgKEN1clggPD0gQ3VyWSkNCisgIHsNCisgICAgaWYoQ3VyWSA+IDApDQorICAgIHsNCisgICAgICBMQ0RfRHJhd0xpbmUoWHBvcyAtIEN1clgsIFlwb3MgKyBDdXJZLCAyKkN1clksIExDRF9ESVJfSE9SSVpPTlRBTCk7DQorICAgICAgTENEX0RyYXdMaW5lKFhwb3MgKyBDdXJYLCBZcG9zICsgQ3VyWSwgMipDdXJZLCBMQ0RfRElSX0hPUklaT05UQUwpOw0KKyAgICB9DQorDQorICAgIGlmKEN1clggPiAwKQ0KKyAgICB7DQorICAgICAgTENEX0RyYXdMaW5lKFhwb3MgLSBDdXJZLCBZcG9zICsgQ3VyWCwgMipDdXJYLCBMQ0RfRElSX0hPUklaT05UQUwpOw0KKyAgICAgIExDRF9EcmF3TGluZShYcG9zICsgQ3VyWSwgWXBvcyArIEN1clgsIDIqQ3VyWCwgTENEX0RJUl9IT1JJWk9OVEFMKTsNCisgICAgfQ0KKyAgICBpZiAoRCA8IDApDQorICAgIHsNCisgICAgICBEICs9IChDdXJYIDw8IDIpICsgNjsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICBEICs9ICgoQ3VyWCAtIEN1clkpIDw8IDIpICsgMTA7DQorICAgICAgQ3VyWS0tOw0KKyAgICB9DQorICAgIEN1clgrKzsNCisgIH0NCisNCisgIExDRF9TZXRUZXh0Q29sb3IoVGV4dENvbG9yKTsNCisgIExDRF9EcmF3Q2lyY2xlKFhwb3MsIFlwb3MsIFJhZGl1cyk7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERpc3BsYXlzIGFuIHVuaSBsaW5lIChiZXR3ZWVuIHR3byBwb2ludHMpLg0KKyAgKiBAcGFyYW0gIHgxOiBzcGVjaWZpZXMgdGhlIHBvaW50IDEgeCBwb3NpdGlvbi4NCisgICogQHBhcmFtICB5MTogc3BlY2lmaWVzIHRoZSBwb2ludCAxIHkgcG9zaXRpb24uDQorICAqIEBwYXJhbSAgeDI6IHNwZWNpZmllcyB0aGUgcG9pbnQgMiB4IHBvc2l0aW9uLg0KKyAgKiBAcGFyYW0gIHkyOiBzcGVjaWZpZXMgdGhlIHBvaW50IDIgeSBwb3NpdGlvbi4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX0RyYXdVbmlMaW5lKHVpbnQxNl90IHgxLCB1aW50MTZfdCB5MSwgdWludDE2X3QgeDIsIHVpbnQxNl90IHkyKQ0KK3sNCisgIGludDE2X3QgZGVsdGF4ID0gMCwgZGVsdGF5ID0gMCwgeCA9IDAsIHkgPSAwLCB4aW5jMSA9IDAsIHhpbmMyID0gMCwNCisgIHlpbmMxID0gMCwgeWluYzIgPSAwLCBkZW4gPSAwLCBudW0gPSAwLCBudW1hZGQgPSAwLCBudW1waXhlbHMgPSAwLA0KKyAgY3VycGl4ZWwgPSAwOw0KKw0KKyAgZGVsdGF4ID0gQUJTKHgyIC0geDEpOyAgICAgICAgLyogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgeCdzICovDQorICBkZWx0YXkgPSBBQlMoeTIgLSB5MSk7ICAgICAgICAvKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB5J3MgKi8NCisgIHggPSB4MTsgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0YXJ0IHggb2ZmIGF0IHRoZSBmaXJzdCBwaXhlbCAqLw0KKyAgeSA9IHkxOyAgICAgICAgICAgICAgICAgICAgICAgLyogU3RhcnQgeSBvZmYgYXQgdGhlIGZpcnN0IHBpeGVsICovDQorDQorICBpZiAoeDIgPj0geDEpICAgICAgICAgICAgICAgICAvKiBUaGUgeC12YWx1ZXMgYXJlIGluY3JlYXNpbmcgKi8NCisgIHsNCisgICAgeGluYzEgPSAxOw0KKyAgICB4aW5jMiA9IDE7DQorICB9DQorICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgeC12YWx1ZXMgYXJlIGRlY3JlYXNpbmcgKi8NCisgIHsNCisgICAgeGluYzEgPSAtMTsNCisgICAgeGluYzIgPSAtMTsNCisgIH0NCisNCisgIGlmICh5MiA+PSB5MSkgICAgICAgICAgICAgICAgIC8qIFRoZSB5LXZhbHVlcyBhcmUgaW5jcmVhc2luZyAqLw0KKyAgew0KKyAgICB5aW5jMSA9IDE7DQorICAgIHlpbmMyID0gMTsNCisgIH0NCisgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSB5LXZhbHVlcyBhcmUgZGVjcmVhc2luZyAqLw0KKyAgew0KKyAgICB5aW5jMSA9IC0xOw0KKyAgICB5aW5jMiA9IC0xOw0KKyAgfQ0KKw0KKyAgaWYgKGRlbHRheCA+PSBkZWx0YXkpICAgICAgICAgLyogVGhlcmUgaXMgYXQgbGVhc3Qgb25lIHgtdmFsdWUgZm9yIGV2ZXJ5IHktdmFsdWUgKi8NCisgIHsNCisgICAgeGluYzEgPSAwOyAgICAgICAgICAgICAgICAgIC8qIERvbid0IGNoYW5nZSB0aGUgeCB3aGVuIG51bWVyYXRvciA+PSBkZW5vbWluYXRvciAqLw0KKyAgICB5aW5jMiA9IDA7ICAgICAgICAgICAgICAgICAgLyogRG9uJ3QgY2hhbmdlIHRoZSB5IGZvciBldmVyeSBpdGVyYXRpb24gKi8NCisgICAgZGVuID0gZGVsdGF4Ow0KKyAgICBudW0gPSBkZWx0YXggLyAyOw0KKyAgICBudW1hZGQgPSBkZWx0YXk7DQorICAgIG51bXBpeGVscyA9IGRlbHRheDsgICAgICAgICAvKiBUaGVyZSBhcmUgbW9yZSB4LXZhbHVlcyB0aGFuIHktdmFsdWVzICovDQorICB9DQorICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgeS12YWx1ZSBmb3IgZXZlcnkgeC12YWx1ZSAqLw0KKyAgew0KKyAgICB4aW5jMiA9IDA7ICAgICAgICAgICAgICAgICAgLyogRG9uJ3QgY2hhbmdlIHRoZSB4IGZvciBldmVyeSBpdGVyYXRpb24gKi8NCisgICAgeWluYzEgPSAwOyAgICAgICAgICAgICAgICAgIC8qIERvbid0IGNoYW5nZSB0aGUgeSB3aGVuIG51bWVyYXRvciA+PSBkZW5vbWluYXRvciAqLw0KKyAgICBkZW4gPSBkZWx0YXk7DQorICAgIG51bSA9IGRlbHRheSAvIDI7DQorICAgIG51bWFkZCA9IGRlbHRheDsNCisgICAgbnVtcGl4ZWxzID0gZGVsdGF5OyAgICAgICAgIC8qIFRoZXJlIGFyZSBtb3JlIHktdmFsdWVzIHRoYW4geC12YWx1ZXMgKi8NCisgIH0NCisNCisgIGZvciAoY3VycGl4ZWwgPSAwOyBjdXJwaXhlbCA8PSBudW1waXhlbHM7IGN1cnBpeGVsKyspDQorICB7DQorICAgIFB1dFBpeGVsKHgsIHkpOyAgICAgICAgICAgICAvKiBEcmF3IHRoZSBjdXJyZW50IHBpeGVsICovDQorICAgIG51bSArPSBudW1hZGQ7ICAgICAgICAgICAgICAvKiBJbmNyZWFzZSB0aGUgbnVtZXJhdG9yIGJ5IHRoZSB0b3Agb2YgdGhlIGZyYWN0aW9uICovDQorICAgIGlmIChudW0gPj0gZGVuKSAgICAgICAgICAgICAvKiBDaGVjayBpZiBudW1lcmF0b3IgPj0gZGVub21pbmF0b3IgKi8NCisgICAgew0KKyAgICAgIG51bSAtPSBkZW47ICAgICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBuZXcgbnVtZXJhdG9yIHZhbHVlICovDQorICAgICAgeCArPSB4aW5jMTsgICAgICAgICAgICAgICAvKiBDaGFuZ2UgdGhlIHggYXMgYXBwcm9wcmlhdGUgKi8NCisgICAgICB5ICs9IHlpbmMxOyAgICAgICAgICAgICAgIC8qIENoYW5nZSB0aGUgeSBhcyBhcHByb3ByaWF0ZSAqLw0KKyAgICB9DQorICAgIHggKz0geGluYzI7ICAgICAgICAgICAgICAgICAvKiBDaGFuZ2UgdGhlIHggYXMgYXBwcm9wcmlhdGUgKi8NCisgICAgeSArPSB5aW5jMjsgICAgICAgICAgICAgICAgIC8qIENoYW5nZSB0aGUgeSBhcyBhcHByb3ByaWF0ZSAqLw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBEaXNwbGF5cyBhbiBwb2x5bGluZSAoYmV0d2VlbiBtYW55IHBvaW50cykuDQorICAqIEBwYXJhbSAgUG9pbnRzOiBwb2ludGVyIHRvIHRoZSBwb2ludHMgYXJyYXkuDQorICAqIEBwYXJhbSAgUG9pbnRDb3VudDogTnVtYmVyIG9mIHBvaW50cy4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX1BvbHlMaW5lKHBQb2ludCBQb2ludHMsIHVpbnQxNl90IFBvaW50Q291bnQpDQorew0KKyAgaW50MTZfdCBYID0gMCwgWSA9IDA7DQorDQorICBpZihQb2ludENvdW50IDwgMikNCisgIHsNCisgICAgcmV0dXJuOw0KKyAgfQ0KKw0KKyAgd2hpbGUoLS1Qb2ludENvdW50KQ0KKyAgew0KKyAgICBYID0gUG9pbnRzLT5YOw0KKyAgICBZID0gUG9pbnRzLT5ZOw0KKyAgICBQb2ludHMrKzsNCisgICAgTENEX0RyYXdVbmlMaW5lKFgsIFksIFBvaW50cy0+WCwgUG9pbnRzLT5ZKTsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRGlzcGxheXMgYW4gcmVsYXRpdmUgcG9seWxpbmUgKGJldHdlZW4gbWFueSBwb2ludHMpLg0KKyAgKiBAcGFyYW0gIFBvaW50czogcG9pbnRlciB0byB0aGUgcG9pbnRzIGFycmF5Lg0KKyAgKiBAcGFyYW0gIFBvaW50Q291bnQ6IE51bWJlciBvZiBwb2ludHMuDQorICAqIEBwYXJhbSAgQ2xvc2VkOiBzcGVjaWZpZXMgaWYgdGhlIGRyYXcgaXMgY2xvc2VkIG9yIG5vdC4NCisgICogICAgICAgICAgIDE6IGNsb3NlZCwgMCA6IG5vdCBjbG9zZWQuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCitzdGF0aWMgdm9pZCBMQ0RfUG9seUxpbmVSZWxhdGl2ZUNsb3NlZChwUG9pbnQgUG9pbnRzLCB1aW50MTZfdCBQb2ludENvdW50LCB1aW50MTZfdCBDbG9zZWQpDQorew0KKyAgaW50MTZfdCBYID0gMCwgWSA9IDA7DQorICBwUG9pbnQgRmlyc3QgPSBQb2ludHM7DQorDQorICBpZihQb2ludENvdW50IDwgMikNCisgIHsNCisgICAgcmV0dXJuOw0KKyAgfQ0KKyAgWCA9IFBvaW50cy0+WDsNCisgIFkgPSBQb2ludHMtPlk7DQorICB3aGlsZSgtLVBvaW50Q291bnQpDQorICB7DQorICAgIFBvaW50cysrOw0KKyAgICBMQ0RfRHJhd1VuaUxpbmUoWCwgWSwgWCArIFBvaW50cy0+WCwgWSArIFBvaW50cy0+WSk7DQorICAgIFggPSBYICsgUG9pbnRzLT5YOw0KKyAgICBZID0gWSArIFBvaW50cy0+WTsNCisgIH0NCisgIGlmKENsb3NlZCkNCisgIHsNCisgICAgTENEX0RyYXdVbmlMaW5lKEZpcnN0LT5YLCBGaXJzdC0+WSwgWCwgWSk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERpc3BsYXlzIGEgY2xvc2VkIHBvbHlsaW5lIChiZXR3ZWVuIG1hbnkgcG9pbnRzKS4NCisgICogQHBhcmFtICBQb2ludHM6IHBvaW50ZXIgdG8gdGhlIHBvaW50cyBhcnJheS4NCisgICogQHBhcmFtICBQb2ludENvdW50OiBOdW1iZXIgb2YgcG9pbnRzLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfQ2xvc2VkUG9seUxpbmUocFBvaW50IFBvaW50cywgdWludDE2X3QgUG9pbnRDb3VudCkNCit7DQorICBMQ0RfUG9seUxpbmUoUG9pbnRzLCBQb2ludENvdW50KTsNCisgIExDRF9EcmF3VW5pTGluZShQb2ludHMtPlgsIFBvaW50cy0+WSwgKFBvaW50cytQb2ludENvdW50LTEpLT5YLCAoUG9pbnRzK1BvaW50Q291bnQtMSktPlkpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBEaXNwbGF5cyBhIHJlbGF0aXZlIHBvbHlsaW5lIChiZXR3ZWVuIG1hbnkgcG9pbnRzKS4NCisgICogQHBhcmFtICBQb2ludHM6IHBvaW50ZXIgdG8gdGhlIHBvaW50cyBhcnJheS4NCisgICogQHBhcmFtICBQb2ludENvdW50OiBOdW1iZXIgb2YgcG9pbnRzLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfUG9seUxpbmVSZWxhdGl2ZShwUG9pbnQgUG9pbnRzLCB1aW50MTZfdCBQb2ludENvdW50KQ0KK3sNCisgIExDRF9Qb2x5TGluZVJlbGF0aXZlQ2xvc2VkKFBvaW50cywgUG9pbnRDb3VudCwgMCk7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERpc3BsYXlzIGEgY2xvc2VkIHJlbGF0aXZlIHBvbHlsaW5lIChiZXR3ZWVuIG1hbnkgcG9pbnRzKS4NCisgICogQHBhcmFtICBQb2ludHM6IHBvaW50ZXIgdG8gdGhlIHBvaW50cyBhcnJheS4NCisgICogQHBhcmFtICBQb2ludENvdW50OiBOdW1iZXIgb2YgcG9pbnRzLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfQ2xvc2VkUG9seUxpbmVSZWxhdGl2ZShwUG9pbnQgUG9pbnRzLCB1aW50MTZfdCBQb2ludENvdW50KQ0KK3sNCisgIExDRF9Qb2x5TGluZVJlbGF0aXZlQ2xvc2VkKFBvaW50cywgUG9pbnRDb3VudCwgMSk7DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERpc3BsYXlzIGEgIGZ1bGwgcG9seWxpbmUgKGJldHdlZW4gbWFueSBwb2ludHMpLg0KKyAgKiBAcGFyYW0gIFBvaW50czogcG9pbnRlciB0byB0aGUgcG9pbnRzIGFycmF5Lg0KKyAgKiBAcGFyYW0gIFBvaW50Q291bnQ6IE51bWJlciBvZiBwb2ludHMuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9GaWxsUG9seUxpbmUocFBvaW50IFBvaW50cywgdWludDE2X3QgUG9pbnRDb3VudCkNCit7DQorICAvKiAgcHVibGljLWRvbWFpbiBjb2RlIGJ5IERhcmVsIFJleCBGaW5sZXksIDIwMDcgKi8NCisgIHVpbnQxNl90ICBub2RlcyA9IDAsIG5vZGVYW01BWF9QT0xZX0NPUk5FUlNdLCBwaXhlbFggPSAwLCBwaXhlbFkgPSAwLCBpID0gMCwNCisgIGogPSAwLCBzd2FwID0gMDsNCisgIHVpbnQxNl90ICBJTUFHRV9MRUZUID0gMCwgSU1BR0VfUklHSFQgPSAwLCBJTUFHRV9UT1AgPSAwLCBJTUFHRV9CT1RUT00gPSAwOw0KKw0KKyAgSU1BR0VfTEVGVCA9IElNQUdFX1JJR0hUID0gUG9pbnRzLT5YOw0KKyAgSU1BR0VfVE9QPSBJTUFHRV9CT1RUT00gPSBQb2ludHMtPlk7DQorDQorICBmb3IoaSA9IDE7IGkgPCBQb2ludENvdW50OyBpKyspDQorICB7DQorICAgIHBpeGVsWCA9IFBPTFlfWChpKTsNCisgICAgaWYocGl4ZWxYIDwgSU1BR0VfTEVGVCkNCisgICAgew0KKyAgICAgIElNQUdFX0xFRlQgPSBwaXhlbFg7DQorICAgIH0NCisgICAgaWYocGl4ZWxYID4gSU1BR0VfUklHSFQpDQorICAgIHsNCisgICAgICBJTUFHRV9SSUdIVCA9IHBpeGVsWDsNCisgICAgfQ0KKw0KKyAgICBwaXhlbFkgPSBQT0xZX1koaSk7DQorICAgIGlmKHBpeGVsWSA8IElNQUdFX1RPUCkNCisgICAgew0KKyAgICAgIElNQUdFX1RPUCA9IHBpeGVsWTsNCisgICAgfQ0KKyAgICBpZihwaXhlbFkgPiBJTUFHRV9CT1RUT00pDQorICAgIHsNCisgICAgICBJTUFHRV9CT1RUT00gPSBwaXhlbFk7DQorICAgIH0NCisgIH0NCisNCisgIExDRF9TZXRUZXh0Q29sb3IoQmFja0NvbG9yKTsNCisNCisgIC8qICBMb29wIHRocm91Z2ggdGhlIHJvd3Mgb2YgdGhlIGltYWdlLiAqLw0KKyAgZm9yIChwaXhlbFkgPSBJTUFHRV9UT1A7IHBpeGVsWSA8IElNQUdFX0JPVFRPTTsgcGl4ZWxZKyspDQorICB7DQorICAgIC8qIEJ1aWxkIGEgbGlzdCBvZiBub2Rlcy4gKi8NCisgICAgbm9kZXMgPSAwOyBqID0gUG9pbnRDb3VudC0xOw0KKw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgUG9pbnRDb3VudDsgaSsrKQ0KKyAgICB7DQorICAgICAgaWYgKFBPTFlfWShpKTwoZG91YmxlKSBwaXhlbFkgJiYgUE9MWV9ZKGopPj0oZG91YmxlKSBwaXhlbFkgfHwgUE9MWV9ZKGopPChkb3VibGUpIHBpeGVsWSAmJiBQT0xZX1koaSk+PShkb3VibGUpIHBpeGVsWSkNCisgICAgICB7DQorICAgICAgICBub2RlWFtub2RlcysrXT0oaW50KSAoUE9MWV9YKGkpKygocGl4ZWxZLVBPTFlfWShpKSkqKFBPTFlfWChqKS1QT0xZX1goaSkpKS8oUE9MWV9ZKGopLVBPTFlfWShpKSkpOw0KKyAgICAgIH0NCisgICAgICBqID0gaTsNCisgICAgfQ0KKw0KKyAgICAvKiBTb3J0IHRoZSBub2RlcywgdmlhIGEgc2ltcGxlIJNCdWJibGWUIHNvcnQuICovDQorICAgIGkgPSAwOw0KKyAgICB3aGlsZSAoaSA8IG5vZGVzLTEpDQorICAgIHsNCisgICAgICBpZiAobm9kZVhbaV0+bm9kZVhbaSsxXSkNCisgICAgICB7DQorICAgICAgICBzd2FwID0gbm9kZVhbaV07DQorICAgICAgICBub2RlWFtpXSA9IG5vZGVYW2krMV07DQorICAgICAgICBub2RlWFtpKzFdID0gc3dhcDsNCisgICAgICAgIGlmKGkpDQorICAgICAgICB7DQorICAgICAgICAgIGktLTsNCisgICAgICAgIH0NCisgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICAgIGkrKzsNCisgICAgICB9DQorICAgIH0NCisNCisgICAgLyogIEZpbGwgdGhlIHBpeGVscyBiZXR3ZWVuIG5vZGUgcGFpcnMuICovDQorICAgIGZvciAoaSA9IDA7IGkgPCBub2RlczsgaSs9MikNCisgICAgew0KKyAgICAgIGlmKG5vZGVYW2ldID49IElNQUdFX1JJR0hUKQ0KKyAgICAgIHsNCisgICAgICAgIGJyZWFrOw0KKyAgICAgIH0NCisgICAgICBpZihub2RlWFtpKzFdID4gSU1BR0VfTEVGVCkNCisgICAgICB7DQorICAgICAgICBpZiAobm9kZVhbaV0gPCBJTUFHRV9MRUZUKQ0KKyAgICAgICAgew0KKyAgICAgICAgICBub2RlWFtpXT1JTUFHRV9MRUZUOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYobm9kZVhbaSsxXSA+IElNQUdFX1JJR0hUKQ0KKyAgICAgICAgew0KKyAgICAgICAgICBub2RlWFtpKzFdID0gSU1BR0VfUklHSFQ7DQorICAgICAgICB9DQorICAgICAgICBMQ0RfU2V0VGV4dENvbG9yKEJhY2tDb2xvcik7DQorICAgICAgICBMQ0RfRHJhd0xpbmUocGl4ZWxZLCBub2RlWFtpKzFdLCBub2RlWFtpKzFdIC0gbm9kZVhbaV0sIExDRF9ESVJfSE9SSVpPTlRBTCk7DQorICAgICAgICBMQ0RfU2V0VGV4dENvbG9yKFRleHRDb2xvcik7DQorICAgICAgICBQdXRQaXhlbChwaXhlbFksIG5vZGVYW2krMV0pOw0KKyAgICAgICAgUHV0UGl4ZWwocGl4ZWxZLCBub2RlWFtpXSk7DQorICAgICAgICAvKiBmb3IgKGo9bm9kZVhbaV07IGo8bm9kZVhbaSsxXTsgaisrKSBQdXRQaXhlbChqLHBpeGVsWSk7ICovDQorICAgICAgfQ0KKyAgICB9DQorICB9DQorDQorICAvKiBkcmF3IHRoZSBlZGdlcyAqLw0KKyAgTENEX1NldFRleHRDb2xvcihUZXh0Q29sb3IpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBSZXNldCBMQ0QgY29udHJvbCBsaW5lKC9DUykgYW5kIFNlbmQgU3RhcnQtQnl0ZQ0KKyAgKiBAcGFyYW0gIFN0YXJ0X0J5dGU6IHRoZSBTdGFydC1CeXRlIHRvIGJlIHNlbnQNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX25DU19TdGFydEJ5dGUodWludDhfdCBTdGFydF9CeXRlKQ0KK3sNCisgIExDRF9DdHJsTGluZXNXcml0ZShMQ0RfTkNTX0dQSU9fUE9SVCwgTENEX05DU19QSU4sIEJpdF9SRVNFVCk7DQorDQorICBTUElfU2VuZERhdGEoTENEX1NQSSwgU3RhcnRfQnl0ZSk7DQorDQorICB3aGlsZShTUElfR2V0RmxhZ1N0YXR1cyhMQ0RfU1BJLCBTUElfRkxBR19CU1kpICE9IFJFU0VUKQ0KKyAgew0KKyAgfQ0KK30NCisNCisNCisvKioNCisgICogQGJyaWVmICBXcml0ZXMgaW5kZXggdG8gc2VsZWN0IHRoZSBMQ0QgcmVnaXN0ZXIuDQorICAqIEBwYXJhbSAgTENEX1JlZzogYWRkcmVzcyBvZiB0aGUgc2VsZWN0ZWQgcmVnaXN0ZXIuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9Xcml0ZVJlZ0luZGV4KHVpbnQ4X3QgTENEX1JlZykNCit7DQorICAvKiBSZXNldCBMQ0QgY29udHJvbCBsaW5lKC9DUykgYW5kIFNlbmQgU3RhcnQtQnl0ZSAqLw0KKyAgTENEX25DU19TdGFydEJ5dGUoU1RBUlRfQllURSB8IFNFVF9JTkRFWCk7DQorDQorICAvKiBXcml0ZSAxNi1iaXQgUmVnIEluZGV4IChIaWdoIEJ5dGUgaXMgMCkgKi8NCisgIFNQSV9TZW5kRGF0YShMQ0RfU1BJLCAweDAwKTsNCisNCisgIHdoaWxlKFNQSV9HZXRGbGFnU3RhdHVzKExDRF9TUEksIFNQSV9GTEFHX0JTWSkgIT0gUkVTRVQpDQorICB7DQorICB9DQorDQorICBTUElfU2VuZERhdGEoTENEX1NQSSwgTENEX1JlZyk7DQorDQorICB3aGlsZShTUElfR2V0RmxhZ1N0YXR1cyhMQ0RfU1BJLCBTUElfRkxBR19CU1kpICE9IFJFU0VUKQ0KKyAgew0KKyAgfQ0KKw0KKyAgTENEX0N0cmxMaW5lc1dyaXRlKExDRF9OQ1NfR1BJT19QT1JULCBMQ0RfTkNTX1BJTiwgQml0X1NFVCk7DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFdyaXRlcyB0byB0aGUgc2VsZWN0ZWQgTENEIElMSTkzMjAgcmVnaXN0ZXIuDQorICAqIEBwYXJhbSAgTENEX1JlZzogYWRkcmVzcyBvZiB0aGUgc2VsZWN0ZWQgcmVnaXN0ZXIuDQorICAqIEBwYXJhbSAgTENEX1JlZ1ZhbHVlOiB2YWx1ZSB0byB3cml0ZSB0byB0aGUgc2VsZWN0ZWQgcmVnaXN0ZXIuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9Xcml0ZVJlZyh1aW50OF90IExDRF9SZWcsIHVpbnQxNl90IExDRF9SZWdWYWx1ZSkNCit7DQorICAvKiBXcml0ZSAxNi1iaXQgSW5kZXggKHRoZW4gV3JpdGUgUmVnKSAqLw0KKyAgTENEX1dyaXRlUmVnSW5kZXgoTENEX1JlZyk7DQorDQorICAvKiBXcml0ZSAxNi1iaXQgUmVnICovDQorICAvKiBSZXNldCBMQ0QgY29udHJvbCBsaW5lKC9DUykgYW5kIFNlbmQgU3RhcnQtQnl0ZSAqLw0KKyAgTENEX25DU19TdGFydEJ5dGUoU1RBUlRfQllURSB8IExDRF9XUklURV9SRUcpOw0KKw0KKyAgU1BJX1NlbmREYXRhKExDRF9TUEksIExDRF9SZWdWYWx1ZSA+PiA4KTsNCisNCisgIHdoaWxlKFNQSV9HZXRGbGFnU3RhdHVzKExDRF9TUEksIFNQSV9GTEFHX0JTWSkgIT0gUkVTRVQpDQorICB7DQorICB9DQorDQorICBTUElfU2VuZERhdGEoTENEX1NQSSwgKExDRF9SZWdWYWx1ZSAmIDB4RkYpKTsNCisNCisgIHdoaWxlKFNQSV9HZXRGbGFnU3RhdHVzKExDRF9TUEksIFNQSV9GTEFHX0JTWSkgIT0gUkVTRVQpDQorICB7DQorICB9DQorDQorICBMQ0RfQ3RybExpbmVzV3JpdGUoTENEX05DU19HUElPX1BPUlQsIExDRF9OQ1NfUElOLCBCaXRfU0VUKTsNCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgUmVhZHMgdGhlIHNlbGVjdGVkIExDRCBSZWdpc3Rlci4NCisgICogQHBhcmFtICBMQ0RfUmVnOiBhZGRyZXNzIG9mIHRoZSBzZWxlY3RlZCByZWdpc3Rlci4NCisgICogQHJldHZhbCBMQ0QgUmVnaXN0ZXIgVmFsdWUuDQorICAqLw0KK3VpbnQxNl90IExDRF9SZWFkUmVnKHVpbnQ4X3QgTENEX1JlZykNCit7DQorICB1aW50MTZfdCB0bXAgPSAwOw0KKyAgdWludDhfdCBpID0gMDsNCisNCisgIC8qIExDRF9TUEkgcHJlc2NhbGVyOiA0ICovDQorICBMQ0RfU1BJLT5DUjEgJj0gMHhGRkM3Ow0KKyAgTENEX1NQSS0+Q1IxIHw9IDB4MDAwODsNCisgIC8qIFdyaXRlIDE2LWJpdCBJbmRleCAodGhlbiBSZWFkIFJlZykgKi8NCisgIExDRF9Xcml0ZVJlZ0luZGV4KExDRF9SZWcpOw0KKyAgLyogUmVhZCAxNi1iaXQgUmVnICovDQorICAvKiBSZXNldCBMQ0QgY29udHJvbCBsaW5lKC9DUykgYW5kIFNlbmQgU3RhcnQtQnl0ZSAqLw0KKyAgTENEX25DU19TdGFydEJ5dGUoU1RBUlRfQllURSB8IExDRF9SRUFEX1JFRyk7DQorDQorICBmb3IoaSA9IDA7IGkgPCA1OyBpKyspDQorICB7DQorICAgIFNQSV9TZW5kRGF0YShMQ0RfU1BJLCAweEZGKTsNCisgICAgd2hpbGUoU1BJX0dldEZsYWdTdGF0dXMoTENEX1NQSSwgU1BJX0ZMQUdfQlNZKSAhPSBSRVNFVCkNCisgICAgew0KKyAgICB9DQorICAgIC8qIE9uZSBieXRlIG9mIGludmFsaWQgZHVtbXkgZGF0YSByZWFkIGFmdGVyIHRoZSBzdGFydCBieXRlICovDQorICAgIHdoaWxlKFNQSV9HZXRGbGFnU3RhdHVzKExDRF9TUEksIFNQSV9GTEFHX1JYTkUpID09IFJFU0VUKQ0KKyAgICB7DQorICAgIH0NCisgICAgU1BJX1JlY2VpdmVEYXRhKExDRF9TUEkpOw0KKyAgfQ0KKw0KKyAgU1BJX1NlbmREYXRhKExDRF9TUEksIDB4RkYpOw0KKw0KKyAgLyogUmVhZCB1cHBlciBieXRlICovDQorICB3aGlsZShTUElfR2V0RmxhZ1N0YXR1cyhMQ0RfU1BJLCBTUElfRkxBR19CU1kpICE9IFJFU0VUKQ0KKyAgew0KKyAgfQ0KKw0KKyAgLyogUmVhZCBsb3dlciBieXRlICovDQorICB3aGlsZShTUElfR2V0RmxhZ1N0YXR1cyhMQ0RfU1BJLCBTUElfRkxBR19SWE5FKSA9PSBSRVNFVCkNCisgIHsNCisgIH0NCisgIHRtcCA9IFNQSV9SZWNlaXZlRGF0YShMQ0RfU1BJKTsNCisNCisNCisgIFNQSV9TZW5kRGF0YShMQ0RfU1BJLCAweEZGKTsNCisgIHdoaWxlKFNQSV9HZXRGbGFnU3RhdHVzKExDRF9TUEksIFNQSV9GTEFHX0JTWSkgIT0gUkVTRVQpDQorICB7DQorICB9DQorDQorICAvKiBSZWFkIGxvd2VyIGJ5dGUgKi8NCisgIHdoaWxlKFNQSV9HZXRGbGFnU3RhdHVzKExDRF9TUEksIFNQSV9GTEFHX1JYTkUpID09IFJFU0VUKQ0KKyAgew0KKyAgfQ0KKw0KKyAgdG1wID0gKCh0bXAgJiAweEZGKSA8PCA4KSB8IFNQSV9SZWNlaXZlRGF0YShMQ0RfU1BJKTsNCisgIExDRF9DdHJsTGluZXNXcml0ZShMQ0RfTkNTX0dQSU9fUE9SVCwgTENEX05DU19QSU4sIEJpdF9TRVQpOw0KKw0KKyAgLyogTENEX1NQSSBwcmVzY2FsZXI6IDIgKi8NCisgIExDRF9TUEktPkNSMSAmPSAweEZGQzc7DQorDQorICByZXR1cm4gdG1wOw0KK30NCisNCisNCisvKioNCisgICogQGJyaWVmICBQcmVwYXJlIHRvIHdyaXRlIHRvIHRoZSBMQ0QgUkFNLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX1dyaXRlUkFNX1ByZXBhcmUodm9pZCkNCit7DQorICBMQ0RfV3JpdGVSZWdJbmRleChMQ0RfUkVHXzM0KTsgLyogU2VsZWN0IEdSQU0gUmVnICovDQorDQorICAvKiBSZXNldCBMQ0QgY29udHJvbCBsaW5lKC9DUykgYW5kIFNlbmQgU3RhcnQtQnl0ZSAqLw0KKyAgTENEX25DU19TdGFydEJ5dGUoU1RBUlRfQllURSB8IExDRF9XUklURV9SRUcpOw0KK30NCisNCisNCisvKioNCisgICogQGJyaWVmICBXcml0ZXMgMSB3b3JkIHRvIHRoZSBMQ0QgUkFNLg0KKyAgKiBAcGFyYW0gIFJHQl9Db2RlOiB0aGUgcGl4ZWwgY29sb3IgaW4gUkdCIG1vZGUgKDUtNi01KS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX1dyaXRlUkFNV29yZCh1aW50MTZfdCBSR0JfQ29kZSkNCit7DQorICBMQ0RfV3JpdGVSQU1fUHJlcGFyZSgpOw0KKw0KKyAgTENEX1dyaXRlUkFNKFJHQl9Db2RlKTsNCisNCisgIExDRF9DdHJsTGluZXNXcml0ZShMQ0RfTkNTX0dQSU9fUE9SVCwgTENEX05DU19QSU4sIEJpdF9TRVQpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBXcml0ZXMgdG8gdGhlIExDRCBSQU0uDQorICAqIEBwYXJhbSAgUkdCX0NvZGU6IHRoZSBwaXhlbCBjb2xvciBpbiBSR0IgbW9kZSAoNS02LTUpLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfV3JpdGVSQU0odWludDE2X3QgUkdCX0NvZGUpDQorew0KKyAgU1BJX1NlbmREYXRhKExDRF9TUEksIFJHQl9Db2RlID4+IDgpOw0KKyAgd2hpbGUoU1BJX0dldEZsYWdTdGF0dXMoTENEX1NQSSwgU1BJX0ZMQUdfQlNZKSAhPSBSRVNFVCkNCisgIHsNCisgIH0NCisgIFNQSV9TZW5kRGF0YShMQ0RfU1BJLCBSR0JfQ29kZSAmIDB4RkYpOw0KKyAgd2hpbGUoU1BJX0dldEZsYWdTdGF0dXMoTENEX1NQSSwgU1BJX0ZMQUdfQlNZKSAhPSBSRVNFVCkNCisgIHsNCisgIH0NCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgUG93ZXIgb24gdGhlIExDRC4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9Qb3dlck9uKHZvaWQpDQorew0KKyAgLyogUG93ZXIgT24gc2VxdWVuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE2LCAweDAwMDApOyAvKiBTQVAsIEJUWzM6MF0sIEFQLCBEU1RCLCBTTFAsIFNUQiAqLw0KKyAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTcsIDB4MDAwMCk7IC8qIERDMVsyOjBdLCBEQzBbMjowXSwgVkNbMjowXSAqLw0KKyAgTENEX1dyaXRlUmVnKExDRF9SRUdfMTgsIDB4MDAwMCk7IC8qIFZSRUcxT1VUIHZvbHRhZ2UgKi8NCisgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE5LCAweDAwMDApOyAvKiBWRFZbNDowXSBmb3IgVkNPTSBhbXBsaXR1ZGUgKi8NCisgIF9kZWxheV8oMjApOyAgICAgICAgICAgICAgICAgLyogRGlzLWNoYXJnZSBjYXBhY2l0b3IgcG93ZXIgdm9sdGFnZSAoMjAwbXMpICovDQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xNiwgMHgxN0IwKTsgLyogU0FQLCBCVFszOjBdLCBBUCwgRFNUQiwgU0xQLCBTVEIgKi8NCisgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE3LCAweDAxMzcpOyAvKiBEQzFbMjowXSwgREMwWzI6MF0sIFZDWzI6MF0gKi8NCisgIF9kZWxheV8oNSk7ICAgICAgICAgICAgICAgIC8qIERlbGF5IDUwIG1zICovDQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR18xOCwgMHgwMTM5KTsgLyogVlJFRzFPVVQgdm9sdGFnZSAqLw0KKyAgX2RlbGF5Xyg1KTsgICAgICAgICAgICAgICAgLyogZGVsYXkgNTAgbXMgKi8NCisgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzE5LCAweDFkMDApOyAvKiBWRFZbNDowXSBmb3IgVkNPTSBhbXBsaXR1ZGUgKi8NCisgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzQxLCAweDAwMTMpOyAvKiBWQ01bNDowXSBmb3IgVkNPTUggKi8NCisgIF9kZWxheV8oNSk7ICAgICAgICAgICAgICAgIC8qIGRlbGF5IDUwIG1zICovDQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR183LCAweDAxNzMpOyAgLyogMjYySyBjb2xvciBhbmQgZGlzcGxheSBPTiAqLw0KK30NCisNCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIHRoZSBEaXNwbGF5Lg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX0Rpc3BsYXlPbih2b2lkKQ0KK3sNCisgIC8qIERpc3BsYXkgT24gKi8NCisgIExDRF9Xcml0ZVJlZyhMQ0RfUkVHXzcsIDB4MDE3Myk7IC8qIDI2MksgY29sb3IgYW5kIGRpc3BsYXkgT04gKi8NCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgRGlzYWJsZXMgdGhlIERpc3BsYXkuDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBMQ0RfRGlzcGxheU9mZih2b2lkKQ0KK3sNCisgIC8qIERpc3BsYXkgT2ZmICovDQorICBMQ0RfV3JpdGVSZWcoTENEX1JFR183LCAweDApOw0KK30NCisNCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIExDRCBjb250cm9sIGxpbmVzIGluIE91dHB1dCBQdXNoLVB1bGwgbW9kZS4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9DdHJsTGluZXNDb25maWcodm9pZCkNCit7DQorICBHUElPX0luaXRUeXBlRGVmIEdQSU9fSW5pdFN0cnVjdHVyZTsNCisNCisgIFJDQ19BSEJQZXJpcGhDbG9ja0NtZChMQ0RfTkNTX0dQSU9fQ0xLLCBFTkFCTEUpOw0KKw0KKyAgLyogQ29uZmlndXJlIE5DUyAoUEYuMDIpIGluIE91dHB1dCBQdXNoLVB1bGwgbW9kZSAqLw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gTENEX05DU19QSU47DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19TcGVlZCA9IEdQSU9fU3BlZWRfMk1IejsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX01vZGUgPSBHUElPX01vZGVfT1VUOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fT1R5cGUgPSBHUElPX09UeXBlX1BQOw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUHVQZCA9IEdQSU9fUHVQZF9OT1BVTEw7DQorICBHUElPX0luaXQoTENEX05DU19HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KKw0KKyAgTENEX0N0cmxMaW5lc1dyaXRlKExDRF9OQ1NfR1BJT19QT1JULCBMQ0RfTkNTX1BJTiwgQml0X1NFVCk7DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgb3IgcmVzZXQgTENEIGNvbnRyb2wgbGluZXMuDQorICAqIEBwYXJhbSAgR1BJT3g6IHdoZXJlIHggY2FuIGJlIEIgb3IgRCB0byBzZWxlY3QgdGhlIEdQSU8gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBDdHJsUGluczogdGhlIENvbnRyb2wgbGluZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6DQorICAqICAgICBAYXJnIExDRF9OQ1NfUElOOiBDaGlwIFNlbGVjdCBwaW4NCisgICogICAgIEBhcmcgTENEX05XUl9QSU46IFJlYWQvV3JpdGUgU2VsZWN0aW9uIHBpbg0KKyAgKiAgICAgQGFyZyBMQ0RfUlNfUElOOiBSZWdpc3Rlci9SQU0gU2VsZWN0aW9uIHBpbg0KKyAgKiBAcGFyYW0gIEJpdFZhbDogc3BlY2lmaWVzIHRoZSB2YWx1ZSB0byBiZSB3cml0dGVuIHRvIHRoZSBzZWxlY3RlZCBiaXQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOg0KKyAgKiAgICAgQGFyZyBCaXRfUkVTRVQ6IHRvIGNsZWFyIHRoZSBwb3J0IHBpbg0KKyAgKiAgICAgQGFyZyBCaXRfU0VUOiB0byBzZXQgdGhlIHBvcnQgcGluDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIExDRF9DdHJsTGluZXNXcml0ZShHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBDdHJsUGlucywgQml0QWN0aW9uIEJpdFZhbCkNCit7DQorICAvKiBTZXQgb3IgUmVzZXQgdGhlIGNvbnRyb2wgbGluZSAqLw0KKyAgR1BJT19Xcml0ZUJpdChHUElPeCwgQ3RybFBpbnMsIEJpdFZhbCk7DQorfQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIExDRF9TUEkgaW50ZXJmYWNlLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTENEX1NQSUNvbmZpZyh2b2lkKQ0KK3sNCisgIFNQSV9Jbml0VHlwZURlZiAgICBTUElfSW5pdFN0cnVjdHVyZTsNCisgIEdQSU9fSW5pdFR5cGVEZWYgICBHUElPX0luaXRTdHJ1Y3R1cmU7DQorDQorICAvKiBFbmFibGUgTENEX1NQSV9TQ0tfR1BJT19DTEssIExDRF9TUElfTUlTT19HUElPX0NMSyBhbmQgTENEX1NQSV9NT1NJX0dQSU9fQ0xLIGNsb2NrICovDQorICBSQ0NfQUhCUGVyaXBoQ2xvY2tDbWQoTENEX1NQSV9TQ0tfR1BJT19DTEsgfCBMQ0RfU1BJX01JU09fR1BJT19DTEsgfCBMQ0RfU1BJX01PU0lfR1BJT19DTEssIEVOQUJMRSk7DQorDQorICAvKiBFbmFibGUgTENEX1NQSSBhbmQgU1lTQ0ZHIGNsb2NrICAqLw0KKyAgUkNDX0FQQjJQZXJpcGhDbG9ja0NtZChMQ0RfU1BJX0NMSyB8IFJDQ19BUEIyUGVyaXBoX1NZU0NGRywgRU5BQkxFKTsNCisNCisgIC8qIENvbmZpZ3VyZSBMQ0RfU1BJIFNDSyBwaW4gKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IExDRF9TUElfU0NLX1BJTjsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1NwZWVkID0gR1BJT19TcGVlZF80ME1IejsNCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX01vZGUgPSBHUElPX01vZGVfQUY7DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19PVHlwZSA9IEdQSU9fT1R5cGVfUFA7DQorICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QdVBkID0gR1BJT19QdVBkX05PUFVMTDsNCisgIEdQSU9fSW5pdChMQ0RfU1BJX1NDS19HUElPX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOw0KKw0KKyAgLyogQ29uZmlndXJlIExDRF9TUEkgTUlTTyBwaW4gKi8NCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IExDRF9TUElfTUlTT19QSU47DQorICBHUElPX0luaXQoTENEX1NQSV9NSVNPX0dQSU9fUE9SVCwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7DQorDQorICAvKiBDb25maWd1cmUgTENEX1NQSSBNT1NJIHBpbiAqLw0KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gTENEX1NQSV9NT1NJX1BJTjsNCisgIEdQSU9fSW5pdChMQ0RfU1BJX01PU0lfR1BJT19QT1JULCAmR1BJT19Jbml0U3RydWN0dXJlKTsNCisNCisgIC8qIENvbm5lY3QgUEUuMTMgdG8gU1BJIFNDSyAqLw0KKyAgR1BJT19QaW5BRkNvbmZpZyhMQ0RfU1BJX1NDS19HUElPX1BPUlQsIExDRF9TUElfU0NLX1NPVVJDRSwgTENEX1NQSV9TQ0tfQUYpOw0KKw0KKyAgLyogQ29ubmVjdCBQRS4xNCB0byBTUEkgTUlTTyAqLw0KKyAgR1BJT19QaW5BRkNvbmZpZyhMQ0RfU1BJX01JU09fR1BJT19QT1JULCBMQ0RfU1BJX01JU09fU09VUkNFLCBMQ0RfU1BJX01JU09fQUYpOw0KKw0KKyAgLyogQ29ubmVjdCBQRS4xNSB0byBTUEkgTU9TSSAqLw0KKyAgR1BJT19QaW5BRkNvbmZpZyhMQ0RfU1BJX01PU0lfR1BJT19QT1JULCBMQ0RfU1BJX01PU0lfU09VUkNFLCBMQ0RfU1BJX01PU0lfQUYpOw0KKw0KKyAgU1BJX0RlSW5pdChMQ0RfU1BJKTsNCisNCisgIC8qIFNQSSBDb25maWcgKi8NCisgIFNQSV9Jbml0U3RydWN0dXJlLlNQSV9EaXJlY3Rpb24gPSBTUElfRGlyZWN0aW9uXzJMaW5lc19GdWxsRHVwbGV4Ow0KKyAgU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX01vZGUgPSBTUElfTW9kZV9NYXN0ZXI7DQorICBTUElfSW5pdFN0cnVjdHVyZS5TUElfRGF0YVNpemUgPSBTUElfRGF0YVNpemVfOGI7DQorICBTUElfSW5pdFN0cnVjdHVyZS5TUElfQ1BPTCA9IFNQSV9DUE9MX0hpZ2g7DQorICBTUElfSW5pdFN0cnVjdHVyZS5TUElfQ1BIQSA9IFNQSV9DUEhBXzJFZGdlOw0KKyAgU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX05TUyA9IFNQSV9OU1NfU29mdDsNCisgIFNQSV9Jbml0U3RydWN0dXJlLlNQSV9CYXVkUmF0ZVByZXNjYWxlciA9IFNQSV9CYXVkUmF0ZVByZXNjYWxlcl8yOw0KKyAgU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX0ZpcnN0Qml0ID0gU1BJX0ZpcnN0Qml0X01TQjsNCisgIFNQSV9Jbml0U3RydWN0dXJlLlNQSV9DUkNQb2x5bm9taWFsID0gNzsNCisgIFNQSV9Jbml0KExDRF9TUEksICZTUElfSW5pdFN0cnVjdHVyZSk7DQorDQorICAvKiBTUEkgZW5hYmxlICovDQorICBTUElfQ21kKExDRF9TUEksIEVOQUJMRSk7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERpc3BsYXlzIGEgcGl4ZWwuDQorICAqIEBwYXJhbSAgeDogcGl4ZWwgeC4NCisgICogQHBhcmFtICB5OiBwaXhlbCB5Lg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQorc3RhdGljIHZvaWQgUHV0UGl4ZWwoaW50MTZfdCB4LCBpbnQxNl90IHkpDQorew0KKyAgaWYoeCA8IDAgfHwgeCA+IDIzOSB8fCB5IDwgMCB8fCB5ID4gMzE5KQ0KKyAgew0KKyAgICByZXR1cm47DQorICB9DQorICBMQ0RfRHJhd0xpbmUoeCwgeSwgMSwgTENEX0RJUl9IT1JJWk9OVEFMKTsNCit9DQorDQorI2lmbmRlZiBVU0VfRGVsYXkNCisvKioNCisgICogQGJyaWVmICBJbnNlcnRzIGEgZGVsYXkgdGltZS4NCisgICogQHBhcmFtICBuQ291bnQ6IHNwZWNpZmllcyB0aGUgZGVsYXkgdGltZSBsZW5ndGguDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCitzdGF0aWMgdm9pZCBkZWxheShfX0lPIHVpbnQzMl90IG5Db3VudCkNCit7DQorICBfX0lPIHVpbnQzMl90IGluZGV4ID0gMDsNCisgIGZvcihpbmRleCA9ICgzNDAwMCAqIG5Db3VudCk7IGluZGV4ICE9IDA7IGluZGV4LS0pDQorICB7DQorICB9DQorfQ0KKyNlbmRpZiAvKiBVU0VfRGVsYXkqLw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxNTJfRVZBTC9zdG0zMmwxNTJfZXZhbF9sY2QuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDE1Ml9FVkFML3N0bTMybDE1Ml9ldmFsX2xjZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYzA2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxNTJfRVZBTC9zdG0zMmwxNTJfZXZhbF9sY2QuaApAQCAtMCwwICsxLDM5MSBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgc3RtMzJsMTUyX2V2YWxfbGNkLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjQuNC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBzdG0zMmwxNTJfZXZhbF9sY2QNCisgICogICAgICAgICAgZmlybXdhcmUgZHJpdmVyLg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBjb3B5DQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKi8NCisNCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZm5kZWYgX19TVE0zMkwxNTJfRVZBTF9MQ0RfSA0KKyNkZWZpbmUgX19TVE0zMkwxNTJfRVZBTF9MQ0RfSA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyBleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpbmNsdWRlICJzdG0zMmwxeHguaCINCisjaW5jbHVkZSAiLi4vQ29tbW9uL2ZvbnRzLmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFV0aWxpdGllcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJfRVZBTA0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMTUyX0VWQUwNCisgICogQHsNCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDE1Ml9FVkFMX0xDRA0KKyAgKiBAew0KKyAgKi8NCisNCisNCisvKiogQGRlZmdyb3VwIFNUTTMyTDE1Ml9FVkFMX0xDRF9FeHBvcnRlZF9UeXBlcw0KKyAgKiBAew0KKyAgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIGludDE2X3QgWDsNCisgIGludDE2X3QgWTsNCit9IFBvaW50LCAqIHBQb2ludDsNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBTVE0zMkwxNTJfRVZBTF9MQ0RfRXhwb3J0ZWRfQ29uc3RhbnRzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAqIEBicmllZiBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IHdhbnQgdG8gdXNlIExDRF9EcmF3Qk1QIGZ1bmN0aW9uIHRvDQorICogICAgICAgIGRpc3BsYXkgYSBiaXRtYXAgcGljdHVyZSBvbiB0aGUgTENELiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB0aGUgYml0bWFwDQorICogICAgICAgIGZpbGUgaXMgbG9hZGVkIGluIHRoZSBTUEkgRmxhc2ggKG1vdW50ZWQgb24gU1RNMzJMMTUyLUVWQUwgYm9hcmQpLCBob3dldmVyDQorICogICAgICAgIHVzZXIgY2FuIHRhaWxvciBpdCBhY2NvcmRpbmcgdG8gaGlzIGFwcGxpY2F0aW9uIGhhcmR3YXJlIHJlcXVpcmVtZW50Lg0KKyAqLw0KKy8qI2RlZmluZSBVU0VfTENEX0RyYXdCTVAqLw0KKw0KKy8qKg0KKyAqIEBicmllZiBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IHdhbnQgdG8gdXNlIHVzZXIgZGVmaW5lZCBEZWxheSBmdW5jdGlvbg0KKyAqICAgICAgICAoZm9yIHByZWNpc2UgdGltaW5nKSwgb3RoZXJ3aXNlIGRlZmF1bHQgX2RlbGF5XyBmdW5jdGlvbiBkZWZpbmVkIHdpdGhpbg0KKyAqICAgICAgICAgdGhpcyBkcml2ZXIgaXMgdXNlZCAobGVzcyBwcmVjaXNlIHRpbWluZykuDQorICovDQorLyogI2RlZmluZSBVU0VfRGVsYXkgKi8NCisNCisjaWZkZWYgVVNFX0RlbGF5DQorI2luY2x1ZGUgIm1haW4uaCINCisNCisgICNkZWZpbmUgX2RlbGF5XyAgICAgRGVsYXkgIC8qICE8IFVzZXIgY2FuIHByb3ZpZGUgbW9yZSB0aW1pbmcgcHJlY2lzZSBfZGVsYXlfIGZ1bmN0aW9uDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2l0aCAxMG1zIHRpbWUgYmFzZSksIHVzaW5nIFN5c1RpY2sgZm9yIGV4YW1wbGUgKi8NCisjZWxzZQ0KKyAgI2RlZmluZSBfZGVsYXlfICAgICBkZWxheSAgICAgIC8qICE8IERlZmF1bHQgX2RlbGF5XyBmdW5jdGlvbiB3aXRoIGxlc3MgcHJlY2lzZSB0aW1pbmcgKi8NCisjZW5kaWYNCisNCisNCisvKioNCisgICogQGJyaWVmICBMQ0QgQ29udHJvbCBwaW5zDQorICAqLw0KKyNkZWZpbmUgTENEX05DU19QSU4gICAgICAgICAgICAgR1BJT19QaW5fMg0KKyNkZWZpbmUgTENEX05DU19HUElPX1BPUlQgICAgICAgR1BJT0gNCisjZGVmaW5lIExDRF9OQ1NfR1BJT19DTEsgICAgICAgIFJDQ19BSEJQZXJpcGhfR1BJT0gNCisNCisvKioNCisgICogQGJyaWVmICBMQ0QgU1BJIEludGVyZmFjZSBwaW5zDQorICAqLw0KKyNkZWZpbmUgTENEX1NQSV9TQ0tfUElOICAgICAgICAgICAgICAgR1BJT19QaW5fMTMgICAgICAgICAgICAgICAgICAgIC8qIFBFLjEzICovDQorI2RlZmluZSBMQ0RfU1BJX1NDS19HUElPX1BPUlQgICAgICAgICBHUElPRSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1BJT0UgKi8NCisjZGVmaW5lIExDRF9TUElfU0NLX0dQSU9fQ0xLICAgICAgICAgIFJDQ19BSEJQZXJpcGhfR1BJT0UNCisjZGVmaW5lIExDRF9TUElfU0NLX1NPVVJDRSAgICAgICAgICAgIEdQSU9fUGluU291cmNlMTMNCisjZGVmaW5lIExDRF9TUElfU0NLX0FGICAgICAgICAgICAgICAgIEdQSU9fQUZfU1BJMQ0KKyNkZWZpbmUgTENEX1NQSV9NSVNPX1BJTiAgICAgICAgICAgICAgR1BJT19QaW5fMTQgICAgICAgICAgICAgICAgICAgIC8qIFBFLjE0ICovDQorI2RlZmluZSBMQ0RfU1BJX01JU09fR1BJT19QT1JUICAgICAgICBHUElPRSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1BJT0UgKi8NCisjZGVmaW5lIExDRF9TUElfTUlTT19HUElPX0NMSyAgICAgICAgIFJDQ19BSEJQZXJpcGhfR1BJT0UNCisjZGVmaW5lIExDRF9TUElfTUlTT19TT1VSQ0UgICAgICAgICAgIEdQSU9fUGluU291cmNlMTQNCisjZGVmaW5lIExDRF9TUElfTUlTT19BRiAgICAgICAgICAgICAgIEdQSU9fQUZfU1BJMQ0KKyNkZWZpbmUgTENEX1NQSV9NT1NJX1BJTiAgICAgICAgICAgICAgR1BJT19QaW5fMTUgICAgICAgICAgICAgICAgICAgIC8qIFBFLjE1ICovDQorI2RlZmluZSBMQ0RfU1BJX01PU0lfR1BJT19QT1JUICAgICAgICBHUElPRSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1BJT0UgKi8NCisjZGVmaW5lIExDRF9TUElfTU9TSV9HUElPX0NMSyAgICAgICAgIFJDQ19BSEJQZXJpcGhfR1BJT0UNCisjZGVmaW5lIExDRF9TUElfTU9TSV9TT1VSQ0UgICAgICAgICAgIEdQSU9fUGluU291cmNlMTUNCisjZGVmaW5lIExDRF9TUElfTU9TSV9BRiAgICAgICAgICAgICAgIEdQSU9fQUZfU1BJMQ0KKyNkZWZpbmUgTENEX1NQSSAgICAgICAgICAgICAgICAgICAgICAgU1BJMQ0KKyNkZWZpbmUgTENEX1NQSV9DTEsgICAgICAgICAgICAgICAgICAgUkNDX0FQQjJQZXJpcGhfU1BJMQ0KKw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIExDRCBSZWdpc3RlcnMNCisgICovDQorI2RlZmluZSBMQ0RfUkVHXzAgICAgICAgICAgICAgMHgwMA0KKyNkZWZpbmUgTENEX1JFR18xICAgICAgICAgICAgIDB4MDENCisjZGVmaW5lIExDRF9SRUdfMiAgICAgICAgICAgICAweDAyDQorI2RlZmluZSBMQ0RfUkVHXzMgICAgICAgICAgICAgMHgwMw0KKyNkZWZpbmUgTENEX1JFR180ICAgICAgICAgICAgIDB4MDQNCisjZGVmaW5lIExDRF9SRUdfNSAgICAgICAgICAgICAweDA1DQorI2RlZmluZSBMQ0RfUkVHXzYgICAgICAgICAgICAgMHgwNg0KKyNkZWZpbmUgTENEX1JFR183ICAgICAgICAgICAgIDB4MDcNCisjZGVmaW5lIExDRF9SRUdfOCAgICAgICAgICAgICAweDA4DQorI2RlZmluZSBMQ0RfUkVHXzkgICAgICAgICAgICAgMHgwOQ0KKyNkZWZpbmUgTENEX1JFR18xMCAgICAgICAgICAgIDB4MEENCisjZGVmaW5lIExDRF9SRUdfMTIgICAgICAgICAgICAweDBDDQorI2RlZmluZSBMQ0RfUkVHXzEzICAgICAgICAgICAgMHgwRA0KKyNkZWZpbmUgTENEX1JFR18xNCAgICAgICAgICAgIDB4MEUNCisjZGVmaW5lIExDRF9SRUdfMTUgICAgICAgICAgICAweDBGDQorI2RlZmluZSBMQ0RfUkVHXzE2ICAgICAgICAgICAgMHgxMA0KKyNkZWZpbmUgTENEX1JFR18xNyAgICAgICAgICAgIDB4MTENCisjZGVmaW5lIExDRF9SRUdfMTggICAgICAgICAgICAweDEyDQorI2RlZmluZSBMQ0RfUkVHXzE5ICAgICAgICAgICAgMHgxMw0KKyNkZWZpbmUgTENEX1JFR18yMCAgICAgICAgICAgIDB4MTQNCisjZGVmaW5lIExDRF9SRUdfMjEgICAgICAgICAgICAweDE1DQorI2RlZmluZSBMQ0RfUkVHXzIyICAgICAgICAgICAgMHgxNg0KKyNkZWZpbmUgTENEX1JFR18yMyAgICAgICAgICAgIDB4MTcNCisjZGVmaW5lIExDRF9SRUdfMjQgICAgICAgICAgICAweDE4DQorI2RlZmluZSBMQ0RfUkVHXzI1ICAgICAgICAgICAgMHgxOQ0KKyNkZWZpbmUgTENEX1JFR18yNiAgICAgICAgICAgIDB4MUENCisjZGVmaW5lIExDRF9SRUdfMjcgICAgICAgICAgICAweDFCDQorI2RlZmluZSBMQ0RfUkVHXzI4ICAgICAgICAgICAgMHgxQw0KKyNkZWZpbmUgTENEX1JFR18yOSAgICAgICAgICAgIDB4MUQNCisjZGVmaW5lIExDRF9SRUdfMzAgICAgICAgICAgICAweDFFDQorI2RlZmluZSBMQ0RfUkVHXzMxICAgICAgICAgICAgMHgxRg0KKyNkZWZpbmUgTENEX1JFR18zMiAgICAgICAgICAgIDB4MjANCisjZGVmaW5lIExDRF9SRUdfMzMgICAgICAgICAgICAweDIxDQorI2RlZmluZSBMQ0RfUkVHXzM0ICAgICAgICAgICAgMHgyMg0KKyNkZWZpbmUgTENEX1JFR18zNiAgICAgICAgICAgIDB4MjQNCisjZGVmaW5lIExDRF9SRUdfMzcgICAgICAgICAgICAweDI1DQorI2RlZmluZSBMQ0RfUkVHXzQwICAgICAgICAgICAgMHgyOA0KKyNkZWZpbmUgTENEX1JFR180MSAgICAgICAgICAgIDB4MjkNCisjZGVmaW5lIExDRF9SRUdfNDMgICAgICAgICAgICAweDJCDQorI2RlZmluZSBMQ0RfUkVHXzQ1ICAgICAgICAgICAgMHgyRA0KKyNkZWZpbmUgTENEX1JFR180OCAgICAgICAgICAgIDB4MzANCisjZGVmaW5lIExDRF9SRUdfNDkgICAgICAgICAgICAweDMxDQorI2RlZmluZSBMQ0RfUkVHXzUwICAgICAgICAgICAgMHgzMg0KKyNkZWZpbmUgTENEX1JFR181MSAgICAgICAgICAgIDB4MzMNCisjZGVmaW5lIExDRF9SRUdfNTIgICAgICAgICAgICAweDM0DQorI2RlZmluZSBMQ0RfUkVHXzUzICAgICAgICAgICAgMHgzNQ0KKyNkZWZpbmUgTENEX1JFR181NCAgICAgICAgICAgIDB4MzYNCisjZGVmaW5lIExDRF9SRUdfNTUgICAgICAgICAgICAweDM3DQorI2RlZmluZSBMQ0RfUkVHXzU2ICAgICAgICAgICAgMHgzOA0KKyNkZWZpbmUgTENEX1JFR181NyAgICAgICAgICAgIDB4MzkNCisjZGVmaW5lIExDRF9SRUdfNTkgICAgICAgICAgICAweDNCDQorI2RlZmluZSBMQ0RfUkVHXzYwICAgICAgICAgICAgMHgzQw0KKyNkZWZpbmUgTENEX1JFR182MSAgICAgICAgICAgIDB4M0QNCisjZGVmaW5lIExDRF9SRUdfNjIgICAgICAgICAgICAweDNFDQorI2RlZmluZSBMQ0RfUkVHXzYzICAgICAgICAgICAgMHgzRg0KKyNkZWZpbmUgTENEX1JFR182NCAgICAgICAgICAgIDB4NDANCisjZGVmaW5lIExDRF9SRUdfNjUgICAgICAgICAgICAweDQxDQorI2RlZmluZSBMQ0RfUkVHXzY2ICAgICAgICAgICAgMHg0Mg0KKyNkZWZpbmUgTENEX1JFR182NyAgICAgICAgICAgIDB4NDMNCisjZGVmaW5lIExDRF9SRUdfNjggICAgICAgICAgICAweDQ0DQorI2RlZmluZSBMQ0RfUkVHXzY5ICAgICAgICAgICAgMHg0NQ0KKyNkZWZpbmUgTENEX1JFR183MCAgICAgICAgICAgIDB4NDYNCisjZGVmaW5lIExDRF9SRUdfNzEgICAgICAgICAgICAweDQ3DQorI2RlZmluZSBMQ0RfUkVHXzcyICAgICAgICAgICAgMHg0OA0KKyNkZWZpbmUgTENEX1JFR183MyAgICAgICAgICAgIDB4NDkNCisjZGVmaW5lIExDRF9SRUdfNzQgICAgICAgICAgICAweDRBDQorI2RlZmluZSBMQ0RfUkVHXzc1ICAgICAgICAgICAgMHg0Qg0KKyNkZWZpbmUgTENEX1JFR183NiAgICAgICAgICAgIDB4NEMNCisjZGVmaW5lIExDRF9SRUdfNzcgICAgICAgICAgICAweDREDQorI2RlZmluZSBMQ0RfUkVHXzc4ICAgICAgICAgICAgMHg0RQ0KKyNkZWZpbmUgTENEX1JFR183OSAgICAgICAgICAgIDB4NEYNCisjZGVmaW5lIExDRF9SRUdfODAgICAgICAgICAgICAweDUwDQorI2RlZmluZSBMQ0RfUkVHXzgxICAgICAgICAgICAgMHg1MQ0KKyNkZWZpbmUgTENEX1JFR184MiAgICAgICAgICAgIDB4NTINCisjZGVmaW5lIExDRF9SRUdfODMgICAgICAgICAgICAweDUzDQorI2RlZmluZSBMQ0RfUkVHXzk2ICAgICAgICAgICAgMHg2MA0KKyNkZWZpbmUgTENEX1JFR185NyAgICAgICAgICAgIDB4NjENCisjZGVmaW5lIExDRF9SRUdfMTA2ICAgICAgICAgICAweDZBDQorI2RlZmluZSBMQ0RfUkVHXzExOCAgICAgICAgICAgMHg3Ng0KKyNkZWZpbmUgTENEX1JFR18xMjggICAgICAgICAgIDB4ODANCisjZGVmaW5lIExDRF9SRUdfMTI5ICAgICAgICAgICAweDgxDQorI2RlZmluZSBMQ0RfUkVHXzEzMCAgICAgICAgICAgMHg4Mg0KKyNkZWZpbmUgTENEX1JFR18xMzEgICAgICAgICAgIDB4ODMNCisjZGVmaW5lIExDRF9SRUdfMTMyICAgICAgICAgICAweDg0DQorI2RlZmluZSBMQ0RfUkVHXzEzMyAgICAgICAgICAgMHg4NQ0KKyNkZWZpbmUgTENEX1JFR18xMzQgICAgICAgICAgIDB4ODYNCisjZGVmaW5lIExDRF9SRUdfMTM1ICAgICAgICAgICAweDg3DQorI2RlZmluZSBMQ0RfUkVHXzEzNiAgICAgICAgICAgMHg4OA0KKyNkZWZpbmUgTENEX1JFR18xMzcgICAgICAgICAgIDB4ODkNCisjZGVmaW5lIExDRF9SRUdfMTM5ICAgICAgICAgICAweDhCDQorI2RlZmluZSBMQ0RfUkVHXzE0MCAgICAgICAgICAgMHg4Qw0KKyNkZWZpbmUgTENEX1JFR18xNDEgICAgICAgICAgIDB4OEQNCisjZGVmaW5lIExDRF9SRUdfMTQzICAgICAgICAgICAweDhGDQorI2RlZmluZSBMQ0RfUkVHXzE0NCAgICAgICAgICAgMHg5MA0KKyNkZWZpbmUgTENEX1JFR18xNDUgICAgICAgICAgIDB4OTENCisjZGVmaW5lIExDRF9SRUdfMTQ2ICAgICAgICAgICAweDkyDQorI2RlZmluZSBMQ0RfUkVHXzE0NyAgICAgICAgICAgMHg5Mw0KKyNkZWZpbmUgTENEX1JFR18xNDggICAgICAgICAgIDB4OTQNCisjZGVmaW5lIExDRF9SRUdfMTQ5ICAgICAgICAgICAweDk1DQorI2RlZmluZSBMQ0RfUkVHXzE1MCAgICAgICAgICAgMHg5Ng0KKyNkZWZpbmUgTENEX1JFR18xNTEgICAgICAgICAgIDB4OTcNCisjZGVmaW5lIExDRF9SRUdfMTUyICAgICAgICAgICAweDk4DQorI2RlZmluZSBMQ0RfUkVHXzE1MyAgICAgICAgICAgMHg5OQ0KKyNkZWZpbmUgTENEX1JFR18xNTQgICAgICAgICAgIDB4OUENCisjZGVmaW5lIExDRF9SRUdfMTU3ICAgICAgICAgICAweDlEDQorI2RlZmluZSBMQ0RfUkVHXzE5MiAgICAgICAgICAgMHhDMA0KKyNkZWZpbmUgTENEX1JFR18xOTMgICAgICAgICAgIDB4QzENCisjZGVmaW5lIExDRF9SRUdfMjI3ICAgICAgICAgICAweEUzDQorI2RlZmluZSBMQ0RfUkVHXzIyOSAgICAgICAgICAgMHhFNQ0KKyNkZWZpbmUgTENEX1JFR18yMzEgICAgICAgICAgIDB4RTcNCisjZGVmaW5lIExDRF9SRUdfMjM5ICAgICAgICAgICAweEVGDQorDQorDQorLyoqDQorICAqIEBicmllZiAgTENEIGNvbG9yDQorICAqLw0KKyNkZWZpbmUgTENEX0NPTE9SX1dISVRFICAgICAgICAgIDB4RkZGRg0KKyNkZWZpbmUgTENEX0NPTE9SX0JMQUNLICAgICAgICAgIDB4MDAwMA0KKyNkZWZpbmUgTENEX0NPTE9SX0dSRVkgICAgICAgICAgIDB4RjdERQ0KKyNkZWZpbmUgTENEX0NPTE9SX0JMVUUgICAgICAgICAgIDB4MDAxRg0KKyNkZWZpbmUgTENEX0NPTE9SX0JMVUUyICAgICAgICAgIDB4MDUxRg0KKyNkZWZpbmUgTENEX0NPTE9SX1JFRCAgICAgICAgICAgIDB4RjgwMA0KKyNkZWZpbmUgTENEX0NPTE9SX01BR0VOVEEgICAgICAgIDB4RjgxRg0KKyNkZWZpbmUgTENEX0NPTE9SX0dSRUVOICAgICAgICAgIDB4MDdFMA0KKyNkZWZpbmUgTENEX0NPTE9SX0NZQU4gICAgICAgICAgIDB4N0ZGRg0KKyNkZWZpbmUgTENEX0NPTE9SX1lFTExPVyAgICAgICAgIDB4RkZFMA0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIExDRCBMaW5lcyBkZXBlbmRpbmcgb24gdGhlIGNob3NlbiBmb250cy4NCisgICovDQorI2RlZmluZSBMQ0RfTElORV8wICAgICAgICAgICAgICAgTElORSgwKQ0KKyNkZWZpbmUgTENEX0xJTkVfMSAgICAgICAgICAgICAgIExJTkUoMSkNCisjZGVmaW5lIExDRF9MSU5FXzIgICAgICAgICAgICAgICBMSU5FKDIpDQorI2RlZmluZSBMQ0RfTElORV8zICAgICAgICAgICAgICAgTElORSgzKQ0KKyNkZWZpbmUgTENEX0xJTkVfNCAgICAgICAgICAgICAgIExJTkUoNCkNCisjZGVmaW5lIExDRF9MSU5FXzUgICAgICAgICAgICAgICBMSU5FKDUpDQorI2RlZmluZSBMQ0RfTElORV82ICAgICAgICAgICAgICAgTElORSg2KQ0KKyNkZWZpbmUgTENEX0xJTkVfNyAgICAgICAgICAgICAgIExJTkUoNykNCisjZGVmaW5lIExDRF9MSU5FXzggICAgICAgICAgICAgICBMSU5FKDgpDQorI2RlZmluZSBMQ0RfTElORV85ICAgICAgICAgICAgICAgTElORSg5KQ0KKyNkZWZpbmUgTENEX0xJTkVfMTAgICAgICAgICAgICAgIExJTkUoMTApDQorI2RlZmluZSBMQ0RfTElORV8xMSAgICAgICAgICAgICAgTElORSgxMSkNCisjZGVmaW5lIExDRF9MSU5FXzEyICAgICAgICAgICAgICBMSU5FKDEyKQ0KKyNkZWZpbmUgTENEX0xJTkVfMTMgICAgICAgICAgICAgIExJTkUoMTMpDQorI2RlZmluZSBMQ0RfTElORV8xNCAgICAgICAgICAgICAgTElORSgxNCkNCisjZGVmaW5lIExDRF9MSU5FXzE1ICAgICAgICAgICAgICBMSU5FKDE1KQ0KKyNkZWZpbmUgTENEX0xJTkVfMTYgICAgICAgICAgICAgIExJTkUoMTYpDQorI2RlZmluZSBMQ0RfTElORV8xNyAgICAgICAgICAgICAgTElORSgxNykNCisjZGVmaW5lIExDRF9MSU5FXzE4ICAgICAgICAgICAgICBMSU5FKDE4KQ0KKyNkZWZpbmUgTENEX0xJTkVfMTkgICAgICAgICAgICAgIExJTkUoMTkpDQorI2RlZmluZSBMQ0RfTElORV8yMCAgICAgICAgICAgICAgTElORSgyMCkNCisjZGVmaW5lIExDRF9MSU5FXzIxICAgICAgICAgICAgICBMSU5FKDIxKQ0KKyNkZWZpbmUgTENEX0xJTkVfMjIgICAgICAgICAgICAgIExJTkUoMjIpDQorI2RlZmluZSBMQ0RfTElORV8yMyAgICAgICAgICAgICAgTElORSgyMykNCisjZGVmaW5lIExDRF9MSU5FXzI0ICAgICAgICAgICAgICBMSU5FKDI0KQ0KKyNkZWZpbmUgTENEX0xJTkVfMjUgICAgICAgICAgICAgIExJTkUoMjUpDQorI2RlZmluZSBMQ0RfTElORV8yNiAgICAgICAgICAgICAgTElORSgyNikNCisjZGVmaW5lIExDRF9MSU5FXzI3ICAgICAgICAgICAgICBMSU5FKDI3KQ0KKyNkZWZpbmUgTENEX0xJTkVfMjggICAgICAgICAgICAgIExJTkUoMjgpDQorI2RlZmluZSBMQ0RfTElORV8yOSAgICAgICAgICAgICAgTElORSgyOSkNCisNCisNCisvKioNCisgICogQGJyaWVmIExDRCBkZWZhdWx0IGZvbnQNCisgICovDQorI2RlZmluZSBMQ0RfREVGQVVMVF9GT05UICAgICAgICAgRm9udDE2eDI0DQorDQorLyoqDQorICAqIEBicmllZiAgTENEIERpcmVjdGlvbg0KKyAgKi8NCisjZGVmaW5lIExDRF9ESVJfSE9SSVpPTlRBTCAgICAgICAweDAwMDANCisjZGVmaW5lIExDRF9ESVJfVkVSVElDQUwgICAgICAgICAweDAwMDENCisNCisvKioNCisgICogQGJyaWVmICBMQ0QgU2l6ZSAoV2lkdGggYW5kIEhlaWdodCkNCisgICovDQorI2RlZmluZSBMQ0RfUElYRUxfV0lEVEggICAgICAgICAgMHgwMTQwDQorI2RlZmluZSBMQ0RfUElYRUxfSEVJR0hUICAgICAgICAgMHgwMEYwDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTENEX0V4cG9ydGVkX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisjZGVmaW5lIEFTU0VNQkxFX1JHQihSLCBHLCBCKSAgICAoKCgoUikmIDB4RjgpIDw8IDgpIHwgKCgoRykgJiAweEZDKSA8PCAzKSB8ICgoKEIpICYgMHhGOCkgPj4gMykpDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1RNMzJMMTUyX0VWQUxfTENEX0V4cG9ydGVkX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCit2b2lkIFNUTTMyTDE1Ml9MQ0RfRGVJbml0KHZvaWQpOw0KK3ZvaWQgTENEX1NldHVwKHZvaWQpOw0KK3ZvaWQgU1RNMzJMMTUyX0xDRF9Jbml0KHZvaWQpOw0KK3ZvaWQgTENEX1NldENvbG9ycyhfX0lPIHVpbnQxNl90IF9UZXh0Q29sb3IsIF9fSU8gdWludDE2X3QgX0JhY2tDb2xvcik7DQordm9pZCBMQ0RfR2V0Q29sb3JzKF9fSU8gdWludDE2X3QgKl9UZXh0Q29sb3IsIF9fSU8gdWludDE2X3QgKl9CYWNrQ29sb3IpOw0KK3ZvaWQgTENEX1NldFRleHRDb2xvcihfX0lPIHVpbnQxNl90IENvbG9yKTsNCit2b2lkIExDRF9TZXRCYWNrQ29sb3IoX19JTyB1aW50MTZfdCBDb2xvcik7DQordm9pZCBMQ0RfQ2xlYXJMaW5lKHVpbnQ4X3QgTGluZSk7DQordm9pZCBMQ0RfQ2xlYXIodWludDE2X3QgQ29sb3IpOw0KK3ZvaWQgTENEX1NldEN1cnNvcih1aW50OF90IFhwb3MsIHVpbnQxNl90IFlwb3MpOw0KK3ZvaWQgTENEX0RyYXdDaGFyKHVpbnQ4X3QgWHBvcywgdWludDE2X3QgWXBvcywgY29uc3QgdWludDE2X3QgKmMpOw0KK3ZvaWQgTENEX0Rpc3BsYXlDaGFyKHVpbnQ4X3QgTGluZSwgdWludDE2X3QgQ29sdW1uLCB1aW50OF90IEFzY2lpKTsNCit2b2lkIExDRF9TZXRGb250KHNGT05UICpmb250cyk7DQorc0ZPTlQgKkxDRF9HZXRGb250KHZvaWQpOw0KK3ZvaWQgTENEX0Rpc3BsYXlTdHJpbmdMaW5lKHVpbnQ4X3QgTGluZSwgdWludDhfdCAqcHRyKTsNCit2b2lkIExDRF9TZXREaXNwbGF5V2luZG93KHVpbnQ4X3QgWHBvcywgdWludDE2X3QgWXBvcywgdWludDhfdCBIZWlnaHQsIHVpbnQxNl90IFdpZHRoKTsNCit2b2lkIExDRF9XaW5kb3dNb2RlRGlzYWJsZSh2b2lkKTsNCit2b2lkIExDRF9EcmF3TGluZSh1aW50OF90IFhwb3MsIHVpbnQxNl90IFlwb3MsIHVpbnQxNl90IExlbmd0aCwgdWludDhfdCBEaXJlY3Rpb24pOw0KK3ZvaWQgTENEX0RyYXdSZWN0KHVpbnQ4X3QgWHBvcywgdWludDE2X3QgWXBvcywgdWludDhfdCBIZWlnaHQsIHVpbnQxNl90IFdpZHRoKTsNCit2b2lkIExDRF9EcmF3Q2lyY2xlKHVpbnQ4X3QgWHBvcywgdWludDE2X3QgWXBvcywgdWludDE2X3QgUmFkaXVzKTsNCit2b2lkIExDRF9EcmF3TW9ub1BpY3QoY29uc3QgdWludDMyX3QgKlBpY3QpOw0KK3ZvaWQgTENEX0RyYXdCTVAodWludDMyX3QgQm1wQWRkcmVzcyk7DQordm9pZCBMQ0RfRHJhd1VuaUxpbmUodWludDE2X3QgeDEsIHVpbnQxNl90IHkxLCB1aW50MTZfdCB4MiwgdWludDE2X3QgeTIpOw0KK3ZvaWQgTENEX0RyYXdGdWxsUmVjdCh1aW50MTZfdCBYcG9zLCB1aW50MTZfdCBZcG9zLCB1aW50MTZfdCBXaWR0aCwgdWludDE2X3QgSGVpZ2h0KTsNCit2b2lkIExDRF9EcmF3RnVsbENpcmNsZSh1aW50MTZfdCBYcG9zLCB1aW50MTZfdCBZcG9zLCB1aW50MTZfdCBSYWRpdXMpOw0KK3ZvaWQgTENEX1BvbHlMaW5lKHBQb2ludCBQb2ludHMsIHVpbnQxNl90IFBvaW50Q291bnQpOw0KK3ZvaWQgTENEX1BvbHlMaW5lUmVsYXRpdmUocFBvaW50IFBvaW50cywgdWludDE2X3QgUG9pbnRDb3VudCk7DQordm9pZCBMQ0RfQ2xvc2VkUG9seUxpbmUocFBvaW50IFBvaW50cywgdWludDE2X3QgUG9pbnRDb3VudCk7DQordm9pZCBMQ0RfQ2xvc2VkUG9seUxpbmVSZWxhdGl2ZShwUG9pbnQgUG9pbnRzLCB1aW50MTZfdCBQb2ludENvdW50KTsNCit2b2lkIExDRF9GaWxsUG9seUxpbmUocFBvaW50IFBvaW50cywgdWludDE2X3QgUG9pbnRDb3VudCk7DQordm9pZCBMQ0RfbkNTX1N0YXJ0Qnl0ZSh1aW50OF90IFN0YXJ0X0J5dGUpOw0KK3ZvaWQgTENEX1dyaXRlUmVnSW5kZXgodWludDhfdCBMQ0RfUmVnKTsNCit2b2lkIExDRF9Xcml0ZVJlZyh1aW50OF90IExDRF9SZWcsIHVpbnQxNl90IExDRF9SZWdWYWx1ZSk7DQordm9pZCBMQ0RfV3JpdGVSQU1fUHJlcGFyZSh2b2lkKTsNCit2b2lkIExDRF9Xcml0ZVJBTVdvcmQodWludDE2X3QgUkdCX0NvZGUpOw0KK3VpbnQxNl90IExDRF9SZWFkUmVnKHVpbnQ4X3QgTENEX1JlZyk7DQordm9pZCBMQ0RfV3JpdGVSQU0odWludDE2X3QgUkdCX0NvZGUpOw0KK3ZvaWQgTENEX1Bvd2VyT24odm9pZCk7DQordm9pZCBMQ0RfRGlzcGxheU9uKHZvaWQpOw0KK3ZvaWQgTENEX0Rpc3BsYXlPZmYodm9pZCk7DQorDQordm9pZCBMQ0RfQ3RybExpbmVzQ29uZmlnKHZvaWQpOw0KK3ZvaWQgTENEX0N0cmxMaW5lc1dyaXRlKEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEN0cmxQaW5zLCBCaXRBY3Rpb24gQml0VmFsKTsNCit2b2lkIExDRF9TUElDb25maWcodm9pZCk7DQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisjZW5kaWYgLyogX19TVE0zMkwxNTJfRVZBTF9MQ0RfSCAqLw0KKw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL2luYy9taXNjLmggYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvbWlzYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTMzOGQKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvbWlzYy5oCkBAIC0wLDAgKzEsMjE5IEBACisvKioNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAZmlsZSAgICBtaXNjLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBtaXNjZWxsYW5lb3VzDQorICAqICAgICAgICAgIGZpcm13YXJlIGxpYnJhcnkgZnVuY3Rpb25zIChhZGQtb24gdG8gQ01TSVMgZnVuY3Rpb25zKS4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKw0KKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmbmRlZiBfX01JU0NfSA0KKyNkZWZpbmUgX19NSVNDX0gNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCisgZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorDQorLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaW5jbHVkZSAic3RtMzJsMXh4LmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBNSVNDDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgTUlTQ19FeHBvcnRlZF9UeXBlcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogDQorICAqIEBicmllZiAgTlZJQyBJbml0IFN0cnVjdHVyZSBkZWZpbml0aW9uICANCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICB1aW50OF90IE5WSUNfSVJRQ2hhbm5lbDsgICAgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBJUlEgY2hhbm5lbCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSVJRbl9UeXBlIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3IgdGhlIGNvbXBsZXRlIFNUTTMyIERldmljZXMgSVJRIENoYW5uZWxzIGxpc3QsIHBsZWFzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlciB0byBzdG0zMmwxeHguaCBmaWxlKSAqLw0KKw0KKyAgdWludDhfdCBOVklDX0lSUUNoYW5uZWxQcmVlbXB0aW9uUHJpb3JpdHk7ICAvKiE8IFNwZWNpZmllcyB0aGUgcHJlLWVtcHRpb24gcHJpb3JpdHkgZm9yIHRoZSBJUlEgY2hhbm5lbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBpbiBOVklDX0lSUUNoYW5uZWwuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiAwIGFuZCAxNSBhcyBkZXNjcmliZWQgaW4gdGhlIHRhYmxlIEByZWYgTlZJQ19Qcmlvcml0eV9UYWJsZSAqLw0KKw0KKyAgdWludDhfdCBOVklDX0lSUUNoYW5uZWxTdWJQcmlvcml0eTsgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgc3VicHJpb3JpdHkgbGV2ZWwgZm9yIHRoZSBJUlEgY2hhbm5lbCBzcGVjaWZpZWQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBOVklDX0lSUUNoYW5uZWwuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiAwIGFuZCAxNSBhcyBkZXNjcmliZWQgaW4gdGhlIHRhYmxlIEByZWYgTlZJQ19Qcmlvcml0eV9UYWJsZSAqLw0KKw0KKyAgRnVuY3Rpb25hbFN0YXRlIE5WSUNfSVJRQ2hhbm5lbENtZDsgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBJUlEgY2hhbm5lbCBkZWZpbmVkIGluIE5WSUNfSVJRQ2hhbm5lbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHNldCBlaXRoZXIgdG8gRU5BQkxFIG9yIERJU0FCTEUgKi8gICANCit9IE5WSUNfSW5pdFR5cGVEZWY7DQorIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIE5WSUNfUHJpb3JpdHlfVGFibGUgDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KK0Bjb2RlICANCisgVGhlIHRhYmxlIGJlbG93IGdpdmVzIHRoZSBhbGxvd2VkIHZhbHVlcyBvZiB0aGUgcHJlLWVtcHRpb24gcHJpb3JpdHkgYW5kIHN1YnByaW9yaXR5IGFjY29yZGluZw0KKyB0byB0aGUgUHJpb3JpdHkgR3JvdXBpbmcgY29uZmlndXJhdGlvbiBwZXJmb3JtZWQgYnkgTlZJQ19Qcmlvcml0eUdyb3VwQ29uZmlnIGZ1bmN0aW9uDQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICAgIE5WSUNfUHJpb3JpdHlHcm91cCAgIHwgTlZJQ19JUlFDaGFubmVsUHJlZW1wdGlvblByaW9yaXR5IHwgTlZJQ19JUlFDaGFubmVsU3ViUHJpb3JpdHkgIHwgRGVzY3JpcHRpb24NCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgICBOVklDX1ByaW9yaXR5R3JvdXBfMCAgfCAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIDAtMTUgICAgICAgICAgICAgfCAgIDAgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkNCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgYml0cyBmb3Igc3VicHJpb3JpdHkNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgICBOVklDX1ByaW9yaXR5R3JvdXBfMSAgfCAgICAgICAgICAgICAgICAwLTEgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIDAtNyAgICAgICAgICAgICAgfCAgIDEgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkNCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgYml0cyBmb3Igc3VicHJpb3JpdHkNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgDQorICAgTlZJQ19Qcmlvcml0eUdyb3VwXzIgIHwgICAgICAgICAgICAgICAgMC0zICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAwLTMgICAgICAgICAgICAgIHwgICAyIGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5DQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyIGJpdHMgZm9yIHN1YnByaW9yaXR5DQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgIA0KKyAgIE5WSUNfUHJpb3JpdHlHcm91cF8zICB8ICAgICAgICAgICAgICAgIDAtNyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgMC0xICAgICAgICAgICAgICB8ICAgMyBiaXRzIGZvciBwcmUtZW1wdGlvbiBwcmlvcml0eQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSBiaXRzIGZvciBzdWJwcmlvcml0eQ0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICANCisgICBOVklDX1ByaW9yaXR5R3JvdXBfNCAgfCAgICAgICAgICAgICAgICAwLTE1ICAgICAgICAgICAgICAgfCAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgfCAgIDQgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkNCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDAgYml0cyBmb3Igc3VicHJpb3JpdHkgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KK0BlbmRjb2RlDQorKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBNSVNDX0V4cG9ydGVkX0NvbnN0YW50cw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFZlY3Rvcl9UYWJsZV9CYXNlIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIE5WSUNfVmVjdFRhYl9SQU0gICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKQ0KKyNkZWZpbmUgTlZJQ19WZWN0VGFiX0ZMQVNIICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApDQorI2RlZmluZSBJU19OVklDX1ZFQ1RUQUIoVkVDVFRBQikgKCgoVkVDVFRBQikgPT0gTlZJQ19WZWN0VGFiX1JBTSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZFQ1RUQUIpID09IE5WSUNfVmVjdFRhYl9GTEFTSCkpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU3lzdGVtX0xvd19Qb3dlciANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBOVklDX0xQX1NFVk9OUEVORCAgICAgICAgICAgICgodWludDhfdCkweDEwKQ0KKyNkZWZpbmUgTlZJQ19MUF9TTEVFUERFRVAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkNCisjZGVmaW5lIE5WSUNfTFBfU0xFRVBPTkVYSVQgICAgICAgICAgKCh1aW50OF90KTB4MDIpDQorI2RlZmluZSBJU19OVklDX0xQKExQKSAoKChMUCkgPT0gTlZJQ19MUF9TRVZPTlBFTkQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAoKExQKSA9PSBOVklDX0xQX1NMRUVQREVFUCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICgoTFApID09IE5WSUNfTFBfU0xFRVBPTkVYSVQpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFByZWVtcHRpb25fUHJpb3JpdHlfR3JvdXAgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgTlZJQ19Qcmlvcml0eUdyb3VwXzAgICAgICAgICAoKHVpbnQzMl90KTB4NzAwKSAvKiE8IDAgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IGJpdHMgZm9yIHN1YnByaW9yaXR5ICovDQorI2RlZmluZSBOVklDX1ByaW9yaXR5R3JvdXBfMSAgICAgICAgICgodWludDMyX3QpMHg2MDApIC8qITwgMSBiaXRzIGZvciBwcmUtZW1wdGlvbiBwcmlvcml0eQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgYml0cyBmb3Igc3VicHJpb3JpdHkgKi8NCisjZGVmaW5lIE5WSUNfUHJpb3JpdHlHcm91cF8yICAgICAgICAgKCh1aW50MzJfdCkweDUwMCkgLyohPCAyIGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiBiaXRzIGZvciBzdWJwcmlvcml0eSAqLw0KKyNkZWZpbmUgTlZJQ19Qcmlvcml0eUdyb3VwXzMgICAgICAgICAoKHVpbnQzMl90KTB4NDAwKSAvKiE8IDMgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIGJpdHMgZm9yIHN1YnByaW9yaXR5ICovDQorI2RlZmluZSBOVklDX1ByaW9yaXR5R3JvdXBfNCAgICAgICAgICgodWludDMyX3QpMHgzMDApIC8qITwgNCBiaXRzIGZvciBwcmUtZW1wdGlvbiBwcmlvcml0eQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgYml0cyBmb3Igc3VicHJpb3JpdHkgKi8NCisNCisjZGVmaW5lIElTX05WSUNfUFJJT1JJVFlfR1JPVVAoR1JPVVApICgoKEdST1VQKSA9PSBOVklDX1ByaW9yaXR5R3JvdXBfMCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoR1JPVVApID09IE5WSUNfUHJpb3JpdHlHcm91cF8xKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChHUk9VUCkgPT0gTlZJQ19Qcmlvcml0eUdyb3VwXzIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEdST1VQKSA9PSBOVklDX1ByaW9yaXR5R3JvdXBfMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoR1JPVVApID09IE5WSUNfUHJpb3JpdHlHcm91cF80KSkNCisNCisjZGVmaW5lIElTX05WSUNfUFJFRU1QVElPTl9QUklPUklUWShQUklPUklUWSkgICgoUFJJT1JJVFkpIDwgMHgxMCkNCisNCisjZGVmaW5lIElTX05WSUNfU1VCX1BSSU9SSVRZKFBSSU9SSVRZKSAgKChQUklPUklUWSkgPCAweDEwKQ0KKw0KKyNkZWZpbmUgSVNfTlZJQ19PRkZTRVQoT0ZGU0VUKSAgKChPRkZTRVQpIDwgMHgwMDAxRkZGRikNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBTeXNUaWNrX2Nsb2NrX3NvdXJjZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBTeXNUaWNrX0NMS1NvdXJjZV9IQ0xLX0RpdjggICAgKCh1aW50MzJfdCkweEZGRkZGRkZCKQ0KKyNkZWZpbmUgU3lzVGlja19DTEtTb3VyY2VfSENMSyAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkNCisjZGVmaW5lIElTX1NZU1RJQ0tfQ0xLX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gU3lzVGlja19DTEtTb3VyY2VfSENMSykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBTeXNUaWNrX0NMS1NvdXJjZV9IQ0xLX0RpdjgpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBNSVNDX0V4cG9ydGVkX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBNSVNDX0V4cG9ydGVkX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCit2b2lkIE5WSUNfUHJpb3JpdHlHcm91cENvbmZpZyh1aW50MzJfdCBOVklDX1ByaW9yaXR5R3JvdXApOw0KK3ZvaWQgTlZJQ19Jbml0KE5WSUNfSW5pdFR5cGVEZWYqIE5WSUNfSW5pdFN0cnVjdCk7DQordm9pZCBOVklDX1NldFZlY3RvclRhYmxlKHVpbnQzMl90IE5WSUNfVmVjdFRhYiwgdWludDMyX3QgT2Zmc2V0KTsNCit2b2lkIE5WSUNfU3lzdGVtTFBDb25maWcodWludDhfdCBMb3dQb3dlck1vZGUsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBTeXNUaWNrX0NMS1NvdXJjZUNvbmZpZyh1aW50MzJfdCBTeXNUaWNrX0NMS1NvdXJjZSk7DQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKw0KKyNlbmRpZiAvKiBfX01JU0NfSCAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9leHRpLmggYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X2V4dGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjllNGZjCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9leHRpLmgKQEAgLTAsMCArMSwyMDEgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDF4eF9leHRpLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBFWFRJIGZpcm13YXJlDQorICAqICAgICAgICAgIGxpYnJhcnkuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisNCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZm5kZWYgX19TVE0zMkwxeHhfRVhUSV9IDQorI2RlZmluZSBfX1NUTTMyTDF4eF9FWFRJX0gNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCisgZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorDQorLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaW5jbHVkZSAic3RtMzJsMXh4LmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBFWFRJDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgRVhUSV9FeHBvcnRlZF9UeXBlcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogDQorICAqIEBicmllZiAgRVhUSSBtb2RlIGVudW1lcmF0aW9uICANCisgICovDQorDQordHlwZWRlZiBlbnVtDQorew0KKyAgRVhUSV9Nb2RlX0ludGVycnVwdCA9IDB4MDAsDQorICBFWFRJX01vZGVfRXZlbnQgPSAweDA0DQorfUVYVElNb2RlX1R5cGVEZWY7DQorDQorI2RlZmluZSBJU19FWFRJX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gRVhUSV9Nb2RlX0ludGVycnVwdCkgfHwgKChNT0RFKSA9PSBFWFRJX01vZGVfRXZlbnQpKQ0KKw0KKy8qKiANCisgICogQGJyaWVmICBFWFRJIFRyaWdnZXIgZW51bWVyYXRpb24gIA0KKyAgKi8NCisNCit0eXBlZGVmIGVudW0NCit7DQorICBFWFRJX1RyaWdnZXJfUmlzaW5nID0gMHgwOCwNCisgIEVYVElfVHJpZ2dlcl9GYWxsaW5nID0gMHgwQywgIA0KKyAgRVhUSV9UcmlnZ2VyX1Jpc2luZ19GYWxsaW5nID0gMHgxMA0KK31FWFRJVHJpZ2dlcl9UeXBlRGVmOw0KKw0KKyNkZWZpbmUgSVNfRVhUSV9UUklHR0VSKFRSSUdHRVIpICgoKFRSSUdHRVIpID09IEVYVElfVHJpZ2dlcl9SaXNpbmcpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBFWFRJX1RyaWdnZXJfRmFsbGluZykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IEVYVElfVHJpZ2dlcl9SaXNpbmdfRmFsbGluZykpDQorLyoqIA0KKyAgKiBAYnJpZWYgIEVYVEkgSW5pdCBTdHJ1Y3R1cmUgZGVmaW5pdGlvbiAgDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgdWludDMyX3QgRVhUSV9MaW5lOyAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBFWFRJIGxpbmVzIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIEByZWYgRVhUSV9MaW5lcyAqLw0KKyAgIA0KKyAgRVhUSU1vZGVfVHlwZURlZiBFWFRJX01vZGU7ICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBtb2RlIGZvciB0aGUgRVhUSSBsaW5lcy4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRVhUSU1vZGVfVHlwZURlZiAqLw0KKw0KKyAgRVhUSVRyaWdnZXJfVHlwZURlZiBFWFRJX1RyaWdnZXI7IC8qITwgU3BlY2lmaWVzIHRoZSB0cmlnZ2VyIHNpZ25hbCBhY3RpdmUgZWRnZSBmb3IgdGhlIEVYVEkgbGluZXMuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEVYVElNb2RlX1R5cGVEZWYgKi8NCisNCisgIEZ1bmN0aW9uYWxTdGF0ZSBFWFRJX0xpbmVDbWQ7ICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbmV3IHN0YXRlIG9mIHRoZSBzZWxlY3RlZCBFWFRJIGxpbmVzLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHNldCBlaXRoZXIgdG8gRU5BQkxFIG9yIERJU0FCTEUgKi8gDQorfUVYVElfSW5pdFR5cGVEZWY7DQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgRVhUSV9FeHBvcnRlZF9Db25zdGFudHMNCisgICogQHsNCisgICovDQorDQorLyoqIEBkZWZncm91cCBFWFRJX0xpbmVzIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIEVYVElfTGluZTAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAwICovDQorI2RlZmluZSBFWFRJX0xpbmUxICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMSAqLw0KKyNkZWZpbmUgRVhUSV9MaW5lMiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDIgKi8NCisjZGVmaW5lIEVYVElfTGluZTMgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAzICovDQorI2RlZmluZSBFWFRJX0xpbmU0ICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgNCAqLw0KKyNkZWZpbmUgRVhUSV9MaW5lNSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDUgKi8NCisjZGVmaW5lIEVYVElfTGluZTYgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSA2ICovDQorI2RlZmluZSBFWFRJX0xpbmU3ICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgNyAqLw0KKyNkZWZpbmUgRVhUSV9MaW5lOCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDggKi8NCisjZGVmaW5lIEVYVElfTGluZTkgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSA5ICovDQorI2RlZmluZSBFWFRJX0xpbmUxMCAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTAgKi8NCisjZGVmaW5lIEVYVElfTGluZTExICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAxMSAqLw0KKyNkZWZpbmUgRVhUSV9MaW5lMTIgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDEyICovDQorI2RlZmluZSBFWFRJX0xpbmUxMyAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTMgKi8NCisjZGVmaW5lIEVYVElfTGluZTE0ICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAxNCAqLw0KKyNkZWZpbmUgRVhUSV9MaW5lMTUgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDE1ICovDQorI2RlZmluZSBFWFRJX0xpbmUxNiAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTYgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkIHRvIHRoZSBQVkQgT3V0cHV0ICovDQorI2RlZmluZSBFWFRJX0xpbmUxNyAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTcgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkIHRvIHRoZSBSVEMgQWxhcm0gDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQgKi8NCisjZGVmaW5lIEVYVElfTGluZTE4ICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAxOCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0ZWQgdG8gdGhlIFVTQiBEZXZpY2UgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlMgV2FrZXVwIGZyb20gc3VzcGVuZCBldmVudCAqLw0KKyNkZWZpbmUgRVhUSV9MaW5lMTkgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDE5IA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZCB0byB0aGUgUlRDIFRhbXBlciANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgVGltZSBTdGFtcCBldmVudHMgKi8gDQorI2RlZmluZSBFWFRJX0xpbmUyMCAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMjAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkIHRvIHRoZSBSVEMgV2FrZXVwIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50ICovDQorI2RlZmluZSBFWFRJX0xpbmUyMSAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMjEgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkIHRvIHRoZSBDb21wYXJhdG9yIDEgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQgKi8NCisNCisjZGVmaW5lIEVYVElfTGluZTIyICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAyMiANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0ZWQgdG8gdGhlIENvbXBhcmF0b3IgMg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50ICovDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisjZGVmaW5lIElTX0VYVElfTElORShMSU5FKSAoKCgoTElORSkgJiAodWludDMyX3QpMHhGRjgwMDAwMCkgPT0gMHgwMCkgJiYgKChMSU5FKSAhPSAodWludDE2X3QpMHgwMCkpDQorDQorI2RlZmluZSBJU19HRVRfRVhUSV9MSU5FKExJTkUpICgoKExJTkUpID09IEVYVElfTGluZTApIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMSU5FKSA9PSBFWFRJX0xpbmUyKSB8fCAoKExJTkUpID09IEVYVElfTGluZTMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lNCkgfHwgKChMSU5FKSA9PSBFWFRJX0xpbmU1KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExJTkUpID09IEVYVElfTGluZTYpIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lNykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMSU5FKSA9PSBFWFRJX0xpbmU4KSB8fCAoKExJTkUpID09IEVYVElfTGluZTkpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMTApIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMTEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMTIpIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMTMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMTQpIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMTUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMTYpIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMTcpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMTgpIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMTkpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMjApIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMjEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMjIpKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBFWFRJX0V4cG9ydGVkX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBFWFRJX0V4cG9ydGVkX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCit2b2lkIEVYVElfRGVJbml0KHZvaWQpOw0KK3ZvaWQgRVhUSV9Jbml0KEVYVElfSW5pdFR5cGVEZWYqIEVYVElfSW5pdFN0cnVjdCk7DQordm9pZCBFWFRJX1N0cnVjdEluaXQoRVhUSV9Jbml0VHlwZURlZiogRVhUSV9Jbml0U3RydWN0KTsNCit2b2lkIEVYVElfR2VuZXJhdGVTV0ludGVycnVwdCh1aW50MzJfdCBFWFRJX0xpbmUpOw0KK0ZsYWdTdGF0dXMgRVhUSV9HZXRGbGFnU3RhdHVzKHVpbnQzMl90IEVYVElfTGluZSk7DQordm9pZCBFWFRJX0NsZWFyRmxhZyh1aW50MzJfdCBFWFRJX0xpbmUpOw0KK0lUU3RhdHVzIEVYVElfR2V0SVRTdGF0dXModWludDMyX3QgRVhUSV9MaW5lKTsNCit2b2lkIEVYVElfQ2xlYXJJVFBlbmRpbmdCaXQodWludDMyX3QgRVhUSV9MaW5lKTsNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorI2VuZGlmIC8qIF9fU1RNMzJMMXh4X0VYVElfSCAqLw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9ncGlvLmggYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X2dwaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODliZTVhCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9ncGlvLmgKQEAgLTAsMCArMSwzNjkgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDF4eF9ncGlvLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBHUElPIA0KKyAgKiAgICAgICAgICBmaXJtd2FyZSBsaWJyYXJ5Lg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBjb3B5DQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKi8gDQorDQorLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaWZuZGVmIF9fU1RNMzJMMXh4X0dQSU9fSA0KKyNkZWZpbmUgX19TVE0zMkwxeHhfR1BJT19IDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorIGV4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eC5oIg0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlcg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgR1BJTw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEdQSU9fRXhwb3J0ZWRfVHlwZXMNCisgICogQHsNCisgICovIA0KKyNkZWZpbmUgSVNfR1BJT19BTExfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBHUElPQSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBHUElPQikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBHUElPQykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBHUElPRCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBHUElPRSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBHUElPSCkpDQorDQorLyoqIEBkZWZncm91cCBDb25maWd1cmF0aW9uX01vZGVfZW51bWVyYXRpb24gDQorICAqIEB7DQorICAqLyANCit0eXBlZGVmIGVudW0NCit7IA0KKyAgR1BJT19Nb2RlX0lOICAgPSAweDAwLCAvKiE8IEdQSU8gSW5wdXQgTW9kZSAqLw0KKyAgR1BJT19Nb2RlX09VVCAgPSAweDAxLCAvKiE8IEdQSU8gT3V0cHV0IE1vZGUgKi8NCisgIEdQSU9fTW9kZV9BRiAgID0gMHgwMiwgLyohPCBHUElPIEFsdGVybmF0ZSBmdW5jdGlvbiBNb2RlICovDQorICBHUElPX01vZGVfQU4gICA9IDB4MDMgIC8qITwgR1BJTyBBbmFsb2cgTW9kZSAqLw0KK31HUElPTW9kZV9UeXBlRGVmOw0KKyNkZWZpbmUgSVNfR1BJT19NT0RFKE1PREUpICgoKE1PREUpID09IEdQSU9fTW9kZV9JTikgIHx8ICgoTU9ERSkgPT0gR1BJT19Nb2RlX09VVCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEdQSU9fTW9kZV9BRil8fCAoKE1PREUpID09IEdQSU9fTW9kZV9BTikpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgT3V0cHV0X3R5cGVfZW51bWVyYXRpb24NCisgICogQHsNCisgICovIA0KK3R5cGVkZWYgZW51bQ0KK3sgR1BJT19PVHlwZV9QUCA9IDB4MDAsDQorICBHUElPX09UeXBlX09EID0gMHgwMQ0KK31HUElPT1R5cGVfVHlwZURlZjsNCisjZGVmaW5lIElTX0dQSU9fT1RZUEUoT1RZUEUpICgoKE9UWVBFKSA9PSBHUElPX09UeXBlX1BQKSB8fCAoKE9UWVBFKSA9PSBHUElPX09UeXBlX09EKSkNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBPdXRwdXRfTWF4aW11bV9mcmVxdWVuY3lfZW51bWVyYXRpb24gDQorICAqIEB7DQorICAqLyANCit0eXBlZGVmIGVudW0NCit7IA0KKyAgR1BJT19TcGVlZF80MDBLSHogPSAweDAwLCAvKiE8IFZlcnkgTG93IFNwZWVkICovDQorICBHUElPX1NwZWVkXzJNSHogICA9IDB4MDEsIC8qITwgTG93IFNwZWVkICovDQorICBHUElPX1NwZWVkXzEwTUh6ICA9IDB4MDIsIC8qITwgTWVkaXVtIFNwZWVkICovDQorICBHUElPX1NwZWVkXzQwTUh6ICA9IDB4MDMgIC8qITwgSGlnaCBTcGVlZCAqLw0KK31HUElPU3BlZWRfVHlwZURlZjsNCisjZGVmaW5lIElTX0dQSU9fU1BFRUQoU1BFRUQpICgoKFNQRUVEKSA9PSBHUElPX1NwZWVkXzQwMEtIeikgfHwgKChTUEVFRCkgPT0gR1BJT19TcGVlZF8yTUh6KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTUEVFRCkgPT0gR1BJT19TcGVlZF8xME1Ieil8fCAgKChTUEVFRCkgPT0gR1BJT19TcGVlZF80ME1IeikpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgQ29uZmlndXJhdGlvbl9QdWxsLVVwX1B1bGwtRG93bl9lbnVtZXJhdGlvbiANCisgICogQHsNCisgICovIA0KK3R5cGVkZWYgZW51bQ0KK3sgR1BJT19QdVBkX05PUFVMTCA9IDB4MDAsDQorICBHUElPX1B1UGRfVVAgICAgID0gMHgwMSwNCisgIEdQSU9fUHVQZF9ET1dOICAgPSAweDAyDQorfUdQSU9QdVBkX1R5cGVEZWY7DQorI2RlZmluZSBJU19HUElPX1BVUEQoUFVQRCkgKCgoUFVQRCkgPT0gR1BJT19QdVBkX05PUFVMTCkgfHwgKChQVVBEKSA9PSBHUElPX1B1UGRfVVApIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQVVBEKSA9PSBHUElPX1B1UGRfRE9XTikpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgQml0X1NFVF9hbmRfQml0X1JFU0VUX2VudW1lcmF0aW9uDQorICAqIEB7DQorICAqLw0KK3R5cGVkZWYgZW51bQ0KK3sgQml0X1JFU0VUID0gMCwNCisgIEJpdF9TRVQNCit9Qml0QWN0aW9uOw0KKyNkZWZpbmUgSVNfR1BJT19CSVRfQUNUSU9OKEFDVElPTikgKCgoQUNUSU9OKSA9PSBCaXRfUkVTRVQpIHx8ICgoQUNUSU9OKSA9PSBCaXRfU0VUKSkNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIA0KKyAgKiBAYnJpZWYgIEdQSU8gSW5pdCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbg0KKyAgKi8gDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICB1aW50MzJfdCBHUElPX1BpbjsgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBHUElPIHBpbnMgdG8gYmUgY29uZmlndXJlZC4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgR1BJT19waW5zX2RlZmluZSAqLw0KKw0KKyAgR1BJT01vZGVfVHlwZURlZiBHUElPX01vZGU7ICAgICAvKiE8IFNwZWNpZmllcyB0aGUgb3BlcmF0aW5nIG1vZGUgZm9yIHRoZSBzZWxlY3RlZCBwaW5zLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgR1BJT01vZGVfVHlwZURlZiAqLw0KKw0KKyAgR1BJT1NwZWVkX1R5cGVEZWYgR1BJT19TcGVlZDsgICAvKiE8IFNwZWNpZmllcyB0aGUgc3BlZWQgZm9yIHRoZSBzZWxlY3RlZCBwaW5zLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgR1BJT1NwZWVkX1R5cGVEZWYgKi8NCisNCisgIEdQSU9PVHlwZV9UeXBlRGVmIEdQSU9fT1R5cGU7ICAgLyohPCBTcGVjaWZpZXMgdGhlIG9wZXJhdGluZyBvdXRwdXQgdHlwZSBmb3IgdGhlIHNlbGVjdGVkIHBpbnMuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBHUElPT1R5cGVfVHlwZURlZiAqLw0KKw0KKyAgR1BJT1B1UGRfVHlwZURlZiBHUElPX1B1UGQ7ICAgICAvKiE8IFNwZWNpZmllcyB0aGUgb3BlcmF0aW5nIFB1bGwtdXAvUHVsbCBkb3duIGZvciB0aGUgc2VsZWN0ZWQgcGlucy4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEdQSU9QdVBkX1R5cGVEZWYgKi8NCit9R1BJT19Jbml0VHlwZURlZjsNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBHUElPX0V4cG9ydGVkX0NvbnN0YW50cw0KKyAgKiBAew0KKyAgKi8NCisgIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEdQSU9fcGluc19kZWZpbmUgDQorICAqIEB7DQorICAqLw0KKyNkZWZpbmUgR1BJT19QaW5fMCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAvKiE8IFBpbiAwIHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl8xICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgIC8qITwgUGluIDEgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIEdQSU9fUGluXzIgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgLyohPCBQaW4gMiBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgR1BJT19QaW5fMyAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAvKiE8IFBpbiAzIHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl80ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgIC8qITwgUGluIDQgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIEdQSU9fUGluXzUgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgLyohPCBQaW4gNSBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgR1BJT19QaW5fNiAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAvKiE8IFBpbiA2IHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl83ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgIC8qITwgUGluIDcgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIEdQSU9fUGluXzggICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgLyohPCBQaW4gOCBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgR1BJT19QaW5fOSAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAvKiE8IFBpbiA5IHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl8xMCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgIC8qITwgUGluIDEwIHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl8xMSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgIC8qITwgUGluIDExIHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl8xMiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgIC8qITwgUGluIDEyIHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl8xMyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgIC8qITwgUGluIDEzIHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl8xNCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgIC8qITwgUGluIDE0IHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl8xNSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgIC8qITwgUGluIDE1IHNlbGVjdGVkICovDQorI2RlZmluZSBHUElPX1Bpbl9BbGwgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgIC8qITwgQWxsIHBpbnMgc2VsZWN0ZWQgKi8NCisNCisjZGVmaW5lIElTX0dQSU9fUElOKFBJTikgKChQSU4pICE9ICh1aW50MTZfdCkweDAwKQ0KKyNkZWZpbmUgSVNfR0VUX0dQSU9fUElOKFBJTikgKCgoUElOKSA9PSBHUElPX1Bpbl8wKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gR1BJT19QaW5fMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOKSA9PSBHUElPX1Bpbl8zKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gR1BJT19QaW5fNSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOKSA9PSBHUElPX1Bpbl82KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzcpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gR1BJT19QaW5fOCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOKSA9PSBHUElPX1Bpbl85KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzEwKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzExKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzEyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzEzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzE0KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzE1KSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBHUElPX1Bpbl9zb3VyY2VzIA0KKyAgKiBAew0KKyAgKi8gDQorI2RlZmluZSBHUElPX1BpblNvdXJjZTAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkNCisjZGVmaW5lIEdQSU9fUGluU291cmNlMSAgICAgICAgICAgICgodWludDhfdCkweDAxKQ0KKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2UyICAgICAgICAgICAgKCh1aW50OF90KTB4MDIpDQorI2RlZmluZSBHUElPX1BpblNvdXJjZTMgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMykNCisjZGVmaW5lIEdQSU9fUGluU291cmNlNCAgICAgICAgICAgICgodWludDhfdCkweDA0KQ0KKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2U1ICAgICAgICAgICAgKCh1aW50OF90KTB4MDUpDQorI2RlZmluZSBHUElPX1BpblNvdXJjZTYgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNikNCisjZGVmaW5lIEdQSU9fUGluU291cmNlNyAgICAgICAgICAgICgodWludDhfdCkweDA3KQ0KKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2U4ICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpDQorI2RlZmluZSBHUElPX1BpblNvdXJjZTkgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOSkNCisjZGVmaW5lIEdQSU9fUGluU291cmNlMTAgICAgICAgICAgICgodWludDhfdCkweDBBKQ0KKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2UxMSAgICAgICAgICAgKCh1aW50OF90KTB4MEIpDQorI2RlZmluZSBHUElPX1BpblNvdXJjZTEyICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQykNCisjZGVmaW5lIEdQSU9fUGluU291cmNlMTMgICAgICAgICAgICgodWludDhfdCkweDBEKQ0KKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2UxNCAgICAgICAgICAgKCh1aW50OF90KTB4MEUpDQorI2RlZmluZSBHUElPX1BpblNvdXJjZTE1ICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRikNCisNCisjZGVmaW5lIElTX0dQSU9fUElOX1NPVVJDRShQSU5TT1VSQ0UpICgoKFBJTlNPVVJDRSkgPT0gR1BJT19QaW5Tb3VyY2UwKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBHUElPX1BpblNvdXJjZTIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gR1BJT19QaW5Tb3VyY2UzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlNCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBHUElPX1BpblNvdXJjZTUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gR1BJT19QaW5Tb3VyY2U2KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlNykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBHUElPX1BpblNvdXJjZTgpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gR1BJT19QaW5Tb3VyY2U5KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMTApIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gR1BJT19QaW5Tb3VyY2UxMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBHUElPX1BpblNvdXJjZTEyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMTMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gR1BJT19QaW5Tb3VyY2UxNCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBHUElPX1BpblNvdXJjZTE1KSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBHUElPX0FsdGVybmF0X2Z1bmN0aW9uX3NlbGVjdGlvbl9kZWZpbmUgDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiANCisgICogQGJyaWVmICBBRiAwIHNlbGVjdGlvbiAgDQorICAqLyANCisjZGVmaW5lIEdQSU9fQUZfUlRDXzUwSHogICAgICAoKHVpbnQ4X3QpMHgwMCkgIC8qITwgUlRDIDUwLzYwIEh6IEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovDQorI2RlZmluZSBHUElPX0FGX01DTyAgICAgICAgICAgKCh1aW50OF90KTB4MDApICAvKiE8IE1DTyBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLw0KKyNkZWZpbmUgR1BJT19BRl9SVENfQUYxICAgICAgICgodWludDhfdCkweDAwKSAgLyohPCBSVENfQUYxIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovDQorI2RlZmluZSBHUElPX0FGX1dLVVAgICAgICAgICAgKCh1aW50OF90KTB4MDApICAvKiE8IFdha2V1cCAoV0tVUDEsIFdLVVAyIGFuZCBXS1VQMykgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisjZGVmaW5lIEdQSU9fQUZfU1dKICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkgIC8qITwgU1dKIChTVyBhbmQgSlRBRykgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisjZGVmaW5lIEdQSU9fQUZfVFJBQ0UgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkgIC8qITwgVFJBQ0UgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisNCisvKiogDQorICAqIEBicmllZiAgQUYgMSBzZWxlY3Rpb24gIA0KKyAgKi8gDQorI2RlZmluZSBHUElPX0FGX1RJTTIgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAvKiE8IFRJTTIgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisvKiogDQorICAqIEBicmllZiAgQUYgMiBzZWxlY3Rpb24gIA0KKyAgKi8gDQorI2RlZmluZSBHUElPX0FGX1RJTTMgICAgICAgICAgKCh1aW50OF90KTB4MDIpICAvKiE8IFRJTTMgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisjZGVmaW5lIEdQSU9fQUZfVElNNCAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgIC8qITwgVElNNCBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLw0KKy8qKiANCisgICogQGJyaWVmICBBRiAzIHNlbGVjdGlvbiAgDQorICAqLyANCisjZGVmaW5lIEdQSU9fQUZfVElNOSAgICAgICAgICAgKCh1aW50OF90KTB4MDMpICAvKiE8IFRJTTkgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisjZGVmaW5lIEdQSU9fQUZfVElNMTAgICAgICAgICAgKCh1aW50OF90KTB4MDMpICAvKiE8IFRJTTEwIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovDQorI2RlZmluZSBHUElPX0FGX1RJTTExICAgICAgICAgICgodWludDhfdCkweDAzKSAgLyohPCBUSU0xMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLw0KKy8qKiANCisgICogQGJyaWVmICBBRiA0IHNlbGVjdGlvbiAgDQorICAqLyANCisjZGVmaW5lIEdQSU9fQUZfSTJDMSAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgIC8qITwgSTJDMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLw0KKyNkZWZpbmUgR1BJT19BRl9JMkMyICAgICAgICAgICgodWludDhfdCkweDA0KSAgLyohPCBJMkMyIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovDQorLyoqIA0KKyAgKiBAYnJpZWYgIEFGIDUgc2VsZWN0aW9uICANCisgICovIA0KKyNkZWZpbmUgR1BJT19BRl9TUEkxICAgICAgICAgICgodWludDhfdCkweDA1KSAgLyohPCBTUEkxIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovDQorI2RlZmluZSBHUElPX0FGX1NQSTIgICAgICAgICAgKCh1aW50OF90KTB4MDUpICAvKiE8IFNQSTIgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisvKiogDQorICAqIEBicmllZiAgQUYgNyBzZWxlY3Rpb24gIA0KKyAgKi8gDQorI2RlZmluZSBHUElPX0FGX1VTQVJUMSAgICAgICAgKCh1aW50OF90KTB4MDcpICAvKiE8IFVTQVJUMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLw0KKyNkZWZpbmUgR1BJT19BRl9VU0FSVDIgICAgICAgICgodWludDhfdCkweDA3KSAgLyohPCBVU0FSVDIgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisjZGVmaW5lIEdQSU9fQUZfVVNBUlQzICAgICAgICAoKHVpbnQ4X3QpMHgwNykgIC8qITwgVVNBUlQzIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovDQorLyoqIA0KKyAgKiBAYnJpZWYgIEFGIDEwIHNlbGVjdGlvbiAgDQorICAqLyANCisjZGVmaW5lIEdQSU9fQUZfVVNCICAgICAgICAgICAoKHVpbnQ4X3QpMHhBKSAgLyohPCBVU0IgRnVsbCBzcGVlZCBkZXZpY2UgIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovDQorLyoqIA0KKyAgKiBAYnJpZWYgIEFGIDExIHNlbGVjdGlvbiAgDQorICAqLyANCisjZGVmaW5lIEdQSU9fQUZfTENEICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQikgIC8qITwgTENEIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovDQorLyoqIA0KKyAgKiBAYnJpZWYgIEFGIDE0IHNlbGVjdGlvbiAgDQorICAqLyANCisjZGVmaW5lIEdQSU9fQUZfUkkgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRSkgIC8qITwgUkkgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8NCisNCisvKiogDQorICAqIEBicmllZiAgQUYgMTUgc2VsZWN0aW9uICANCisgICovIA0KKyNkZWZpbmUgR1BJT19BRl9FVkVOVE9VVCAgICAgICgodWludDhfdCkweDBGKSAgLyohPCBFVkVOVE9VVCBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLw0KKw0KKyNkZWZpbmUgSVNfR1BJT19BRihBRikgICAoKChBRikgPT0gR1BJT19BRl9SVENfNTBIeikgfHwgKChBRikgPT0gR1BJT19BRl9NQ08pIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUYpID09IEdQSU9fQUZfUlRDX0FGMSkgfHwgKChBRikgPT0gR1BJT19BRl9XS1VQKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFGKSA9PSBHUElPX0FGX1NXSikgICAgfHwgKChBRikgPT0gR1BJT19BRl9UUkFDRSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChBRikgPT0gR1BJT19BRl9USU0yKSAgIHx8ICgoQUYpPT0gR1BJT19BRl9USU0zKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFGKSA9PSBHUElPX0FGX1RJTTQpICAgfHwgKChBRik9PSBHUElPX0FGX1RJTTkpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUYpID09IEdQSU9fQUZfVElNMTApICB8fCAoKEFGKT09IEdQSU9fQUZfVElNMTEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUYpID09IEdQSU9fQUZfSTJDMSkgICB8fCAoKEFGKSA9PSBHUElPX0FGX0kyQzIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUYpID09IEdQSU9fQUZfU1BJMSkgICB8fCAoKEFGKSA9PSBHUElPX0FGX1NQSTIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUYpID09IEdQSU9fQUZfVVNBUlQxKSB8fCAoKEFGKSA9PSBHUElPX0FGX1VTQVJUMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChBRikgPT0gR1BJT19BRl9VU0FSVDMpIHx8ICgoQUYpID09IEdQSU9fQUZfVVNCKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFGKSA9PSBHUElPX0FGX0xDRCkgICAgfHwgKChBRikgPT0gR1BJT19BRl9SSSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChBRikgPT0gR1BJT19BRl9FVkVOVE9VVCkpDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgR1BJT19MZWdhY3kgDQorICAqIEB7DQorICAqLw0KKyAgICANCisjZGVmaW5lIEdQSU9fTW9kZV9BSU4gR1BJT19Nb2RlX0FODQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKyAgDQorLyoqIEBkZWZncm91cCBHUElPX0V4cG9ydGVkX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBHUElPX0V4cG9ydGVkX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCit2b2lkIEdQSU9fRGVJbml0KEdQSU9fVHlwZURlZiogR1BJT3gpOw0KK3ZvaWQgR1BJT19TdHJ1Y3RJbml0KEdQSU9fSW5pdFR5cGVEZWYqIEdQSU9fSW5pdFN0cnVjdCk7DQordm9pZCBHUElPX0luaXQoR1BJT19UeXBlRGVmKiBHUElPeCwgR1BJT19Jbml0VHlwZURlZiogR1BJT19Jbml0U3RydWN0KTsNCit1aW50OF90IEdQSU9fUmVhZElucHV0RGF0YUJpdChHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1Bpbik7DQordWludDE2X3QgR1BJT19SZWFkSW5wdXREYXRhKEdQSU9fVHlwZURlZiogR1BJT3gpOw0KK3VpbnQ4X3QgR1BJT19SZWFkT3V0cHV0RGF0YUJpdChHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1Bpbik7DQordWludDE2X3QgR1BJT19SZWFkT3V0cHV0RGF0YShHUElPX1R5cGVEZWYqIEdQSU94KTsNCit2b2lkIEdQSU9fU2V0Qml0cyhHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1Bpbik7DQordm9pZCBHUElPX1Jlc2V0Qml0cyhHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1Bpbik7DQordm9pZCBHUElPX1dyaXRlQml0KEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluLCBCaXRBY3Rpb24gQml0VmFsKTsNCit2b2lkIEdQSU9fV3JpdGUoR1BJT19UeXBlRGVmKiBHUElPeCwgdWludDE2X3QgUG9ydFZhbCk7DQordm9pZCBHUElPX1BpbkxvY2tDb25maWcoR1BJT19UeXBlRGVmKiBHUElPeCwgdWludDE2X3QgR1BJT19QaW4pOw0KK3ZvaWQgR1BJT19QaW5BRkNvbmZpZyhHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1BpblNvdXJjZSwgdWludDhfdCBHUElPX0FGKTsNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorI2VuZGlmIC8qX19TVE0zMkwxeHhfR1BJT19IICovDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X2kyYy5oIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9pMmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGQyOTk3Ci0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9pMmMuaApAQCAtMCwwICsxLDY3MCBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgc3RtMzJsMXh4X2kyYy5oDQorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorICAqIEB2ZXJzaW9uIFYxLjAuMFJDMQ0KKyAgKiBAZGF0ZSAgICAwNy8wMi8yMDEwDQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgSTJDIGZpcm13YXJlIA0KKyAgKiAgICAgICAgICBsaWJyYXJ5Lg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBjb3B5DQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKi8gDQorDQorLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaWZuZGVmIF9fU1RNMzJMMXh4X0kyQ19IDQorI2RlZmluZSBfX1NUTTMyTDF4eF9JMkNfSA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyBleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpbmNsdWRlICJzdG0zMmwxeHguaCINCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXINCisgICogQHsNCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIEkyQw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEkyQ19FeHBvcnRlZF9UeXBlcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogDQorICAqIEBicmllZiAgSTJDIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24gIA0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIHVpbnQzMl90IEkyQ19DbG9ja1NwZWVkOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgY2xvY2sgZnJlcXVlbmN5Lg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBzZXQgdG8gYSB2YWx1ZSBsb3dlciB0aGFuIDQwMGtIeiAqLw0KKw0KKyAgdWludDE2X3QgSTJDX01vZGU7ICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBJMkMgbW9kZS4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX21vZGUgKi8NCisNCisgIHVpbnQxNl90IEkyQ19EdXR5Q3ljbGU7ICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgSTJDIGZhc3QgbW9kZSBkdXR5IGN5Y2xlLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfZHV0eV9jeWNsZV9pbl9mYXN0X21vZGUgKi8NCisNCisgIHVpbnQxNl90IEkyQ19Pd25BZGRyZXNzMTsgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZmlyc3QgZGV2aWNlIG93biBhZGRyZXNzLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgNy1iaXQgb3IgMTAtYml0IGFkZHJlc3MuICovDQorDQorICB1aW50MTZfdCBJMkNfQWNrOyAgICAgICAgICAgICAgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBhY2tub3dsZWRnZW1lbnQuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19hY2tub3dsZWRnZW1lbnQgKi8NCisNCisgIHVpbnQxNl90IEkyQ19BY2tub3dsZWRnZWRBZGRyZXNzOyAvKiE8IFNwZWNpZmllcyBpZiA3LWJpdCBvciAxMC1iaXQgYWRkcmVzcyBpcyBhY2tub3dsZWRnZWQuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19hY2tub3dsZWRnZWRfYWRkcmVzcyAqLw0KK31JMkNfSW5pdFR5cGVEZWY7DQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisNCisvKiogQGRlZmdyb3VwIEkyQ19FeHBvcnRlZF9Db25zdGFudHMNCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBJU19JMkNfQUxMX1BFUklQSChQRVJJUEgpICgoKFBFUklQSCkgPT0gSTJDMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IEkyQzIpKQ0KKy8qKiBAZGVmZ3JvdXAgSTJDX21vZGUgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgSTJDX01vZGVfSTJDICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIEkyQ19Nb2RlX1NNQnVzRGV2aWNlICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICANCisjZGVmaW5lIEkyQ19Nb2RlX1NNQnVzSG9zdCAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEEpDQorI2RlZmluZSBJU19JMkNfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBJMkNfTW9kZV9JMkMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEkyQ19Nb2RlX1NNQnVzRGV2aWNlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBJMkNfTW9kZV9TTUJ1c0hvc3QpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEkyQ19kdXR5X2N5Y2xlX2luX2Zhc3RfbW9kZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBJMkNfRHV0eUN5Y2xlXzE2XzkgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAvKiE8IEkyQyBmYXN0IG1vZGUgVGxvdy9UaGlnaCA9IDE2LzkgKi8NCisjZGVmaW5lIEkyQ19EdXR5Q3ljbGVfMiAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEJGRkYpIC8qITwgSTJDIGZhc3QgbW9kZSBUbG93L1RoaWdoID0gMiAqLw0KKyNkZWZpbmUgSVNfSTJDX0RVVFlfQ1lDTEUoQ1lDTEUpICgoKENZQ0xFKSA9PSBJMkNfRHV0eUN5Y2xlXzE2XzkpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDWUNMRSkgPT0gSTJDX0R1dHlDeWNsZV8yKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgSTJDX2Fja25vd2xlZGdlbWVudA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIEkyQ19BY2tfRW5hYmxlICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApDQorI2RlZmluZSBJMkNfQWNrX0Rpc2FibGUgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgSVNfSTJDX0FDS19TVEFURShTVEFURSkgKCgoU1RBVEUpID09IEkyQ19BY2tfRW5hYmxlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gSTJDX0Fja19EaXNhYmxlKSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBJMkNfdHJhbnNmZXJfZGlyZWN0aW9uIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lICBJMkNfRGlyZWN0aW9uX1RyYW5zbWl0dGVyICAgICAgKCh1aW50OF90KTB4MDApDQorI2RlZmluZSAgSTJDX0RpcmVjdGlvbl9SZWNlaXZlciAgICAgICAgICgodWludDhfdCkweDAxKQ0KKyNkZWZpbmUgSVNfSTJDX0RJUkVDVElPTihESVJFQ1RJT04pICgoKERJUkVDVElPTikgPT0gSTJDX0RpcmVjdGlvbl9UcmFuc21pdHRlcikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKERJUkVDVElPTikgPT0gSTJDX0RpcmVjdGlvbl9SZWNlaXZlcikpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgSTJDX2Fja25vd2xlZGdlZF9hZGRyZXNzIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIEkyQ19BY2tub3dsZWRnZWRBZGRyZXNzXzdiaXQgICAgKCh1aW50MTZfdCkweDQwMDApDQorI2RlZmluZSBJMkNfQWNrbm93bGVkZ2VkQWRkcmVzc18xMGJpdCAgICgodWludDE2X3QpMHhDMDAwKQ0KKyNkZWZpbmUgSVNfSTJDX0FDS05PV0xFREdFX0FERFJFU1MoQUREUkVTUykgKCgoQUREUkVTUykgPT0gSTJDX0Fja25vd2xlZGdlZEFkZHJlc3NfN2JpdCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUREUkVTUykgPT0gSTJDX0Fja25vd2xlZGdlZEFkZHJlc3NfMTBiaXQpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBJMkNfcmVnaXN0ZXJzIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIEkyQ19SZWdpc3Rlcl9DUjEgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDApDQorI2RlZmluZSBJMkNfUmVnaXN0ZXJfQ1IyICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KQ0KKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX09BUjEgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkNCisjZGVmaW5lIEkyQ19SZWdpc3Rlcl9PQVIyICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MEMpDQorI2RlZmluZSBJMkNfUmVnaXN0ZXJfRFIgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKQ0KKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX1NSMSAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxNCkNCisjZGVmaW5lIEkyQ19SZWdpc3Rlcl9TUjIgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTgpDQorI2RlZmluZSBJMkNfUmVnaXN0ZXJfQ0NSICAgICAgICAgICAgICAgICgodWludDhfdCkweDFDKQ0KKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX1RSSVNFICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkNCisjZGVmaW5lIElTX0kyQ19SRUdJU1RFUihSRUdJU1RFUikgKCgoUkVHSVNURVIpID09IEkyQ19SZWdpc3Rlcl9DUjEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHSVNURVIpID09IEkyQ19SZWdpc3Rlcl9DUjIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHSVNURVIpID09IEkyQ19SZWdpc3Rlcl9PQVIxKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR0lTVEVSKSA9PSBJMkNfUmVnaXN0ZXJfT0FSMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUdJU1RFUikgPT0gSTJDX1JlZ2lzdGVyX0RSKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR0lTVEVSKSA9PSBJMkNfUmVnaXN0ZXJfU1IxKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR0lTVEVSKSA9PSBJMkNfUmVnaXN0ZXJfU1IyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR0lTVEVSKSA9PSBJMkNfUmVnaXN0ZXJfQ0NSKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR0lTVEVSKSA9PSBJMkNfUmVnaXN0ZXJfVFJJU0UpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEkyQ19TTUJ1c19hbGVydF9waW5fbGV2ZWwgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgSTJDX1NNQnVzQWxlcnRfTG93ICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkNCisjZGVmaW5lIEkyQ19TTUJ1c0FsZXJ0X0hpZ2ggICAgICAgICAgICAgKCh1aW50MTZfdCkweERGRkYpDQorI2RlZmluZSBJU19JMkNfU01CVVNfQUxFUlQoQUxFUlQpICgoKEFMRVJUKSA9PSBJMkNfU01CdXNBbGVydF9Mb3cpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUxFUlQpID09IEkyQ19TTUJ1c0FsZXJ0X0hpZ2gpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEkyQ19QRUNfcG9zaXRpb24gDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgSTJDX1BFQ1Bvc2l0aW9uX05leHQgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkNCisjZGVmaW5lIEkyQ19QRUNQb3NpdGlvbl9DdXJyZW50ICAgICAgICAgKCh1aW50MTZfdCkweEY3RkYpDQorI2RlZmluZSBJU19JMkNfUEVDX1BPU0lUSU9OKFBPU0lUSU9OKSAoKChQT1NJVElPTikgPT0gSTJDX1BFQ1Bvc2l0aW9uX05leHQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPU0lUSU9OKSA9PSBJMkNfUEVDUG9zaXRpb25fQ3VycmVudCkpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIEkyQ19pbnRlcnJ1cHRzX2RlZmluaXRpb24gDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgSTJDX0lUX0JVRiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkNCisjZGVmaW5lIEkyQ19JVF9FVlQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApDQorI2RlZmluZSBJMkNfSVRfRVJSICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKQ0KKyNkZWZpbmUgSVNfSTJDX0NPTkZJR19JVChJVCkgKCgoKElUKSAmICh1aW50MTZfdCkweEY4RkYpID09IDB4MDApICYmICgoSVQpICE9IDB4MDApKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBJMkNfaW50ZXJydXB0c19kZWZpbml0aW9uIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIEkyQ19JVF9TTUJBTEVSVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDA4MDAwKQ0KKyNkZWZpbmUgSTJDX0lUX1RJTUVPVVQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDQwMDApDQorI2RlZmluZSBJMkNfSVRfUEVDRVJSICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMTAwMCkNCisjZGVmaW5lIEkyQ19JVF9PVlIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwODAwKQ0KKyNkZWZpbmUgSTJDX0lUX0FGICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDA0MDApDQorI2RlZmluZSBJMkNfSVRfQVJMTyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDIwMCkNCisjZGVmaW5lIEkyQ19JVF9CRVJSICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMTAwKQ0KKyNkZWZpbmUgSTJDX0lUX1RYRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDYwMDAwODApDQorI2RlZmluZSBJMkNfSVRfUlhORSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNjAwMDA0MCkNCisjZGVmaW5lIEkyQ19JVF9TVE9QRiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDEwKQ0KKyNkZWZpbmUgSTJDX0lUX0FERDEwICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDgpDQorI2RlZmluZSBJMkNfSVRfQlRGICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwNCkNCisjZGVmaW5lIEkyQ19JVF9BRERSICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAyKQ0KKyNkZWZpbmUgSTJDX0lUX1NCICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDEpDQorDQorI2RlZmluZSBJU19JMkNfQ0xFQVJfSVQoSVQpICgoKChJVCkgJiAodWludDE2X3QpMHgyMEZGKSA9PSAweDAwKSAmJiAoKElUKSAhPSAodWludDE2X3QpMHgwMCkpDQorDQorI2RlZmluZSBJU19JMkNfR0VUX0lUKElUKSAoKChJVCkgPT0gSTJDX0lUX1NNQkFMRVJUKSB8fCAoKElUKSA9PSBJMkNfSVRfVElNRU9VVCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IEkyQ19JVF9QRUNFUlIpIHx8ICgoSVQpID09IEkyQ19JVF9PVlIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBJMkNfSVRfQUYpIHx8ICgoSVQpID09IEkyQ19JVF9BUkxPKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gSTJDX0lUX0JFUlIpIHx8ICgoSVQpID09IEkyQ19JVF9UWEUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBJMkNfSVRfUlhORSkgfHwgKChJVCkgPT0gSTJDX0lUX1NUT1BGKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gSTJDX0lUX0FERDEwKSB8fCAoKElUKSA9PSBJMkNfSVRfQlRGKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gSTJDX0lUX0FERFIpIHx8ICgoSVQpID09IEkyQ19JVF9TQikpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgSTJDX2ZsYWdzX2RlZmluaXRpb24gDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiANCisgICogQGJyaWVmICBTUjIgcmVnaXN0ZXIgZmxhZ3MgIA0KKyAgKi8NCisNCisjZGVmaW5lIEkyQ19GTEFHX0RVQUxGICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKQ0KKyNkZWZpbmUgSTJDX0ZMQUdfU01CSE9TVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApDQorI2RlZmluZSBJMkNfRkxBR19TTUJERUZBVUxUICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkNCisjZGVmaW5lIEkyQ19GTEFHX0dFTkNBTEwgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQ0KKyNkZWZpbmUgSTJDX0ZMQUdfVFJBICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApDQorI2RlZmluZSBJMkNfRkxBR19CVVNZICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkNCisjZGVmaW5lIEkyQ19GTEFHX01TTCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQ0KKw0KKy8qKiANCisgICogQGJyaWVmICBTUjEgcmVnaXN0ZXIgZmxhZ3MgIA0KKyAgKi8NCisNCisjZGVmaW5lIEkyQ19GTEFHX1NNQkFMRVJUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDA4MDAwKQ0KKyNkZWZpbmUgSTJDX0ZMQUdfVElNRU9VVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDQwMDApDQorI2RlZmluZSBJMkNfRkxBR19QRUNFUlIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMTAwMCkNCisjZGVmaW5lIEkyQ19GTEFHX09WUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwODAwKQ0KKyNkZWZpbmUgSTJDX0ZMQUdfQUYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDA0MDApDQorI2RlZmluZSBJMkNfRkxBR19BUkxPICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDIwMCkNCisjZGVmaW5lIEkyQ19GTEFHX0JFUlIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMTAwKQ0KKyNkZWZpbmUgSTJDX0ZMQUdfVFhFICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwODApDQorI2RlZmluZSBJMkNfRkxBR19SWE5FICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDA0MCkNCisjZGVmaW5lIEkyQ19GTEFHX1NUT1BGICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDEwKQ0KKyNkZWZpbmUgSTJDX0ZMQUdfQUREMTAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDgpDQorI2RlZmluZSBJMkNfRkxBR19CVEYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwNCkNCisjZGVmaW5lIEkyQ19GTEFHX0FERFIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAyKQ0KKyNkZWZpbmUgSTJDX0ZMQUdfU0IgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDEpDQorDQorI2RlZmluZSBJU19JMkNfQ0xFQVJfRkxBRyhGTEFHKSAoKCgoRkxBRykgJiAodWludDE2X3QpMHgyMEZGKSA9PSAweDAwKSAmJiAoKEZMQUcpICE9ICh1aW50MTZfdCkweDAwKSkNCisNCisjZGVmaW5lIElTX0kyQ19HRVRfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBJMkNfRkxBR19EVUFMRikgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19TTUJIT1NUKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gSTJDX0ZMQUdfU01CREVGQVVMVCkgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19HRU5DQUxMKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gSTJDX0ZMQUdfVFJBKSB8fCAoKEZMQUcpID09IEkyQ19GTEFHX0JVU1kpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBJMkNfRkxBR19NU0wpIHx8ICgoRkxBRykgPT0gSTJDX0ZMQUdfU01CQUxFUlQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBJMkNfRkxBR19USU1FT1VUKSB8fCAoKEZMQUcpID09IEkyQ19GTEFHX1BFQ0VSUikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IEkyQ19GTEFHX09WUikgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19BRikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IEkyQ19GTEFHX0FSTE8pIHx8ICgoRkxBRykgPT0gSTJDX0ZMQUdfQkVSUikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IEkyQ19GTEFHX1RYRSkgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19SWE5FKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gSTJDX0ZMQUdfU1RPUEYpIHx8ICgoRkxBRykgPT0gSTJDX0ZMQUdfQUREMTApIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBJMkNfRkxBR19CVEYpIHx8ICgoRkxBRykgPT0gSTJDX0ZMQUdfQUREUikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IEkyQ19GTEFHX1NCKSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBJMkNfRXZlbnRzIA0KKyAgKiBAew0KKyAgKi8NCisNCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgIEkyQyBNYXN0ZXIgRXZlbnRzIChFdmVudHMgZ3JvdXBlZCBpbiBvcmRlciBvZiBjb21tdW5pY2F0aW9uKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCisvKiogDQorICAqIEBicmllZiAgQ29tbXVuaWNhdGlvbiBzdGFydA0KKyAgKiANCisgICogQWZ0ZXIgc2VuZGluZyB0aGUgU1RBUlQgY29uZGl0aW9uIChJMkNfR2VuZXJhdGVTVEFSVCgpIGZ1bmN0aW9uKSB0aGUgbWFzdGVyIA0KKyAgKiBoYXMgdG8gd2FpdCBmb3IgdGhpcyBldmVudC4gSXQgbWVhbnMgdGhhdCB0aGUgU3RhcnQgY29uZGl0aW9uIGhhcyBiZWVuIGNvcnJlY3RseSANCisgICogcmVsZWFzZWQgb24gdGhlIEkyQyBidXMgKHRoZSBidXMgaXMgZnJlZSwgbm8gb3RoZXIgZGV2aWNlcyBpcyBjb21tdW5pY2F0aW5nKS4NCisgICogDQorICAqLw0KKy8qIC0tRVY1ICovDQorI2RlZmluZSAgSTJDX0VWRU5UX01BU1RFUl9NT0RFX1NFTEVDVCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzAwMDEpICAvKiBCVVNZLCBNU0wgYW5kIFNCIGZsYWcgKi8NCisNCisvKiogDQorICAqIEBicmllZiAgQWRkcmVzcyBBY2tub3dsZWRnZQ0KKyAgKiANCisgICogQWZ0ZXIgY2hlY2tpbmcgb24gRVY1IChzdGFydCBjb25kaXRpb24gY29ycmVjdGx5IHJlbGVhc2VkIG9uIHRoZSBidXMpLCB0aGUgDQorICAqIG1hc3RlciBzZW5kcyB0aGUgYWRkcmVzcyBvZiB0aGUgc2xhdmUocykgd2l0aCB3aGljaCBpdCB3aWxsIGNvbW11bmljYXRlIA0KKyAgKiAoSTJDX1NlbmQ3Yml0QWRkcmVzcygpIGZ1bmN0aW9uLCBpdCBhbHNvIGRldGVybWluZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbjogDQorICAqIE1hc3RlciB0cmFuc21pdHRlciBvciBSZWNlaXZlcikuIFRoZW4gdGhlIG1hc3RlciBoYXMgdG8gd2FpdCB0aGF0IGEgc2xhdmUgYWNrbm93bGVkZ2VzIA0KKyAgKiBoaXMgYWRkcmVzcy4gSWYgYW4gYWNrbm93bGVkZ2UgaXMgc2VudCBvbiB0aGUgYnVzLCBvbmUgb2YgdGhlIGZvbGxvd2luZyBldmVudHMgd2lsbCANCisgICogYmUgc2V0Og0KKyAgKiANCisgICogIDEpIEluIGNhc2Ugb2YgTWFzdGVyIFJlY2VpdmVyICg3LWJpdCBhZGRyZXNzaW5nKTogdGhlIEkyQ19FVkVOVF9NQVNURVJfUkVDRUlWRVJfTU9ERV9TRUxFQ1RFRCANCisgICogICAgIGV2ZW50IGlzIHNldC4NCisgICogIA0KKyAgKiAgMikgSW4gY2FzZSBvZiBNYXN0ZXIgVHJhbnNtaXR0ZXIgKDctYml0IGFkZHJlc3NpbmcpOiB0aGUgSTJDX0VWRU5UX01BU1RFUl9UUkFOU01JVFRFUl9NT0RFX1NFTEVDVEVEIA0KKyAgKiAgICAgaXMgc2V0DQorICAqICANCisgICogIDMpIEluIGNhc2Ugb2YgMTAtQml0IGFkZHJlc3NpbmcgbW9kZSwgdGhlIG1hc3RlciAoanVzdCBhZnRlciBnZW5lcmF0aW5nIHRoZSBTVEFSVCANCisgICogIGFuZCBjaGVja2luZyBvbiBFVjUpIGhhcyB0byBzZW5kIHRoZSBoZWFkZXIgb2YgMTAtYml0IGFkZHJlc3NpbmcgbW9kZSAoSTJDX1NlbmREYXRhKCkgDQorICAqICBmdW5jdGlvbikuIFRoZW4gbWFzdGVyIHNob3VsZCB3YWl0IG9uIEVWOS4gSXQgbWVhbnMgdGhhdCB0aGUgMTAtYml0IGFkZHJlc3NpbmcgDQorICAqICBoZWFkZXIgaGFzIGJlZW4gY29ycmVjdGx5IHNlbnQgb24gdGhlIGJ1cy4gVGhlbiBtYXN0ZXIgc2hvdWxkIHNlbmQgdGhlIHNlY29uZCBwYXJ0IG9mIA0KKyAgKiAgdGhlIDEwLWJpdCBhZGRyZXNzIChMU0IpIHVzaW5nIHRoZSBmdW5jdGlvbiBJMkNfU2VuZDdiaXRBZGRyZXNzKCkuIFRoZW4gbWFzdGVyIA0KKyAgKiAgc2hvdWxkIHdhaXQgZm9yIGV2ZW50IEVWNi4gDQorICAqICAgICANCisgICovDQorDQorLyogLS1FVjYgKi8NCisjZGVmaW5lICBJMkNfRVZFTlRfTUFTVEVSX1RSQU5TTUlUVEVSX01PREVfU0VMRUNURUQgICAgICAgICgodWludDMyX3QpMHgwMDA3MDA4MikgIC8qIEJVU1ksIE1TTCwgQUREUiwgVFhFIGFuZCBUUkEgZmxhZ3MgKi8NCisjZGVmaW5lICBJMkNfRVZFTlRfTUFTVEVSX1JFQ0VJVkVSX01PREVfU0VMRUNURUQgICAgICAgICAgICgodWludDMyX3QpMHgwMDAzMDAwMikgIC8qIEJVU1ksIE1TTCBhbmQgQUREUiBmbGFncyAqLw0KKy8qIC0tRVY5ICovDQorI2RlZmluZSAgSTJDX0VWRU5UX01BU1RFUl9NT0RFX0FERFJFU1MxMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzAwMDgpICAvKiBCVVNZLCBNU0wgYW5kIEFERDEwIGZsYWdzICovDQorDQorLyoqIA0KKyAgKiBAYnJpZWYgQ29tbXVuaWNhdGlvbiBldmVudHMNCisgICogDQorICAqIElmIGEgY29tbXVuaWNhdGlvbiBpcyBlc3RhYmxpc2hlZCAoU1RBUlQgY29uZGl0aW9uIGdlbmVyYXRlZCBhbmQgc2xhdmUgYWRkcmVzcyANCisgICogYWNrbm93bGVkZ2VkKSB0aGVuIHRoZSBtYXN0ZXIgaGFzIHRvIGNoZWNrIG9uIG9uZSBvZiB0aGUgZm9sbG93aW5nIGV2ZW50cyBmb3IgDQorICAqIGNvbW11bmljYXRpb24gcHJvY2VkdXJlczoNCisgICogIA0KKyAgKiAxKSBNYXN0ZXIgUmVjZWl2ZXIgbW9kZTogVGhlIG1hc3RlciBoYXMgdG8gd2FpdCBvbiB0aGUgZXZlbnQgRVY3IHRoZW4gdG8gcmVhZCANCisgICogICAgdGhlIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgc2xhdmUgKEkyQ19SZWNlaXZlRGF0YSgpIGZ1bmN0aW9uKS4NCisgICogDQorICAqIDIpIE1hc3RlciBUcmFuc21pdHRlciBtb2RlOiBUaGUgbWFzdGVyIGhhcyB0byBzZW5kIGRhdGEgKEkyQ19TZW5kRGF0YSgpIA0KKyAgKiAgICBmdW5jdGlvbikgdGhlbiB0byB3YWl0IG9uIGV2ZW50IEVWOCBvciBFVjhfMi4NCisgICogICAgVGhlc2UgdHdvIGV2ZW50cyBhcmUgc2ltaWxhcjogDQorICAqICAgICAtIEVWOCBtZWFucyB0aGF0IHRoZSBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4gaW4gdGhlIGRhdGEgcmVnaXN0ZXIgYW5kIGlzIA0KKyAgKiAgICAgICBiZWluZyBzaGlmdGVkIG91dC4NCisgICogICAgIC0gRVY4XzIgbWVhbnMgdGhhdCB0aGUgZGF0YSBoYXMgYmVlbiBwaHlzaWNhbGx5IHNoaWZ0ZWQgb3V0IGFuZCBvdXRwdXQgDQorICAqICAgICAgIG9uIHRoZSBidXMuDQorICAqICAgICBJbiBtb3N0IGNhc2VzLCB1c2luZyBFVjggaXMgc3VmZmljaWVudCBmb3IgdGhlIGFwcGxpY2F0aW9uLg0KKyAgKiAgICAgVXNpbmcgRVY4XzIgbGVhZHMgdG8gYSBzbG93ZXIgY29tbXVuaWNhdGlvbiBidXQgZW5zdXJlIG1vcmUgcmVsaWFibGUgdGVzdC4NCisgICogICAgIEVWOF8yIGlzIGFsc28gbW9yZSBzdWl0YWJsZSB0aGFuIEVWOCBmb3IgdGVzdGluZyBvbiB0aGUgbGFzdCBkYXRhIHRyYW5zbWlzc2lvbiANCisgICogICAgIChiZWZvcmUgU3RvcCBjb25kaXRpb24gZ2VuZXJhdGlvbikuDQorICAqICAgICANCisgICogIEBub3RlIEluIGNhc2UgdGhlICB1c2VyIHNvZnR3YXJlIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IHRoaXMgZXZlbnQgRVY3IGlzIA0KKyAgKiAgbWFuYWdlZCBiZWZvcmUgdGhlIGN1cnJlbnQgYnl0ZSBlbmQgb2YgdHJhbnNmZXIsIHRoZW4gdXNlciBtYXkgY2hlY2sgb24gRVY3IA0KKyAgKiAgYW5kIEJURiBmbGFnIGF0IHRoZSBzYW1lIHRpbWUgKGllLiAoSTJDX0VWRU5UX01BU1RFUl9CWVRFX1JFQ0VJVkVEIHwgSTJDX0ZMQUdfQlRGKSkuDQorICAqICBJbiB0aGlzIGNhc2UgdGhlIGNvbW11bmljYXRpb24gbWF5IGJlIHNsb3dlci4NCisgICogDQorICAqLw0KKw0KKy8qIE1hc3RlciBSRUNFSVZFUiBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gDQorLyogLS1FVjcgKi8NCisjZGVmaW5lICBJMkNfRVZFTlRfTUFTVEVSX0JZVEVfUkVDRUlWRUQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAzMDA0MCkgIC8qIEJVU1ksIE1TTCBhbmQgUlhORSBmbGFncyAqLw0KKw0KKy8qIE1hc3RlciBUUkFOU01JVFRFUiBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiAtLUVWOCAqLw0KKyNkZWZpbmUgSTJDX0VWRU5UX01BU1RFUl9CWVRFX1RSQU5TTUlUVElORyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDcwMDgwKSAvKiBUUkEsIEJVU1ksIE1TTCwgVFhFIGZsYWdzICovDQorLyogLS1FVjhfMiAqLw0KKyNkZWZpbmUgIEkyQ19FVkVOVF9NQVNURVJfQllURV9UUkFOU01JVFRFRCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDcwMDg0KSAgLyogVFJBLCBCVVNZLCBNU0wsIFRYRSBhbmQgQlRGIGZsYWdzICovDQorDQorDQorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICAgICANCisgICAgICAgICAgICAgICAgICAgICBJMkMgU2xhdmUgRXZlbnRzIChFdmVudHMgZ3JvdXBlZCBpbiBvcmRlciBvZiBjb21tdW5pY2F0aW9uKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCisNCisvKiogDQorICAqIEBicmllZiAgQ29tbXVuaWNhdGlvbiBzdGFydCBldmVudHMNCisgICogDQorICAqIFdhaXQgb24gb25lIG9mIHRoZXNlIGV2ZW50cyBhdCB0aGUgc3RhcnQgb2YgdGhlIGNvbW11bmljYXRpb24uIEl0IG1lYW5zIHRoYXQgDQorICAqIHRoZSBJMkMgcGVyaXBoZXJhbCBkZXRlY3RlZCBhIFN0YXJ0IGNvbmRpdGlvbiBvbiB0aGUgYnVzIChnZW5lcmF0ZWQgYnkgbWFzdGVyIA0KKyAgKiBkZXZpY2UpIGZvbGxvd2VkIGJ5IHRoZSBwZXJpcGhlcmFsIGFkZHJlc3MuIFRoZSBwZXJpcGhlcmFsIGdlbmVyYXRlcyBhbiBBQ0sgDQorICAqIGNvbmRpdGlvbiBvbiB0aGUgYnVzIChpZiB0aGUgYWNrbm93bGVkZ2UgZmVhdHVyZSBpcyBlbmFibGVkIHRocm91Z2ggZnVuY3Rpb24gDQorICAqIEkyQ19BY2tub3dsZWRnZUNvbmZpZygpKSBhbmQgdGhlIGV2ZW50cyBsaXN0ZWQgYWJvdmUgYXJlIHNldCA6DQorICAqICANCisgICogMSkgSW4gbm9ybWFsIGNhc2UgKG9ubHkgb25lIGFkZHJlc3MgbWFuYWdlZCBieSB0aGUgc2xhdmUpLCB3aGVuIHRoZSBhZGRyZXNzIA0KKyAgKiAgIHNlbnQgYnkgdGhlIG1hc3RlciBtYXRjaGVzIHRoZSBvd24gYWRkcmVzcyBvZiB0aGUgcGVyaXBoZXJhbCAoY29uZmlndXJlZCBieSANCisgICogICBJMkNfT3duQWRkcmVzczEgZmllbGQpIHRoZSBJMkNfRVZFTlRfU0xBVkVfWFhYX0FERFJFU1NfTUFUQ0hFRCBldmVudCBpcyBzZXQgDQorICAqICAgKHdoZXJlIFhYWCBjb3VsZCBiZSBUUkFOU01JVFRFUiBvciBSRUNFSVZFUikuDQorICAqICAgIA0KKyAgKiAyKSBJbiBjYXNlIHRoZSBhZGRyZXNzIHNlbnQgYnkgdGhlIG1hc3RlciBtYXRjaGVzIHRoZSBzZWNvbmQgYWRkcmVzcyBvZiB0aGUgDQorICAqICAgcGVyaXBoZXJhbCAoY29uZmlndXJlZCBieSB0aGUgZnVuY3Rpb24gSTJDX093bkFkZHJlc3MyQ29uZmlnKCkgYW5kIGVuYWJsZWQgDQorICAqICAgYnkgdGhlIGZ1bmN0aW9uIEkyQ19EdWFsQWRkcmVzc0NtZCgpKSB0aGUgZXZlbnRzIEkyQ19FVkVOVF9TTEFWRV9YWFhfU0VDT05EQUREUkVTU19NQVRDSEVEIA0KKyAgKiAgICh3aGVyZSBYWFggY291bGQgYmUgVFJBTlNNSVRURVIgb3IgUkVDRUlWRVIpIGFyZSBzZXQuDQorICAqICAgDQorICAqIDMpIEluIGNhc2UgdGhlIGFkZHJlc3Mgc2VudCBieSB0aGUgbWFzdGVyIGlzIEdlbmVyYWwgQ2FsbCAoYWRkcmVzcyAweDAwKSBhbmQgDQorICAqICAgaWYgdGhlIEdlbmVyYWwgQ2FsbCBpcyBlbmFibGVkIGZvciB0aGUgcGVyaXBoZXJhbCAodXNpbmcgZnVuY3Rpb24gSTJDX0dlbmVyYWxDYWxsQ21kKCkpIA0KKyAgKiAgIHRoZSBmb2xsb3dpbmcgZXZlbnQgaXMgc2V0IEkyQ19FVkVOVF9TTEFWRV9HRU5FUkFMQ0FMTEFERFJFU1NfTUFUQ0hFRC4gICANCisgICogDQorICAqLw0KKw0KKy8qIC0tRVYxICAoYWxsIHRoZSBldmVudHMgYmVsb3cgYXJlIHZhcmlhbnRzIG9mIEVWMSkgKi8gICANCisvKiAxKSBDYXNlIG9mIE9uZSBTaW5nbGUgQWRkcmVzcyBtYW5hZ2VkIGJ5IHRoZSBzbGF2ZSAqLw0KKyNkZWZpbmUgIEkyQ19FVkVOVF9TTEFWRV9SRUNFSVZFUl9BRERSRVNTX01BVENIRUQgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAyKSAvKiBCVVNZIGFuZCBBRERSIGZsYWdzICovDQorI2RlZmluZSAgSTJDX0VWRU5UX1NMQVZFX1RSQU5TTUlUVEVSX0FERFJFU1NfTUFUQ0hFRCAgICAgICAoKHVpbnQzMl90KTB4MDAwNjAwODIpIC8qIFRSQSwgQlVTWSwgVFhFIGFuZCBBRERSIGZsYWdzICovDQorDQorLyogMikgQ2FzZSBvZiBEdWFsIGFkZHJlc3MgbWFuYWdlZCBieSB0aGUgc2xhdmUgKi8NCisjZGVmaW5lICBJMkNfRVZFTlRfU0xBVkVfUkVDRUlWRVJfU0VDT05EQUREUkVTU19NQVRDSEVEICAgICgodWludDMyX3QpMHgwMDgyMDAwMCkgIC8qIERVQUxGIGFuZCBCVVNZIGZsYWdzICovDQorI2RlZmluZSAgSTJDX0VWRU5UX1NMQVZFX1RSQU5TTUlUVEVSX1NFQ09OREFERFJFU1NfTUFUQ0hFRCAoKHVpbnQzMl90KTB4MDA4NjAwODApICAvKiBEVUFMRiwgVFJBLCBCVVNZIGFuZCBUWEUgZmxhZ3MgKi8NCisNCisvKiAzKSBDYXNlIG9mIEdlbmVyYWwgQ2FsbCBlbmFibGVkIGZvciB0aGUgc2xhdmUgKi8NCisjZGVmaW5lICBJMkNfRVZFTlRfU0xBVkVfR0VORVJBTENBTExBRERSRVNTX01BVENIRUQgICAgICAgICgodWludDMyX3QpMHgwMDEyMDAwMCkgIC8qIEdFTkNBTEwgYW5kIEJVU1kgZmxhZ3MgKi8NCisNCisvKiogDQorICAqIEBicmllZiAgQ29tbXVuaWNhdGlvbiBldmVudHMNCisgICogDQorICAqIFdhaXQgb24gb25lIG9mIHRoZXNlIGV2ZW50cyB3aGVuIEVWMSBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgYW5kOiANCisgICogDQorICAqIC0gU2xhdmUgUkVDRUlWRVIgbW9kZToNCisgICogICAgIC0gRVYyOiBXaGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBleHBlY3RpbmcgYSBkYXRhIGJ5dGUgdG8gYmUgcmVjZWl2ZWQuIA0KKyAgKiAgICAgLSBFVjQ6IFdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGV4cGVjdGluZyB0aGUgZW5kIG9mIHRoZSBjb21tdW5pY2F0aW9uOiBtYXN0ZXIgDQorICAqICAgICAgIHNlbmRzIGEgc3RvcCBjb25kaXRpb24gYW5kIGRhdGEgdHJhbnNtaXNzaW9uIGlzIHN0b3BwZWQuDQorICAqICAgIA0KKyAgKiAtIFNsYXZlIFRyYW5zbWl0dGVyIG1vZGU6DQorICAqICAgIC0gRVYzOiBXaGVuIGEgYnl0ZSBoYXMgYmVlbiB0cmFuc21pdHRlZCBieSB0aGUgc2xhdmUgYW5kIHRoZSBhcHBsaWNhdGlvbiBpcyBleHBlY3RpbmcgDQorICAqICAgICAgdGhlIGVuZCBvZiB0aGUgYnl0ZSB0cmFuc21pc3Npb24uIFRoZSB0d28gZXZlbnRzIEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVEVEIGFuZA0KKyAgKiAgICAgIEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVElORyBhcmUgc2ltaWxhci4gVGhlIHNlY29uZCBvbmUgY2FuIG9wdGlvbmFsbHkgYmUgDQorICAqICAgICAgdXNlZCB3aGVuIHRoZSB1c2VyIHNvZnR3YXJlIGRvZXNuJ3QgZ3VhcmFudGVlIHRoZSBFVjMgaXMgbWFuYWdlZCBiZWZvcmUgdGhlDQorICAqICAgICAgY3VycmVudCBieXRlIGVuZCBvZiB0cmFuZmVyLg0KKyAgKiAgICAtIEVWM18yOiBXaGVuIHRoZSBtYXN0ZXIgc2VuZHMgYSBOQUNLIGluIG9yZGVyIHRvIHRlbGwgc2xhdmUgdGhhdCBkYXRhIHRyYW5zbWlzc2lvbiANCisgICogICAgICBzaGFsbCBlbmQgKGJlZm9yZSBzZW5kaW5nIHRoZSBTVE9QIGNvbmRpdGlvbikuIEluIHRoaXMgY2FzZSBzbGF2ZSBoYXMgdG8gc3RvcCBzZW5kaW5nIA0KKyAgKiAgICAgIGRhdGEgYnl0ZXMgYW5kIGV4cGVjdCBhIFN0b3AgY29uZGl0aW9uIG9uIHRoZSBidXMuDQorICAqICAgICAgDQorICAqICBAbm90ZSBJbiBjYXNlIHRoZSAgdXNlciBzb2Z0d2FyZSBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCB0aGUgZXZlbnQgRVYyIGlzIA0KKyAgKiAgbWFuYWdlZCBiZWZvcmUgdGhlIGN1cnJlbnQgYnl0ZSBlbmQgb2YgdHJhbnNmZXIsIHRoZW4gdXNlciBtYXkgY2hlY2sgb24gRVYyIA0KKyAgKiAgYW5kIEJURiBmbGFnIGF0IHRoZSBzYW1lIHRpbWUgKGllLiAoSTJDX0VWRU5UX1NMQVZFX0JZVEVfUkVDRUlWRUQgfCBJMkNfRkxBR19CVEYpKS4NCisgICogIEluIHRoaXMgY2FzZSB0aGUgY29tbXVuaWNhdGlvbiBtYXkgYmUgc2xvd2VyLg0KKyAgKg0KKyAgKi8NCisNCisvKiBTbGF2ZSBSRUNFSVZFUiBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gDQorLyogLS1FVjIgKi8NCisjZGVmaW5lICBJMkNfRVZFTlRfU0xBVkVfQllURV9SRUNFSVZFRCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDA0MCkgIC8qIEJVU1kgYW5kIFJYTkUgZmxhZ3MgKi8NCisvKiAtLUVWNCAgKi8NCisjZGVmaW5lICBJMkNfRVZFTlRfU0xBVkVfU1RPUF9ERVRFQ1RFRCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgIC8qIFNUT1BGIGZsYWcgKi8NCisNCisvKiBTbGF2ZSBUUkFOU01JVFRFUiBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiAtLUVWMyAqLw0KKyNkZWZpbmUgIEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVEVEICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDYwMDg0KSAgLyogVFJBLCBCVVNZLCBUWEUgYW5kIEJURiBmbGFncyAqLw0KKyNkZWZpbmUgIEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVElORyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDYwMDgwKSAgLyogVFJBLCBCVVNZIGFuZCBUWEUgZmxhZ3MgKi8NCisvKiAtLUVWM18yICovDQorI2RlZmluZSAgSTJDX0VWRU5UX1NMQVZFX0FDS19GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAvKiBBRiBmbGFnICovDQorDQorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgICBFbmQgb2YgRXZlbnRzIERlc2NyaXB0aW9uICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KKw0KKyNkZWZpbmUgSVNfSTJDX0VWRU5UKEVWRU5UKSAoKChFVkVOVCkgPT0gSTJDX0VWRU5UX1NMQVZFX1RSQU5TTUlUVEVSX0FERFJFU1NfTUFUQ0hFRCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX1NMQVZFX1JFQ0VJVkVSX0FERFJFU1NfTUFUQ0hFRCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX1NMQVZFX1RSQU5TTUlUVEVSX1NFQ09OREFERFJFU1NfTUFUQ0hFRCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX1NMQVZFX1JFQ0VJVkVSX1NFQ09OREFERFJFU1NfTUFUQ0hFRCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX1NMQVZFX0dFTkVSQUxDQUxMQUREUkVTU19NQVRDSEVEKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSBJMkNfRVZFTlRfU0xBVkVfQllURV9SRUNFSVZFRCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gKEkyQ19FVkVOVF9TTEFWRV9CWVRFX1JFQ0VJVkVEIHwgSTJDX0ZMQUdfRFVBTEYpKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSAoSTJDX0VWRU5UX1NMQVZFX0JZVEVfUkVDRUlWRUQgfCBJMkNfRkxBR19HRU5DQUxMKSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX1NMQVZFX0JZVEVfVFJBTlNNSVRURUQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IChJMkNfRVZFTlRfU0xBVkVfQllURV9UUkFOU01JVFRFRCB8IEkyQ19GTEFHX0RVQUxGKSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gKEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVEVEIHwgSTJDX0ZMQUdfR0VOQ0FMTCkpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9TTEFWRV9TVE9QX0RFVEVDVEVEKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSBJMkNfRVZFTlRfTUFTVEVSX01PREVfU0VMRUNUKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSBJMkNfRVZFTlRfTUFTVEVSX1RSQU5TTUlUVEVSX01PREVfU0VMRUNURUQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9NQVNURVJfUkVDRUlWRVJfTU9ERV9TRUxFQ1RFRCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX01BU1RFUl9CWVRFX1JFQ0VJVkVEKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSBJMkNfRVZFTlRfTUFTVEVSX0JZVEVfVFJBTlNNSVRURUQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9NQVNURVJfQllURV9UUkFOU01JVFRJTkcpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9NQVNURVJfTU9ERV9BRERSRVNTMTApIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9TTEFWRV9BQ0tfRkFJTFVSRSkpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgSTJDX293bl9hZGRyZXNzMSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBJU19JMkNfT1dOX0FERFJFU1MxKEFERFJFU1MxKSAoKEFERFJFU1MxKSA8PSAweDNGRikNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBJMkNfY2xvY2tfc3BlZWQgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgSVNfSTJDX0NMT0NLX1NQRUVEKFNQRUVEKSAoKChTUEVFRCkgPj0gMHgxKSAmJiAoKFNQRUVEKSA8PSA0MDAwMDApKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBJMkNfRXhwb3J0ZWRfTWFjcm9zDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEkyQ19FeHBvcnRlZF9GdW5jdGlvbnMNCisgICogQHsNCisgICovDQorDQordm9pZCBJMkNfRGVJbml0KEkyQ19UeXBlRGVmKiBJMkN4KTsNCit2b2lkIEkyQ19Jbml0KEkyQ19UeXBlRGVmKiBJMkN4LCBJMkNfSW5pdFR5cGVEZWYqIEkyQ19Jbml0U3RydWN0KTsNCit2b2lkIEkyQ19TdHJ1Y3RJbml0KEkyQ19Jbml0VHlwZURlZiogSTJDX0luaXRTdHJ1Y3QpOw0KK3ZvaWQgSTJDX0NtZChJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIEkyQ19ETUFDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBJMkNfRE1BTGFzdFRyYW5zZmVyQ21kKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgSTJDX0dlbmVyYXRlU1RBUlQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBJMkNfR2VuZXJhdGVTVE9QKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgSTJDX0Fja25vd2xlZGdlQ29uZmlnKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgSTJDX093bkFkZHJlc3MyQ29uZmlnKEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50OF90IEFkZHJlc3MpOw0KK3ZvaWQgSTJDX0R1YWxBZGRyZXNzQ21kKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgSTJDX0dlbmVyYWxDYWxsQ21kKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgSTJDX0lUQ29uZmlnKEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50MTZfdCBJMkNfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBJMkNfU2VuZERhdGEoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQ4X3QgRGF0YSk7DQordWludDhfdCBJMkNfUmVjZWl2ZURhdGEoSTJDX1R5cGVEZWYqIEkyQ3gpOw0KK3ZvaWQgSTJDX1NlbmQ3Yml0QWRkcmVzcyhJMkNfVHlwZURlZiogSTJDeCwgdWludDhfdCBBZGRyZXNzLCB1aW50OF90IEkyQ19EaXJlY3Rpb24pOw0KK3VpbnQxNl90IEkyQ19SZWFkUmVnaXN0ZXIoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQ4X3QgSTJDX1JlZ2lzdGVyKTsNCit2b2lkIEkyQ19Tb2Z0d2FyZVJlc2V0Q21kKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgSTJDX1NNQnVzQWxlcnRDb25maWcoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQxNl90IEkyQ19TTUJ1c0FsZXJ0KTsNCit2b2lkIEkyQ19UcmFuc21pdFBFQyhJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIEkyQ19QRUNQb3NpdGlvbkNvbmZpZyhJMkNfVHlwZURlZiogSTJDeCwgdWludDE2X3QgSTJDX1BFQ1Bvc2l0aW9uKTsNCit2b2lkIEkyQ19DYWxjdWxhdGVQRUMoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordWludDhfdCBJMkNfR2V0UEVDKEkyQ19UeXBlRGVmKiBJMkN4KTsNCit2b2lkIEkyQ19BUlBDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBJMkNfU3RyZXRjaENsb2NrQ21kKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgSTJDX0Zhc3RNb2RlRHV0eUN5Y2xlQ29uZmlnKEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50MTZfdCBJMkNfRHV0eUN5Y2xlKTsNCisNCisvKioNCisgKiBAYnJpZWYNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgSTJDIFN0YXRlIE1vbml0b3JpbmcgRnVuY3Rpb25zDQorICogICAgICAgICAgICAgICAgICAgICAgIA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgDQorICogVGhpcyBJMkMgZHJpdmVyIHByb3ZpZGVzIHRocmVlIGRpZmZlcmVudCB3YXlzIGZvciBJMkMgc3RhdGUgbW9uaXRvcmluZw0KKyAqICBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cyBhbmQgY29uc3RyYWludHM6DQorICogICAgICAgIA0KKyAqICANCisgKiAxKSBCYXNpYyBzdGF0ZSBtb25pdG9yaW5nOg0KKyAqICAgIFVzaW5nIEkyQ19DaGVja0V2ZW50KCkgZnVuY3Rpb246DQorICogICAgSXQgY29tcGFyZXMgdGhlIHN0YXR1cyByZWdpc3RlcnMgKFNSMSBhbmQgU1IyKSBjb250ZW50IHRvIGEgZ2l2ZW4gZXZlbnQNCisgKiAgICAoY2FuIGJlIHRoZSBjb21iaW5hdGlvbiBvZiBvbmUgb3IgbW9yZSBmbGFncykuDQorICogICAgSXQgcmV0dXJucyBTVUNDRVNTIGlmIHRoZSBjdXJyZW50IHN0YXR1cyBpbmNsdWRlcyB0aGUgZ2l2ZW4gZmxhZ3MgDQorICogICAgYW5kIHJldHVybnMgRVJST1IgaWYgb25lIG9yIG1vcmUgZmxhZ3MgYXJlIG1pc3NpbmcgaW4gdGhlIGN1cnJlbnQgc3RhdHVzLg0KKyAqICAgIC0gV2hlbiB0byB1c2U6DQorICogICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgc3VpdGFibGUgZm9yIG1vc3QgYXBwbGljYXRpb25zIGFzIHdlbGwgYXMgZm9yIHN0YXJ0dXAgDQorICogICAgICBhY3Rpdml0eSBzaW5jZSB0aGUgZXZlbnRzIGFyZSBmdWxseSBkZXNjcmliZWQgaW4gdGhlIHByb2R1Y3QgcmVmZXJlbmNlIG1hbnVhbCANCisgKiAgICAgIChSTTAwMDgpLg0KKyAqICAgICAgLSBJdCBpcyBhbHNvIHN1aXRhYmxlIGZvciB1c2VycyB3aG8gbmVlZCB0byBkZWZpbmUgdGhlaXIgb3duIGV2ZW50cy4NCisgKiAgICAtIExpbWl0YXRpb25zOg0KKyAqICAgICAgLSBJZiBhbiBlcnJvciBvY2N1cnMgKGllLiBlcnJvciBmbGFncyBhcmUgc2V0IGJlc2lkZXMgdG8gdGhlIG1vbml0b3JlZCBmbGFncyksDQorICogICAgICAgIHRoZSBJMkNfQ2hlY2tFdmVudCgpIGZ1bmN0aW9uIG1heSByZXR1cm4gU1VDQ0VTUyBkZXNwaXRlIHRoZSBjb21tdW5pY2F0aW9uDQorICogICAgICAgIGhvbGQgb3IgY29ycnVwdGVkIHJlYWwgc3RhdGUuIA0KKyAqICAgICAgICBJbiB0aGlzIGNhc2UsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGVycm9yIGludGVycnVwdHMgdG8gbW9uaXRvciB0aGUgZXJyb3INCisgKiAgICAgICAgZXZlbnRzIGFuZCBoYW5kbGUgdGhlbSBpbiB0aGUgaW50ZXJydXB0IElSUSBoYW5kbGVyLg0KKyAqICAgICAgICANCisgKiAgICAgICAgQG5vdGUgDQorICogICAgICAgIEZvciBlcnJvciBtYW5hZ2VtZW50LCBpdCBpcyBhZHZpc2VkIHRvIHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoNCisgKiAgICAgICAgICAtIEkyQ19JVENvbmZpZygpIHRvIGNvbmZpZ3VyZSBhbmQgZW5hYmxlIHRoZSBlcnJvciBpbnRlcnJ1cHRzIChJMkNfSVRfRVJSKS4NCisgKiAgICAgICAgICAtIEkyQ3hfRVJfSVJRSGFuZGxlcigpIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBlcnJvciBpbnRlcnVycHQgb2NjdXJzLg0KKyAqICAgICAgICAgICAgV2hlcmUgeCBpcyB0aGUgcGVyaXBoZXJhbCBpbnN0YW5jZSAoSTJDMSwgSTJDMiAuLi4pDQorICogICAgICAgICAgLSBJMkNfR2V0RmxhZ1N0YXR1cygpIG9yIEkyQ19HZXRJVFN0YXR1cygpIHRvIGJlIGNhbGxlZCBpbnRvIHRoZSBJMkN4X0VSX0lSUUhhbmRsZXIoKSBmdW5jdGlvbiANCisgKiAgICAgICAgICAgIGluIG9yZGVyIHRvIGRldGVybWluZSB3aGljaCBlcnJvciBvY2N1cmVkLg0KKyAqICAgICAgICAgIC0gSTJDX0NsZWFyRmxhZygpIG9yIEkyQ19DbGVhcklUUGVuZGluZ0JpdCgpIGFuZC9vciBJMkNfU29mdHdhcmVSZXNldENtZCgpIGFuZC9vciBJMkNfR2VuZXJhdGVTdG9wKCkgDQorICogICAgICAgICAgICBpbiBvcmRlciB0byBjbGVhciB0aGUgZXJyb3IgZmxhZyBhbmQgc291cmNlIGFuZCByZXR1cm4gdG8gY29ycmVjdCANCisgKiAgICAgICAgICAgIGNvbW11bmljYXRpb24gc3RhdHVzLg0KKyAqICAgICAgICAgICAgDQorICoNCisgKiAgMikgQWR2YW5jZWQgc3RhdGUgbW9uaXRvcmluZzoNCisgKiAgICAgVXNpbmcgdGhlIGZ1bmN0aW9uIEkyQ19HZXRMYXN0RXZlbnQoKSB3aGljaCByZXR1cm5zIHRoZSBpbWFnZSBvZiBib3RoIHN0YXR1cyANCisgKiAgICAgcmVnaXN0ZXJzIGluIGEgc2luZ2xlIHdvcmQgKHVpbnQzMl90KSAoU3RhdHVzIFJlZ2lzdGVyIDIgdmFsdWUgaXMgc2hpZnRlZCBsZWZ0IA0KKyAqICAgICBieSAxNiBiaXRzIGFuZCBjb25jYXRlbmF0ZWQgdG8gU3RhdHVzIFJlZ2lzdGVyIDEpLg0KKyAqICAgICAtIFdoZW4gdG8gdXNlOg0KKyAqICAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgdGhlIHNhbWUgYXBwbGljYXRpb25zIGFib3ZlIGJ1dCBpdCBhbGxvd3MgdG8NCisgKiAgICAgICAgIG92ZXJjb21lIHRoZSBsaW1pdGF0aW9ucyBvZiBJMkNfR2V0RmxhZ1N0YXR1cygpIGZ1bmN0aW9uIChzZWUgYmVsb3cpLg0KKyAqICAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIGNvdWxkIGJlIGNvbXBhcmVkIHRvIGV2ZW50cyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIA0KKyAqICAgICAgICAgbGlicmFyeSAoc3RtMzJmMTB4X2kyYy5oKSBvciB0byBjdXN0b20gdmFsdWVzIGRlZmluZWQgYnkgdXNlci4NCisgKiAgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgc3VpdGFibGUgd2hlbiBtdWx0aXBsZSBmbGFncyBhcmUgbW9uaXRvcmVkIGF0IHRoZSBzYW1lIHRpbWUuDQorICogICAgICAgLSBBdCB0aGUgb3Bwb3NpdGUgb2YgSTJDX0NoZWNrRXZlbnQoKSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBhbGxvd3MgdXNlciB0bw0KKyAqICAgICAgICAgY2hvb3NlIHdoZW4gYW4gZXZlbnQgaXMgYWNjZXB0ZWQgKHdoZW4gYWxsIGV2ZW50cyBmbGFncyBhcmUgc2V0IGFuZCBubyANCisgKiAgICAgICAgIG90aGVyIGZsYWdzIGFyZSBzZXQgb3IganVzdCB3aGVuIHRoZSBuZWVkZWQgZmxhZ3MgYXJlIHNldCBsaWtlIA0KKyAqICAgICAgICAgSTJDX0NoZWNrRXZlbnQoKSBmdW5jdGlvbikuDQorICogICAgIC0gTGltaXRhdGlvbnM6DQorICogICAgICAgLSBVc2VyIG1heSBuZWVkIHRvIGRlZmluZSBoaXMgb3duIGV2ZW50cy4NCisgKiAgICAgICAtIFNhbWUgcmVtYXJrIGNvbmNlcm5pbmcgdGhlIGVycm9yIG1hbmFnZW1lbnQgaXMgYXBwbGljYWJsZSBmb3IgdGhpcyANCisgKiAgICAgICAgIGZ1bmN0aW9uIGlmIHVzZXIgZGVjaWRlcyB0byBjaGVjayBvbmx5IHJlZ3VsYXIgY29tbXVuaWNhdGlvbiBmbGFncyAoYW5kIA0KKyAqICAgICAgICAgaWdub3JlcyBlcnJvciBmbGFncykuDQorICogICAgIA0KKyAqDQorICogIDMpIEZsYWctYmFzZWQgc3RhdGUgbW9uaXRvcmluZzoNCisgKiAgICAgVXNpbmcgdGhlIGZ1bmN0aW9uIEkyQ19HZXRGbGFnU3RhdHVzKCkgd2hpY2ggc2ltcGx5IHJldHVybnMgdGhlIHN0YXR1cyBvZiANCisgKiAgICAgb25lIHNpbmdsZSBmbGFnIChpZS4gSTJDX0ZMQUdfUlhORSAuLi4pLiANCisgKiAgICAgLSBXaGVuIHRvIHVzZToNCisgKiAgICAgICAgLSBUaGlzIGZ1bmN0aW9uIGNvdWxkIGJlIHVzZWQgZm9yIHNwZWNpZmljIGFwcGxpY2F0aW9ucyBvciBpbiBkZWJ1ZyBwaGFzZS4NCisgKiAgICAgICAgLSBJdCBpcyBzdWl0YWJsZSB3aGVuIG9ubHkgb25lIGZsYWcgY2hlY2tpbmcgaXMgbmVlZGVkIChtb3N0IEkyQyBldmVudHMgDQorICogICAgICAgICAgYXJlIG1vbml0b3JlZCB0aHJvdWdoIG11bHRpcGxlIGZsYWdzKS4NCisgKiAgICAgLSBMaW1pdGF0aW9uczogDQorICogICAgICAgIC0gV2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSBTdGF0dXMgcmVnaXN0ZXIgaXMgYWNjZXNzZWQuIFNvbWUgZmxhZ3MgYXJlDQorICogICAgICAgICAgY2xlYXJlZCB3aGVuIHRoZSBzdGF0dXMgcmVnaXN0ZXIgaXMgYWNjZXNzZWQuIFNvIGNoZWNraW5nIHRoZSBzdGF0dXMNCisgKiAgICAgICAgICBvZiBvbmUgRmxhZywgbWF5IGNsZWFyIG90aGVyIG9uZXMuDQorICogICAgICAgIC0gRnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIHR3aWNlIG9yIG1vcmUgaW4gb3JkZXIgdG8gbW9uaXRvciBvbmUgDQorICogICAgICAgICAgc2luZ2xlIGV2ZW50Lg0KKyAqICAgICAgICAgICAgDQorICovDQorDQorLyoqDQorICogDQorICogIDEpIEJhc2ljIHN0YXRlIG1vbml0b3JpbmcNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqLw0KK0Vycm9yU3RhdHVzIEkyQ19DaGVja0V2ZW50KEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50MzJfdCBJMkNfRVZFTlQpOw0KKy8qKg0KKyAqIA0KKyAqICAyKSBBZHZhbmNlZCBzdGF0ZSBtb25pdG9yaW5nDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKi8NCit1aW50MzJfdCBJMkNfR2V0TGFzdEV2ZW50KEkyQ19UeXBlRGVmKiBJMkN4KTsNCisvKioNCisgKiANCisgKiAgMykgRmxhZy1iYXNlZCBzdGF0ZSBtb25pdG9yaW5nDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKi8NCitGbGFnU3RhdHVzIEkyQ19HZXRGbGFnU3RhdHVzKEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50MzJfdCBJMkNfRkxBRyk7DQorLyoqDQorICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqLw0KKw0KK3ZvaWQgSTJDX0NsZWFyRmxhZyhJMkNfVHlwZURlZiogSTJDeCwgdWludDMyX3QgSTJDX0ZMQUcpOw0KK0lUU3RhdHVzIEkyQ19HZXRJVFN0YXR1cyhJMkNfVHlwZURlZiogSTJDeCwgdWludDMyX3QgSTJDX0lUKTsNCit2b2lkIEkyQ19DbGVhcklUUGVuZGluZ0JpdChJMkNfVHlwZURlZiogSTJDeCwgdWludDMyX3QgSTJDX0lUKTsNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorI2VuZGlmIC8qX19TVE0zMkwxeHhfSTJDX0ggKi8NCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL2luYy9zdG0zMmwxeHhfcHdyLmggYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3B3ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NmFhOWUKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3B3ci5oCkBAIC0wLDAgKzEsMjA4IEBACisvKioNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAZmlsZSAgICBzdG0zMmwxeHhfcHdyLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBQV1IgZmlybXdhcmUgDQorICAqICAgICAgICAgIGxpYnJhcnkuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisNCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZm5kZWYgX19TVE0zMkwxeHhfUFdSX0gNCisjZGVmaW5lIF9fU1RNMzJMMXh4X1BXUl9IDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorIGV4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eC5oIg0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlcg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgUFdSDQorICAqIEB7DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFBXUl9FeHBvcnRlZF9UeXBlcw0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFBXUl9FeHBvcnRlZF9Db25zdGFudHMNCisgICogQHsNCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgUFZEX2RldGVjdGlvbl9sZXZlbCANCisgICogQHsNCisgICovIA0KKw0KKyNkZWZpbmUgUFdSX1BWRExldmVsXzAgICAgICAgICAgUFdSX0NSX1BMU19MRVYwDQorI2RlZmluZSBQV1JfUFZETGV2ZWxfMSAgICAgICAgICBQV1JfQ1JfUExTX0xFVjENCisjZGVmaW5lIFBXUl9QVkRMZXZlbF8yICAgICAgICAgIFBXUl9DUl9QTFNfTEVWMg0KKyNkZWZpbmUgUFdSX1BWRExldmVsXzMgICAgICAgICAgUFdSX0NSX1BMU19MRVYzDQorI2RlZmluZSBQV1JfUFZETGV2ZWxfNCAgICAgICAgICBQV1JfQ1JfUExTX0xFVjQNCisjZGVmaW5lIFBXUl9QVkRMZXZlbF81ICAgICAgICAgIFBXUl9DUl9QTFNfTEVWNQ0KKyNkZWZpbmUgUFdSX1BWRExldmVsXzYgICAgICAgICAgUFdSX0NSX1BMU19MRVY2DQorI2RlZmluZSBQV1JfUFZETGV2ZWxfNyAgICAgICAgICBQV1JfQ1JfUExTX0xFVjcgLyogRXh0ZXJuYWwgaW5wdXQgYW5hbG9nIHZvbHRhZ2UgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29tcGFyZSBpbnRlcm5hbGx5IHRvIFZSRUZJTlQpICovDQorI2RlZmluZSBJU19QV1JfUFZEX0xFVkVMKExFVkVMKSAoKChMRVZFTCkgPT0gUFdSX1BWRExldmVsXzApIHx8ICgoTEVWRUwpID09IFBXUl9QVkRMZXZlbF8xKXx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFVkVMKSA9PSBQV1JfUFZETGV2ZWxfMikgfHwgKChMRVZFTCkgPT0gUFdSX1BWRExldmVsXzMpfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVWRUwpID09IFBXUl9QVkRMZXZlbF80KSB8fCAoKExFVkVMKSA9PSBQV1JfUFZETGV2ZWxfNSl8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRVZFTCkgPT0gUFdSX1BWRExldmVsXzYpIHx8ICgoTEVWRUwpID09IFBXUl9QVkRMZXZlbF83KSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBXYWtlVXBfUGlucyANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBQV1JfV2FrZVVwUGluXzEgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkNCisjZGVmaW5lIFBXUl9XYWtlVXBQaW5fMiAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQ0KKyNkZWZpbmUgUFdSX1dha2VVcFBpbl8zICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpDQorI2RlZmluZSBJU19QV1JfV0FLRVVQX1BJTihQSU4pICgoKFBJTikgPT0gUFdSX1dha2VVcFBpbl8xKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gUFdSX1dha2VVcFBpbl8yKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gUFdSX1dha2VVcFBpbl8zKSkNCisvKioNCisgICogQH0NCisgICovDQorDQorICANCisvKiogQGRlZmdyb3VwIFZvbHRhZ2VfU2NhbGluZ19SYW5nZXMNCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBQV1JfVm9sdGFnZVNjYWxpbmdfUmFuZ2UxICAgICAgIFBXUl9DUl9WT1NfMA0KKyNkZWZpbmUgUFdSX1ZvbHRhZ2VTY2FsaW5nX1JhbmdlMiAgICAgICBQV1JfQ1JfVk9TXzENCisjZGVmaW5lIFBXUl9Wb2x0YWdlU2NhbGluZ19SYW5nZTMgICAgICAgUFdSX0NSX1ZPUw0KKw0KKyNkZWZpbmUgSVNfUFdSX1ZPTFRBR0VfU0NBTElOR19SQU5HRShSQU5HRSkgKCgoUkFOR0UpID09IFBXUl9Wb2x0YWdlU2NhbGluZ19SYW5nZTEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJBTkdFKSA9PSBQV1JfVm9sdGFnZVNjYWxpbmdfUmFuZ2UyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSQU5HRSkgPT0gUFdSX1ZvbHRhZ2VTY2FsaW5nX1JhbmdlMykpDQorLyoqDQorICAqIEB9DQorICAqLyAgICANCisgIA0KKy8qKiBAZGVmZ3JvdXAgUmVndWxhdG9yX3N0YXRlX2lzX1NsZWVwX1NUT1BfbW9kZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBQV1JfUmVndWxhdG9yX09OICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkNCisjZGVmaW5lIFBXUl9SZWd1bGF0b3JfTG93UG93ZXIgICAgICAgICAgUFdSX0NSX0xQU0RTUg0KKyNkZWZpbmUgSVNfUFdSX1JFR1VMQVRPUihSRUdVTEFUT1IpICgoKFJFR1VMQVRPUikgPT0gUFdSX1JlZ3VsYXRvcl9PTikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR1VMQVRPUikgPT0gUFdSX1JlZ3VsYXRvcl9Mb3dQb3dlcikpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU0xFRVBfbW9kZV9lbnRyeSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBQV1JfU0xFRVBFbnRyeV9XRkkgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkNCisjZGVmaW5lIFBXUl9TTEVFUEVudHJ5X1dGRSAgICAgICAgICgodWludDhfdCkweDAyKQ0KKyNkZWZpbmUgSVNfUFdSX1NMRUVQX0VOVFJZKEVOVFJZKSAoKChFTlRSWSkgPT0gUFdSX1NMRUVQRW50cnlfV0ZJKSB8fCAoKEVOVFJZKSA9PSBQV1JfU0xFRVBFbnRyeV9XRkUpKQ0KKyANCisvKioNCisgICogQH0NCisgICovDQorICANCisvKiogQGRlZmdyb3VwIFNUT1BfbW9kZV9lbnRyeSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBQV1JfU1RPUEVudHJ5X1dGSSAgICAgICAgICgodWludDhfdCkweDAxKQ0KKyNkZWZpbmUgUFdSX1NUT1BFbnRyeV9XRkUgICAgICAgICAoKHVpbnQ4X3QpMHgwMikNCisjZGVmaW5lIElTX1BXUl9TVE9QX0VOVFJZKEVOVFJZKSAoKChFTlRSWSkgPT0gUFdSX1NUT1BFbnRyeV9XRkkpIHx8ICgoRU5UUlkpID09IFBXUl9TVE9QRW50cnlfV0ZFKSkNCisgDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUFdSX0ZsYWcgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUFdSX0ZMQUdfV1UgICAgICAgICAgICAgICBQV1JfQ1NSX1dVRg0KKyNkZWZpbmUgUFdSX0ZMQUdfU0IgICAgICAgICAgICAgICBQV1JfQ1NSX1NCRg0KKyNkZWZpbmUgUFdSX0ZMQUdfUFZETyAgICAgICAgICAgICBQV1JfQ1NSX1BWRE8NCisjZGVmaW5lIFBXUl9GTEFHX1ZSRUZJTlRSRFkgICAgICAgUFdSX0NTUl9WUkVGSU5UUkRZRg0KKyNkZWZpbmUgUFdSX0ZMQUdfVk9TICAgICAgICAgICAgICBQV1JfQ1NSX1ZPU0YNCisjZGVmaW5lIFBXUl9GTEFHX1JFR0xQICAgICAgICAgICAgUFdSX0NTUl9SRUdMUEYNCisNCisjZGVmaW5lIElTX1BXUl9HRVRfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBQV1JfRkxBR19XVSkgfHwgKChGTEFHKSA9PSBQV1JfRkxBR19TQikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFBXUl9GTEFHX1BWRE8pIHx8ICgoRkxBRykgPT0gUFdSX0ZMQUdfVlJFRklOVFJEWSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFBXUl9GTEFHX1ZPUykgfHwgKChGTEFHKSA9PSBQV1JfRkxBR19SRUdMUCkpDQorDQorI2RlZmluZSBJU19QV1JfQ0xFQVJfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBQV1JfRkxBR19XVSkgfHwgKChGTEFHKSA9PSBQV1JfRkxBR19TQikpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFBXUl9FeHBvcnRlZF9NYWNyb3MNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUFdSX0V4cG9ydGVkX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCit2b2lkIFBXUl9EZUluaXQodm9pZCk7DQordm9pZCBQV1JfUlRDQWNjZXNzQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBQV1JfUFZEQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBQV1JfUFZETGV2ZWxDb25maWcodWludDMyX3QgUFdSX1BWRExldmVsKTsNCit2b2lkIFBXUl9XYWtlVXBQaW5DbWQodWludDMyX3QgUFdSX1dha2VVcFBpbiwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFBXUl9GYXN0V2FrZVVwQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBQV1JfVWx0cmFMb3dQb3dlckNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgUFdSX1ZvbHRhZ2VTY2FsaW5nQ29uZmlnKHVpbnQzMl90IFBXUl9Wb2x0YWdlU2NhbGluZyk7DQordm9pZCBQV1JfRW50ZXJMb3dQb3dlclJ1bk1vZGUoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFBXUl9FbnRlclNsZWVwTW9kZSh1aW50MzJfdCBQV1JfUmVndWxhdG9yLCB1aW50OF90IFBXUl9TTEVFUEVudHJ5KTsNCit2b2lkIFBXUl9FbnRlclNUT1BNb2RlKHVpbnQzMl90IFBXUl9SZWd1bGF0b3IsIHVpbnQ4X3QgUFdSX1NUT1BFbnRyeSk7DQordm9pZCBQV1JfRW50ZXJTVEFOREJZTW9kZSh2b2lkKTsNCitGbGFnU3RhdHVzIFBXUl9HZXRGbGFnU3RhdHVzKHVpbnQzMl90IFBXUl9GTEFHKTsNCit2b2lkIFBXUl9DbGVhckZsYWcodWludDMyX3QgUFdSX0ZMQUcpOw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisjZW5kaWYgLyogX19TVE0zMkwxeHhfUFdSX0ggKi8NCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL2luYy9zdG0zMmwxeHhfcmNjLmggYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3JjYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5Yjk0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3JjYy5oCkBAIC0wLDAgKzEsNDcxIEBACisvKioNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAZmlsZSAgICBzdG0zMmwxeHhfcmNjLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBSQ0MgDQorICAqICAgICAgICAgIGZpcm13YXJlIGxpYnJhcnkuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisNCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZm5kZWYgX19TVE0zMkwxeHhfUkNDX0gNCisjZGVmaW5lIF9fU1RNMzJMMXh4X1JDQ19IDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorIGV4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eC5oIg0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlcg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgUkNDDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUkNDX0V4cG9ydGVkX1R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgdWludDMyX3QgU1lTQ0xLX0ZyZXF1ZW5jeTsNCisgIHVpbnQzMl90IEhDTEtfRnJlcXVlbmN5Ow0KKyAgdWludDMyX3QgUENMSzFfRnJlcXVlbmN5Ow0KKyAgdWludDMyX3QgUENMSzJfRnJlcXVlbmN5Ow0KK31SQ0NfQ2xvY2tzVHlwZURlZjsNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBSQ0NfRXhwb3J0ZWRfQ29uc3RhbnRzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgSFNFX2NvbmZpZ3VyYXRpb24gDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUkNDX0hTRV9PRkYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDApDQorI2RlZmluZSBSQ0NfSFNFX09OICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkNCisjZGVmaW5lIFJDQ19IU0VfQnlwYXNzICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA1KQ0KKyNkZWZpbmUgSVNfUkNDX0hTRShIU0UpICgoKEhTRSkgPT0gUkNDX0hTRV9PRkYpIHx8ICgoSFNFKSA9PSBSQ0NfSFNFX09OKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICgoSFNFKSA9PSBSQ0NfSFNFX0J5cGFzcykpDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIE1TSV9DbG9ja19SYW5nZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBSQ0NfTVNJUmFuZ2VfNjRLSHogICAgICAgICAgICAgICBSQ0NfSUNTQ1JfTVNJUkFOR0VfNjRLSHoNCisjZGVmaW5lIFJDQ19NU0lSYW5nZV8xMjhLSHogICAgICAgICAgICAgIFJDQ19JQ1NDUl9NU0lSQU5HRV8xMjhLSHoNCisjZGVmaW5lIFJDQ19NU0lSYW5nZV8yNTZLSHogICAgICAgICAgICAgIFJDQ19JQ1NDUl9NU0lSQU5HRV8yNTZLSHoNCisjZGVmaW5lIFJDQ19NU0lSYW5nZV81MTJLSHogICAgICAgICAgICAgIFJDQ19JQ1NDUl9NU0lSQU5HRV81MTJLSHoNCisjZGVmaW5lIFJDQ19NU0lSYW5nZV8xTUh6ICAgICAgICAgICAgICAgIFJDQ19JQ1NDUl9NU0lSQU5HRV8xTUh6DQorI2RlZmluZSBSQ0NfTVNJUmFuZ2VfMk1IeiAgICAgICAgICAgICAgICBSQ0NfSUNTQ1JfTVNJUkFOR0VfMk1Ieg0KKyNkZWZpbmUgUkNDX01TSVJhbmdlXzRNSHogICAgICAgICAgICAgICAgUkNDX0lDU0NSX01TSVJBTkdFXzRNSHoNCisNCisjZGVmaW5lIElTX1JDQ19NU0lfQ0xPQ0tfUkFOR0UoUkFOR0UpICgoKFJBTkdFKSA9PSBSQ0NfTVNJUmFuZ2VfNjRLSHopIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJBTkdFKSA9PSBSQ0NfTVNJUmFuZ2VfMTI4S0h6KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSQU5HRSkgPT0gUkNDX01TSVJhbmdlXzI1NktIeikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkFOR0UpID09IFJDQ19NU0lSYW5nZV81MTJLSHopIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJBTkdFKSA9PSBSQ0NfTVNJUmFuZ2VfMU1IeikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkFOR0UpID09IFJDQ19NU0lSYW5nZV8yTUh6KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSQU5HRSkgPT0gUkNDX01TSVJhbmdlXzRNSHopKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorICANCisvKiogQGRlZmdyb3VwIFBMTF9DbG9ja19Tb3VyY2UgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUkNDX1BMTFNvdXJjZV9IU0kgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDApDQorI2RlZmluZSBSQ0NfUExMU291cmNlX0hTRSAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkNCisNCisjZGVmaW5lIElTX1JDQ19QTExfU09VUkNFKFNPVVJDRSkgKCgoU09VUkNFKSA9PSBSQ0NfUExMU291cmNlX0hTSSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19QTExTb3VyY2VfSFNFKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgUExMX011bHRpcGxpY2F0aW9uX0ZhY3RvciANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBSQ0NfUExMTXVsXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkNCisjZGVmaW5lIFJDQ19QTExNdWxfNCAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KQ0KKyNkZWZpbmUgUkNDX1BMTE11bF82ICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpDQorI2RlZmluZSBSQ0NfUExMTXVsXzggICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQykNCisjZGVmaW5lIFJDQ19QTExNdWxfMTIgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKQ0KKyNkZWZpbmUgUkNDX1BMTE11bF8xNiAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTQpDQorI2RlZmluZSBSQ0NfUExMTXVsXzI0ICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxOCkNCisjZGVmaW5lIFJDQ19QTExNdWxfMzIgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDFDKQ0KKyNkZWZpbmUgUkNDX1BMTE11bF80OCAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjApDQorDQorDQorI2RlZmluZSBJU19SQ0NfUExMX01VTChNVUwpICgoKE1VTCkgPT0gUkNDX1BMTE11bF8zKSB8fCAoKE1VTCkgPT0gUkNDX1BMTE11bF80KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1VTCkgPT0gUkNDX1BMTE11bF82KSB8fCAoKE1VTCkgPT0gUkNDX1BMTE11bF84KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1VTCkgPT0gUkNDX1BMTE11bF8xMikgfHwgKChNVUwpID09IFJDQ19QTExNdWxfMTYpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMTXVsXzI0KSB8fCAoKE1VTCkgPT0gUkNDX1BMTE11bF8zMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNVUwpID09IFJDQ19QTExNdWxfNDgpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFBMTF9EaXZpZGVyX0ZhY3RvciANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBSQ0NfUExMRGl2XzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg0MCkNCisjZGVmaW5lIFJDQ19QTExEaXZfMyAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDgwKQ0KKyNkZWZpbmUgUkNDX1BMTERpdl80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4QzApDQorDQorDQorI2RlZmluZSBJU19SQ0NfUExMX0RJVihESVYpICgoKERJVikgPT0gUkNDX1BMTERpdl8yKSB8fCAoKERJVikgPT0gUkNDX1BMTERpdl8zKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKERJVikgPT0gUkNDX1BMTERpdl80KSkNCisvKioNCisgICogQH0NCisgICovDQorICANCisvKiogQGRlZmdyb3VwIFN5c3RlbV9DbG9ja19Tb3VyY2UgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUkNDX1NZU0NMS1NvdXJjZV9NU0kgICAgICAgICAgICAgUkNDX0NGR1JfU1dfTVNJDQorI2RlZmluZSBSQ0NfU1lTQ0xLU291cmNlX0hTSSAgICAgICAgICAgICBSQ0NfQ0ZHUl9TV19IU0kNCisjZGVmaW5lIFJDQ19TWVNDTEtTb3VyY2VfSFNFICAgICAgICAgICAgIFJDQ19DRkdSX1NXX0hTRQ0KKyNkZWZpbmUgUkNDX1NZU0NMS1NvdXJjZV9QTExDTEsgICAgICAgICAgUkNDX0NGR1JfU1dfUExMDQorI2RlZmluZSBJU19SQ0NfU1lTQ0xLX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gUkNDX1NZU0NMS1NvdXJjZV9NU0kpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBSQ0NfU1lTQ0xLU291cmNlX0hTSSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19TWVNDTEtTb3VyY2VfSFNFKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gUkNDX1NZU0NMS1NvdXJjZV9QTExDTEspKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEFIQl9DbG9ja19Tb3VyY2UNCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBSQ0NfU1lTQ0xLX0RpdjEgICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUl9IUFJFX0RJVjENCisjZGVmaW5lIFJDQ19TWVNDTEtfRGl2MiAgICAgICAgICAgICAgICAgIFJDQ19DRkdSX0hQUkVfRElWMg0KKyNkZWZpbmUgUkNDX1NZU0NMS19EaXY0ICAgICAgICAgICAgICAgICAgUkNDX0NGR1JfSFBSRV9ESVY0DQorI2RlZmluZSBSQ0NfU1lTQ0xLX0RpdjggICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUl9IUFJFX0RJVjgNCisjZGVmaW5lIFJDQ19TWVNDTEtfRGl2MTYgICAgICAgICAgICAgICAgIFJDQ19DRkdSX0hQUkVfRElWMTYNCisjZGVmaW5lIFJDQ19TWVNDTEtfRGl2NjQgICAgICAgICAgICAgICAgIFJDQ19DRkdSX0hQUkVfRElWNjQNCisjZGVmaW5lIFJDQ19TWVNDTEtfRGl2MTI4ICAgICAgICAgICAgICAgIFJDQ19DRkdSX0hQUkVfRElWMTI4DQorI2RlZmluZSBSQ0NfU1lTQ0xLX0RpdjI1NiAgICAgICAgICAgICAgICBSQ0NfQ0ZHUl9IUFJFX0RJVjI1Ng0KKyNkZWZpbmUgUkNDX1NZU0NMS19EaXY1MTIgICAgICAgICAgICAgICAgUkNDX0NGR1JfSFBSRV9ESVY1MTINCisjZGVmaW5lIElTX1JDQ19IQ0xLKEhDTEspICgoKEhDTEspID09IFJDQ19TWVNDTEtfRGl2MSkgfHwgKChIQ0xLKSA9PSBSQ0NfU1lTQ0xLX0RpdjIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEhDTEspID09IFJDQ19TWVNDTEtfRGl2NCkgfHwgKChIQ0xLKSA9PSBSQ0NfU1lTQ0xLX0RpdjgpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEhDTEspID09IFJDQ19TWVNDTEtfRGl2MTYpIHx8ICgoSENMSykgPT0gUkNDX1NZU0NMS19EaXY2NCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSENMSykgPT0gUkNDX1NZU0NMS19EaXYxMjgpIHx8ICgoSENMSykgPT0gUkNDX1NZU0NMS19EaXYyNTYpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEhDTEspID09IFJDQ19TWVNDTEtfRGl2NTEyKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgQVBCMV9BUEIyX0Nsb2NrX1NvdXJjZQ0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFJDQ19IQ0xLX0RpdjEgICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSX1BQUkUxX0RJVjENCisjZGVmaW5lIFJDQ19IQ0xLX0RpdjIgICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSX1BQUkUxX0RJVjINCisjZGVmaW5lIFJDQ19IQ0xLX0RpdjQgICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSX1BQUkUxX0RJVjQNCisjZGVmaW5lIFJDQ19IQ0xLX0RpdjggICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSX1BQUkUxX0RJVjgNCisjZGVmaW5lIFJDQ19IQ0xLX0RpdjE2ICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSX1BQUkUxX0RJVjE2DQorI2RlZmluZSBJU19SQ0NfUENMSyhQQ0xLKSAoKChQQ0xLKSA9PSBSQ0NfSENMS19EaXYxKSB8fCAoKFBDTEspID09IFJDQ19IQ0xLX0RpdjIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBDTEspID09IFJDQ19IQ0xLX0RpdjQpIHx8ICgoUENMSykgPT0gUkNDX0hDTEtfRGl2OCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUENMSykgPT0gUkNDX0hDTEtfRGl2MTYpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisgIA0KKw0KKy8qKiBAZGVmZ3JvdXAgUkNDX0ludGVycnVwdF9Tb3VyY2UgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUkNDX0lUX0xTSVJEWSAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpDQorI2RlZmluZSBSQ0NfSVRfTFNFUkRZICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikNCisjZGVmaW5lIFJDQ19JVF9IU0lSRFkgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KQ0KKyNkZWZpbmUgUkNDX0lUX0hTRVJEWSAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpDQorI2RlZmluZSBSQ0NfSVRfUExMUkRZICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMCkNCisjZGVmaW5lIFJDQ19JVF9NU0lSRFkgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKQ0KKyNkZWZpbmUgUkNDX0lUX0NTUyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4ODApDQorDQorI2RlZmluZSBJU19SQ0NfSVQoSVQpICgoKChJVCkgJiAodWludDhfdCkweEMwKSA9PSAweDAwKSAmJiAoKElUKSAhPSAweDAwKSkNCisNCisjZGVmaW5lIElTX1JDQ19HRVRfSVQoSVQpICgoKElUKSA9PSBSQ0NfSVRfTFNJUkRZKSB8fCAoKElUKSA9PSBSQ0NfSVRfTFNFUkRZKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gUkNDX0lUX0hTSVJEWSkgfHwgKChJVCkgPT0gUkNDX0lUX0hTRVJEWSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFJDQ19JVF9QTExSRFkpIHx8ICgoSVQpID09IFJDQ19JVF9NU0lSRFkpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBSQ0NfSVRfQ1NTKSkNCisNCisjZGVmaW5lIElTX1JDQ19DTEVBUl9JVChJVCkgKCgoKElUKSAmICh1aW50OF90KTB4NDApID09IDB4MDApICYmICgoSVQpICE9IDB4MDApKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisgIA0KKy8qKiBAZGVmZ3JvdXAgTFNFX0NvbmZpZ3VyYXRpb24gDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUkNDX0xTRV9PRkYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDApDQorI2RlZmluZSBSQ0NfTFNFX09OICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkNCisjZGVmaW5lIFJDQ19MU0VfQnlwYXNzICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA1KQ0KKyNkZWZpbmUgSVNfUkNDX0xTRShMU0UpICgoKExTRSkgPT0gUkNDX0xTRV9PRkYpIHx8ICgoTFNFKSA9PSBSQ0NfTFNFX09OKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICgoTFNFKSA9PSBSQ0NfTFNFX0J5cGFzcykpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUlRDX0Nsb2NrX1NvdXJjZQ0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFJDQ19SVENDTEtTb3VyY2VfTFNFICAgICAgICAgICAgIFJDQ19DU1JfUlRDU0VMX0xTRQ0KKyNkZWZpbmUgUkNDX1JUQ0NMS1NvdXJjZV9MU0kgICAgICAgICAgICAgUkNDX0NTUl9SVENTRUxfTFNJDQorI2RlZmluZSBSQ0NfUlRDQ0xLU291cmNlX0hTRV9EaXYyICAgICAgICBSQ0NfQ1NSX1JUQ1NFTF9IU0UNCisjZGVmaW5lIFJDQ19SVENDTEtTb3VyY2VfSFNFX0RpdjQgICAgICAgICgodWludDMyX3QpUkNDX0NTUl9SVENTRUxfSFNFIHwgUkNDX0NSX1JUQ1BSRV8wKQ0KKyNkZWZpbmUgUkNDX1JUQ0NMS1NvdXJjZV9IU0VfRGl2OCAgICAgICAgKCh1aW50MzJfdClSQ0NfQ1NSX1JUQ1NFTF9IU0UgfCBSQ0NfQ1JfUlRDUFJFXzEpDQorI2RlZmluZSBSQ0NfUlRDQ0xLU291cmNlX0hTRV9EaXYxNiAgICAgICAoKHVpbnQzMl90KVJDQ19DU1JfUlRDU0VMX0hTRSB8IFJDQ19DUl9SVENQUkUpDQorI2RlZmluZSBJU19SQ0NfUlRDQ0xLX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gUkNDX1JUQ0NMS1NvdXJjZV9MU0UpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBSQ0NfUlRDQ0xLU291cmNlX0xTSSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19SVENDTEtTb3VyY2VfSFNFX0RpdjIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBSQ0NfUlRDQ0xLU291cmNlX0hTRV9EaXY0KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gUkNDX1JUQ0NMS1NvdXJjZV9IU0VfRGl2OCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19SVENDTEtTb3VyY2VfSFNFX0RpdjE2KSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBBSEJfUGVyaXBoZXJhbHMgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUkNDX0FIQlBlcmlwaF9HUElPQSAgICAgICAgICAgICAgIFJDQ19BSEJFTlJfR1BJT0FFTg0KKyNkZWZpbmUgUkNDX0FIQlBlcmlwaF9HUElPQiAgICAgICAgICAgICAgIFJDQ19BSEJFTlJfR1BJT0JFTg0KKyNkZWZpbmUgUkNDX0FIQlBlcmlwaF9HUElPQyAgICAgICAgICAgICAgIFJDQ19BSEJFTlJfR1BJT0NFTg0KKyNkZWZpbmUgUkNDX0FIQlBlcmlwaF9HUElPRCAgICAgICAgICAgICAgIFJDQ19BSEJFTlJfR1BJT0RFTg0KKyNkZWZpbmUgUkNDX0FIQlBlcmlwaF9HUElPRSAgICAgICAgICAgICAgIFJDQ19BSEJFTlJfR1BJT0VFTg0KKyNkZWZpbmUgUkNDX0FIQlBlcmlwaF9HUElPSCAgICAgICAgICAgICAgIFJDQ19BSEJFTlJfR1BJT0hFTg0KKyNkZWZpbmUgUkNDX0FIQlBlcmlwaF9DUkMgICAgICAgICAgICAgICAgIFJDQ19BSEJFTlJfQ1JDRU4NCisjZGVmaW5lIFJDQ19BSEJQZXJpcGhfRkxJVEYgICAgICAgICAgICAgICBSQ0NfQUhCRU5SX0ZMSVRGRU4NCisjZGVmaW5lIFJDQ19BSEJQZXJpcGhfU1JBTSAgICAgICAgICAgICAgICBSQ0NfQUhCTFBFTlJfU1JBTUxQRU4NCisjZGVmaW5lIFJDQ19BSEJQZXJpcGhfRE1BMSAgICAgICAgICAgICAgICBSQ0NfQUhCRU5SX0RNQTFFTg0KKw0KKyNkZWZpbmUgSVNfUkNDX0FIQl9QRVJJUEgoUEVSSVBIKSAoKCgoUEVSSVBIKSAmIDB4RkVGRjZGQzApID09IDB4MDApICYmICgoUEVSSVBIKSAhPSAweDAwKSkNCisjZGVmaW5lIElTX1JDQ19BSEJfTFBNT0RFX1BFUklQSChQRVJJUEgpICgoKChQRVJJUEgpICYgMHhGRUZFNkZDMCkgPT0gMHgwMCkgJiYgKChQRVJJUEgpICE9IDB4MDApKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEFQQjJfUGVyaXBoZXJhbHMgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfU1lTQ0ZHICAgICAgICAgICAgUkNDX0FQQjJFTlJfU1lTQ0ZHRU4NCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX1RJTTkgICAgICAgICAgICAgIFJDQ19BUEIyRU5SX1RJTTlFTg0KKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfVElNMTAgICAgICAgICAgICAgUkNDX0FQQjJFTlJfVElNMTBFTg0KKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfVElNMTEgICAgICAgICAgICAgUkNDX0FQQjJFTlJfVElNMTFFTg0KKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfQURDMSAgICAgICAgICAgICAgUkNDX0FQQjJFTlJfQURDMUVODQorI2RlZmluZSBSQ0NfQVBCMlBlcmlwaF9TUEkxICAgICAgICAgICAgICBSQ0NfQVBCMkVOUl9TUEkxRU4NCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX1VTQVJUMSAgICAgICAgICAgIFJDQ19BUEIyRU5SX1VTQVJUMUVODQorDQorI2RlZmluZSBJU19SQ0NfQVBCMl9QRVJJUEgoUEVSSVBIKSAoKCgoUEVSSVBIKSAmIDB4RkZGRkFERTIpID09IDB4MDApICYmICgoUEVSSVBIKSAhPSAweDAwKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgQVBCMV9QZXJpcGhlcmFscyANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9USU0yICAgICAgICAgICAgICBSQ0NfQVBCMUVOUl9USU0yRU4NCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1RJTTMgICAgICAgICAgICAgIFJDQ19BUEIxRU5SX1RJTTNFTg0KKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfVElNNCAgICAgICAgICAgICAgUkNDX0FQQjFFTlJfVElNNEVODQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9USU02ICAgICAgICAgICAgICBSQ0NfQVBCMUVOUl9USU02RU4NCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1RJTTcgICAgICAgICAgICAgIFJDQ19BUEIxRU5SX1RJTTdFTg0KKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfTENEICAgICAgICAgICAgICAgUkNDX0FQQjFFTlJfTENERU4NCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1dXREcgICAgICAgICAgICAgIFJDQ19BUEIxRU5SX1dXREdFTg0KKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfU1BJMiAgICAgICAgICAgICAgUkNDX0FQQjFFTlJfU1BJMkVODQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9VU0FSVDIgICAgICAgICAgICBSQ0NfQVBCMUVOUl9VU0FSVDJFTg0KKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfVVNBUlQzICAgICAgICAgICAgUkNDX0FQQjFFTlJfVVNBUlQzRU4NCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX0kyQzEgICAgICAgICAgICAgIFJDQ19BUEIxRU5SX0kyQzFFTg0KKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfSTJDMiAgICAgICAgICAgICAgUkNDX0FQQjFFTlJfSTJDMkVODQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9VU0IgICAgICAgICAgICAgICBSQ0NfQVBCMUVOUl9VU0JFTg0KKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfUFdSICAgICAgICAgICAgICAgUkNDX0FQQjFFTlJfUFdSRU4NCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX0RBQyAgICAgICAgICAgICAgIFJDQ19BUEIxRU5SX0RBQ0VODQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9DT01QICAgICAgICAgICAgICBSQ0NfQVBCMUVOUl9DT01QRU4NCisNCisjZGVmaW5lIElTX1JDQ19BUEIxX1BFUklQSChQRVJJUEgpICgoKChQRVJJUEgpICYgMHg0RjE5QjVDOCkgPT0gMHgwMCkgJiYgKChQRVJJUEgpICE9IDB4MDApKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIE1DT19DbG9ja19Tb3VyY2UNCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBSQ0NfTUNPU291cmNlX05vQ2xvY2sgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkNCisjZGVmaW5lIFJDQ19NQ09Tb3VyY2VfU1lTQ0xLICAgICAgICAgICAgICgodWludDhfdCkweDAxKQ0KKyNkZWZpbmUgUkNDX01DT1NvdXJjZV9IU0kgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDIpDQorI2RlZmluZSBSQ0NfTUNPU291cmNlX01TSSAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMykNCisjZGVmaW5lIFJDQ19NQ09Tb3VyY2VfSFNFICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KQ0KKyNkZWZpbmUgUkNDX01DT1NvdXJjZV9QTExDTEsgICAgICAgICAgICAgKCh1aW50OF90KTB4MDUpDQorI2RlZmluZSBSQ0NfTUNPU291cmNlX0xTSSAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNikNCisjZGVmaW5lIFJDQ19NQ09Tb3VyY2VfTFNFICAgICAgICAgICAgICAgICgodWludDhfdCkweDA3KQ0KKw0KKyNkZWZpbmUgSVNfUkNDX01DT19TT1VSQ0UoU09VUkNFKSAoKChTT1VSQ0UpID09IFJDQ19NQ09Tb3VyY2VfTm9DbG9jaykgfHwgKChTT1VSQ0UpID09IFJDQ19NQ09Tb3VyY2VfU1lTQ0xLKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gUkNDX01DT1NvdXJjZV9IU0kpICB8fCAoKFNPVVJDRSkgPT0gUkNDX01DT1NvdXJjZV9NU0kpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBSQ0NfTUNPU291cmNlX0hTRSkgIHx8ICgoU09VUkNFKSA9PSBSQ0NfTUNPU291cmNlX1BMTENMSykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19NQ09Tb3VyY2VfTFNJKSB8fCAoKFNPVVJDRSkgPT0gUkNDX01DT1NvdXJjZV9MU0UpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIE1DT19PdXRwdXRfRGl2aWRlciANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBSQ0NfTUNPRGl2XzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkNCisjZGVmaW5lIFJDQ19NQ09EaXZfMiAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKQ0KKyNkZWZpbmUgUkNDX01DT0Rpdl80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjApDQorI2RlZmluZSBSQ0NfTUNPRGl2XzggICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgzMCkNCisjZGVmaW5lIFJDQ19NQ09EaXZfMTYgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDQwKQ0KKw0KKyNkZWZpbmUgSVNfUkNDX01DT19ESVYoRElWKSAoKChESVYpID09IFJDQ19NQ09EaXZfMSkgfHwgKChESVYpID09IFJDQ19NQ09EaXZfMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChESVYpID09IFJDQ19NQ09EaXZfNCkgIHx8ICgoRElWKSA9PSBSQ0NfTUNPRGl2XzgpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRElWKSA9PSBSQ0NfTUNPRGl2XzE2KSkNCisvKioNCisgICogQH0NCisgICovICANCisNCisvKiogQGRlZmdyb3VwIFJDQ19GbGFnIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFJDQ19GTEFHX0hTSVJEWSAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIxKQ0KKyNkZWZpbmUgUkNDX0ZMQUdfTVNJUkRZICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjkpDQorI2RlZmluZSBSQ0NfRkxBR19IU0VSRFkgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgzMSkNCisjZGVmaW5lIFJDQ19GTEFHX1BMTFJEWSAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDM5KQ0KKyNkZWZpbmUgUkNDX0ZMQUdfTFNFUkRZICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NDkpDQorI2RlZmluZSBSQ0NfRkxBR19MU0lSRFkgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg0MSkNCisjZGVmaW5lIFJDQ19GTEFHX09CTFJTVCAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDU5KQ0KKyNkZWZpbmUgUkNDX0ZMQUdfUElOUlNUICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NUEpDQorI2RlZmluZSBSQ0NfRkxBR19QT1JSU1QgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg1QikNCisjZGVmaW5lIFJDQ19GTEFHX1NGVFJTVCAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDVDKQ0KKyNkZWZpbmUgUkNDX0ZMQUdfSVdER1JTVCAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NUQpDQorI2RlZmluZSBSQ0NfRkxBR19XV0RHUlNUICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg1RSkNCisjZGVmaW5lIFJDQ19GTEFHX0xQV1JSU1QgICAgICAgICAgICAgICAgICgodWludDhfdCkweDVGKQ0KKw0KKyNkZWZpbmUgSVNfUkNDX0ZMQUcoRkxBRykgKCgoRkxBRykgPT0gUkNDX0ZMQUdfSFNJUkRZKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX0hTRVJEWSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfTVNJUkRZKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX1BMTFJEWSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfTFNFUkRZKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX0xTSVJEWSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfUElOUlNUKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX1BPUlJTVCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfU0ZUUlNUKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX0lXREdSU1QpfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfV1dER1JTVCl8fCAoKEZMQUcpID09IFJDQ19GTEFHX0xQV1JSU1QpfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfV1dER1JTVCkpDQorDQorI2RlZmluZSBJU19SQ0NfSFNJX0NBTElCUkFUSU9OX1ZBTFVFKFZBTFVFKSAoKFZBTFVFKSA8PSAweDFGKQ0KKyNkZWZpbmUgSVNfUkNDX01TSV9DQUxJQlJBVElPTl9WQUxVRShWQUxVRSkgKChWQUxVRSkgPD0gMHgzRikNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUkNDX0V4cG9ydGVkX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBSQ0NfRXhwb3J0ZWRfRnVuY3Rpb25zDQorICAqIEB7DQorICAqLw0KKw0KK3ZvaWQgUkNDX0RlSW5pdCh2b2lkKTsNCit2b2lkIFJDQ19IU0VDb25maWcodWludDhfdCBSQ0NfSFNFKTsNCitFcnJvclN0YXR1cyBSQ0NfV2FpdEZvckhTRVN0YXJ0VXAodm9pZCk7DQordm9pZCBSQ0NfQWRqdXN0SFNJQ2FsaWJyYXRpb25WYWx1ZSh1aW50OF90IEhTSUNhbGlicmF0aW9uVmFsdWUpOw0KK3ZvaWQgUkNDX0FkanVzdE1TSUNhbGlicmF0aW9uVmFsdWUodWludDhfdCBNU0lDYWxpYnJhdGlvblZhbHVlKTsNCit2b2lkIFJDQ19NU0lSYW5nZUNvbmZpZyh1aW50MzJfdCBSQ0NfTVNJUmFuZ2UpOw0KK3ZvaWQgUkNDX01TSUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgUkNDX0hTSUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgUkNDX1BMTENvbmZpZyh1aW50OF90IFJDQ19QTExTb3VyY2UsIHVpbnQ4X3QgUkNDX1BMTE11bCwgdWludDhfdCBSQ0NfUExMRGl2KTsNCit2b2lkIFJDQ19QTExDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFJDQ19TWVNDTEtDb25maWcodWludDMyX3QgUkNDX1NZU0NMS1NvdXJjZSk7DQordWludDhfdCBSQ0NfR2V0U1lTQ0xLU291cmNlKHZvaWQpOw0KK3ZvaWQgUkNDX0hDTEtDb25maWcodWludDMyX3QgUkNDX1NZU0NMSyk7DQordm9pZCBSQ0NfUENMSzFDb25maWcodWludDMyX3QgUkNDX0hDTEspOw0KK3ZvaWQgUkNDX1BDTEsyQ29uZmlnKHVpbnQzMl90IFJDQ19IQ0xLKTsNCit2b2lkIFJDQ19JVENvbmZpZyh1aW50OF90IFJDQ19JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFJDQ19MU0VDb25maWcodWludDhfdCBSQ0NfTFNFKTsNCit2b2lkIFJDQ19MU0lDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFJDQ19SVENDTEtDb25maWcodWludDMyX3QgUkNDX1JUQ0NMS1NvdXJjZSk7DQordm9pZCBSQ0NfUlRDQ0xLQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBSQ0NfUlRDUmVzZXRDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFJDQ19HZXRDbG9ja3NGcmVxKFJDQ19DbG9ja3NUeXBlRGVmKiBSQ0NfQ2xvY2tzKTsNCit2b2lkIFJDQ19BSEJQZXJpcGhDbG9ja0NtZCh1aW50MzJfdCBSQ0NfQUhCUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgUkNDX0FQQjJQZXJpcGhDbG9ja0NtZCh1aW50MzJfdCBSQ0NfQVBCMlBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFJDQ19BUEIxUGVyaXBoQ2xvY2tDbWQodWludDMyX3QgUkNDX0FQQjFQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBSQ0NfQUhCUGVyaXBoUmVzZXRDbWQodWludDMyX3QgUkNDX0FIQlBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQodWludDMyX3QgUkNDX0FQQjJQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKHVpbnQzMl90IFJDQ19BUEIxUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgUkNDX0FIQlBlcmlwaENsb2NrTFBNb2RlQ21kKHVpbnQzMl90IFJDQ19BSEJQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBSQ0NfQVBCMlBlcmlwaENsb2NrTFBNb2RlQ21kKHVpbnQzMl90IFJDQ19BUEIyUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgUkNDX0FQQjFQZXJpcGhDbG9ja0xQTW9kZUNtZCh1aW50MzJfdCBSQ0NfQVBCMVBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFJDQ19DbG9ja1NlY3VyaXR5U3lzdGVtQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBSQ0NfTUNPQ29uZmlnKHVpbnQ4X3QgUkNDX01DT1NvdXJjZSwgdWludDhfdCBSQ0NfTUNPRGl2KTsNCitGbGFnU3RhdHVzIFJDQ19HZXRGbGFnU3RhdHVzKHVpbnQ4X3QgUkNDX0ZMQUcpOw0KK3ZvaWQgUkNDX0NsZWFyRmxhZyh2b2lkKTsNCitJVFN0YXR1cyBSQ0NfR2V0SVRTdGF0dXModWludDhfdCBSQ0NfSVQpOw0KK3ZvaWQgUkNDX0NsZWFySVRQZW5kaW5nQml0KHVpbnQ4X3QgUkNDX0lUKTsNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorI2VuZGlmIC8qIF9fU1RNMzJMMXh4X1JDQ19IICovDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9zcGkuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL2luYy9zdG0zMmwxeHhfc3BpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZhMmIzMQotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL2luYy9zdG0zMmwxeHhfc3BpLmgKQEAgLTAsMCArMSwzODAgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDF4eF9zcGkuaA0KKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWMS4wLjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIFNQSSANCisgICogICAgICAgICAgZmlybXdhcmUgbGlicmFyeS4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKw0KKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmbmRlZiBfX1NUTTMyTDF4eF9TUElfSA0KKyNkZWZpbmUgX19TVE0zMkwxeHhfU1BJX0gNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCisgZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorDQorLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaW5jbHVkZSAic3RtMzJsMXh4LmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTUEkNCisgICogQHsNCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgU1BJX0V4cG9ydGVkX1R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiANCisgICogQGJyaWVmICBTUEkgSW5pdCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiAgDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgdWludDE2X3QgU1BJX0RpcmVjdGlvbjsgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBTUEkgdW5pZGlyZWN0aW9uYWwgb3IgYmlkaXJlY3Rpb25hbCBkYXRhIG1vZGUuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIEByZWYgU1BJX2RhdGFfZGlyZWN0aW9uICovDQorDQorICB1aW50MTZfdCBTUElfTW9kZTsgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFNQSSBvcGVyYXRpbmcgbW9kZS4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgQHJlZiBTUElfbW9kZSAqLw0KKw0KKyAgdWludDE2X3QgU1BJX0RhdGFTaXplOyAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBTUEkgZGF0YSBzaXplLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBAcmVmIFNQSV9kYXRhX3NpemUgKi8NCisNCisgIHVpbnQxNl90IFNQSV9DUE9MOyAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgc2VyaWFsIGNsb2NrIHN0ZWFkeSBzdGF0ZS4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgQHJlZiBTUElfQ2xvY2tfUG9sYXJpdHkgKi8NCisNCisgIHVpbnQxNl90IFNQSV9DUEhBOyAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgY2xvY2sgYWN0aXZlIGVkZ2UgZm9yIHRoZSBiaXQgY2FwdHVyZS4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgQHJlZiBTUElfQ2xvY2tfUGhhc2UgKi8NCisNCisgIHVpbnQxNl90IFNQSV9OU1M7ICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBOU1Mgc2lnbmFsIGlzIG1hbmFnZWQgYnkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIChOU1MgcGluKSBvciBieSBzb2Z0d2FyZSB1c2luZyB0aGUgU1NJIGJpdC4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgQHJlZiBTUElfU2xhdmVfU2VsZWN0X21hbmFnZW1lbnQgKi8NCisgDQorICB1aW50MTZfdCBTUElfQmF1ZFJhdGVQcmVzY2FsZXI7ICAgLyohPCBTcGVjaWZpZXMgdGhlIEJhdWQgUmF0ZSBwcmVzY2FsZXIgdmFsdWUgd2hpY2ggd2lsbCBiZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCB0byBjb25maWd1cmUgdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIFNDSyBjbG9jay4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgQHJlZiBTUElfQmF1ZFJhdGVfUHJlc2NhbGVyLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhlIGNvbW11bmljYXRpb24gY2xvY2sgaXMgZGVyaXZlZCBmcm9tIHRoZSBtYXN0ZXINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLiBUaGUgc2xhdmUgY2xvY2sgZG9lcyBub3QgbmVlZCB0byBiZSBzZXQuICovDQorDQorICB1aW50MTZfdCBTUElfRmlyc3RCaXQ7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciBkYXRhIHRyYW5zZmVycyBzdGFydCBmcm9tIE1TQiBvciBMU0IgYml0Lg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBAcmVmIFNQSV9NU0JfTFNCX3RyYW5zbWlzc2lvbiAqLw0KKw0KKyAgdWludDE2X3QgU1BJX0NSQ1BvbHlub21pYWw7ICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBwb2x5bm9taWFsIHVzZWQgZm9yIHRoZSBDUkMgY2FsY3VsYXRpb24uICovDQorfVNQSV9Jbml0VHlwZURlZjsNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBTUElfRXhwb3J0ZWRfQ29uc3RhbnRzDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgSVNfU1BJX0FMTF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IFNQSTEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBTUEkyKSkNCisNCisvKiogQGRlZmdyb3VwIFNQSV9kYXRhX2RpcmVjdGlvbiANCisgICogQHsNCisgICovDQorICANCisjZGVmaW5lIFNQSV9EaXJlY3Rpb25fMkxpbmVzX0Z1bGxEdXBsZXggKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBTUElfRGlyZWN0aW9uXzJMaW5lc19SeE9ubHkgICAgICgodWludDE2X3QpMHgwNDAwKQ0KKyNkZWZpbmUgU1BJX0RpcmVjdGlvbl8xTGluZV9SeCAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkNCisjZGVmaW5lIFNQSV9EaXJlY3Rpb25fMUxpbmVfVHggICAgICAgICAgKCh1aW50MTZfdCkweEMwMDApDQorI2RlZmluZSBJU19TUElfRElSRUNUSU9OX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gU1BJX0RpcmVjdGlvbl8yTGluZXNfRnVsbER1cGxleCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNQSV9EaXJlY3Rpb25fMkxpbmVzX1J4T25seSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNQSV9EaXJlY3Rpb25fMUxpbmVfUngpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBTUElfRGlyZWN0aW9uXzFMaW5lX1R4KSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBTUElfbW9kZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBTUElfTW9kZV9NYXN0ZXIgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTA0KQ0KKyNkZWZpbmUgU1BJX01vZGVfU2xhdmUgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIElTX1NQSV9NT0RFKE1PREUpICgoKE1PREUpID09IFNQSV9Nb2RlX01hc3RlcikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU1BJX01vZGVfU2xhdmUpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNQSV9kYXRhX3NpemUgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgU1BJX0RhdGFTaXplXzE2YiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkNCisjZGVmaW5lIFNQSV9EYXRhU2l6ZV84YiAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBJU19TUElfREFUQVNJWkUoREFUQVNJWkUpICgoKERBVEFTSVpFKSA9PSBTUElfRGF0YVNpemVfMTZiKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKERBVEFTSVpFKSA9PSBTUElfRGF0YVNpemVfOGIpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTUElfQ2xvY2tfUG9sYXJpdHkgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgU1BJX0NQT0xfTG93ICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFNQSV9DUE9MX0hpZ2ggICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpDQorI2RlZmluZSBJU19TUElfQ1BPTChDUE9MKSAoKChDUE9MKSA9PSBTUElfQ1BPTF9Mb3cpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENQT0wpID09IFNQSV9DUE9MX0hpZ2gpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNQSV9DbG9ja19QaGFzZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBTUElfQ1BIQV8xRWRnZSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgU1BJX0NQSEFfMkVkZ2UgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkNCisjZGVmaW5lIElTX1NQSV9DUEhBKENQSEEpICgoKENQSEEpID09IFNQSV9DUEhBXzFFZGdlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDUEhBKSA9PSBTUElfQ1BIQV8yRWRnZSkpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1BJX1NsYXZlX1NlbGVjdF9tYW5hZ2VtZW50IA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFNQSV9OU1NfU29mdCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApDQorI2RlZmluZSBTUElfTlNTX0hhcmQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgSVNfU1BJX05TUyhOU1MpICgoKE5TUykgPT0gU1BJX05TU19Tb2Z0KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICgoTlNTKSA9PSBTUElfTlNTX0hhcmQpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTUElfQmF1ZFJhdGVfUHJlc2NhbGVyIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFNQSV9CYXVkUmF0ZVByZXNjYWxlcl8yICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfNCAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQ0KKyNkZWZpbmUgU1BJX0JhdWRSYXRlUHJlc2NhbGVyXzggICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkNCisjZGVmaW5lIFNQSV9CYXVkUmF0ZVByZXNjYWxlcl8xNiAgICAgICAgKCh1aW50MTZfdCkweDAwMTgpDQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMzIgICAgICAgICgodWludDE2X3QpMHgwMDIwKQ0KKyNkZWZpbmUgU1BJX0JhdWRSYXRlUHJlc2NhbGVyXzY0ICAgICAgICAoKHVpbnQxNl90KTB4MDAyOCkNCisjZGVmaW5lIFNQSV9CYXVkUmF0ZVByZXNjYWxlcl8xMjggICAgICAgKCh1aW50MTZfdCkweDAwMzApDQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMjU2ICAgICAgICgodWludDE2X3QpMHgwMDM4KQ0KKyNkZWZpbmUgSVNfU1BJX0JBVURSQVRFX1BSRVNDQUxFUihQUkVTQ0FMRVIpICgoKFBSRVNDQUxFUikgPT0gU1BJX0JhdWRSYXRlUHJlc2NhbGVyXzIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFNQSV9CYXVkUmF0ZVByZXNjYWxlcl80KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfOCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gU1BJX0JhdWRSYXRlUHJlc2NhbGVyXzE2KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMzIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFNQSV9CYXVkUmF0ZVByZXNjYWxlcl82NCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gU1BJX0JhdWRSYXRlUHJlc2NhbGVyXzEyOCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gU1BJX0JhdWRSYXRlUHJlc2NhbGVyXzI1NikpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFNQSV9NU0JfTFNCX3RyYW5zbWlzc2lvbiANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBTUElfRmlyc3RCaXRfTVNCICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgU1BJX0ZpcnN0Qml0X0xTQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkNCisjZGVmaW5lIElTX1NQSV9GSVJTVF9CSVQoQklUKSAoKChCSVQpID09IFNQSV9GaXJzdEJpdF9NU0IpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCSVQpID09IFNQSV9GaXJzdEJpdF9MU0IpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNQSV9ETUFfdHJhbnNmZXJfcmVxdWVzdHMgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgU1BJX0RNQVJlcV9UeCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQ0KKyNkZWZpbmUgU1BJX0RNQVJlcV9SeCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKQ0KKyNkZWZpbmUgSVNfU1BJX0RNQVJFUShETUFSRVEpICgoKChETUFSRVEpICYgKHVpbnQxNl90KTB4RkZGQykgPT0gMHgwMCkgJiYgKChETUFSRVEpICE9IDB4MDApKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNQSV9OU1NfaW50ZXJuYWxfc29mdHdhcmVfbWFuZ2VtZW50IA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFNQSV9OU1NJbnRlcm5hbFNvZnRfU2V0ICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApDQorI2RlZmluZSBTUElfTlNTSW50ZXJuYWxTb2Z0X1Jlc2V0ICAgICAgICgodWludDE2X3QpMHhGRUZGKQ0KKyNkZWZpbmUgSVNfU1BJX05TU19JTlRFUk5BTChJTlRFUk5BTCkgKCgoSU5URVJOQUwpID09IFNQSV9OU1NJbnRlcm5hbFNvZnRfU2V0KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlRFUk5BTCkgPT0gU1BJX05TU0ludGVybmFsU29mdF9SZXNldCkpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1BJX0NSQ19UcmFuc21pdF9SZWNlaXZlIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFNQSV9DUkNfVHggICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDApDQorI2RlZmluZSBTUElfQ1JDX1J4ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKQ0KKyNkZWZpbmUgSVNfU1BJX0NSQyhDUkMpICgoKENSQykgPT0gU1BJX0NSQ19UeCkgfHwgKChDUkMpID09IFNQSV9DUkNfUngpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNQSV9kaXJlY3Rpb25fdHJhbnNtaXRfcmVjZWl2ZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBTUElfRGlyZWN0aW9uX1J4ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhCRkZGKQ0KKyNkZWZpbmUgU1BJX0RpcmVjdGlvbl9UeCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkNCisjZGVmaW5lIElTX1NQSV9ESVJFQ1RJT04oRElSRUNUSU9OKSAoKChESVJFQ1RJT04pID09IFNQSV9EaXJlY3Rpb25fUngpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChESVJFQ1RJT04pID09IFNQSV9EaXJlY3Rpb25fVHgpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNQSV9pbnRlcnJ1cHRzX2RlZmluaXRpb24gDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgU1BJX0lUX1RYRSAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDcxKQ0KKyNkZWZpbmUgU1BJX0lUX1JYTkUgICAgICAgICAgICAgICAgICgodWludDhfdCkweDYwKQ0KKyNkZWZpbmUgU1BJX0lUX0VSUiAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDUwKQ0KKyNkZWZpbmUgSVNfU1BJX0NPTkZJR19JVChJVCkgKCgoSVQpID09IFNQSV9JVF9UWEUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBTUElfSVRfUlhORSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFNQSV9JVF9FUlIpKQ0KKyNkZWZpbmUgU1BJX0lUX09WUiAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDU2KQ0KKyNkZWZpbmUgU1BJX0lUX01PREYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg1NSkNCisjZGVmaW5lIFNQSV9JVF9DUkNFUlIgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NTQpDQorI2RlZmluZSBJU19TUElfQ0xFQVJfSVQoSVQpICgoKElUKSA9PSBTUElfSVRfQ1JDRVJSKSkNCisjZGVmaW5lIElTX1NQSV9HRVRfSVQoSVQpICgoKElUKSA9PSBTUElfSVRfUlhORSkgfHwgKChJVCkgPT0gU1BJX0lUX1RYRSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBTUElfSVRfQ1JDRVJSKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFNQSV9JVF9NT0RGKSB8fCAoKElUKSA9PSBTUElfSVRfT1ZSKSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBTUElfZmxhZ3NfZGVmaW5pdGlvbiANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBTUElfRkxBR19SWE5FICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpDQorI2RlZmluZSBTUElfRkxBR19UWEUgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpDQorI2RlZmluZSBTUElfRkxBR19DUkNFUlIgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQ0KKyNkZWZpbmUgU1BJX0ZMQUdfTU9ERiAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkNCisjZGVmaW5lIFNQSV9GTEFHX09WUiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkNCisjZGVmaW5lIFNQSV9GTEFHX0JTWSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkNCisjZGVmaW5lIElTX1NQSV9DTEVBUl9GTEFHKEZMQUcpICgoKEZMQUcpID09IFNQSV9GTEFHX0NSQ0VSUikpDQorI2RlZmluZSBJU19TUElfR0VUX0ZMQUcoRkxBRykgKCgoRkxBRykgPT0gU1BJX0ZMQUdfQlNZKSB8fCAoKEZMQUcpID09IFNQSV9GTEFHX09WUikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBTUElfRkxBR19NT0RGKSB8fCAoKEZMQUcpID09IFNQSV9GTEFHX0NSQ0VSUikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBTUElfRkxBR19UWEUpIHx8ICgoRkxBRykgPT0gU1BJX0ZMQUdfUlhORSkpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1BJX0NSQ19wb2x5bm9taWFsIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIElTX1NQSV9DUkNfUE9MWU5PTUlBTChQT0xZTk9NSUFMKSAoKFBPTFlOT01JQUwpID49IDB4MSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBTUElfTGVnYWN5IA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFNQSV9JMlNfRE1BUmVxX1R4ICAgICAgICAgICAgU1BJX0RNQVJlcV9UeA0KKyNkZWZpbmUgU1BJX0kyU19ETUFSZXFfUnggICAgICAgICAgICBTUElfRE1BUmVxX1J4DQorI2RlZmluZSBTUElfSTJTX0lUX1RYRSAgICAgICAgICAgICAgIFNQSV9JVF9UWEUNCisjZGVmaW5lIFNQSV9JMlNfSVRfUlhORSAgICAgICAgICAgICAgU1BJX0lUX1JYTkUNCisjZGVmaW5lIFNQSV9JMlNfSVRfRVJSICAgICAgICAgICAgICAgU1BJX0lUX0VSUg0KKyNkZWZpbmUgU1BJX0kyU19JVF9PVlIgICAgICAgICAgICAgICBTUElfSVRfT1ZSDQorI2RlZmluZSBTUElfSTJTX0ZMQUdfUlhORSAgICAgICAgICAgIFNQSV9GTEFHX1JYTkUNCisjZGVmaW5lIFNQSV9JMlNfRkxBR19UWEUgICAgICAgICAgICAgU1BJX0ZMQUdfVFhFDQorI2RlZmluZSBTUElfSTJTX0ZMQUdfT1ZSICAgICAgICAgICAgIFNQSV9GTEFHX09WUg0KKyNkZWZpbmUgU1BJX0kyU19GTEFHX0JTWSAgICAgICAgICAgICBTUElfRkxBR19CU1kNCisjZGVmaW5lIFNQSV9JMlNfRGVJbml0ICAgICAgICAgICAgICAgU1BJX0RlSW5pdA0KKyNkZWZpbmUgU1BJX0kyU19JVENvbmZpZyAgICAgICAgICAgICBTUElfSVRDb25maWcNCisjZGVmaW5lIFNQSV9JMlNfRE1BQ21kICAgICAgICAgICAgICAgU1BJX0RNQUNtZA0KKyNkZWZpbmUgU1BJX0kyU19TZW5kRGF0YSAgICAgICAgICAgICBTUElfU2VuZERhdGENCisjZGVmaW5lIFNQSV9JMlNfUmVjZWl2ZURhdGEgICAgICAgICAgU1BJX1JlY2VpdmVEYXRhDQorI2RlZmluZSBTUElfSTJTX0dldEZsYWdTdGF0dXMgICAgICAgIFNQSV9HZXRGbGFnU3RhdHVzDQorI2RlZmluZSBTUElfSTJTX0NsZWFyRmxhZyAgICAgICAgICAgIFNQSV9DbGVhckZsYWcNCisjZGVmaW5lIFNQSV9JMlNfR2V0SVRTdGF0dXMgICAgICAgICAgU1BJX0dldElUU3RhdHVzDQorI2RlZmluZSBTUElfSTJTX0NsZWFySVRQZW5kaW5nQml0ICAgIFNQSV9DbGVhcklUUGVuZGluZ0JpdA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisgIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNQSV9FeHBvcnRlZF9NYWNyb3MNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1BJX0V4cG9ydGVkX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCit2b2lkIFNQSV9EZUluaXQoU1BJX1R5cGVEZWYqIFNQSXgpOw0KK3ZvaWQgU1BJX0luaXQoU1BJX1R5cGVEZWYqIFNQSXgsIFNQSV9Jbml0VHlwZURlZiogU1BJX0luaXRTdHJ1Y3QpOw0KK3ZvaWQgU1BJX1N0cnVjdEluaXQoU1BJX0luaXRUeXBlRGVmKiBTUElfSW5pdFN0cnVjdCk7DQordm9pZCBTUElfQ21kKFNQSV9UeXBlRGVmKiBTUEl4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgU1BJX0lUQ29uZmlnKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50OF90IFNQSV9JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFNQSV9ETUFDbWQoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IFNQSV9ETUFSZXEsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBTUElfU2VuZERhdGEoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IERhdGEpOw0KK3VpbnQxNl90IFNQSV9SZWNlaXZlRGF0YShTUElfVHlwZURlZiogU1BJeCk7DQordm9pZCBTUElfTlNTSW50ZXJuYWxTb2Z0d2FyZUNvbmZpZyhTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX05TU0ludGVybmFsU29mdCk7DQordm9pZCBTUElfU1NPdXRwdXRDbWQoU1BJX1R5cGVEZWYqIFNQSXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBTUElfRGF0YVNpemVDb25maWcoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IFNQSV9EYXRhU2l6ZSk7DQordm9pZCBTUElfVHJhbnNtaXRDUkMoU1BJX1R5cGVEZWYqIFNQSXgpOw0KK3ZvaWQgU1BJX0NhbGN1bGF0ZUNSQyhTUElfVHlwZURlZiogU1BJeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit1aW50MTZfdCBTUElfR2V0Q1JDKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50OF90IFNQSV9DUkMpOw0KK3VpbnQxNl90IFNQSV9HZXRDUkNQb2x5bm9taWFsKFNQSV9UeXBlRGVmKiBTUEl4KTsNCit2b2lkIFNQSV9CaURpcmVjdGlvbmFsTGluZUNvbmZpZyhTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX0RpcmVjdGlvbik7DQorRmxhZ1N0YXR1cyBTUElfR2V0RmxhZ1N0YXR1cyhTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX0ZMQUcpOw0KK3ZvaWQgU1BJX0NsZWFyRmxhZyhTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX0ZMQUcpOw0KK0lUU3RhdHVzIFNQSV9HZXRJVFN0YXR1cyhTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfSVQpOw0KK3ZvaWQgU1BJX0NsZWFySVRQZW5kaW5nQml0KFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50OF90IFNQSV9JVCk7DQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKw0KKyNlbmRpZiAvKl9fU1RNMzJsMTV4X1NQSV9IICovDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3N5c2NmZy5oIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9zeXNjZmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDUxZTkyCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvaW5jL3N0bTMybDF4eF9zeXNjZmcuaApAQCAtMCwwICsxLDM4MSBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgc3RtMzJsMXh4X3N5c2NmZy5oDQorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorICAqIEB2ZXJzaW9uIFYxLjAuMFJDMQ0KKyAgKiBAZGF0ZSAgICAwNy8wMi8yMDEwDQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgU1lTQ0ZHIA0KKyAgKiAgICAgICAgICBmaXJtd2FyZSBsaWJyYXJ5Lg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBjb3B5DQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKi8gDQorDQorLyohPCBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZm5kZWYgX19TVE0zMkwxeHhfU1lTQ0ZHX0gNCisjZGVmaW5lIF9fU1RNMzJMMXh4X1NZU0NGR19IDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorIGV4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8qITwgSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaW5jbHVkZSAic3RtMzJsMXh4LmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTWVNDRkcNCisgICogQHsNCisgICovIA0KKyAgDQorLyoqIEBkZWZncm91cCBTWVNDRkdfRXhwb3J0ZWRfVHlwZXMNCisgICogQHsNCisgICovDQorDQorLyoqIEBkZWZncm91cCBFWFRJX1BvcnRfU291cmNlcyANCisgICogQHsNCisgICovIA0KKyNkZWZpbmUgRVhUSV9Qb3J0U291cmNlR1BJT0EgICAgICAgKCh1aW50OF90KTB4MDApDQorI2RlZmluZSBFWFRJX1BvcnRTb3VyY2VHUElPQiAgICAgICAoKHVpbnQ4X3QpMHgwMSkNCisjZGVmaW5lIEVYVElfUG9ydFNvdXJjZUdQSU9DICAgICAgICgodWludDhfdCkweDAyKQ0KKyNkZWZpbmUgRVhUSV9Qb3J0U291cmNlR1BJT0QgICAgICAgKCh1aW50OF90KTB4MDMpDQorI2RlZmluZSBFWFRJX1BvcnRTb3VyY2VHUElPRSAgICAgICAoKHVpbnQ4X3QpMHgwNCkNCisjZGVmaW5lIEVYVElfUG9ydFNvdXJjZUdQSU9IICAgICAgICgodWludDhfdCkweDA1KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorI2RlZmluZSBJU19FWFRJX1BPUlRfU09VUkNFKFBPUlRTT1VSQ0UpICgoKFBPUlRTT1VSQ0UpID09IEVYVElfUG9ydFNvdXJjZUdQSU9BKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEVYVElfUG9ydFNvdXJjZUdQSU9CKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEVYVElfUG9ydFNvdXJjZUdQSU9DKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEVYVElfUG9ydFNvdXJjZUdQSU9EKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEVYVElfUG9ydFNvdXJjZUdQSU9FKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEVYVElfUG9ydFNvdXJjZUdQSU9IKSkgDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgRVhUSV9QaW5fc291cmNlcyANCisgICogQHsNCisgICovIA0KKyNkZWZpbmUgRVhUSV9QaW5Tb3VyY2UwICAgICAgICAgICAgKCh1aW50OF90KTB4MDApDQorI2RlZmluZSBFWFRJX1BpblNvdXJjZTEgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkNCisjZGVmaW5lIEVYVElfUGluU291cmNlMiAgICAgICAgICAgICgodWludDhfdCkweDAyKQ0KKyNkZWZpbmUgRVhUSV9QaW5Tb3VyY2UzICAgICAgICAgICAgKCh1aW50OF90KTB4MDMpDQorI2RlZmluZSBFWFRJX1BpblNvdXJjZTQgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkNCisjZGVmaW5lIEVYVElfUGluU291cmNlNSAgICAgICAgICAgICgodWludDhfdCkweDA1KQ0KKyNkZWZpbmUgRVhUSV9QaW5Tb3VyY2U2ICAgICAgICAgICAgKCh1aW50OF90KTB4MDYpDQorI2RlZmluZSBFWFRJX1BpblNvdXJjZTcgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNykNCisjZGVmaW5lIEVYVElfUGluU291cmNlOCAgICAgICAgICAgICgodWludDhfdCkweDA4KQ0KKyNkZWZpbmUgRVhUSV9QaW5Tb3VyY2U5ICAgICAgICAgICAgKCh1aW50OF90KTB4MDkpDQorI2RlZmluZSBFWFRJX1BpblNvdXJjZTEwICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQSkNCisjZGVmaW5lIEVYVElfUGluU291cmNlMTEgICAgICAgICAgICgodWludDhfdCkweDBCKQ0KKyNkZWZpbmUgRVhUSV9QaW5Tb3VyY2UxMiAgICAgICAgICAgKCh1aW50OF90KTB4MEMpDQorI2RlZmluZSBFWFRJX1BpblNvdXJjZTEzICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRCkNCisjZGVmaW5lIEVYVElfUGluU291cmNlMTQgICAgICAgICAgICgodWludDhfdCkweDBFKQ0KKyNkZWZpbmUgRVhUSV9QaW5Tb3VyY2UxNSAgICAgICAgICAgKCh1aW50OF90KTB4MEYpDQorI2RlZmluZSBJU19FWFRJX1BJTl9TT1VSQ0UoUElOU09VUkNFKSAoKChQSU5TT1VSQ0UpID09IEVYVElfUGluU291cmNlMCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBFWFRJX1BpblNvdXJjZTEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gRVhUSV9QaW5Tb3VyY2UyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEVYVElfUGluU291cmNlMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBFWFRJX1BpblNvdXJjZTQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gRVhUSV9QaW5Tb3VyY2U1KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEVYVElfUGluU291cmNlNikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBFWFRJX1BpblNvdXJjZTcpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gRVhUSV9QaW5Tb3VyY2U4KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEVYVElfUGluU291cmNlOSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBFWFRJX1BpblNvdXJjZTEwKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEVYVElfUGluU291cmNlMTEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gRVhUSV9QaW5Tb3VyY2UxMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBFWFRJX1BpblNvdXJjZTEzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEVYVElfUGluU291cmNlMTQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gRVhUSV9QaW5Tb3VyY2UxNSkpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1lTQ0ZHX01lbW9yeV9SZW1hcF9Db25maWcgDQorICAqIEB7DQorICAqLyANCisjZGVmaW5lIFNZU0NGR19NZW1vcnlSZW1hcF9GbGFzaCAgICAgICAoKHVpbnQ4X3QpMHgwMCkNCisjZGVmaW5lIFNZU0NGR19NZW1vcnlSZW1hcF9TeXN0ZW1GbGFzaCAoKHVpbnQ4X3QpMHgwMSkNCisjZGVmaW5lIFNZU0NGR19NZW1vcnlSZW1hcF9TUkFNICAgICAgICAoKHVpbnQ4X3QpMHgwMykNCisgICANCisjZGVmaW5lIElTX1NZU0NGR19NRU1PUllfUkVNQVBfQ09ORklORyhSRU1BUCkgKCgoUkVNQVApID09IFNZU0NGR19NZW1vcnlSZW1hcF9GbGFzaCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gU1lTQ0ZHX01lbW9yeVJlbWFwX1N5c3RlbUZsYXNoKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFTUFQKSA9PSBTWVNDRkdfTWVtb3J5UmVtYXBfU1JBTSkpDQorDQorDQorLyoqIEBkZWZncm91cCBSSV9SZXNpc3Rvcg0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFJJX1Jlc2lzdG9yXzEwS1BVICAgICAgICAgIENPTVBfQ1NSXzEwS1BVDQorI2RlZmluZSBSSV9SZXNpc3Rvcl80MDBLUFUgICAgICAgICBDT01QX0NTUl80MDBLUFUNCisjZGVmaW5lIFJJX1Jlc2lzdG9yXzEwS1BEICAgICAgICAgIENPTVBfQ1NSXzEwS1BEDQorI2RlZmluZSBSSV9SZXNpc3Rvcl80MDBLUEQgICAgICAgICBDT01QX0NTUl80MDBLUEQNCisNCisjZGVmaW5lIElTX1JJX1JFU0lTVE9SKFJFU0lTVE9SKSAgKCgoUkVTSVNUT1IpID09IENPTVBfQ1NSXzEwS1BVKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFU0lTVE9SKSA9PSBDT01QX0NTUl80MDBLUFUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVTSVNUT1IpID09IENPTVBfQ1NSXzEwS1BEKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFU0lTVE9SKSA9PSBDT01QX0NTUl80MDBLUEQpKQ0KKyANCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgUklfSW5wdXRDYXB0dXJlDQorICAqIEB7DQorICAqLyANCisgIA0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlX0lDMSAgUklfSUNSX0lDMSAgICAvKiE8IElucHV0IENhcHR1cmUgMSAqLw0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlX0lDMiAgUklfSUNSX0lDMiAgICAvKiE8IElucHV0IENhcHR1cmUgMiAqLw0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlX0lDMyAgUklfSUNSX0lDMyAgICAvKiE8IElucHV0IENhcHR1cmUgMyAqLw0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlX0lDNCAgUklfSUNSX0lDNCAgICAvKiE8IElucHV0IENhcHR1cmUgNCAqLw0KKw0KKyNkZWZpbmUgSVNfUklfSU5QVVRDQVBUVVJFKElOUFVUQ0FQVFVSRSkgKCgoKElOUFVUQ0FQVFVSRSkgJiAodWludDMyX3QpMHhGRkMyRkZGRikgPT0gMHgwMCkgJiYgKChJTlBVVENBUFRVUkUpICE9ICh1aW50MzJfdCkweDAwKSkNCisvKioNCisgICogQH0NCisgICovIA0KKyAgDQorLyoqIEBkZWZncm91cCBUSU1fU2VsZWN0DQorICAqIEB7DQorICAqLyANCisgIA0KKyNkZWZpbmUgVElNX1NlbGVjdF9Ob25lICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgIC8qITwgTm9uZSBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgVElNX1NlbGVjdF9USU0yICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgIC8qITwgVGltZXIgMiBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgVElNX1NlbGVjdF9USU0zICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgIC8qITwgVGltZXIgMyBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgVElNX1NlbGVjdF9USU00ICAoKHVpbnQzMl90KTB4MDAwMzAwMDApICAgIC8qITwgVGltZXIgNCBzZWxlY3RlZCAqLw0KKw0KKyNkZWZpbmUgSVNfUklfVElNKFRJTSkgKCgoVElNKSA9PSBUSU1fU2VsZWN0X05vbmUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAoKFRJTSkgPT0gVElNX1NlbGVjdF9USU0yKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgKChUSU0pID09IFRJTV9TZWxlY3RfVElNMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICgoVElNKSA9PSBUSU1fU2VsZWN0X1RJTTQpKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorICANCisvKiogQGRlZmdyb3VwIFJJX0lucHV0Q2FwdHVyZVJvdXRpbmcNCisgICogQHsNCisgICovIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSU14X0lDMSBUSU14X0lDMiAgVElNeF9JQzMgIFRJTXhfSUM0ICovICANCisjZGVmaW5lIFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfMCAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgLyogUEEwICAgICAgIFBBMSAgICAgIFBBMiAgICAgICBQQTMgICAgICAqLw0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlUm91dGluZ18xICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAvKiBQQTQgICAgICAgUEE1ICAgICAgUEE2ICAgICAgIFBBNyAgICAgICovDQorI2RlZmluZSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzIgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpIC8qIFBBOCAgICAgICBQQTkgICAgICBQQTEwICAgICAgUEExMSAgICAgKi8NCisjZGVmaW5lIFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfMyAgICgodWludDMyX3QpMHgwMDAwMDAwMykgLyogUEExMiAgICAgIFBBMTMgICAgIFBBMTQgICAgICBQQTE1ICAgICAqLw0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlUm91dGluZ180ICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAvKiBQQzAgICAgICAgUEMxICAgICAgUEMyICAgICAgIFBDMyAgICAgICovDQorI2RlZmluZSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzUgICAoKHVpbnQzMl90KTB4MDAwMDAwMDUpIC8qIFBDNCAgICAgICBQQzUgICAgICBQQzYgICAgICAgUEM3ICAgICAgKi8NCisjZGVmaW5lIFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfNiAgICgodWludDMyX3QpMHgwMDAwMDAwNikgLyogUEM4ICAgICAgIFBDOSAgICAgIFBDMTAgICAgICBQQzExICAgICAqLw0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlUm91dGluZ183ICAgKCh1aW50MzJfdCkweDAwMDAwMDA3KSAvKiBQQzEyICAgICAgUEMxMyAgICAgUEMxNCAgICAgIFBDMTUgICAgICovDQorI2RlZmluZSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzggICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpIC8qIFBEMCAgICAgICBQRDEgICAgICBQRDIgICAgICAgUEQzICAgICAgKi8NCisjZGVmaW5lIFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfOSAgICgodWludDMyX3QpMHgwMDAwMDAwOSkgLyogUEQ0ICAgICAgIFBENSAgICAgIFBENiAgICAgICBQRDcgICAgICAqLw0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlUm91dGluZ18xMCAgKCh1aW50MzJfdCkweDAwMDAwMDBBKSAvKiBQRDggICAgICAgUEQ5ICAgICAgUEQxMCAgICAgIFBEMTEgICAgICovDQorI2RlZmluZSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzExICAoKHVpbnQzMl90KTB4MDAwMDAwMEIpIC8qIFBEMTIgICAgICBQRDEzICAgICBQRDE0ICAgICAgUEQxNSAgICAgKi8NCisjZGVmaW5lIFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfMTIgICgodWludDMyX3QpMHgwMDAwMDAwQykgLyogUEUwICAgICAgIFBFMSAgICAgIFBFMiAgICAgICBQRTMgICAgICAqLw0KKyNkZWZpbmUgUklfSW5wdXRDYXB0dXJlUm91dGluZ18xMyAgKCh1aW50MzJfdCkweDAwMDAwMDBEKSAvKiBQRTQgICAgICAgUEU1ICAgICAgUEU2ICAgICAgIFBFNyAgICAgICovDQorI2RlZmluZSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzE0ICAoKHVpbnQzMl90KTB4MDAwMDAwMEUpIC8qIFBFOCAgICAgICBQRTkgICAgICBQRTEwICAgICAgUEUxMSAgICAgKi8NCisjZGVmaW5lIFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfMTUgICgodWludDMyX3QpMHgwMDAwMDAwRikgLyogUEUxMiAgICAgIFBFMTMgICAgIFBFMTQgICAgICBQRTE1ICAgICAqLw0KKw0KKyNkZWZpbmUgSVNfUklfSU5QVVRDQVBUVVJFX1JPVVRJTkcoUk9VVElORykgKCgoUk9VVElORykgPT0gUklfSW5wdXRDYXB0dXJlUm91dGluZ18wKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJPVVRJTkcpID09IFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUk9VVElORykgPT0gUklfSW5wdXRDYXB0dXJlUm91dGluZ18zKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJPVVRJTkcpID09IFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfNSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUk9VVElORykgPT0gUklfSW5wdXRDYXB0dXJlUm91dGluZ182KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzcpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJPVVRJTkcpID09IFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfOCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUk9VVElORykgPT0gUklfSW5wdXRDYXB0dXJlUm91dGluZ185KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzEwKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzExKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzEyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzEzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzE0KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1VUSU5HKSA9PSBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzE1KSkNCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgUklfSU9Td2l0Y2gNCisgICogQHsNCisgICovIA0KKyAgDQorLyogQVNDUjEgSS9PIHN3aXRjaDogYml0IDI4IGlzIHNldCB0byAnMScgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbWFzayBpcyBpbiBBU0NSMSByZWdpc3RlciAqLw0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfQ0gwICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDEpDQorI2RlZmluZSBSSV9JT1N3aXRjaF9DSDEgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMikNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0NIMiAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDA0KQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfQ0gzICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDgpDQorI2RlZmluZSBSSV9JT1N3aXRjaF9DSDQgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAxMCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0NINSAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDIwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfQ0g2ICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwNDApDQorI2RlZmluZSBSSV9JT1N3aXRjaF9DSDcgICAgICAgICgodWludDMyX3QpMHgxMDAwMDA4MCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0NIOCAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMTAwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfQ0g5ICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAyMDApDQorI2RlZmluZSBSSV9JT1N3aXRjaF9DSDEwICAgICAgICgodWludDMyX3QpMHgxMDAwMDQwMCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0NIMTEgICAgICAgKCh1aW50MzJfdCkweDEwMDAwODAwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfQ0gxMiAgICAgICAoKHVpbnQzMl90KTB4MTAwMDEwMDApDQorI2RlZmluZSBSSV9JT1N3aXRjaF9DSDEzICAgICAgICgodWludDMyX3QpMHgxMDAwMjAwMCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0NIMTQgICAgICAgKCh1aW50MzJfdCkweDEwMDA0MDAwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfQ0gxNSAgICAgICAoKHVpbnQzMl90KTB4MTAwMDgwMDApDQorI2RlZmluZSBSSV9JT1N3aXRjaF9DSDE4ICAgICAgICgodWludDMyX3QpMHgxMDA0MDAwMCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0NIMTkgICAgICAgKCh1aW50MzJfdCkweDEwMDgwMDAwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfQ0gyMCAgICAgICAoKHVpbnQzMl90KTB4MTAxMDAwMDApDQorI2RlZmluZSBSSV9JT1N3aXRjaF9DSDIxICAgICAgICgodWludDMyX3QpMHgxMDIwMDAwMCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0NIMjIgICAgICAgKCh1aW50MzJfdCkweDEwNDAwMDAwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfQ0gyMyAgICAgICAoKHVpbnQzMl90KTB4MTA4MDAwMDApDQorI2RlZmluZSBSSV9JT1N3aXRjaF9DSDI0ICAgICAgICgodWludDMyX3QpMHgxMTAwMDAwMCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0NIMjUgICAgICAgKCh1aW50MzJfdCkweDEyMDAwMDAwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfVkNPTVAgICAgICAoKHVpbnQzMl90KTB4MTQwMDAwMDApIC8qIFZDT01QIGlzIGFuIGludGVybmFsIHN3aXRjaCB1c2VkIHRvIGNvbm5lY3QgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgY2hhbm5lbCB0byBDT01QMSBub24gaW52ZXJ0aW5nIGlucHV0ICovDQorDQorLyogQVNDUjIgSU8gc3dpdGNoOiA6IGJpdCAyOCBpcyBzZXQgdG8gJzAnIHRvIGluZGljYXRlIHRoYXQgdGhlIG1hc2sgaXMgaW4gQVNDUjIgcmVnaXN0ZXIgKi8gIA0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfR1IxMF8xICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpDQorI2RlZmluZSBSSV9JT1N3aXRjaF9HUjEwXzIgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0dSMTBfMyAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfR1IxMF80ICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpDQorI2RlZmluZSBSSV9JT1N3aXRjaF9HUjZfMSAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0dSNl8yICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfR1I1XzEgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApDQorI2RlZmluZSBSSV9JT1N3aXRjaF9HUjVfMiAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0dSNV8zICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKQ0KKyNkZWZpbmUgUklfSU9Td2l0Y2hfR1I0XzEgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApDQorI2RlZmluZSBSSV9JT1N3aXRjaF9HUjRfMiAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkNCisjZGVmaW5lIFJJX0lPU3dpdGNoX0dSNF8zICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKQ0KKw0KKyNkZWZpbmUgSVNfUklfSU9TV0lUQ0goSU9TV0lUQ0gpICgoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDApIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfQ0gxKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0NIMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfQ0g0KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0NINSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDYpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfQ0g3KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0NIOCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDkpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfQ0gxMCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDExKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0NIMTIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfQ0gxMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDE0KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0NIMTUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfQ0gxOCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDE5KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0NIMjApIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfQ0gyMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDIyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0NIMjMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfQ0gyNCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9DSDI1KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX1ZDT01QKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0dSMTBfMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjEwXzIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJT1NXSVRDSCkgPT0gUklfSU9Td2l0Y2hfR1IxMF8zKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU9TV0lUQ0gpID09IFJJX0lPU3dpdGNoX0dSMTBfNCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjZfMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjZfMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjVfMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjVfMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjVfMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjRfMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjRfMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElPU1dJVENIKSA9PSBSSV9JT1N3aXRjaF9HUjRfMykpDQorDQorLyoqIEBkZWZncm91cCBSSV9Qb3J0DQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgUklfUG9ydEEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgIC8qITwgR1BJT0Egc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1BvcnRCICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAvKiE8IEdQSU9CIHNlbGVjdGVkICovDQorI2RlZmluZSBSSV9Qb3J0QyAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDMpICAgLyohPCBHUElPQyBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgUklfUG9ydEQgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgIC8qITwgR1BJT0Qgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1BvcnRFICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNSkgICAvKiE8IEdQSU9FIHNlbGVjdGVkICovDQorDQorI2RlZmluZSBJU19SSV9QT1JUKFBPUlQpICgoKFBPUlQpID09IFJJX1BvcnRBKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlQpID09IFJJX1BvcnRCKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlQpID09IFJJX1BvcnRDKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlQpID09IFJJX1BvcnREKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlQpID09IFJJX1BvcnRFKSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBSSV9QaW4gZGVmaW5lIA0KKyAgKiBAew0KKyAgKi8NCisjZGVmaW5lIFJJX1Bpbl8wICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgIC8qITwgUGluIDAgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl8xICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgIC8qITwgUGluIDEgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl8yICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgIC8qITwgUGluIDIgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl8zICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgIC8qITwgUGluIDMgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl80ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgIC8qITwgUGluIDQgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl81ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgIC8qITwgUGluIDUgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl82ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgIC8qITwgUGluIDYgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl83ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgIC8qITwgUGluIDcgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl84ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgIC8qITwgUGluIDggc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl85ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgIC8qITwgUGluIDkgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl8xMCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgIC8qITwgUGluIDEwIHNlbGVjdGVkICovDQorI2RlZmluZSBSSV9QaW5fMTEgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAvKiE8IFBpbiAxMSBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgUklfUGluXzEyICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgLyohPCBQaW4gMTIgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl8xMyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgIC8qITwgUGluIDEzIHNlbGVjdGVkICovDQorI2RlZmluZSBSSV9QaW5fMTQgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAvKiE8IFBpbiAxNCBzZWxlY3RlZCAqLw0KKyNkZWZpbmUgUklfUGluXzE1ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgLyohPCBQaW4gMTUgc2VsZWN0ZWQgKi8NCisjZGVmaW5lIFJJX1Bpbl9BbGwgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgIC8qITwgQWxsIHBpbnMgc2VsZWN0ZWQgKi8NCisNCisjZGVmaW5lIElTX1JJX1BJTihQSU4pICgoUElOKSAhPSAodWludDE2X3QpMHgwMCkNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1lTQ0ZHX0V4cG9ydGVkX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8gDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFNZU0NGR19FeHBvcnRlZF9GdW5jdGlvbnMNCisgICogQHsNCisgICovIA0KK3ZvaWQgU1lTQ0ZHX0RlSW5pdCh2b2lkKTsNCit2b2lkIFNZU0NGR19NZW1vcnlSZW1hcENvbmZpZyh1aW50OF90IFNZU0NGR19NZW1vcnlSZW1hcCk7DQordm9pZCBTWVNDRkdfVVNCUHVDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFNZU0NGR19FWFRJTGluZUNvbmZpZyh1aW50OF90IEVYVElfUG9ydFNvdXJjZUdQSU94LCB1aW50OF90IEVYVElfUGluU291cmNleCk7DQordm9pZCBTWVNDRkdfUklEZUluaXQodm9pZCk7DQordm9pZCBTWVNDRkdfUklUSU1TZWxlY3QodWludDMyX3QgVElNX1NlbGVjdCk7DQordm9pZCBTWVNDRkdfUklUSU1JbnB1dENhcHR1cmVDb25maWcodWludDMyX3QgUklfSW5wdXRDYXB0dXJlLCB1aW50MzJfdCBSSV9JbnB1dENhcHR1cmVSb3V0aW5nKTsNCit2b2lkIFNZU0NGR19SSVJlc2lzdG9yQ29uZmlnKHVpbnQzMl90IFJJX1Jlc2lzdG9yLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgU1lTQ0ZHX1JJU3dpdGNoQ29udHJvbE1vZGVDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFNZU0NGR19SSUlPU3dpdGNoQ29uZmlnKHVpbnQzMl90IFJJX0lPU3dpdGNoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgU1lTQ0ZHX1JJSHlzdGVyZXNpc0NvbmZpZyh1aW50OF90IFJJX1BvcnQsIHVpbnQxNl90IFJJX1BpbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorDQorI2VuZGlmIC8qX19TVE0zMkwxeHhfU1lTQ0ZHX0ggKi8NCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL2luYy9zdG0zMmwxeHhfdGltLmggYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3RpbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NDFlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3RpbS5oCkBAIC0wLDAgKzEsOTAxIEBACisvKioNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAZmlsZSAgICBzdG0zMmwxeHhfdGltLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBUSU0gZmlybXdhcmUgDQorICAqICAgICAgICAgIGxpYnJhcnkuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisNCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZm5kZWYgX19TVE0zMkwxeHhfVElNX0gNCisjZGVmaW5lIF9fU1RNMzJMMXh4X1RJTV9IDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorIGV4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eC5oIg0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlcg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgVElNDQorICAqIEB7DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9FeHBvcnRlZF9UeXBlcw0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqIA0KKyAgKiBAYnJpZWYgIFRJTSBUaW1lIEJhc2UgSW5pdCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbg0KKyAgKiBAbm90ZSAgIFRoaXMgc3R1cmN0dXJlIGlzIHVzZWQgd2l0aCBhbGwgVElNeCBleGNlcHQgZm9yIFRJTTYgYW5kIFRJTTcuICAgIA0KKyAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIHVpbnQxNl90IFRJTV9QcmVzY2FsZXI7ICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHByZXNjYWxlciB2YWx1ZSB1c2VkIHRvIGRpdmlkZSB0aGUgVElNIGNsb2NrLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDB4MDAwMCBhbmQgMHhGRkZGICovDQorDQorICB1aW50MTZfdCBUSU1fQ291bnRlck1vZGU7ICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBjb3VudGVyIG1vZGUuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fQ291bnRlcl9Nb2RlICovDQorDQorICB1aW50MTZfdCBUSU1fUGVyaW9kOyAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBwZXJpb2QgdmFsdWUgdG8gYmUgbG9hZGVkIGludG8gdGhlIGFjdGl2ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG8tUmVsb2FkIFJlZ2lzdGVyIGF0IHRoZSBuZXh0IHVwZGF0ZSBldmVudC4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMHgwMDAwIGFuZCAweEZGRkYuICAqLyANCisNCisgIHVpbnQxNl90IFRJTV9DbG9ja0RpdmlzaW9uOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGNsb2NrIGRpdmlzaW9uLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fQ2xvY2tfRGl2aXNpb25fQ0tEICovDQorDQorfSBUSU1fVGltZUJhc2VJbml0VHlwZURlZjsgICAgICAgDQorDQorLyoqIA0KKyAgKiBAYnJpZWYgIFRJTSBPdXRwdXQgQ29tcGFyZSBJbml0IHN0cnVjdHVyZSBkZWZpbml0aW9uICANCisgICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICB1aW50MTZfdCBUSU1fT0NNb2RlOyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFRJTSBtb2RlLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fT3V0cHV0X0NvbXBhcmVfYW5kX1BXTV9tb2RlcyAqLw0KKw0KKyAgdWludDE2X3QgVElNX091dHB1dFN0YXRlOyAgIC8qITwgU3BlY2lmaWVzIHRoZSBUSU0gT3V0cHV0IENvbXBhcmUgc3RhdGUuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9PdXRwdXRfQ29tcGFyZV9zdGF0ZSAqLw0KKw0KKyAgdWludDE2X3QgVElNX1B1bHNlOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBwdWxzZSB2YWx1ZSB0byBiZSBsb2FkZWQgaW50byB0aGUgQ2FwdHVyZSBDb21wYXJlIFJlZ2lzdGVyLiANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDB4MDAwMCBhbmQgMHhGRkZGICovDQorDQorICB1aW50MTZfdCBUSU1fT0NQb2xhcml0eTsgICAgLyohPCBTcGVjaWZpZXMgdGhlIG91dHB1dCBwb2xhcml0eS4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX091dHB1dF9Db21wYXJlX1BvbGFyaXR5ICovDQorDQorfSBUSU1fT0NJbml0VHlwZURlZjsNCisNCisvKiogDQorICAqIEBicmllZiAgVElNIElucHV0IENhcHR1cmUgSW5pdCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiAgDQorICAqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKw0KKyAgdWludDE2X3QgVElNX0NoYW5uZWw7ICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFRJTSBjaGFubmVsLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9DaGFubmVsICovDQorDQorICB1aW50MTZfdCBUSU1fSUNQb2xhcml0eTsgICAvKiE8IFNwZWNpZmllcyB0aGUgYWN0aXZlIGVkZ2Ugb2YgdGhlIGlucHV0IHNpZ25hbC4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fSW5wdXRfQ2FwdHVyZV9Qb2xhcml0eSAqLw0KKw0KKyAgdWludDE2X3QgVElNX0lDU2VsZWN0aW9uOyAgLyohPCBTcGVjaWZpZXMgdGhlIGlucHV0Lg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9JbnB1dF9DYXB0dXJlX1NlbGVjdGlvbiAqLw0KKw0KKyAgdWludDE2X3QgVElNX0lDUHJlc2NhbGVyOyAgLyohPCBTcGVjaWZpZXMgdGhlIElucHV0IENhcHR1cmUgUHJlc2NhbGVyLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9JbnB1dF9DYXB0dXJlX1ByZXNjYWxlciAqLw0KKw0KKyAgdWludDE2X3QgVElNX0lDRmlsdGVyOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGlucHV0IGNhcHR1cmUgZmlsdGVyLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiAweDAgYW5kIDB4RiAqLw0KK30gVElNX0lDSW5pdFR5cGVEZWY7DQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisgIA0KKy8qKiBAZGVmZ3JvdXAgVElNX0V4cG9ydGVkX2NvbnN0YW50cyANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBJU19USU1fQUxMX1BFUklQSChQRVJJUEgpICgoKFBFUklQSCkgPT0gVElNMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU00KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTcpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU05KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTApIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0xMSkpDQorDQorDQorI2RlZmluZSBJU19USU1fMjM0OTEwMTFfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBUSU0yKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0zKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU00KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU05KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0xMCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisjZGVmaW5lIElTX1RJTV8yMzRfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBUSU0yKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTQpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorI2RlZmluZSBJU19USU1fMjM0OV9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IFRJTTIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0zKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNCkgfHxcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNOSkpDQorDQorI2RlZmluZSBJU19USU1fMjM0Njc5X1BFUklQSChQRVJJUEgpICgoKFBFUklQSCkgPT0gVElNMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU00KSB8fFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU02KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNykgfHxcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNOSkpDQorDQorI2RlZmluZSBJU19USU1fMjM0NjdfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBUSU0yKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0zKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU00KSB8fFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTYpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTcpKQ0KKw0KKyNkZWZpbmUgSVNfVElNXzkxMDExX1BFUklQSChQRVJJUEgpICgoKFBFUklQSCkgPT0gVElNOSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0xMCkgfHxcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTExKSkNCisNCisNCisNCisvKiogQGRlZmdyb3VwIFRJTV9PdXRwdXRfQ29tcGFyZV9hbmRfUFdNX21vZGVzIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFRJTV9PQ01vZGVfVGltaW5nICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBUSU1fT0NNb2RlX0FjdGl2ZSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQ0KKyNkZWZpbmUgVElNX09DTW9kZV9JbmFjdGl2ZSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkNCisjZGVmaW5lIFRJTV9PQ01vZGVfVG9nZ2xlICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApDQorI2RlZmluZSBUSU1fT0NNb2RlX1BXTTEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKQ0KKyNkZWZpbmUgVElNX09DTW9kZV9QV00yICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA3MCkNCisjZGVmaW5lIElTX1RJTV9PQ19NT0RFKE1PREUpICgoKE1PREUpID09IFRJTV9PQ01vZGVfVGltaW5nKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT0NNb2RlX0FjdGl2ZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX09DTW9kZV9JbmFjdGl2ZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX09DTW9kZV9Ub2dnbGUpfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX09DTW9kZV9QV00xKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT0NNb2RlX1BXTTIpKQ0KKyNkZWZpbmUgSVNfVElNX09DTShNT0RFKSAoKChNT0RFKSA9PSBUSU1fT0NNb2RlX1RpbWluZykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT0NNb2RlX0FjdGl2ZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT0NNb2RlX0luYWN0aXZlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9PQ01vZGVfVG9nZ2xlKXx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX09DTW9kZV9QV00xKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9PQ01vZGVfUFdNMikgfHwJXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fRm9yY2VkQWN0aW9uX0FjdGl2ZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fRm9yY2VkQWN0aW9uX0luQWN0aXZlKSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBUSU1fT25lX1B1bHNlX01vZGUgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX09QTW9kZV9TaW5nbGUgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkNCisjZGVmaW5lIFRJTV9PUE1vZGVfUmVwZXRpdGl2ZSAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBJU19USU1fT1BNX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gVElNX09QTW9kZV9TaW5nbGUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT1BNb2RlX1JlcGV0aXRpdmUpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fQ2hhbm5lbCANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fQ2hhbm5lbF8xICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVElNX0NoYW5uZWxfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkNCisjZGVmaW5lIFRJTV9DaGFubmVsXzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpDQorI2RlZmluZSBUSU1fQ2hhbm5lbF80ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBDKQ0KKw0KKyNkZWZpbmUgSVNfVElNX0NIQU5ORUwoQ0hBTk5FTCkgKCgoQ0hBTk5FTCkgPT0gVElNX0NoYW5uZWxfMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gVElNX0NoYW5uZWxfMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gVElNX0NoYW5uZWxfMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gVElNX0NoYW5uZWxfNCkpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorI2RlZmluZSBJU19USU1fUFdNSV9DSEFOTkVMKENIQU5ORUwpICgoKENIQU5ORUwpID09IFRJTV9DaGFubmVsXzEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gVElNX0NoYW5uZWxfMikpDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9DbG9ja19EaXZpc2lvbl9DS0QgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX0NLRF9ESVYxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFRJTV9DS0RfRElWMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApDQorI2RlZmluZSBUSU1fQ0tEX0RJVjQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKQ0KKyNkZWZpbmUgSVNfVElNX0NLRF9ESVYoRElWKSAoKChESVYpID09IFRJTV9DS0RfRElWMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChESVYpID09IFRJTV9DS0RfRElWMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChESVYpID09IFRJTV9DS0RfRElWNCkpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX0NvdW50ZXJfTW9kZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fQ291bnRlck1vZGVfVXAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVElNX0NvdW50ZXJNb2RlX0Rvd24gICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkNCisjZGVmaW5lIFRJTV9Db3VudGVyTW9kZV9DZW50ZXJBbGlnbmVkMSAgICAgKCh1aW50MTZfdCkweDAwMjApDQorI2RlZmluZSBUSU1fQ291bnRlck1vZGVfQ2VudGVyQWxpZ25lZDIgICAgICgodWludDE2X3QpMHgwMDQwKQ0KKyNkZWZpbmUgVElNX0NvdW50ZXJNb2RlX0NlbnRlckFsaWduZWQzICAgICAoKHVpbnQxNl90KTB4MDA2MCkNCisjZGVmaW5lIElTX1RJTV9DT1VOVEVSX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gVElNX0NvdW50ZXJNb2RlX1VwKSB8fCAgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fQ291bnRlck1vZGVfRG93bikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fQ291bnRlck1vZGVfQ2VudGVyQWxpZ25lZDEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX0NvdW50ZXJNb2RlX0NlbnRlckFsaWduZWQyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9Db3VudGVyTW9kZV9DZW50ZXJBbGlnbmVkMykpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9PdXRwdXRfQ29tcGFyZV9Qb2xhcml0eSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fT0NQb2xhcml0eV9IaWdoICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVElNX09DUG9sYXJpdHlfTG93ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikNCisjZGVmaW5lIElTX1RJTV9PQ19QT0xBUklUWShQT0xBUklUWSkgKCgoUE9MQVJJVFkpID09IFRJTV9PQ1BvbGFyaXR5X0hpZ2gpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUE9MQVJJVFkpID09IFRJTV9PQ1BvbGFyaXR5X0xvdykpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX091dHB1dF9Db21wYXJlX3N0YXRlDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX091dHB1dFN0YXRlX0Rpc2FibGUgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFRJTV9PdXRwdXRTdGF0ZV9FbmFibGUgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpDQorI2RlZmluZSBJU19USU1fT1VUUFVUX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX091dHB1dFN0YXRlX0Rpc2FibGUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBUSU1fT3V0cHV0U3RhdGVfRW5hYmxlKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX0NhcHR1cmVfQ29tcGFyZV9zdGF0ZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fQ0N4X0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkNCisjZGVmaW5lIFRJTV9DQ3hfRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgSVNfVElNX0NDWChDQ1gpICgoKENDWCkgPT0gVElNX0NDeF9FbmFibGUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgKChDQ1gpID09IFRJTV9DQ3hfRGlzYWJsZSkpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9JbnB1dF9DYXB0dXJlX1BvbGFyaXR5IA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lICBUSU1fSUNQb2xhcml0eV9SaXNpbmcgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSAgVElNX0lDUG9sYXJpdHlfRmFsbGluZyAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQ0KKyNkZWZpbmUgIFRJTV9JQ1BvbGFyaXR5X0JvdGhFZGdlICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwQSkNCisjZGVmaW5lIElTX1RJTV9JQ19QT0xBUklUWShQT0xBUklUWSkgKCgoUE9MQVJJVFkpID09IFRJTV9JQ1BvbGFyaXR5X1Jpc2luZykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQT0xBUklUWSkgPT0gVElNX0lDUG9sYXJpdHlfRmFsbGluZyl8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPTEFSSVRZKSA9PSBUSU1fSUNQb2xhcml0eV9Cb3RoRWRnZSkpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9JbnB1dF9DYXB0dXJlX1NlbGVjdGlvbiANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fSUNTZWxlY3Rpb25fRGlyZWN0VEkgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAvKiE8IFRJTSBJbnB1dCAxLCAyLCAzIG9yIDQgaXMgc2VsZWN0ZWQgdG8gYmUgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RlZCB0byBJQzEsIElDMiwgSUMzIG9yIElDNCwgcmVzcGVjdGl2ZWx5ICovDQorI2RlZmluZSBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSSAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAvKiE8IFRJTSBJbnB1dCAxLCAyLCAzIG9yIDQgaXMgc2VsZWN0ZWQgdG8gYmUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkIHRvIElDMiwgSUMxLCBJQzQgb3IgSUMzLCByZXNwZWN0aXZlbHkuICovDQorI2RlZmluZSBUSU1fSUNTZWxlY3Rpb25fVFJDICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAzKSAvKiE8IFRJTSBJbnB1dCAxLCAyLCAzIG9yIDQgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIFRSQy4gKi8NCisjZGVmaW5lIElTX1RJTV9JQ19TRUxFQ1RJT04oU0VMRUNUSU9OKSAoKChTRUxFQ1RJT04pID09IFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNFTEVDVElPTikgPT0gVElNX0lDU2VsZWN0aW9uX0luZGlyZWN0VEkpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTRUxFQ1RJT04pID09IFRJTV9JQ1NlbGVjdGlvbl9UUkMpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fSW5wdXRfQ2FwdHVyZV9QcmVzY2FsZXIgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX0lDUFNDX0RJVjEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgLyohPCBDYXB0dXJlIHBlcmZvcm1lZCBlYWNoIHRpbWUgYW4gZWRnZSBpcyBkZXRlY3RlZCBvbiB0aGUgY2FwdHVyZSBpbnB1dC4gKi8NCisjZGVmaW5lIFRJTV9JQ1BTQ19ESVYyICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpIC8qITwgQ2FwdHVyZSBwZXJmb3JtZWQgb25jZSBldmVyeSAyIGV2ZW50cy4gKi8NCisjZGVmaW5lIFRJTV9JQ1BTQ19ESVY0ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpIC8qITwgQ2FwdHVyZSBwZXJmb3JtZWQgb25jZSBldmVyeSA0IGV2ZW50cy4gKi8NCisjZGVmaW5lIFRJTV9JQ1BTQ19ESVY4ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEMpIC8qITwgQ2FwdHVyZSBwZXJmb3JtZWQgb25jZSBldmVyeSA4IGV2ZW50cy4gKi8NCisjZGVmaW5lIElTX1RJTV9JQ19QUkVTQ0FMRVIoUFJFU0NBTEVSKSAoKChQUkVTQ0FMRVIpID09IFRJTV9JQ1BTQ19ESVYxKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBUSU1fSUNQU0NfRElWMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gVElNX0lDUFNDX0RJVjQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFRJTV9JQ1BTQ19ESVY4KSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX2ludGVycnVwdF9zb3VyY2VzIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFRJTV9JVF9VcGRhdGUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpDQorI2RlZmluZSBUSU1fSVRfQ0MxICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQ0KKyNkZWZpbmUgVElNX0lUX0NDMiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkNCisjZGVmaW5lIFRJTV9JVF9DQzMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpDQorI2RlZmluZSBUSU1fSVRfQ0M0ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQ0KKyNkZWZpbmUgVElNX0lUX1RyaWdnZXIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkNCisjZGVmaW5lIElTX1RJTV9JVChJVCkgKCgoKElUKSAmICh1aW50MTZfdCkweEZGQTApID09IDB4MDAwMCkgJiYgKChJVCkgIT0gMHgwMDAwKSkNCisNCisjZGVmaW5lIElTX1RJTV9HRVRfSVQoSVQpICgoKElUKSA9PSBUSU1fSVRfVXBkYXRlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVElNX0lUX0NDMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFRJTV9JVF9DQzIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBUSU1fSVRfQ0MzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVElNX0lUX0NDNCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFRJTV9JVF9UcmlnZ2VyKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX0RNQV9CYXNlX2FkZHJlc3MgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX0RNQUJhc2VfQ1IxICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NSMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpDQorI2RlZmluZSBUSU1fRE1BQmFzZV9TTUNSICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQ0KKyNkZWZpbmUgVElNX0RNQUJhc2VfRElFUiAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMykNCisjZGVmaW5lIFRJTV9ETUFCYXNlX1NSICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpDQorI2RlZmluZSBUSU1fRE1BQmFzZV9FR1IgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA1KQ0KKyNkZWZpbmUgVElNX0RNQUJhc2VfQ0NNUjEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNikNCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDTVIyICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDcpDQorI2RlZmluZSBUSU1fRE1BQmFzZV9DQ0VSICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQ0KKyNkZWZpbmUgVElNX0RNQUJhc2VfQ05UICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOSkNCisjZGVmaW5lIFRJTV9ETUFCYXNlX1BTQyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEEpDQorI2RlZmluZSBUSU1fRE1BQmFzZV9BUlIgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBCKQ0KKyNkZWZpbmUgVElNX0RNQUJhc2VfUkNSICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwQykNCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDUjEgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEQpDQorI2RlZmluZSBUSU1fRE1BQmFzZV9DQ1IyICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBFKQ0KKyNkZWZpbmUgVElNX0RNQUJhc2VfQ0NSMyAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikNCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDUjQgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApDQorI2RlZmluZSBUSU1fRE1BQmFzZV9EQ1IgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEyKQ0KKyNkZWZpbmUgSVNfVElNX0RNQV9CQVNFKEJBU0UpICgoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NSMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NSMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX1NNQ1IpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9ESUVSKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFTRSkgPT0gVElNX0RNQUJhc2VfU1IpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9FR1IpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9DQ01SMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NDTVIyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFTRSkgPT0gVElNX0RNQUJhc2VfQ0NFUikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NOVCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX1BTQykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0FSUikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NDUjEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9DQ1IyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFTRSkgPT0gVElNX0RNQUJhc2VfQ0NSMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NDUjQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9EQ1IpKSAgICAgICAgICAgICAgICAgICAgIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fRE1BX0J1cnN0X0xlbmd0aCANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMUJ5dGUgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzJCeXRlcyAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkNCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8zQnl0ZXMgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApDQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfNEJ5dGVzICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKQ0KKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzVCeXRlcyAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkNCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF82Qnl0ZXMgICAgICAgICAgKCh1aW50MTZfdCkweDA1MDApDQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfN0J5dGVzICAgICAgICAgICgodWludDE2X3QpMHgwNjAwKQ0KKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzhCeXRlcyAgICAgICAgICAoKHVpbnQxNl90KTB4MDcwMCkNCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF85Qnl0ZXMgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApDQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMTBCeXRlcyAgICAgICAgICgodWludDE2X3QpMHgwOTAwKQ0KKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzExQnl0ZXMgICAgICAgICAoKHVpbnQxNl90KTB4MEEwMCkNCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xMkJ5dGVzICAgICAgICAgKCh1aW50MTZfdCkweDBCMDApDQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMTNCeXRlcyAgICAgICAgICgodWludDE2X3QpMHgwQzAwKQ0KKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzE0Qnl0ZXMgICAgICAgICAoKHVpbnQxNl90KTB4MEQwMCkNCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xNUJ5dGVzICAgICAgICAgKCh1aW50MTZfdCkweDBFMDApDQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMTZCeXRlcyAgICAgICAgICgodWludDE2X3QpMHgwRjAwKQ0KKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzE3Qnl0ZXMgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkNCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xOEJ5dGVzICAgICAgICAgKCh1aW50MTZfdCkweDExMDApDQorI2RlZmluZSBJU19USU1fRE1BX0xFTkdUSChMRU5HVEgpICgoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzFCeXRlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzJCeXRlcykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF8zQnl0ZXMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfNEJ5dGVzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzVCeXRlcykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF82Qnl0ZXMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfN0J5dGVzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzhCeXRlcykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF85Qnl0ZXMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfMTBCeXRlcykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF8xMUJ5dGVzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzEyQnl0ZXMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfMTNCeXRlcykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF8xNEJ5dGVzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzE1Qnl0ZXMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfMTZCeXRlcykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF8xN0J5dGVzKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzE4Qnl0ZXMpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fRE1BX3NvdXJjZXMgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX0RNQV9VcGRhdGUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkNCisjZGVmaW5lIFRJTV9ETUFfQ0MxICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApDQorI2RlZmluZSBUSU1fRE1BX0NDMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKQ0KKyNkZWZpbmUgVElNX0RNQV9DQzMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkNCisjZGVmaW5lIFRJTV9ETUFfQ0M0ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApDQorI2RlZmluZSBUSU1fRE1BX1RyaWdnZXIgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKQ0KKyNkZWZpbmUgSVNfVElNX0RNQV9TT1VSQ0UoU09VUkNFKSAoKCgoU09VUkNFKSAmICh1aW50MTZfdCkweEEwRkYpID09IDB4MDAwMCkgJiYgKChTT1VSQ0UpICE9IDB4MDAwMCkpDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9FeHRlcm5hbF9UcmlnZ2VyX1ByZXNjYWxlciANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fRXh0VFJHUFNDX09GRiAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVElNX0V4dFRSR1BTQ19ESVYyICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkNCisjZGVmaW5lIFRJTV9FeHRUUkdQU0NfRElWNCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApDQorI2RlZmluZSBUSU1fRXh0VFJHUFNDX0RJVjggICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzMDAwKQ0KKyNkZWZpbmUgSVNfVElNX0VYVF9QUkVTQ0FMRVIoUFJFU0NBTEVSKSAoKChQUkVTQ0FMRVIpID09IFRJTV9FeHRUUkdQU0NfT0ZGKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gVElNX0V4dFRSR1BTQ19ESVYyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gVElNX0V4dFRSR1BTQ19ESVY0KSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gVElNX0V4dFRSR1BTQ19ESVY4KSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX0ludGVybmFsX1RyaWdnZXJfU2VsZWN0aW9uIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFRJTV9UU19JVFIwICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBUSU1fVFNfSVRSMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQ0KKyNkZWZpbmUgVElNX1RTX0lUUjIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkNCisjZGVmaW5lIFRJTV9UU19JVFIzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApDQorI2RlZmluZSBUSU1fVFNfVEkxRl9FRCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKQ0KKyNkZWZpbmUgVElNX1RTX1RJMUZQMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA1MCkNCisjZGVmaW5lIFRJTV9UU19USTJGUDIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjApDQorI2RlZmluZSBUSU1fVFNfRVRSRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDcwKQ0KKyNkZWZpbmUgSVNfVElNX1RSSUdHRVJfU0VMRUNUSU9OKFNFTEVDVElPTikgKCgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfVEkxRl9FRCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfVEkxRlAxKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTRUxFQ1RJT04pID09IFRJTV9UU19USTJGUDIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNFTEVDVElPTikgPT0gVElNX1RTX0VUUkYpKQ0KKyNkZWZpbmUgSVNfVElNX0lOVEVSTkFMX1RSSUdHRVJfU0VMRUNUSU9OKFNFTEVDVElPTikgKCgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMykpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9USXhfRXh0ZXJuYWxfQ2xvY2tfU291cmNlIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFRJTV9USXhFeHRlcm5hbENMSzFTb3VyY2VfVEkxICAgICAgKCh1aW50MTZfdCkweDAwNTApDQorI2RlZmluZSBUSU1fVEl4RXh0ZXJuYWxDTEsxU291cmNlX1RJMiAgICAgICgodWludDE2X3QpMHgwMDYwKQ0KKyNkZWZpbmUgVElNX1RJeEV4dGVybmFsQ0xLMVNvdXJjZV9USTFFRCAgICAoKHVpbnQxNl90KTB4MDA0MCkNCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX0V4dGVybmFsX1RyaWdnZXJfUG9sYXJpdHkgDQorICAqIEB7DQorICAqLyANCisjZGVmaW5lIFRJTV9FeHRUUkdQb2xhcml0eV9JbnZlcnRlZCAgICAgICAgKCh1aW50MTZfdCkweDgwMDApDQorI2RlZmluZSBUSU1fRXh0VFJHUG9sYXJpdHlfTm9uSW52ZXJ0ZWQgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgSVNfVElNX0VYVF9QT0xBUklUWShQT0xBUklUWSkgKCgoUE9MQVJJVFkpID09IFRJTV9FeHRUUkdQb2xhcml0eV9JbnZlcnRlZCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUE9MQVJJVFkpID09IFRJTV9FeHRUUkdQb2xhcml0eV9Ob25JbnZlcnRlZCkpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX1ByZXNjYWxlcl9SZWxvYWRfTW9kZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fUFNDUmVsb2FkTW9kZV9VcGRhdGUgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVElNX1BTQ1JlbG9hZE1vZGVfSW1tZWRpYXRlICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkNCisjZGVmaW5lIElTX1RJTV9QUkVTQ0FMRVJfUkVMT0FEKFJFTE9BRCkgKCgoUkVMT0FEKSA9PSBUSU1fUFNDUmVsb2FkTW9kZV9VcGRhdGUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVMT0FEKSA9PSBUSU1fUFNDUmVsb2FkTW9kZV9JbW1lZGlhdGUpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fRm9yY2VkX0FjdGlvbiANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fRm9yY2VkQWN0aW9uX0FjdGl2ZSAgICAgICAgICAgICgodWludDE2X3QpMHgwMDUwKQ0KKyNkZWZpbmUgVElNX0ZvcmNlZEFjdGlvbl9JbkFjdGl2ZSAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkNCisjZGVmaW5lIElTX1RJTV9GT1JDRURfQUNUSU9OKEFDVElPTikgKCgoQUNUSU9OKSA9PSBUSU1fRm9yY2VkQWN0aW9uX0FjdGl2ZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBQ1RJT04pID09IFRJTV9Gb3JjZWRBY3Rpb25fSW5BY3RpdmUpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fRW5jb2Rlcl9Nb2RlIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFRJTV9FbmNvZGVyTW9kZV9USTEgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpDQorI2RlZmluZSBUSU1fRW5jb2Rlck1vZGVfVEkyICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQ0KKyNkZWZpbmUgVElNX0VuY29kZXJNb2RlX1RJMTIgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMykNCisjZGVmaW5lIElTX1RJTV9FTkNPREVSX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gVElNX0VuY29kZXJNb2RlX1RJMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fRW5jb2Rlck1vZGVfVEkyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9FbmNvZGVyTW9kZV9USTEyKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX0V2ZW50X1NvdXJjZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfVXBkYXRlICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKQ0KKyNkZWZpbmUgVElNX0V2ZW50U291cmNlX0NDMSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikNCisjZGVmaW5lIFRJTV9FdmVudFNvdXJjZV9DQzIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpDQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfQ0MzICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQ0KKyNkZWZpbmUgVElNX0V2ZW50U291cmNlX0NDNCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkNCisjZGVmaW5lIFRJTV9FdmVudFNvdXJjZV9UcmlnZ2VyICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApDQorI2RlZmluZSBJU19USU1fRVZFTlRfU09VUkNFKFNPVVJDRSkgKCgoKFNPVVJDRSkgJiAodWludDE2X3QpMHhGRkEwKSA9PSAweDAwMDApICYmICgoU09VUkNFKSAhPSAweDAwMDApKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fVXBkYXRlX1NvdXJjZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fVXBkYXRlU291cmNlX0dsb2JhbCAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAvKiE8IFNvdXJjZSBvZiB1cGRhdGUgaXMgdGhlIGNvdW50ZXIgb3ZlcmZsb3cvdW5kZXJmbG93DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBzZXR0aW5nIG9mIFVHIGJpdCwgb3IgYW4gdXBkYXRlIGdlbmVyYXRpb24NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgc2xhdmUgbW9kZSBjb250cm9sbGVyLiAqLw0KKyNkZWZpbmUgVElNX1VwZGF0ZVNvdXJjZV9SZWd1bGFyICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgLyohPCBTb3VyY2Ugb2YgdXBkYXRlIGlzIGNvdW50ZXIgb3ZlcmZsb3cvdW5kZXJmbG93LiAqLw0KKyNkZWZpbmUgSVNfVElNX1VQREFURV9TT1VSQ0UoU09VUkNFKSAoKChTT1VSQ0UpID09IFRJTV9VcGRhdGVTb3VyY2VfR2xvYmFsKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gVElNX1VwZGF0ZVNvdXJjZV9SZWd1bGFyKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX091cHV0X0NvbXBhcmVfUHJlbG9hZF9TdGF0ZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fT0NQcmVsb2FkX0VuYWJsZSAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQ0KKyNkZWZpbmUgVElNX09DUHJlbG9hZF9EaXNhYmxlICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIElTX1RJTV9PQ1BSRUxPQURfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBUSU1fT0NQcmVsb2FkX0VuYWJsZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IFRJTV9PQ1ByZWxvYWRfRGlzYWJsZSkpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9PdXB1dF9Db21wYXJlX0Zhc3RfU3RhdGUgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX09DRmFzdF9FbmFibGUgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkNCisjZGVmaW5lIFRJTV9PQ0Zhc3RfRGlzYWJsZSAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBJU19USU1fT0NGQVNUX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX09DRmFzdF9FbmFibGUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBUSU1fT0NGYXN0X0Rpc2FibGUpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX091cHV0X0NvbXBhcmVfQ2xlYXJfU3RhdGUgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX09DQ2xlYXJfRW5hYmxlICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkNCisjZGVmaW5lIFRJTV9PQ0NsZWFyX0Rpc2FibGUgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBJU19USU1fT0NDTEVBUl9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IFRJTV9PQ0NsZWFyX0VuYWJsZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBUSU1fT0NDbGVhcl9EaXNhYmxlKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX1RyaWdnZXJfT3V0cHV0X1NvdXJjZSANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fVFJHT1NvdXJjZV9SZXNldCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVElNX1RSR09Tb3VyY2VfRW5hYmxlICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkNCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX1VwZGF0ZSAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApDQorI2RlZmluZSBUSU1fVFJHT1NvdXJjZV9PQzEgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDMwKQ0KKyNkZWZpbmUgVElNX1RSR09Tb3VyY2VfT0MxUmVmICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkNCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX09DMlJlZiAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNTApDQorI2RlZmluZSBUSU1fVFJHT1NvdXJjZV9PQzNSZWYgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKQ0KKyNkZWZpbmUgVElNX1RSR09Tb3VyY2VfT0M0UmVmICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA3MCkNCisjZGVmaW5lIElTX1RJTV9UUkdPX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gVElNX1RSR09Tb3VyY2VfUmVzZXQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gVElNX1RSR09Tb3VyY2VfRW5hYmxlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFRJTV9UUkdPU291cmNlX1VwZGF0ZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9PQzEpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gVElNX1RSR09Tb3VyY2VfT0MxUmVmKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFRJTV9UUkdPU291cmNlX09DMlJlZikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9PQzNSZWYpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gVElNX1RSR09Tb3VyY2VfT0M0UmVmKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX1NsYXZlX01vZGUgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX1NsYXZlTW9kZV9SZXNldCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkNCisjZGVmaW5lIFRJTV9TbGF2ZU1vZGVfR2F0ZWQgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDUpDQorI2RlZmluZSBUSU1fU2xhdmVNb2RlX1RyaWdnZXIgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA2KQ0KKyNkZWZpbmUgVElNX1NsYXZlTW9kZV9FeHRlcm5hbDEgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNykNCisjZGVmaW5lIElTX1RJTV9TTEFWRV9NT0RFKE1PREUpICgoKE1PREUpID09IFRJTV9TbGF2ZU1vZGVfUmVzZXQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9TbGF2ZU1vZGVfR2F0ZWQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9TbGF2ZU1vZGVfVHJpZ2dlcikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX1NsYXZlTW9kZV9FeHRlcm5hbDEpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fTWFzdGVyX1NsYXZlX01vZGUgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNX01hc3RlclNsYXZlTW9kZV9FbmFibGUgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkNCisjZGVmaW5lIFRJTV9NYXN0ZXJTbGF2ZU1vZGVfRGlzYWJsZSAgICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBJU19USU1fTVNNX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX01hc3RlclNsYXZlTW9kZV9FbmFibGUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBUSU1fTWFzdGVyU2xhdmVNb2RlX0Rpc2FibGUpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorICANCisvKiogQGRlZmdyb3VwIFRJTV9GbGFncyANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBUSU1fRkxBR19VcGRhdGUgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKQ0KKyNkZWZpbmUgVElNX0ZMQUdfQ0MxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikNCisjZGVmaW5lIFRJTV9GTEFHX0NDMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpDQorI2RlZmluZSBUSU1fRkxBR19DQzMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQ0KKyNkZWZpbmUgVElNX0ZMQUdfQ0M0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkNCisjZGVmaW5lIFRJTV9GTEFHX1RyaWdnZXIgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApDQorI2RlZmluZSBUSU1fRkxBR19DQzFPRiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKQ0KKyNkZWZpbmUgVElNX0ZMQUdfQ0MyT0YgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkNCisjZGVmaW5lIFRJTV9GTEFHX0NDM09GICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApDQorI2RlZmluZSBUSU1fRkxBR19DQzRPRiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKQ0KKyNkZWZpbmUgSVNfVElNX0dFVF9GTEFHKEZMQUcpICgoKEZMQUcpID09IFRJTV9GTEFHX1VwZGF0ZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX0NDMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX0NDMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX0NDMykgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX0NDNCkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX1RyaWdnZXIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBUSU1fRkxBR19DQzFPRikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX0NDMk9GKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gVElNX0ZMQUdfQ0MzT0YpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBUSU1fRkxBR19DQzRPRikpDQorI2RlZmluZSBJU19USU1fQ0xFQVJfRkxBRyhUSU1fRkxBRykgKCgoKFRJTV9GTEFHKSAmICh1aW50MTZfdCkweEUxQTApID09IDB4MDAwMCkgJiYgKChUSU1fRkxBRykgIT0gMHgwMDAwKSkgDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9JbnB1dF9DYXB0dXJlX0ZpbGVyX1ZhbHVlIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIElTX1RJTV9JQ19GSUxURVIoSUNGSUxURVIpICgoSUNGSUxURVIpIDw9IDB4RikgDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFRJTV9FeHRlcm5hbF9UcmlnZ2VyX0ZpbHRlciANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBJU19USU1fRVhUX0ZJTFRFUihFWFRGSUxURVIpICgoRVhURklMVEVSKSA8PSAweEYpDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX09DUmVmZXJlbmNlQ2xlYXIgDQorICAqIEB7DQorICAqLw0KKyNkZWZpbmUgVElNX09DUmVmZXJlbmNlQ2xlYXJfRVRSRiAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkNCisjZGVmaW5lIFRJTV9PQ1JlZmVyZW5jZUNsZWFyX09DUkVGQ0xSICAgICAgKCh1aW50MTZfdCkweDAwMDApDQorI2RlZmluZSBUSU1fT0NSRUZFUkVOQ0VDRUNMRUFSX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gVElNX09DUmVmZXJlbmNlQ2xlYXJfRVRSRikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gVElNX09DUmVmZXJlbmNlQ2xlYXJfT0NSRUZDTFIpKSANCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBUSU1fUmVtYXAgDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVElNOV9HUElPICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFRJTTlfTFNFICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpDQorDQorI2RlZmluZSBUSU0xMF9HUElPICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVElNMTBfTFNJICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkNCisjZGVmaW5lIFRJTTEwX0xTRSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpDQorI2RlZmluZSBUSU0xMF9SVEMgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAzKQ0KKw0KKyNkZWZpbmUgVElNMTFfR1BJTyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFRJTTExX01TSSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpDQorI2RlZmluZSBUSU0xMV9IU0VfUlRDICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQ0KKw0KKyNkZWZpbmUgSVNfVElNX1JFTUFQKFRJTV9SRU1BUCkJICgoKFRJTV9SRU1BUCkgPT0gVElNOV9HUElPKXx8XA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRJTV9SRU1BUCkgPT0gVElNOV9MU0UpfHxcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVElNX1JFTUFQKSA9PSBUSU0xMF9HUElPKXx8XA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRJTV9SRU1BUCkgPT0gVElNMTBfTFNJKXx8XA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRJTV9SRU1BUCkgPT0gVElNMTBfTFNFKXx8XA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRJTV9SRU1BUCkgPT0gVElNMTBfUlRDKXx8XA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRJTV9SRU1BUCkgPT0gVElNMTFfR1BJTyl8fFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUSU1fUkVNQVApID09IFRJTTExX01TSSl8fFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUSU1fUkVNQVApID09IFRJTTExX0hTRV9SVEMpKSANCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKyAgDQorLyoqIEBkZWZncm91cCBUSU1fRXhwb3J0ZWRfTWFjcm9zDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBUSU1fRXhwb3J0ZWRfRnVuY3Rpb25zDQorICAqIEB7DQorICAqLw0KKw0KK3ZvaWQgVElNX0RlSW5pdChUSU1fVHlwZURlZiogVElNeCk7DQordm9pZCBUSU1fVGltZUJhc2VJbml0KFRJTV9UeXBlRGVmKiBUSU14LCBUSU1fVGltZUJhc2VJbml0VHlwZURlZiogVElNX1RpbWVCYXNlSW5pdFN0cnVjdCk7DQordm9pZCBUSU1fT0MxSW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpOw0KK3ZvaWQgVElNX09DMkluaXQoVElNX1R5cGVEZWYqIFRJTXgsIFRJTV9PQ0luaXRUeXBlRGVmKiBUSU1fT0NJbml0U3RydWN0KTsNCit2b2lkIFRJTV9PQzNJbml0KFRJTV9UeXBlRGVmKiBUSU14LCBUSU1fT0NJbml0VHlwZURlZiogVElNX09DSW5pdFN0cnVjdCk7DQordm9pZCBUSU1fT0M0SW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpOw0KK3ZvaWQgVElNX0lDSW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX0lDSW5pdFR5cGVEZWYqIFRJTV9JQ0luaXRTdHJ1Y3QpOw0KK3ZvaWQgVElNX1BXTUlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIFRJTV9JQ0luaXRUeXBlRGVmKiBUSU1fSUNJbml0U3RydWN0KTsNCit2b2lkIFRJTV9UaW1lQmFzZVN0cnVjdEluaXQoVElNX1RpbWVCYXNlSW5pdFR5cGVEZWYqIFRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QpOw0KK3ZvaWQgVElNX09DU3RydWN0SW5pdChUSU1fT0NJbml0VHlwZURlZiogVElNX09DSW5pdFN0cnVjdCk7DQordm9pZCBUSU1fSUNTdHJ1Y3RJbml0KFRJTV9JQ0luaXRUeXBlRGVmKiBUSU1fSUNJbml0U3RydWN0KTsNCit2b2lkIFRJTV9DbWQoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBUSU1fSVRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFRJTV9HZW5lcmF0ZUV2ZW50KFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRXZlbnRTb3VyY2UpOw0KK3ZvaWQgVElNX0RNQUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0RNQUJhc2UsIHVpbnQxNl90IFRJTV9ETUFCdXJzdExlbmd0aCk7DQordm9pZCBUSU1fRE1BQ21kKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRE1BU291cmNlLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgVElNX0ludGVybmFsQ2xvY2tDb25maWcoVElNX1R5cGVEZWYqIFRJTXgpOw0KK3ZvaWQgVElNX0lUUnhFeHRlcm5hbENsb2NrQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSW5wdXRUcmlnZ2VyU291cmNlKTsNCit2b2lkIFRJTV9USXhFeHRlcm5hbENsb2NrQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fVEl4RXh0ZXJuYWxDTEtTb3VyY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNQb2xhcml0eSwgdWludDE2X3QgSUNGaWx0ZXIpOw0KK3ZvaWQgVElNX0VUUkNsb2NrTW9kZTFDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9FeHRUUkdQcmVzY2FsZXIsIHVpbnQxNl90IFRJTV9FeHRUUkdQb2xhcml0eSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IEV4dFRSR0ZpbHRlcik7DQordm9pZCBUSU1fRVRSQ2xvY2tNb2RlMkNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0V4dFRSR1ByZXNjYWxlciwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fRXh0VFJHUG9sYXJpdHksIHVpbnQxNl90IEV4dFRSR0ZpbHRlcik7DQordm9pZCBUSU1fRVRSQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRXh0VFJHUHJlc2NhbGVyLCB1aW50MTZfdCBUSU1fRXh0VFJHUG9sYXJpdHksDQorICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IEV4dFRSR0ZpbHRlcik7DQordm9pZCBUSU1fUHJlc2NhbGVyQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBQcmVzY2FsZXIsIHVpbnQxNl90IFRJTV9QU0NSZWxvYWRNb2RlKTsNCit2b2lkIFRJTV9Db3VudGVyTW9kZUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0NvdW50ZXJNb2RlKTsNCit2b2lkIFRJTV9TZWxlY3RJbnB1dFRyaWdnZXIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JbnB1dFRyaWdnZXJTb3VyY2UpOw0KK3ZvaWQgVElNX0VuY29kZXJJbnRlcmZhY2VDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9FbmNvZGVyTW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQzFQb2xhcml0eSwgdWludDE2X3QgVElNX0lDMlBvbGFyaXR5KTsNCit2b2lkIFRJTV9Gb3JjZWRPQzFDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9Gb3JjZWRBY3Rpb24pOw0KK3ZvaWQgVElNX0ZvcmNlZE9DMkNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0ZvcmNlZEFjdGlvbik7DQordm9pZCBUSU1fRm9yY2VkT0MzQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRm9yY2VkQWN0aW9uKTsNCit2b2lkIFRJTV9Gb3JjZWRPQzRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9Gb3JjZWRBY3Rpb24pOw0KK3ZvaWQgVElNX0FSUlByZWxvYWRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBUSU1fU2VsZWN0Q09NKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgVElNX1NlbGVjdENDRE1BKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgVElNX0NDUHJlbG9hZENvbnRyb2woVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBUSU1fT0MxUHJlbG9hZENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUHJlbG9hZCk7DQordm9pZCBUSU1fT0MyUHJlbG9hZENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUHJlbG9hZCk7DQordm9pZCBUSU1fT0MzUHJlbG9hZENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUHJlbG9hZCk7DQordm9pZCBUSU1fT0M0UHJlbG9hZENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUHJlbG9hZCk7DQordm9pZCBUSU1fT0MxRmFzdENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DRmFzdCk7DQordm9pZCBUSU1fT0MyRmFzdENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DRmFzdCk7DQordm9pZCBUSU1fT0MzRmFzdENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DRmFzdCk7DQordm9pZCBUSU1fT0M0RmFzdENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DRmFzdCk7DQordm9pZCBUSU1fQ2xlYXJPQzFSZWYoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0NsZWFyKTsNCit2b2lkIFRJTV9DbGVhck9DMlJlZihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DQ2xlYXIpOw0KK3ZvaWQgVElNX0NsZWFyT0MzUmVmKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NDbGVhcik7DQordm9pZCBUSU1fQ2xlYXJPQzRSZWYoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0NsZWFyKTsNCit2b2lkIFRJTV9PQzFQb2xhcml0eUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUG9sYXJpdHkpOw0KK3ZvaWQgVElNX09DMlBvbGFyaXR5Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQb2xhcml0eSk7DQordm9pZCBUSU1fT0MzUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1BvbGFyaXR5KTsNCit2b2lkIFRJTV9PQzRQb2xhcml0eUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUG9sYXJpdHkpOw0KK3ZvaWQgVElNX0NDeENtZChUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0NoYW5uZWwsIHVpbnQxNl90IFRJTV9DQ3gpOw0KK3ZvaWQgVElNX1NlbGVjdE9DeE0oVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9DaGFubmVsLCB1aW50MTZfdCBUSU1fT0NNb2RlKTsNCit2b2lkIFRJTV9VcGRhdGVEaXNhYmxlQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgVElNX1VwZGF0ZVJlcXVlc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9VcGRhdGVTb3VyY2UpOw0KK3ZvaWQgVElNX1NlbGVjdEhhbGxTZW5zb3IoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBUSU1fU2VsZWN0T25lUHVsc2VNb2RlKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT1BNb2RlKTsNCit2b2lkIFRJTV9TZWxlY3RPdXRwdXRUcmlnZ2VyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fVFJHT1NvdXJjZSk7DQordm9pZCBUSU1fU2VsZWN0U2xhdmVNb2RlKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fU2xhdmVNb2RlKTsNCit2b2lkIFRJTV9TZWxlY3RNYXN0ZXJTbGF2ZU1vZGUoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9NYXN0ZXJTbGF2ZU1vZGUpOw0KK3ZvaWQgVElNX1NldENvdW50ZXIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQzMl90IENvdW50ZXIpOw0KK3ZvaWQgVElNX1NldEF1dG9yZWxvYWQoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQzMl90IEF1dG9yZWxvYWQpOw0KK3ZvaWQgVElNX1NldENvbXBhcmUxKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MzJfdCBDb21wYXJlMSk7DQordm9pZCBUSU1fU2V0Q29tcGFyZTIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQzMl90IENvbXBhcmUyKTsNCit2b2lkIFRJTV9TZXRDb21wYXJlMyhUSU1fVHlwZURlZiogVElNeCwgdWludDMyX3QgQ29tcGFyZTMpOw0KK3ZvaWQgVElNX1NldENvbXBhcmU0KFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MzJfdCBDb21wYXJlNCk7DQordm9pZCBUSU1fU2V0SUMxUHJlc2NhbGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQU0MpOw0KK3ZvaWQgVElNX1NldElDMlByZXNjYWxlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lDUFNDKTsNCit2b2lkIFRJTV9TZXRJQzNQcmVzY2FsZXIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BTQyk7DQordm9pZCBUSU1fU2V0SUM0UHJlc2NhbGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQU0MpOw0KK3ZvaWQgVElNX1NldENsb2NrRGl2aXNpb24oVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9DS0QpOw0KK3VpbnQzMl90IFRJTV9HZXRDYXB0dXJlMShUSU1fVHlwZURlZiogVElNeCk7DQordWludDMyX3QgVElNX0dldENhcHR1cmUyKFRJTV9UeXBlRGVmKiBUSU14KTsNCit1aW50MzJfdCBUSU1fR2V0Q2FwdHVyZTMoVElNX1R5cGVEZWYqIFRJTXgpOw0KK3VpbnQzMl90IFRJTV9HZXRDYXB0dXJlNChUSU1fVHlwZURlZiogVElNeCk7DQordWludDMyX3QgVElNX0dldENvdW50ZXIoVElNX1R5cGVEZWYqIFRJTXgpOw0KK3VpbnQxNl90IFRJTV9HZXRQcmVzY2FsZXIoVElNX1R5cGVEZWYqIFRJTXgpOw0KK3ZvaWQgVElNX1NlbGVjdE9DUkVGQ2xlYXIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1JlZmVyZW5jZUNsZWFyKTsNCit2b2lkIFRJTV9SZW1hcENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX1JlbWFwKTsNCitGbGFnU3RhdHVzIFRJTV9HZXRGbGFnU3RhdHVzKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRkxBRyk7DQordm9pZCBUSU1fQ2xlYXJGbGFnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRkxBRyk7DQorSVRTdGF0dXMgVElNX0dldElUU3RhdHVzKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSVQpOw0KK3ZvaWQgVElNX0NsZWFySVRQZW5kaW5nQml0KFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSVQpOw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisjZW5kaWYgLypfX1NUTTMyTDF4eF9USU1fSCAqLw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3VzYXJ0LmggYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9pbmMvc3RtMzJsMXh4X3VzYXJ0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhMTQxNgotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL2luYy9zdG0zMmwxeHhfdXNhcnQuaApAQCAtMCwwICsxLDM5OSBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgc3RtMzJsMXh4X3VzYXJ0LmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBVU0FSVCANCisgICogICAgICAgICAgZmlybXdhcmUgbGlicmFyeS4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKw0KKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmbmRlZiBfX1NUTTMyTDF4eF9VU0FSVF9IDQorI2RlZmluZSBfX1NUTTMyTDF4eF9VU0FSVF9IDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorIGV4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eC5oIg0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlcg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgVVNBUlQNCisgICogQHsNCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfRXhwb3J0ZWRfVHlwZXMNCisgICogQHsNCisgICovIA0KKw0KKy8qKiANCisgICogQGJyaWVmICBVU0FSVCBJbml0IFN0cnVjdHVyZSBkZWZpbml0aW9uICANCisgICovIA0KKyAgDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICB1aW50MzJfdCBVU0FSVF9CYXVkUmF0ZTsgICAgICAgICAgICAvKiE8IFRoaXMgbWVtYmVyIGNvbmZpZ3VyZXMgdGhlIFVTQVJUIGNvbW11bmljYXRpb24gYmF1ZCByYXRlLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmF1ZCByYXRlIGlzIGNvbXB1dGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSW50ZWdlckRpdmlkZXIgPSAoKFBDTEt4KSAvICgxNiAqIChVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9CYXVkUmF0ZSkpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBGcmFjdGlvbmFsRGl2aWRlciA9ICgoSW50ZWdlckRpdmlkZXIgLSAoKHUzMikgSW50ZWdlckRpdmlkZXIpKSAqIDE2KSArIDAuNSAqLw0KKw0KKyAgdWludDE2X3QgVVNBUlRfV29yZExlbmd0aDsgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXRhIGJpdHMgdHJhbnNtaXR0ZWQgb3IgcmVjZWl2ZWQgaW4gYSBmcmFtZS4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVU0FSVF9Xb3JkX0xlbmd0aCAqLw0KKw0KKyAgdWludDE2X3QgVVNBUlRfU3RvcEJpdHM7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzdG9wIGJpdHMgdHJhbnNtaXR0ZWQuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfU3RvcF9CaXRzICovDQorDQorICB1aW50MTZfdCBVU0FSVF9QYXJpdHk7ICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgcGFyaXR5IG1vZGUuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfUGFyaXR5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFdoZW4gcGFyaXR5IGlzIGVuYWJsZWQsIHRoZSBjb21wdXRlZCBwYXJpdHkgaXMgaW5zZXJ0ZWQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIE1TQiBwb3NpdGlvbiBvZiB0aGUgdHJhbnNtaXR0ZWQgZGF0YSAoOXRoIGJpdCB3aGVuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3b3JkIGxlbmd0aCBpcyBzZXQgdG8gOSBkYXRhIGJpdHM7IDh0aCBiaXQgd2hlbiB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCBsZW5ndGggaXMgc2V0IHRvIDggZGF0YSBiaXRzKS4gKi8NCisgDQorICB1aW50MTZfdCBVU0FSVF9Nb2RlOyAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3ZXRoZXIgdGhlIFJlY2VpdmUgb3IgVHJhbnNtaXQgbW9kZSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX01vZGUgKi8NCisNCisgIHVpbnQxNl90IFVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2w7IC8qITwgU3BlY2lmaWVzIHdldGhlciB0aGUgaGFyZHdhcmUgZmxvdyBjb250cm9sIG1vZGUgaXMgZW5hYmxlZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBkaXNhYmxlZC4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVU0FSVF9IYXJkd2FyZV9GbG93X0NvbnRyb2wgKi8NCit9IFVTQVJUX0luaXRUeXBlRGVmOw0KKw0KKy8qKiANCisgICogQGJyaWVmICBVU0FSVCBDbG9jayBJbml0IFN0cnVjdHVyZSBkZWZpbml0aW9uICANCisgICovIA0KKyAgDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorDQorICB1aW50MTZfdCBVU0FSVF9DbG9jazsgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBVU0FSVCBjbG9jayBpcyBlbmFibGVkIG9yIGRpc2FibGVkLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX0Nsb2NrICovDQorDQorICB1aW50MTZfdCBVU0FSVF9DUE9MOyAgICAvKiE8IFNwZWNpZmllcyB0aGUgc3RlYWR5IHN0YXRlIHZhbHVlIG9mIHRoZSBzZXJpYWwgY2xvY2suDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfQ2xvY2tfUG9sYXJpdHkgKi8NCisNCisgIHVpbnQxNl90IFVTQVJUX0NQSEE7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBjbG9jayB0cmFuc2l0aW9uIG9uIHdoaWNoIHRoZSBiaXQgY2FwdHVyZSBpcyBtYWRlLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX0Nsb2NrX1BoYXNlICovDQorDQorICB1aW50MTZfdCBVU0FSVF9MYXN0Qml0OyAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBjbG9jayBwdWxzZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBsYXN0IHRyYW5zbWl0dGVkDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgYml0IChNU0IpIGhhcyB0byBiZSBvdXRwdXQgb24gdGhlIFNDTEsgcGluIGluIHN5bmNocm9ub3VzIG1vZGUuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfTGFzdF9CaXQgKi8NCit9IFVTQVJUX0Nsb2NrSW5pdFR5cGVEZWY7DQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFVTQVJUX0V4cG9ydGVkX0NvbnN0YW50cw0KKyAgKiBAew0KKyAgKi8gDQorICANCisjZGVmaW5lIElTX1VTQVJUX0FMTF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IFVTQVJUMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVVNBUlQyKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBVU0FSVDMpKQ0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfV29yZF9MZW5ndGggDQorICAqIEB7DQorICAqLyANCisgIA0KKyNkZWZpbmUgVVNBUlRfV29yZExlbmd0aF84YiAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVVNBUlRfV29yZExlbmd0aF85YiAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyNkZWZpbmUgSVNfVVNBUlRfV09SRF9MRU5HVEgoTEVOR1RIKSAoKChMRU5HVEgpID09IFVTQVJUX1dvcmRMZW5ndGhfOGIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBVU0FSVF9Xb3JkTGVuZ3RoXzliKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfU3RvcF9CaXRzIA0KKyAgKiBAew0KKyAgKi8gDQorICANCisjZGVmaW5lIFVTQVJUX1N0b3BCaXRzXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFVTQVJUX1N0b3BCaXRzXzBfNSAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkNCisjZGVmaW5lIFVTQVJUX1N0b3BCaXRzXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkNCisjZGVmaW5lIFVTQVJUX1N0b3BCaXRzXzFfNSAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkNCisjZGVmaW5lIElTX1VTQVJUX1NUT1BCSVRTKFNUT1BCSVRTKSAoKChTVE9QQklUUykgPT0gVVNBUlRfU3RvcEJpdHNfMSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUT1BCSVRTKSA9PSBVU0FSVF9TdG9wQml0c18wXzUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVE9QQklUUykgPT0gVVNBUlRfU3RvcEJpdHNfMikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUT1BCSVRTKSA9PSBVU0FSVF9TdG9wQml0c18xXzUpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBVU0FSVF9QYXJpdHkgDQorICAqIEB7DQorICAqLyANCisgIA0KKyNkZWZpbmUgVVNBUlRfUGFyaXR5X05vICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVVNBUlRfUGFyaXR5X0V2ZW4gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKQ0KKyNkZWZpbmUgVVNBUlRfUGFyaXR5X09kZCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNjAwKSANCisjZGVmaW5lIElTX1VTQVJUX1BBUklUWShQQVJJVFkpICgoKFBBUklUWSkgPT0gVVNBUlRfUGFyaXR5X05vKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQQVJJVFkpID09IFVTQVJUX1Bhcml0eV9FdmVuKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQQVJJVFkpID09IFVTQVJUX1Bhcml0eV9PZGQpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBVU0FSVF9Nb2RlIA0KKyAgKiBAew0KKyAgKi8gDQorICANCisjZGVmaW5lIFVTQVJUX01vZGVfUnggICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkNCisjZGVmaW5lIFVTQVJUX01vZGVfVHggICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkNCisjZGVmaW5lIElTX1VTQVJUX01PREUoTU9ERSkgKCgoKE1PREUpICYgKHVpbnQxNl90KTB4RkZGMykgPT0gMHgwMCkgJiYgKChNT0RFKSAhPSAodWludDE2X3QpMHgwMCkpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFVTQVJUX0hhcmR3YXJlX0Zsb3dfQ29udHJvbCANCisgICogQHsNCisgICovIA0KKyNkZWZpbmUgVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbF9Ob25lICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbF9SVFMgICAgICAgICgodWludDE2X3QpMHgwMTAwKQ0KKyNkZWZpbmUgVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbF9DVFMgICAgICAgICgodWludDE2X3QpMHgwMjAwKQ0KKyNkZWZpbmUgVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbF9SVFNfQ1RTICAgICgodWludDE2X3QpMHgwMzAwKQ0KKyNkZWZpbmUgSVNfVVNBUlRfSEFSRFdBUkVfRkxPV19DT05UUk9MKENPTlRST0wpXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKENPTlRST0wpID09IFVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2xfTm9uZSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENPTlRST0wpID09IFVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2xfUlRTKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ09OVFJPTCkgPT0gVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbF9DVFMpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDT05UUk9MKSA9PSBVU0FSVF9IYXJkd2FyZUZsb3dDb250cm9sX1JUU19DVFMpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBVU0FSVF9DbG9jayANCisgICogQHsNCisgICovIA0KKyNkZWZpbmUgVVNBUlRfQ2xvY2tfRGlzYWJsZSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVVNBUlRfQ2xvY2tfRW5hYmxlICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKQ0KKyNkZWZpbmUgSVNfVVNBUlRfQ0xPQ0soQ0xPQ0spICgoKENMT0NLKSA9PSBVU0FSVF9DbG9ja19EaXNhYmxlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0xPQ0spID09IFVTQVJUX0Nsb2NrX0VuYWJsZSkpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFVTQVJUX0Nsb2NrX1BvbGFyaXR5IA0KKyAgKiBAew0KKyAgKi8NCisgIA0KKyNkZWZpbmUgVVNBUlRfQ1BPTF9Mb3cgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVVNBUlRfQ1BPTF9IaWdoICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKQ0KKyNkZWZpbmUgSVNfVVNBUlRfQ1BPTChDUE9MKSAoKChDUE9MKSA9PSBVU0FSVF9DUE9MX0xvdykgfHwgKChDUE9MKSA9PSBVU0FSVF9DUE9MX0hpZ2gpKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBVU0FSVF9DbG9ja19QaGFzZQ0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFVTQVJUX0NQSEFfMUVkZ2UgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFVTQVJUX0NQSEFfMkVkZ2UgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkNCisjZGVmaW5lIElTX1VTQVJUX0NQSEEoQ1BIQSkgKCgoQ1BIQSkgPT0gVVNBUlRfQ1BIQV8xRWRnZSkgfHwgKChDUEhBKSA9PSBVU0FSVF9DUEhBXzJFZGdlKSkNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBVU0FSVF9MYXN0X0JpdA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFVTQVJUX0xhc3RCaXRfRGlzYWJsZSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIFVTQVJUX0xhc3RCaXRfRW5hYmxlICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkNCisjZGVmaW5lIElTX1VTQVJUX0xBU1RCSVQoTEFTVEJJVCkgKCgoTEFTVEJJVCkgPT0gVVNBUlRfTGFzdEJpdF9EaXNhYmxlKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExBU1RCSVQpID09IFVTQVJUX0xhc3RCaXRfRW5hYmxlKSkNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfSW50ZXJydXB0X2RlZmluaXRpb24gDQorICAqIEB7DQorICAqLw0KKyAgDQorI2RlZmluZSBVU0FSVF9JVF9QRSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjgpDQorI2RlZmluZSBVU0FSVF9JVF9UWEUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA3MjcpDQorI2RlZmluZSBVU0FSVF9JVF9UQyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MjYpDQorI2RlZmluZSBVU0FSVF9JVF9SWE5FICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA1MjUpDQorI2RlZmluZSBVU0FSVF9JVF9JRExFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MjQpDQorI2RlZmluZSBVU0FSVF9JVF9MQkQgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4NDYpDQorI2RlZmluZSBVU0FSVF9JVF9DVFMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA5NkEpDQorI2RlZmluZSBVU0FSVF9JVF9FUlIgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjApDQorI2RlZmluZSBVU0FSVF9JVF9PUkUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzNjApDQorI2RlZmluZSBVU0FSVF9JVF9ORSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyNjApDQorI2RlZmluZSBVU0FSVF9JVF9GRSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxNjApDQorI2RlZmluZSBJU19VU0FSVF9DT05GSUdfSVQoSVQpICgoKElUKSA9PSBVU0FSVF9JVF9QRSkgfHwgKChJVCkgPT0gVVNBUlRfSVRfVFhFKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBVU0FSVF9JVF9UQykgfHwgKChJVCkgPT0gVVNBUlRfSVRfUlhORSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVVNBUlRfSVRfSURMRSkgfHwgKChJVCkgPT0gVVNBUlRfSVRfTEJEKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBVU0FSVF9JVF9DVFMpIHx8ICgoSVQpID09IFVTQVJUX0lUX0VSUikpDQorI2RlZmluZSBJU19VU0FSVF9HRVRfSVQoSVQpICgoKElUKSA9PSBVU0FSVF9JVF9QRSkgfHwgKChJVCkgPT0gVVNBUlRfSVRfVFhFKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBVU0FSVF9JVF9UQykgfHwgKChJVCkgPT0gVVNBUlRfSVRfUlhORSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVVNBUlRfSVRfSURMRSkgfHwgKChJVCkgPT0gVVNBUlRfSVRfTEJEKSB8fCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBVU0FSVF9JVF9DVFMpIHx8ICgoSVQpID09IFVTQVJUX0lUX09SRSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVVNBUlRfSVRfTkUpIHx8ICgoSVQpID09IFVTQVJUX0lUX0ZFKSkNCisjZGVmaW5lIElTX1VTQVJUX0NMRUFSX0lUKElUKSAoKChJVCkgPT0gVVNBUlRfSVRfVEMpIHx8ICgoSVQpID09IFVTQVJUX0lUX1JYTkUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVVNBUlRfSVRfTEJEKSB8fCAoKElUKSA9PSBVU0FSVF9JVF9DVFMpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFVTQVJUX0RNQV9SZXF1ZXN0cyANCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBVU0FSVF9ETUFSZXFfVHggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApDQorI2RlZmluZSBVU0FSVF9ETUFSZXFfUnggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApDQorI2RlZmluZSBJU19VU0FSVF9ETUFSRVEoRE1BUkVRKSAoKCgoRE1BUkVRKSAmICh1aW50MTZfdCkweEZGM0YpID09IDB4MDApICYmICgoRE1BUkVRKSAhPSAodWludDE2X3QpMHgwMCkpDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFVTQVJUX1dha2VVcF9tZXRob2RzDQorICAqIEB7DQorICAqLw0KKw0KKyNkZWZpbmUgVVNBUlRfV2FrZVVwX0lkbGVMaW5lICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVVNBUlRfV2FrZVVwX0FkZHJlc3NNYXJrICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKQ0KKyNkZWZpbmUgSVNfVVNBUlRfV0FLRVVQKFdBS0VVUCkgKCgoV0FLRVVQKSA9PSBVU0FSVF9XYWtlVXBfSWRsZUxpbmUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFdBS0VVUCkgPT0gVVNBUlRfV2FrZVVwX0FkZHJlc3NNYXJrKSkNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBVU0FSVF9MSU5fQnJlYWtfRGV0ZWN0aW9uX0xlbmd0aCANCisgICogQHsNCisgICovDQorICANCisjZGVmaW5lIFVTQVJUX0xJTkJyZWFrRGV0ZWN0TGVuZ3RoXzEwYiAgICAgICgodWludDE2X3QpMHgwMDAwKQ0KKyNkZWZpbmUgVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGhfMTFiICAgICAgKCh1aW50MTZfdCkweDAwMjApDQorI2RlZmluZSBJU19VU0FSVF9MSU5fQlJFQUtfREVURUNUX0xFTkdUSChMRU5HVEgpIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoTEVOR1RIKSA9PSBVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aF8xMGIpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aF8xMWIpKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFVTQVJUX0lyREFfTG93X1Bvd2VyIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFVTQVJUX0lyREFNb2RlX0xvd1Bvd2VyICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkNCisjZGVmaW5lIFVTQVJUX0lyREFNb2RlX05vcm1hbCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkNCisjZGVmaW5lIElTX1VTQVJUX0lSREFfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBVU0FSVF9JckRBTW9kZV9Mb3dQb3dlcikgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFVTQVJUX0lyREFNb2RlX05vcm1hbCkpDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFVTQVJUX0ZsYWdzIA0KKyAgKiBAew0KKyAgKi8NCisNCisjZGVmaW5lIFVTQVJUX0ZMQUdfQ1RTICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkNCisjZGVmaW5lIFVTQVJUX0ZMQUdfTEJEICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkNCisjZGVmaW5lIFVTQVJUX0ZMQUdfVFhFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkNCisjZGVmaW5lIFVTQVJUX0ZMQUdfVEMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkNCisjZGVmaW5lIFVTQVJUX0ZMQUdfUlhORSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkNCisjZGVmaW5lIFVTQVJUX0ZMQUdfSURMRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkNCisjZGVmaW5lIFVTQVJUX0ZMQUdfT1JFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkNCisjZGVmaW5lIFVTQVJUX0ZMQUdfTkUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkNCisjZGVmaW5lIFVTQVJUX0ZMQUdfRkUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikNCisjZGVmaW5lIFVTQVJUX0ZMQUdfUEUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkNCisjZGVmaW5lIElTX1VTQVJUX0ZMQUcoRkxBRykgKCgoRkxBRykgPT0gVVNBUlRfRkxBR19QRSkgfHwgKChGTEFHKSA9PSBVU0FSVF9GTEFHX1RYRSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBVU0FSVF9GTEFHX1RDKSB8fCAoKEZMQUcpID09IFVTQVJUX0ZMQUdfUlhORSkgfHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBVU0FSVF9GTEFHX0lETEUpIHx8ICgoRkxBRykgPT0gVVNBUlRfRkxBR19MQkQpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gVVNBUlRfRkxBR19DVFMpIHx8ICgoRkxBRykgPT0gVVNBUlRfRkxBR19PUkUpIHx8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gVVNBUlRfRkxBR19ORSkgfHwgKChGTEFHKSA9PSBVU0FSVF9GTEFHX0ZFKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisjZGVmaW5lIElTX1VTQVJUX0NMRUFSX0ZMQUcoRkxBRykgKCgoKEZMQUcpICYgKHVpbnQxNl90KTB4RkM5RikgPT0gMHgwMCkgJiYgKChGTEFHKSAhPSAodWludDE2X3QpMHgwMCkpDQorDQorI2RlZmluZSBJU19VU0FSVF9CQVVEUkFURShCQVVEUkFURSkgKCgoQkFVRFJBVEUpID4gMCkgJiYgKChCQVVEUkFURSkgPCAweDAwM0QwOTAxKSkNCisjZGVmaW5lIElTX1VTQVJUX0FERFJFU1MoQUREUkVTUykgKChBRERSRVNTKSA8PSAweEYpDQorI2RlZmluZSBJU19VU0FSVF9EQVRBKERBVEEpICgoREFUQSkgPD0gMHgxRkYpDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfRXhwb3J0ZWRfTWFjcm9zDQorICAqIEB7DQorICAqLyANCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfRXhwb3J0ZWRfRnVuY3Rpb25zDQorICAqIEB7DQorICAqLw0KKw0KK3ZvaWQgVVNBUlRfRGVJbml0KFVTQVJUX1R5cGVEZWYqIFVTQVJUeCk7DQordm9pZCBVU0FSVF9Jbml0KFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgVVNBUlRfSW5pdFR5cGVEZWYqIFVTQVJUX0luaXRTdHJ1Y3QpOw0KK3ZvaWQgVVNBUlRfU3RydWN0SW5pdChVU0FSVF9Jbml0VHlwZURlZiogVVNBUlRfSW5pdFN0cnVjdCk7DQordm9pZCBVU0FSVF9DbG9ja0luaXQoVVNBUlRfVHlwZURlZiogVVNBUlR4LCBVU0FSVF9DbG9ja0luaXRUeXBlRGVmKiBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QpOw0KK3ZvaWQgVVNBUlRfQ2xvY2tTdHJ1Y3RJbml0KFVTQVJUX0Nsb2NrSW5pdFR5cGVEZWYqIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdCk7DQordm9pZCBVU0FSVF9DbWQoVVNBUlRfVHlwZURlZiogVVNBUlR4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgVVNBUlRfSVRDb25maWcoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFVTQVJUX0RNQUNtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0RNQVJlcSwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFVTQVJUX1NldEFkZHJlc3MoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50OF90IFVTQVJUX0FkZHJlc3MpOw0KK3ZvaWQgVVNBUlRfV2FrZVVwQ29uZmlnKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfV2FrZVVwKTsNCit2b2lkIFVTQVJUX1JlY2VpdmVyV2FrZVVwQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFVTQVJUX0xJTkJyZWFrRGV0ZWN0TGVuZ3RoQ29uZmlnKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGgpOw0KK3ZvaWQgVVNBUlRfTElOQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFVTQVJUX1NlbmREYXRhKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgRGF0YSk7DQordWludDE2X3QgVVNBUlRfUmVjZWl2ZURhdGEoVVNBUlRfVHlwZURlZiogVVNBUlR4KTsNCit2b2lkIFVTQVJUX1NlbmRCcmVhayhVU0FSVF9UeXBlRGVmKiBVU0FSVHgpOw0KK3ZvaWQgVVNBUlRfU2V0R3VhcmRUaW1lKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDhfdCBVU0FSVF9HdWFyZFRpbWUpOw0KK3ZvaWQgVVNBUlRfU2V0UHJlc2NhbGVyKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDhfdCBVU0FSVF9QcmVzY2FsZXIpOw0KK3ZvaWQgVVNBUlRfU21hcnRDYXJkQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFVTQVJUX1NtYXJ0Q2FyZE5BQ0tDbWQoVVNBUlRfVHlwZURlZiogVVNBUlR4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOw0KK3ZvaWQgVVNBUlRfSGFsZkR1cGxleENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBVU0FSVF9PdmVyU2FtcGxpbmc4Q21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsNCit2b2lkIFVTQVJUX09uZUJpdE1ldGhvZENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQordm9pZCBVU0FSVF9JckRBQ29uZmlnKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfSXJEQU1vZGUpOw0KK3ZvaWQgVVNBUlRfSXJEQUNtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7DQorRmxhZ1N0YXR1cyBVU0FSVF9HZXRGbGFnU3RhdHVzKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfRkxBRyk7DQordm9pZCBVU0FSVF9DbGVhckZsYWcoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9GTEFHKTsNCitJVFN0YXR1cyBVU0FSVF9HZXRJVFN0YXR1cyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0lUKTsNCit2b2lkIFVTQVJUX0NsZWFySVRQZW5kaW5nQml0KFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfSVQpOw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisjZW5kaWYgLyogX19TVE0zMkwxeHhfVVNBUlRfSCAqLw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL21pc2MuYyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL3NyYy9taXNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc2NDhhYgotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL3NyYy9taXNjLmMKQEAgLTAsMCArMSwyMjMgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIG1pc2MuYw0KKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWMS4wLjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBtaXNjZWxsYW5lb3VzIGZpcm13YXJlIGZ1bmN0aW9ucyAoYWRkLW9uDQorICAqICAgICAgICAgIHRvIENNU0lTIGZ1bmN0aW9ucykuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisNCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpbmNsdWRlICJtaXNjLmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgTUlTQyANCisgICogQGJyaWVmIE1JU0MgZHJpdmVyIG1vZHVsZXMNCisgICogQHsNCisgICovDQorDQorLyoqIEBkZWZncm91cCBNSVNDX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgTUlTQ19Qcml2YXRlX0RlZmluZXMNCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBBSVJDUl9WRUNUS0VZX01BU0sgICAgKCh1aW50MzJfdCkweDA1RkEwMDAwKQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIE1JU0NfUHJpdmF0ZV9NYWNyb3MNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgTUlTQ19Qcml2YXRlX1ZhcmlhYmxlcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBNSVNDX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIE1JU0NfUHJpdmF0ZV9GdW5jdGlvbnMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgcHJpb3JpdHkgZ3JvdXBpbmc6IHByZS1lbXB0aW9uIHByaW9yaXR5IGFuZCBzdWJwcmlvcml0eS4NCisgICogQHBhcmFtICBOVklDX1ByaW9yaXR5R3JvdXA6IHNwZWNpZmllcyB0aGUgcHJpb3JpdHkgZ3JvdXBpbmcgYml0cyBsZW5ndGguIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIE5WSUNfUHJpb3JpdHlHcm91cF8wOiAwIGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5DQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IGJpdHMgZm9yIHN1YnByaW9yaXR5DQorICAqICAgICBAYXJnIE5WSUNfUHJpb3JpdHlHcm91cF8xOiAxIGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5DQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzIGJpdHMgZm9yIHN1YnByaW9yaXR5DQorICAqICAgICBAYXJnIE5WSUNfUHJpb3JpdHlHcm91cF8yOiAyIGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5DQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIGJpdHMgZm9yIHN1YnByaW9yaXR5DQorICAqICAgICBAYXJnIE5WSUNfUHJpb3JpdHlHcm91cF8zOiAzIGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5DQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIGJpdHMgZm9yIHN1YnByaW9yaXR5DQorICAqICAgICBAYXJnIE5WSUNfUHJpb3JpdHlHcm91cF80OiA0IGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5DQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIGJpdHMgZm9yIHN1YnByaW9yaXR5DQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIE5WSUNfUHJpb3JpdHlHcm91cENvbmZpZyh1aW50MzJfdCBOVklDX1ByaW9yaXR5R3JvdXApDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19OVklDX1BSSU9SSVRZX0dST1VQKE5WSUNfUHJpb3JpdHlHcm91cCkpOw0KKyAgDQorICAvKiBTZXQgdGhlIFBSSUdST1VQWzEwOjhdIGJpdHMgYWNjb3JkaW5nIHRvIE5WSUNfUHJpb3JpdHlHcm91cCB2YWx1ZSAqLw0KKyAgU0NCLT5BSVJDUiA9IEFJUkNSX1ZFQ1RLRVlfTUFTSyB8IE5WSUNfUHJpb3JpdHlHcm91cDsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIE5WSUMgcGVyaXBoZXJhbCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZA0KKyAgKiAgIHBhcmFtZXRlcnMgaW4gdGhlIE5WSUNfSW5pdFN0cnVjdC4NCisgICogQHBhcmFtICBOVklDX0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBOVklDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zDQorICAqICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgTlZJQyBwZXJpcGhlcmFsLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBOVklDX0luaXQoTlZJQ19Jbml0VHlwZURlZiogTlZJQ19Jbml0U3RydWN0KQ0KK3sNCisgIHVpbnQzMl90IHRtcHByaW9yaXR5ID0gMHgwMCwgdG1wcHJlID0gMHgwMCwgdG1wc3ViID0gMHgwRjsNCisgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5WSUNfSW5pdFN0cnVjdC0+TlZJQ19JUlFDaGFubmVsQ21kKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfTlZJQ19QUkVFTVBUSU9OX1BSSU9SSVRZKE5WSUNfSW5pdFN0cnVjdC0+TlZJQ19JUlFDaGFubmVsUHJlZW1wdGlvblByaW9yaXR5KSk7ICANCisgIGFzc2VydF9wYXJhbShJU19OVklDX1NVQl9QUklPUklUWShOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbFN1YlByaW9yaXR5KSk7DQorICAgIA0KKyAgaWYgKE5WSUNfSW5pdFN0cnVjdC0+TlZJQ19JUlFDaGFubmVsQ21kICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIENvbXB1dGUgdGhlIENvcnJlc3BvbmRpbmcgSVJRIFByaW9yaXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gICAgDQorICAgIHRtcHByaW9yaXR5ID0gKDB4NzAwIC0gKChTQ0ItPkFJUkNSKSAmICh1aW50MzJfdCkweDcwMCkpPj4gMHgwODsNCisgICAgdG1wcHJlID0gKDB4NCAtIHRtcHByaW9yaXR5KTsNCisgICAgdG1wc3ViID0gdG1wc3ViID4+IHRtcHByaW9yaXR5Ow0KKw0KKyAgICB0bXBwcmlvcml0eSA9ICh1aW50MzJfdClOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbFByZWVtcHRpb25Qcmlvcml0eSA8PCB0bXBwcmU7DQorICAgIHRtcHByaW9yaXR5IHw9ICBOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbFN1YlByaW9yaXR5ICYgdG1wc3ViOw0KKyAgICB0bXBwcmlvcml0eSA9IHRtcHByaW9yaXR5IDw8IDB4MDQ7DQorICAgICAgICANCisgICAgTlZJQy0+SVBbTlZJQ19Jbml0U3RydWN0LT5OVklDX0lSUUNoYW5uZWxdID0gdG1wcHJpb3JpdHk7DQorICAgIA0KKyAgICAvKiBFbmFibGUgdGhlIFNlbGVjdGVkIElSUSBDaGFubmVscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIE5WSUMtPklTRVJbTlZJQ19Jbml0U3RydWN0LT5OVklDX0lSUUNoYW5uZWwgPj4gMHgwNV0gPQ0KKyAgICAgICh1aW50MzJfdCkweDAxIDw8IChOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbCAmICh1aW50OF90KTB4MUYpOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBEaXNhYmxlIHRoZSBTZWxlY3RlZCBJUlEgQ2hhbm5lbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgIE5WSUMtPklDRVJbTlZJQ19Jbml0U3RydWN0LT5OVklDX0lSUUNoYW5uZWwgPj4gMHgwNV0gPQ0KKyAgICAgICh1aW50MzJfdCkweDAxIDw8IChOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbCAmICh1aW50OF90KTB4MUYpOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZXRzIHRoZSB2ZWN0b3IgdGFibGUgbG9jYXRpb24gYW5kIE9mZnNldC4NCisgICogQHBhcmFtICBOVklDX1ZlY3RUYWI6IHNwZWNpZmllcyBpZiB0aGUgdmVjdG9yIHRhYmxlIGlzIGluIFJBTSBvciBGTEFTSCBtZW1vcnkuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgTlZJQ19WZWN0VGFiX1JBTQ0KKyAgKiAgICAgQGFyZyBOVklDX1ZlY3RUYWJfRkxBU0gNCisgICogQHBhcmFtICBPZmZzZXQ6IFZlY3RvciBUYWJsZSBiYXNlIG9mZnNldCBmaWVsZC4gVGhpcyB2YWx1ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMHgxMDAuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIE5WSUNfU2V0VmVjdG9yVGFibGUodWludDMyX3QgTlZJQ19WZWN0VGFiLCB1aW50MzJfdCBPZmZzZXQpDQoreyANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfTlZJQ19WRUNUVEFCKE5WSUNfVmVjdFRhYikpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX05WSUNfT0ZGU0VUKE9mZnNldCkpOyAgDQorICAgDQorICBTQ0ItPlZUT1IgPSBOVklDX1ZlY3RUYWIgfCAoT2Zmc2V0ICYgKHVpbnQzMl90KTB4MUZGRkZGODApOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBjb25kaXRpb24gZm9yIHRoZSBzeXN0ZW0gdG8gZW50ZXIgbG93IHBvd2VyIG1vZGUuDQorICAqIEBwYXJhbSAgTG93UG93ZXJNb2RlOiBTcGVjaWZpZXMgdGhlIG5ldyBtb2RlIGZvciB0aGUgc3lzdGVtIHRvIGVudGVyIGxvdyBwb3dlciBtb2RlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIE5WSUNfTFBfU0VWT05QRU5EDQorICAqICAgICBAYXJnIE5WSUNfTFBfU0xFRVBERUVQDQorICAqICAgICBAYXJnIE5WSUNfTFBfU0xFRVBPTkVYSVQNCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIExQIGNvbmRpdGlvbi4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTlZJQ19TeXN0ZW1MUENvbmZpZyh1aW50OF90IExvd1Bvd2VyTW9kZSwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfTlZJQ19MUChMb3dQb3dlck1vZGUpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7ICANCisgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIFNDQi0+U0NSIHw9IExvd1Bvd2VyTW9kZTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgU0NCLT5TQ1IgJj0gKHVpbnQzMl90KSh+KHVpbnQzMl90KUxvd1Bvd2VyTW9kZSk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFN5c1RpY2sgY2xvY2sgc291cmNlLg0KKyAgKiBAcGFyYW0gIFN5c1RpY2tfQ0xLU291cmNlOiBzcGVjaWZpZXMgdGhlIFN5c1RpY2sgY2xvY2sgc291cmNlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFN5c1RpY2tfQ0xLU291cmNlX0hDTEtfRGl2ODogQUhCIGNsb2NrIGRpdmlkZWQgYnkgOCBzZWxlY3RlZCBhcyBTeXNUaWNrIGNsb2NrIHNvdXJjZS4NCisgICogICAgIEBhcmcgU3lzVGlja19DTEtTb3VyY2VfSENMSzogQUhCIGNsb2NrIHNlbGVjdGVkIGFzIFN5c1RpY2sgY2xvY2sgc291cmNlLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTeXNUaWNrX0NMS1NvdXJjZUNvbmZpZyh1aW50MzJfdCBTeXNUaWNrX0NMS1NvdXJjZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NZU1RJQ0tfQ0xLX1NPVVJDRShTeXNUaWNrX0NMS1NvdXJjZSkpOw0KKyAgaWYgKFN5c1RpY2tfQ0xLU291cmNlID09IFN5c1RpY2tfQ0xLU291cmNlX0hDTEspDQorICB7DQorICAgIFN5c1RpY2stPkNUUkwgfD0gU3lzVGlja19DTEtTb3VyY2VfSENMSzsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgU3lzVGljay0+Q1RSTCAmPSBTeXNUaWNrX0NMS1NvdXJjZV9IQ0xLX0Rpdjg7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF9leHRpLmMgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9zcmMvc3RtMzJsMXh4X2V4dGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDhmMzNjCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF9leHRpLmMKQEAgLTAsMCArMSwyNjggQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDF4eF9leHRpLmMNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgRVhUSSBmaXJtd2FyZSBmdW5jdGlvbnMuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisNCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpbmNsdWRlICJzdG0zMmwxeHhfZXh0aS5oIg0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlcg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEVYVEkgDQorICAqIEBicmllZiBFWFRJIGRyaXZlciBtb2R1bGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgRVhUSV9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgRVhUSV9Qcml2YXRlX0RlZmluZXMNCisgICogQHsNCisgICovDQorDQorI2RlZmluZSBFWFRJX0xJTkVOT05FICAgICgodWludDMyX3QpMHgwMDAwMCkgIC8qIE5vIGludGVycnVwdCBzZWxlY3RlZCAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEVYVElfUHJpdmF0ZV9NYWNyb3MNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgRVhUSV9Qcml2YXRlX1ZhcmlhYmxlcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBFWFRJX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEVYVElfUHJpdmF0ZV9GdW5jdGlvbnMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEBicmllZiAgRGVpbml0aWFsaXplcyB0aGUgRVhUSSBwZXJpcGhlcmFsIHJlZ2lzdGVycyB0byB0aGVpciBkZWZhdWx0IHJlc2V0IHZhbHVlcy4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIEVYVElfRGVJbml0KHZvaWQpDQorew0KKyAgRVhUSS0+SU1SID0gMHgwMDAwMDAwMDsNCisgIEVYVEktPkVNUiA9IDB4MDAwMDAwMDA7DQorICBFWFRJLT5SVFNSID0gMHgwMDAwMDAwMDsgDQorICBFWFRJLT5GVFNSID0gMHgwMDAwMDAwMDsgDQorICBFWFRJLT5QUiA9IDB4MDA3RkZGRkY7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBFWFRJIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQNCisgICogICBwYXJhbWV0ZXJzIGluIHRoZSBFWFRJX0luaXRTdHJ1Y3QuDQorICAqIEBwYXJhbSAgRVhUSV9Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgRVhUSV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUNCisgICogICB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgRVhUSSBwZXJpcGhlcmFsLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBFWFRJX0luaXQoRVhUSV9Jbml0VHlwZURlZiogRVhUSV9Jbml0U3RydWN0KQ0KK3sNCisgIHVpbnQzMl90IHRtcCA9IDA7DQorDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX0VYVElfTU9ERShFWFRJX0luaXRTdHJ1Y3QtPkVYVElfTW9kZSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0VYVElfVFJJR0dFUihFWFRJX0luaXRTdHJ1Y3QtPkVYVElfVHJpZ2dlcikpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0VYVElfTElORShFWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZSkpOyAgDQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShFWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZUNtZCkpOw0KKw0KKyAgdG1wID0gKHVpbnQzMl90KUVYVElfQkFTRTsNCisgICAgIA0KKyAgaWYgKEVYVElfSW5pdFN0cnVjdC0+RVhUSV9MaW5lQ21kICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIENsZWFyIEVYVEkgbGluZSBjb25maWd1cmF0aW9uICovDQorICAgIEVYVEktPklNUiAmPSB+RVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7DQorICAgIEVYVEktPkVNUiAmPSB+RVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7DQorICAgIA0KKyAgICB0bXAgKz0gRVhUSV9Jbml0U3RydWN0LT5FWFRJX01vZGU7DQorDQorICAgICooX19JTyB1aW50MzJfdCAqKSB0bXAgfD0gRVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7DQorDQorICAgIC8qIENsZWFyIFJpc2luZyBGYWxsaW5nIGVkZ2UgY29uZmlndXJhdGlvbiAqLw0KKyAgICBFWFRJLT5SVFNSICY9IH5FWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZTsNCisgICAgRVhUSS0+RlRTUiAmPSB+RVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7DQorICAgIA0KKyAgICAvKiBTZWxlY3QgdGhlIHRyaWdnZXIgZm9yIHRoZSBzZWxlY3RlZCBleHRlcm5hbCBpbnRlcnJ1cHRzICovDQorICAgIGlmIChFWFRJX0luaXRTdHJ1Y3QtPkVYVElfVHJpZ2dlciA9PSBFWFRJX1RyaWdnZXJfUmlzaW5nX0ZhbGxpbmcpDQorICAgIHsNCisgICAgICAvKiBSaXNpbmcgRmFsbGluZyBlZGdlICovDQorICAgICAgRVhUSS0+UlRTUiB8PSBFWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZTsNCisgICAgICBFWFRJLT5GVFNSIHw9IEVYVElfSW5pdFN0cnVjdC0+RVhUSV9MaW5lOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgIHRtcCA9ICh1aW50MzJfdClFWFRJX0JBU0U7DQorICAgICAgdG1wICs9IEVYVElfSW5pdFN0cnVjdC0+RVhUSV9UcmlnZ2VyOw0KKw0KKyAgICAgICooX19JTyB1aW50MzJfdCAqKSB0bXAgfD0gRVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7DQorICAgIH0NCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgdG1wICs9IEVYVElfSW5pdFN0cnVjdC0+RVhUSV9Nb2RlOw0KKw0KKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBleHRlcm5hbCBsaW5lcyAqLw0KKyAgICAqKF9fSU8gdWludDMyX3QgKikgdG1wICY9IH5FWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZTsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRmlsbHMgZWFjaCBFWFRJX0luaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIHJlc2V0IHZhbHVlLg0KKyAgKiBAcGFyYW0gIEVYVElfSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIEVYVElfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHdoaWNoIHdpbGwNCisgICogICBiZSBpbml0aWFsaXplZC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgRVhUSV9TdHJ1Y3RJbml0KEVYVElfSW5pdFR5cGVEZWYqIEVYVElfSW5pdFN0cnVjdCkNCit7DQorICBFWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZSA9IEVYVElfTElORU5PTkU7DQorICBFWFRJX0luaXRTdHJ1Y3QtPkVYVElfTW9kZSA9IEVYVElfTW9kZV9JbnRlcnJ1cHQ7DQorICBFWFRJX0luaXRTdHJ1Y3QtPkVYVElfVHJpZ2dlciA9IEVYVElfVHJpZ2dlcl9GYWxsaW5nOw0KKyAgRVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmVDbWQgPSBESVNBQkxFOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBHZW5lcmF0ZXMgYSBTb2Z0d2FyZSBpbnRlcnJ1cHQuDQorICAqIEBwYXJhbSAgRVhUSV9MaW5lOiBzcGVjaWZpZXMgdGhlIEVYVEkgbGluZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIEVYVElfTGluZXggd2hlcmUgeCBjYW4gYmUgKDAuLjIyKS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgRVhUSV9HZW5lcmF0ZVNXSW50ZXJydXB0KHVpbnQzMl90IEVYVElfTGluZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX0VYVElfTElORShFWFRJX0xpbmUpKTsNCisgIA0KKyAgRVhUSS0+U1dJRVIgfD0gRVhUSV9MaW5lOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIEVYVEkgbGluZSBmbGFnIGlzIHNldCBvciBub3QuDQorICAqIEBwYXJhbSAgRVhUSV9MaW5lOiBzcGVjaWZpZXMgdGhlIEVYVEkgbGluZSBmbGFnIHRvIGNoZWNrLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZToNCisgICogICAgIEBhcmcgRVhUSV9MaW5leDogRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgeCB3aGVyZSB4KDAuLjIyKQ0KKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgRVhUSV9MaW5lIChTRVQgb3IgUkVTRVQpLg0KKyAgKi8NCitGbGFnU3RhdHVzIEVYVElfR2V0RmxhZ1N0YXR1cyh1aW50MzJfdCBFWFRJX0xpbmUpDQorew0KKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfR0VUX0VYVElfTElORShFWFRJX0xpbmUpKTsNCisgIA0KKyAgaWYgKChFWFRJLT5QUiAmIEVYVElfTGluZSkgIT0gKHVpbnQzMl90KVJFU0VUKQ0KKyAgew0KKyAgICBiaXRzdGF0dXMgPSBTRVQ7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgfQ0KKyAgcmV0dXJuIGJpdHN0YXR1czsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBFWFRJknMgbGluZSBwZW5kaW5nIGZsYWdzLg0KKyAgKiBAcGFyYW0gIEVYVElfTGluZTogc3BlY2lmaWVzIHRoZSBFWFRJIGxpbmVzIGZsYWdzIHRvIGNsZWFyLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgRVhUSV9MaW5leCB3aGVyZSB4IGNhbiBiZSAoMC4uMjIpLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBFWFRJX0NsZWFyRmxhZyh1aW50MzJfdCBFWFRJX0xpbmUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19FWFRJX0xJTkUoRVhUSV9MaW5lKSk7DQorICANCisgIEVYVEktPlBSID0gRVhUSV9MaW5lOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIEVYVEkgbGluZSBpcyBhc3NlcnRlZCBvciBub3QuDQorICAqIEBwYXJhbSAgRVhUSV9MaW5lOiBzcGVjaWZpZXMgdGhlIEVYVEkgbGluZSB0byBjaGVjay4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6DQorICAqICAgICBAYXJnIEVYVElfTGluZXg6IEV4dGVybmFsIGludGVycnVwdCBsaW5lIHggd2hlcmUgeCgwLi4yMikNCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIEVYVElfTGluZSAoU0VUIG9yIFJFU0VUKS4NCisgICovDQorSVRTdGF0dXMgRVhUSV9HZXRJVFN0YXR1cyh1aW50MzJfdCBFWFRJX0xpbmUpDQorew0KKyAgSVRTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7DQorICB1aW50MzJfdCBlbmFibGVzdGF0dXMgPSAwOw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19HRVRfRVhUSV9MSU5FKEVYVElfTGluZSkpOw0KKyAgDQorICBlbmFibGVzdGF0dXMgPSAgRVhUSS0+SU1SICYgRVhUSV9MaW5lOw0KKyAgaWYgKCgoRVhUSS0+UFIgJiBFWFRJX0xpbmUpICE9ICh1aW50MzJfdClSRVNFVCkgJiYgKGVuYWJsZXN0YXR1cyAhPSAodWludDMyX3QpUkVTRVQpKQ0KKyAgew0KKyAgICBiaXRzdGF0dXMgPSBTRVQ7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgfQ0KKyAgcmV0dXJuIGJpdHN0YXR1czsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBFWFRJknMgbGluZSBwZW5kaW5nIGJpdHMuDQorICAqIEBwYXJhbSAgRVhUSV9MaW5lOiBzcGVjaWZpZXMgdGhlIEVYVEkgbGluZXMgdG8gY2xlYXIuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBFWFRJX0xpbmV4IHdoZXJlIHggY2FuIGJlICgwLi4yMikuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIEVYVElfQ2xlYXJJVFBlbmRpbmdCaXQodWludDMyX3QgRVhUSV9MaW5lKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfRVhUSV9MSU5FKEVYVElfTGluZSkpOw0KKyAgDQorICBFWFRJLT5QUiA9IEVYVElfTGluZTsNCit9DQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9zcmMvc3RtMzJsMXh4X2dwaW8uYyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL3NyYy9zdG0zMmwxeHhfZ3Bpby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNDVmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9zcmMvc3RtMzJsMXh4X2dwaW8uYwpAQCAtMCwwICsxLDQzNyBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgc3RtMzJsMXh4X2dwaW8uYw0KKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWMS4wLjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBHUElPIGZpcm13YXJlIGZ1bmN0aW9ucy4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eF9ncGlvLmgiDQorI2luY2x1ZGUgInN0bTMybDF4eF9yY2MuaCINCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXINCisgICogQHsNCisgICovDQorDQorLyoqIEBkZWZncm91cCBHUElPIA0KKyAgKiBAYnJpZWYgR1BJTyBkcml2ZXIgbW9kdWxlcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEdQSU9fUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEdQSU9fUHJpdmF0ZV9EZWZpbmVzDQorICAqIEB7DQorICAqLyANCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBHUElPX1ByaXZhdGVfTWFjcm9zDQorICAqIEB7DQorICAqLw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIEdQSU9fUHJpdmF0ZV9WYXJpYWJsZXMNCisgICogQHsNCisgICovDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgR1BJT19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcw0KKyAgKiBAew0KKyAgKi8NCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBHUElPX1ByaXZhdGVfRnVuY3Rpb25zDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZXMgdGhlIEdQSU94IHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgDQorICAqICAgICAgICAgdmFsdWVzLg0KKyAgKiBAcGFyYW0gIEdQSU94OiB3aGVyZSB4IGNhbiBiZSAoQSwgQiwgQywgRCwgRSBvciBIKSB0byBzZWxlY3QgdGhlIEdQSU8gcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgR1BJT19EZUluaXQoR1BJT19UeXBlRGVmKiBHUElPeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fQUxMX1BFUklQSChHUElPeCkpOw0KKw0KKyAgaWYoR1BJT3ggPT0gR1BJT0EpDQorICB7DQorICAgIFJDQ19BSEJQZXJpcGhSZXNldENtZChSQ0NfQUhCUGVyaXBoX0dQSU9BLCBFTkFCTEUpOw0KKyAgICBSQ0NfQUhCUGVyaXBoUmVzZXRDbWQoUkNDX0FIQlBlcmlwaF9HUElPQSwgRElTQUJMRSk7ICANCisgIH0NCisgIGVsc2UgaWYoR1BJT3ggPT0gR1BJT0IpDQorICB7DQorICAgIFJDQ19BSEJQZXJpcGhSZXNldENtZChSQ0NfQUhCUGVyaXBoX0dQSU9CLCBFTkFCTEUpOw0KKyAgICBSQ0NfQUhCUGVyaXBoUmVzZXRDbWQoUkNDX0FIQlBlcmlwaF9HUElPQiwgRElTQUJMRSk7DQorICB9DQorICBlbHNlIGlmKEdQSU94ID09IEdQSU9DKQ0KKyAgew0KKyAgICBSQ0NfQUhCUGVyaXBoUmVzZXRDbWQoUkNDX0FIQlBlcmlwaF9HUElPQywgRU5BQkxFKTsNCisgICAgUkNDX0FIQlBlcmlwaFJlc2V0Q21kKFJDQ19BSEJQZXJpcGhfR1BJT0MsIERJU0FCTEUpOw0KKyAgfQ0KKyAgZWxzZSBpZihHUElPeCA9PSBHUElPRCkNCisgIHsNCisgICAgUkNDX0FIQlBlcmlwaFJlc2V0Q21kKFJDQ19BSEJQZXJpcGhfR1BJT0QsIEVOQUJMRSk7DQorICAgIFJDQ19BSEJQZXJpcGhSZXNldENtZChSQ0NfQUhCUGVyaXBoX0dQSU9ELCBESVNBQkxFKTsNCisgIH0NCisgIGVsc2UgaWYoR1BJT3ggPT0gR1BJT0UpDQorICB7DQorICAgICAgUkNDX0FIQlBlcmlwaFJlc2V0Q21kKFJDQ19BSEJQZXJpcGhfR1BJT0UsIEVOQUJMRSk7DQorICAgICAgUkNDX0FIQlBlcmlwaFJlc2V0Q21kKFJDQ19BSEJQZXJpcGhfR1BJT0UsIERJU0FCTEUpOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBpZihHUElPeCA9PSBHUElPSCkNCisgICAgew0KKyAgICAgIFJDQ19BSEJQZXJpcGhSZXNldENtZChSQ0NfQUhCUGVyaXBoX0dQSU9ILCBFTkFCTEUpOw0KKyAgICAgIFJDQ19BSEJQZXJpcGhSZXNldENtZChSQ0NfQUhCUGVyaXBoX0dQSU9ILCBESVNBQkxFKTsNCisgICAgfQ0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgR1BJT3ggcGVyaXBoZXJhbCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCANCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBHUElPX0luaXRTdHJ1Y3QuDQorICAqIEBwYXJhbSAgR1BJT3g6IHdoZXJlIHggY2FuIGJlIChBLCBCLCBDLCBELCBFIG9yIEgpIHRvIHNlbGVjdCB0aGUgR1BJTyBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIEdQSU9fSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIEdQSU9fSW5pdFR5cGVEZWYgc3RydWN0dXJlIHRoYXQgDQorICAqICAgICAgICAgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgR1BJTw0KKyAgKiAgICAgICAgIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIEdQSU9fSW5pdChHUElPX1R5cGVEZWYqIEdQSU94LCBHUElPX0luaXRUeXBlRGVmKiBHUElPX0luaXRTdHJ1Y3QpDQorew0KKyAgdWludDMyX3QgcGlucG9zID0gMHgwMCwgcG9zID0gMHgwMCAsIGN1cnJlbnRwaW4gPSAweDAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fQUxMX1BFUklQSChHUElPeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fUElOKEdQSU9fSW5pdFN0cnVjdC0+R1BJT19QaW4pKTsNCisgIGFzc2VydF9wYXJhbShJU19HUElPX01PREUoR1BJT19Jbml0U3RydWN0LT5HUElPX01vZGUpKTsNCisgIGFzc2VydF9wYXJhbShJU19HUElPX1BVUEQoR1BJT19Jbml0U3RydWN0LT5HUElPX1B1UGQpKTsNCisNCisgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Db25maWd1cmUgdGhlIHBvcnQgcGlucy0tLS0tLS0tLS0tLS0tLS0gKi8NCisgIC8qLS0gR1BJTyBNb2RlIENvbmZpZ3VyYXRpb24gLS0qLw0KKyAgZm9yIChwaW5wb3MgPSAweDAwOyBwaW5wb3MgPCAweDEwOyBwaW5wb3MrKykNCisgIHsNCisgICAgcG9zID0gKCh1aW50MzJfdCkweDAxKSA8PCBwaW5wb3M7DQorDQorICAgIC8qIEdldCB0aGUgcG9ydCBwaW5zIHBvc2l0aW9uICovDQorICAgIGN1cnJlbnRwaW4gPSAoR1BJT19Jbml0U3RydWN0LT5HUElPX1BpbikgJiBwb3M7DQorDQorICAgIGlmIChjdXJyZW50cGluID09IHBvcykNCisgICAgew0KKyAgICAgIEdQSU94LT5NT0RFUiAgJj0gfihHUElPX01PREVSX01PREVSMCA8PCAocGlucG9zICogMikpOw0KKw0KKyAgICAgIEdQSU94LT5NT0RFUiB8PSAoKCh1aW50MzJfdClHUElPX0luaXRTdHJ1Y3QtPkdQSU9fTW9kZSkgPDwgKHBpbnBvcyAqIDIpKTsNCisNCisgICAgICBpZiAoKEdQSU9fSW5pdFN0cnVjdC0+R1BJT19Nb2RlID09IEdQSU9fTW9kZV9PVVQpIHx8IChHUElPX0luaXRTdHJ1Y3QtPkdQSU9fTW9kZSA9PSBHUElPX01vZGVfQUYpKQ0KKyAgICAgIHsNCisgICAgICAgIC8qQ2hlY2sgU3BlZWQgbW9kZSBwYXJhbWV0ZXJzICovDQorICAgICAgICBhc3NlcnRfcGFyYW0oSVNfR1BJT19TUEVFRChHUElPX0luaXRTdHJ1Y3QtPkdQSU9fU3BlZWQpKTsNCisNCisgICAgICAgIC8qU3BlZWQgbW9kZSBjb25maWd1cmF0aW9uICovDQorICAgICAgICBHUElPeC0+T1NQRUVEUiAmPSB+KEdQSU9fT1NQRUVERVJfT1NQRUVEUjAgPDwgKHBpbnBvcyAqIDIpKTsNCisgICAgICAgIEdQSU94LT5PU1BFRURSIHw9ICgodWludDMyX3QpKEdQSU9fSW5pdFN0cnVjdC0+R1BJT19TcGVlZCkgPDwgKHBpbnBvcyAqIDIpKTsNCisNCisgICAgICAgIC8qQ2hlY2sgT3V0cHV0IG1vZGUgcGFyYW1ldGVycyAqLw0KKyAgICAgICAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fT1RZUEUoR1BJT19Jbml0U3RydWN0LT5HUElPX09UeXBlKSk7DQorDQorICAgICAgICAvKiBPdXRwdXQgbW9kZSBjb25maWd1YXJ0aW9uKi8NCisgICAgICAgIEdQSU94LT5PVFlQRVIgICY9IH4oKEdQSU9fT1RZUEVSX09UXzApIDw8ICgodWludDE2X3QpcGlucG9zKSkgOw0KKyAgICAgICAgR1BJT3gtPk9UWVBFUiB8PSAodWludDE2X3QpKCgodWludDE2X3QpR1BJT19Jbml0U3RydWN0LT5HUElPX09UeXBlKSA8PCAoKHVpbnQxNl90KXBpbnBvcykpOw0KKyAgICAgIH0NCisNCisgICAgICAvKlB1bGwtdXAgUHVsbCBkb3duIHJlc2lzdG9yIGNvbmZpZ3VyYXRpb24qLw0KKyAgICAgIEdQSU94LT5QVVBEUiAmPSB+KEdQSU9fUFVQRFJfUFVQRFIwIDw8ICgodWludDE2X3QpcGlucG9zICogMikpOw0KKyAgICAgIEdQSU94LT5QVVBEUiB8PSAoKCh1aW50MzJfdClHUElPX0luaXRTdHJ1Y3QtPkdQSU9fUHVQZCkgPDwgKHBpbnBvcyAqIDIpKTsNCisgICAgfQ0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBGaWxscyBlYWNoIEdQSU9fSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4NCisgICogQHBhcmFtICBHUElPX0luaXRTdHJ1Y3QgOiBwb2ludGVyIHRvIGEgR1BJT19Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgd2hpY2ggd2lsbCANCisgICogICAgICAgICBiZSBpbml0aWFsaXplZC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgR1BJT19TdHJ1Y3RJbml0KEdQSU9fSW5pdFR5cGVEZWYqIEdQSU9fSW5pdFN0cnVjdCkNCit7DQorICAvKiBSZXNldCBHUElPIGluaXQgc3RydWN0dXJlIHBhcmFtZXRlcnMgdmFsdWVzICovDQorICBHUElPX0luaXRTdHJ1Y3QtPkdQSU9fUGluICA9IEdQSU9fUGluX0FsbDsNCisgIEdQSU9fSW5pdFN0cnVjdC0+R1BJT19Nb2RlID0gR1BJT19Nb2RlX0lOOw0KKyAgR1BJT19Jbml0U3RydWN0LT5HUElPX1NwZWVkID0gR1BJT19TcGVlZF80MDBLSHo7DQorICBHUElPX0luaXRTdHJ1Y3QtPkdQSU9fT1R5cGUgPSBHUElPX09UeXBlX1BQOw0KKyAgR1BJT19Jbml0U3RydWN0LT5HUElPX1B1UGQgPSBHUElPX1B1UGRfTk9QVUxMOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBSZWFkcyB0aGUgc3BlY2lmaWVkIGlucHV0IHBvcnQgcGluLg0KKyAgKiBAcGFyYW0gIEdQSU94OiB3aGVyZSB4IGNhbiBiZSAoQSwgQiwgQywgRCwgRSBvciBIKSB0byBzZWxlY3QgdGhlIEdQSU8gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBHUElPX1Bpbjogc3BlY2lmaWVzIHRoZSBwb3J0IGJpdCB0byByZWFkLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBHUElPX1Bpbl94IHdoZXJlIHggY2FuIGJlICgwLi4xNSkuDQorICAqIEByZXR2YWwgVGhlIGlucHV0IHBvcnQgcGluIHZhbHVlLg0KKyAgKi8NCit1aW50OF90IEdQSU9fUmVhZElucHV0RGF0YUJpdChHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1BpbikNCit7DQorICB1aW50OF90IGJpdHN0YXR1cyA9IDB4MDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfR0VUX0dQSU9fUElOKEdQSU9fUGluKSk7DQorDQorICBpZiAoKEdQSU94LT5JRFIgJiBHUElPX1BpbikgIT0gKHVpbnQzMl90KUJpdF9SRVNFVCkNCisgIHsNCisgICAgYml0c3RhdHVzID0gKHVpbnQ4X3QpQml0X1NFVDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgYml0c3RhdHVzID0gKHVpbnQ4X3QpQml0X1JFU0VUOw0KKyAgfQ0KKyAgcmV0dXJuIGJpdHN0YXR1czsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgUmVhZHMgdGhlIHNwZWNpZmllZCBHUElPIGlucHV0IGRhdGEgcG9ydC4NCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEsIEIsIEMsIEQsIEUgb3IgSCkgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgR1BJTyBpbnB1dCBkYXRhIHBvcnQgdmFsdWUuDQorICAqLw0KK3VpbnQxNl90IEdQSU9fUmVhZElucHV0RGF0YShHUElPX1R5cGVEZWYqIEdQSU94KQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7DQorICANCisgIHJldHVybiAoKHVpbnQxNl90KUdQSU94LT5JRFIpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBSZWFkcyB0aGUgc3BlY2lmaWVkIG91dHB1dCBkYXRhIHBvcnQgYml0Lg0KKyAgKiBAcGFyYW0gIEdQSU94OiB3aGVyZSB4IGNhbiBiZSAoQSwgQiwgQywgRCwgRSBvciBIKSB0byBzZWxlY3QgdGhlIEdQSU8gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBHUElPX1BpbjogU3BlY2lmaWVzIHRoZSBwb3J0IGJpdCB0byByZWFkLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBHUElPX1Bpbl94IHdoZXJlIHggY2FuIGJlICgwLi4xNSkuDQorICAqIEByZXR2YWwgVGhlIG91dHB1dCBwb3J0IHBpbiB2YWx1ZS4NCisgICovDQordWludDhfdCBHUElPX1JlYWRPdXRwdXREYXRhQml0KEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluKQ0KK3sNCisgIHVpbnQ4X3QgYml0c3RhdHVzID0gMHgwMDsNCisNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfR0VUX0dQSU9fUElOKEdQSU9fUGluKSk7DQorICANCisgIGlmICgoR1BJT3gtPk9EUiAmIEdQSU9fUGluKSAhPSAodWludDMyX3QpQml0X1JFU0VUKQ0KKyAgew0KKyAgICBiaXRzdGF0dXMgPSAodWludDhfdClCaXRfU0VUOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBiaXRzdGF0dXMgPSAodWludDhfdClCaXRfUkVTRVQ7DQorICB9DQorICByZXR1cm4gYml0c3RhdHVzOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBSZWFkcyB0aGUgc3BlY2lmaWVkIEdQSU8gb3V0cHV0IGRhdGEgcG9ydC4NCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEsIEIsIEMsIEQsIEUgb3IgSCkgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgR1BJTyBvdXRwdXQgZGF0YSBwb3J0IHZhbHVlLg0KKyAgKi8NCit1aW50MTZfdCBHUElPX1JlYWRPdXRwdXREYXRhKEdQSU9fVHlwZURlZiogR1BJT3gpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19HUElPX0FMTF9QRVJJUEgoR1BJT3gpKTsNCisgIA0KKyAgcmV0dXJuICgodWludDE2X3QpR1BJT3gtPk9EUik7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgdGhlIHNlbGVjdGVkIGRhdGEgcG9ydCBiaXRzLg0KKyAgKiBAcGFyYW0gIEdQSU94OiB3aGVyZSB4IGNhbiBiZSAoQSwgQiwgQywgRCwgRSBvciBIKSB0byBzZWxlY3QgdGhlIEdQSU8gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBHUElPX1Bpbjogc3BlY2lmaWVzIHRoZSBwb3J0IGJpdHMgdG8gYmUgd3JpdHRlbi4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIEdQSU9fUGluX3ggd2hlcmUgeCBjYW4gYmUgKDAuLjE1KS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgR1BJT19TZXRCaXRzKEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QSU4oR1BJT19QaW4pKTsNCisgIA0KKyAgR1BJT3gtPkJTUlJMID0gR1BJT19QaW47DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgc2VsZWN0ZWQgZGF0YSBwb3J0IGJpdHMuDQorICAqIEBwYXJhbSAgR1BJT3g6IHdoZXJlIHggY2FuIGJlIChBLCBCLCBDLCBELCBFIG9yIEgpIHRvIHNlbGVjdCB0aGUgR1BJTyBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIEdQSU9fUGluOiBzcGVjaWZpZXMgdGhlIHBvcnQgYml0cyB0byBiZSB3cml0dGVuLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgR1BJT19QaW5feCB3aGVyZSB4IGNhbiBiZSAoMC4uMTUpLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBHUElPX1Jlc2V0Qml0cyhHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1BpbikNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fQUxMX1BFUklQSChHUElPeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fUElOKEdQSU9fUGluKSk7DQorICANCisgIEdQSU94LT5CU1JSSCA9IEdQSU9fUGluOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZXRzIG9yIGNsZWFycyB0aGUgc2VsZWN0ZWQgZGF0YSBwb3J0IGJpdC4NCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEsIEIsIEMsIEQsIEUgb3IgSCkgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgR1BJT19QaW46IHNwZWNpZmllcyB0aGUgcG9ydCBiaXQgdG8gYmUgd3JpdHRlbi4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIEdQSU9fUGluX3ggd2hlcmUgeCBjYW4gYmUgKDAuLjE1KS4NCisgICogQHBhcmFtICBCaXRWYWw6IHNwZWNpZmllcyB0aGUgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgc2VsZWN0ZWQgYml0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIEJpdEFjdGlvbiBlbnVtIHZhbHVlczoNCisgICogICAgIEBhcmcgQml0X1JFU0VUOiB0byBjbGVhciB0aGUgcG9ydCBwaW4NCisgICogICAgIEBhcmcgQml0X1NFVDogdG8gc2V0IHRoZSBwb3J0IHBpbg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBHUElPX1dyaXRlQml0KEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluLCBCaXRBY3Rpb24gQml0VmFsKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfR0VUX0dQSU9fUElOKEdQSU9fUGluKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19CSVRfQUNUSU9OKEJpdFZhbCkpOw0KKyAgDQorICBpZiAoQml0VmFsICE9IEJpdF9SRVNFVCkNCisgIHsNCisgICAgR1BJT3gtPkJTUlJMID0gR1BJT19QaW47DQorICB9DQorICBlbHNlDQorICB7DQorICAgIEdQSU94LT5CU1JSSCA9IEdQSU9fUGluIDsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgV3JpdGVzIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBHUElPIGRhdGEgcG9ydC4NCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEsIEIsIEMsIEQsIEUgb3IgSCkgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgUG9ydFZhbDogc3BlY2lmaWVzIHRoZSB2YWx1ZSB0byBiZSB3cml0dGVuIHRvIHRoZSBwb3J0IG91dHB1dCBkYXRhIA0KKyAgKiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBHUElPX1dyaXRlKEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IFBvcnRWYWwpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19HUElPX0FMTF9QRVJJUEgoR1BJT3gpKTsNCisgIA0KKyAgR1BJT3gtPk9EUiA9IFBvcnRWYWw7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIExvY2tzIEdQSU8gUGlucyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4NCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEsIEIsIEMsIEQsIEUgb3IgSCkgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgR1BJT19QaW46IHNwZWNpZmllcyB0aGUgcG9ydCBiaXQgdG8gYmUgd3JpdHRlbi4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIEdQSU9fUGluX3ggd2hlcmUgeCBjYW4gYmUgKDAuLjE1KS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgR1BJT19QaW5Mb2NrQ29uZmlnKEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluKQ0KK3sNCisgIHVpbnQzMl90IHRtcCA9IDB4MDAwMTAwMDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QSU4oR1BJT19QaW4pKTsNCisgIA0KKyAgdG1wIHw9IEdQSU9fUGluOw0KKyAgLyogU2V0IExDS0sgYml0ICovDQorICBHUElPeC0+TENLUiA9IHRtcDsNCisgIC8qIFJlc2V0IExDS0sgYml0ICovDQorICBHUElPeC0+TENLUiA9ICBHUElPX1BpbjsNCisgIC8qIFNldCBMQ0tLIGJpdCAqLw0KKyAgR1BJT3gtPkxDS1IgPSB0bXA7DQorICAvKiBSZWFkIExDS0sgYml0Ki8NCisgIHRtcCA9IEdQSU94LT5MQ0tSOw0KKyAgLyogUmVhZCBMQ0tLIGJpdCovDQorICB0bXAgPSBHUElPeC0+TENLUjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2hhbmdlcyB0aGUgbWFwcGluZyBvZiB0aGUgc3BlY2lmaWVkIHBpbi4NCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEsIEIsIEMsIEQsIEUgb3IgSCkgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgR1BJT19QaW5Tb3VyY2U6IHNwZWNpZmllcyB0aGUgcGluIGZvciB0aGUgQWx0ZXJuYXRlIGZ1bmN0aW9uLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBHUElPX1BpblNvdXJjZXggd2hlcmUgeCBjYW4gYmUgKDAuLjE1KS4NCisgICogQHBhcmFtICBHUElPX0FGU2VsZWN0aW9uOiBzZWxlY3RzIHRoZSBwaW4gdG8gdXNlZCBhcyBBbHRlcm5hdCBmdW5jdGlvbi4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBHUElPX0FGX1JUQ181MEh6DQorICAqICAgICBAYXJnIEdQSU9fQUZfTUNPDQorICAqICAgICBAYXJnIEdQSU9fQUZfVEFNUEVSDQorICAqICAgICBAYXJnIEdQSU9fQUZfV0tVUA0KKyAgKiAgICAgQGFyZyBHUElPX0FGX1NXSg0KKyAgKiAgICAgQGFyZyBHUElPX0FGX1RSQUNFDQorICAqICAgICBAYXJnIEdQSU9fQUZfVElNRVNUQU1QDQorICAqICAgICBAYXJnIEdQSU9fQUZfQ0FMSUINCisgICogICAgIEBhcmcgR1BJT19BRl9USU0yDQorICAqICAgICBAYXJnIEdQSU9fQUZfVElNMw0KKyAgKiAgICAgQGFyZyBHUElPX0FGX1RJTTQNCisgICogICAgIEBhcmcgR1BJT19BRl9USU05DQorICAqICAgICBAYXJnIEdQSU9fQUZfVElNMTANCisgICogICAgIEBhcmcgR1BJT19BRl9USU0xMQ0KKyAgKiAgICAgQGFyZyBHUElPX0FGX0kyQzENCisgICogICAgIEBhcmcgR1BJT19BRl9JMkMyDQorICAqICAgICBAYXJnIEdQSU9fQUZfU1BJMQ0KKyAgKiAgICAgQGFyZyBHUElPX0FGX1NQSTINCisgICogICAgIEBhcmcgR1BJT19BRl9VU0FSVDENCisgICogICAgIEBhcmcgR1BJT19BRl9VU0FSVDINCisgICogICAgIEBhcmcgR1BJT19BRl9VU0FSVDMNCisgICogICAgIEBhcmcgR1BJT19BRl9VU0INCisgICogICAgIEBhcmcgR1BJT19BRl9MQ0QNCisgICogICAgIEBhcmcgR1BJT19BRl9SSQ0KKyAgKiAgICAgQGFyZyBHUElPX0FGX0VWRU5UT1VUDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIEdQSU9fUGluQUZDb25maWcoR1BJT19UeXBlRGVmKiBHUElPeCwgdWludDE2X3QgR1BJT19QaW5Tb3VyY2UsIHVpbnQ4X3QgR1BJT19BRikNCit7DQorICB1aW50MzJfdCB0ZW1wID0gMHgwMDsNCisgIHVpbnQzMl90IHRlbXBfMiA9IDB4MDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QSU5fU09VUkNFKEdQSU9fUGluU291cmNlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BRihHUElPX0FGKSk7DQorICANCisgIHRlbXAgPSAoKHVpbnQzMl90KShHUElPX0FGKSA8PCAoKHVpbnQzMl90KSgodWludDMyX3QpR1BJT19QaW5Tb3VyY2UgJiAodWludDMyX3QpMHgwNykgKiA0KSkgOw0KKyAgR1BJT3gtPkFGUltHUElPX1BpblNvdXJjZSA+PiAweDAzXSAmPSB+KCh1aW50MzJfdCkweEYgPDwgKCh1aW50MzJfdCkoKHVpbnQzMl90KUdQSU9fUGluU291cmNlICYgKHVpbnQzMl90KTB4MDcpICogNCkpIDsNCisgIHRlbXBfMiA9IEdQSU94LT5BRlJbR1BJT19QaW5Tb3VyY2UgPj4gMHgwM10gfCB0ZW1wOw0KKyAgR1BJT3gtPkFGUltHUElPX1BpblNvdXJjZSA+PiAweDAzXSA9IHRlbXBfMjsNCit9DQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9zcmMvc3RtMzJsMXh4X3B3ci5jIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF9wd3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmI4NzE2Ci0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF9wd3IuYwpAQCAtMCwwICsxLDQ2NCBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgc3RtMzJsMXh4X3B3ci5jDQorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorICAqIEB2ZXJzaW9uIFYxLjAuMFJDMQ0KKyAgKiBAZGF0ZSAgICAwNy8wMi8yMDEwDQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIFBXUiBmaXJtd2FyZSBmdW5jdGlvbnMuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisNCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpbmNsdWRlICJzdG0zMmwxeHhfcHdyLmgiDQorI2luY2x1ZGUgInN0bTMybDF4eF9yY2MuaCINCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXINCisgICogQHsNCisgICovDQorDQorLyoqIEBkZWZncm91cCBQV1IgDQorICAqIEBicmllZiBQV1IgZHJpdmVyIG1vZHVsZXMNCisgICogQHsNCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgUFdSX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBQV1JfUHJpdmF0ZV9EZWZpbmVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qIC0tLS0tLS0tLSBQV1IgcmVnaXN0ZXJzIGJpdCBhZGRyZXNzIGluIHRoZSBhbGlhcyByZWdpb24gLS0tLS0tLS0tLSAqLw0KKyNkZWZpbmUgUFdSX09GRlNFVCAgICAgICAgICAgICAgIChQV1JfQkFTRSAtIFBFUklQSF9CQVNFKQ0KKw0KKy8qIC0tLSBDUiBSZWdpc3RlciAtLS0qLw0KKw0KKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBEQlAgYml0ICovDQorI2RlZmluZSBDUl9PRkZTRVQgICAgICAgICAgICAgICAgKFBXUl9PRkZTRVQgKyAweDAwKQ0KKyNkZWZpbmUgREJQX0JpdE51bWJlciAgICAgICAgICAgIDB4MDgNCisjZGVmaW5lIENSX0RCUF9CQiAgICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ1JfT0ZGU0VUICogMzIpICsgKERCUF9CaXROdW1iZXIgKiA0KSkNCisNCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgUFZERSBiaXQgKi8NCisjZGVmaW5lIFBWREVfQml0TnVtYmVyICAgICAgICAgICAweDA0DQorI2RlZmluZSBDUl9QVkRFX0JCICAgICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKENSX09GRlNFVCAqIDMyKSArIChQVkRFX0JpdE51bWJlciAqIDQpKQ0KKw0KKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBVTFAgYml0ICovDQorI2RlZmluZSBVTFBfQml0TnVtYmVyICAgICAgICAgICAweDA5DQorI2RlZmluZSBDUl9VTFBfQkIgICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ1JfT0ZGU0VUICogMzIpICsgKFVMUF9CaXROdW1iZXIgKiA0KSkNCisNCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgRldVIGJpdCAqLw0KKyNkZWZpbmUgRldVX0JpdE51bWJlciAgICAgICAgICAgMHgwQQ0KKyNkZWZpbmUgQ1JfRldVX0JCICAgICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKENSX09GRlNFVCAqIDMyKSArIChGV1VfQml0TnVtYmVyICogNCkpDQorDQorLyogLS0tIENTUiBSZWdpc3RlciAtLS0qLw0KKw0KKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBFV1VQIGJpdCAqLw0KKyNkZWZpbmUgQ1NSX09GRlNFVCAgICAgICAgICAgICAgIChQV1JfT0ZGU0VUICsgMHgwNCkNCisjZGVmaW5lIEVXVVBfQml0TnVtYmVyICAgICAgICAgICAweDA4DQorI2RlZmluZSBDU1JfRVdVUF9CQiAgICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKENTUl9PRkZTRVQgKiAzMikgKyAoRVdVUF9CaXROdW1iZXIgKiA0KSkNCisNCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gUFdSIHJlZ2lzdGVycyBiaXQgbWFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCisNCisvKiBDUiByZWdpc3RlciBiaXQgbWFzayAqLw0KKyNkZWZpbmUgQ1JfRFNfTUFTSyAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGQykNCisjZGVmaW5lIENSX1BMU19NQVNLICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGMUYpDQorI2RlZmluZSBDUl9WT1NfTUFTSyAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZFN0ZGKQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFBXUl9Qcml2YXRlX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBQV1JfUHJpdmF0ZV9WYXJpYWJsZXMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUFdSX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFBXUl9Qcml2YXRlX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBQV1IgcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBQV1JfRGVJbml0KHZvaWQpDQorew0KKyAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9QV1IsIEVOQUJMRSk7DQorICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1BXUiwgRElTQUJMRSk7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgYWNjZXNzIHRvIHRoZSBSVEMgYW5kIGJhY2t1cCByZWdpc3RlcnMuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgYWNjZXNzIHRvIHRoZSBSVEMgYW5kIGJhY2t1cCByZWdpc3RlcnMuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX1JUQ0FjY2Vzc0NtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgICooX19JTyB1aW50MzJfdCAqKSBDUl9EQlBfQkIgPSAodWludDMyX3QpTmV3U3RhdGU7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFBvd2VyIFZvbHRhZ2UgRGV0ZWN0b3IoUFZEKS4NCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBQVkQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX1BWRENtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgICooX19JTyB1aW50MzJfdCAqKSBDUl9QVkRFX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSB2b2x0YWdlIHRocmVzaG9sZCBkZXRlY3RlZCBieSB0aGUgUG93ZXIgVm9sdGFnZSBEZXRlY3RvcihQVkQpLg0KKyAgKiBAcGFyYW0gIFBXUl9QVkRMZXZlbDogc3BlY2lmaWVzIHRoZSBQVkQgZGV0ZWN0aW9uIGxldmVsDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzA6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDEuOVYNCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzE6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDIuMVYNCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzI6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDIuM1YNCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzM6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDIuNVYNCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzQ6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDIuN1YNCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzU6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDIuOVYNCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzY6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDMuMVYNCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzc6IEV4dGVybmFsIGlucHV0IGFuYWxvZyB2b2x0YWdlIChDb21wYXJlIGludGVybmFsbHkgdG8gVlJFRklOVCkNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX1BWRExldmVsQ29uZmlnKHVpbnQzMl90IFBXUl9QVkRMZXZlbCkNCit7DQorICB1aW50MzJfdCB0bXByZWcgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1BXUl9QVkRfTEVWRUwoUFdSX1BWRExldmVsKSk7DQorICANCisgIHRtcHJlZyA9IFBXUi0+Q1I7DQorICANCisgIC8qIENsZWFyIFBMU1s3OjVdIGJpdHMgKi8NCisgIHRtcHJlZyAmPSBDUl9QTFNfTUFTSzsNCisgIA0KKyAgLyogU2V0IFBMU1s3OjVdIGJpdHMgYWNjb3JkaW5nIHRvIFBXUl9QVkRMZXZlbCB2YWx1ZSAqLw0KKyAgdG1wcmVnIHw9IFBXUl9QVkRMZXZlbDsNCisgIA0KKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLw0KKyAgUFdSLT5DUiA9IHRtcHJlZzsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgV2FrZVVwIFBpbiBmdW5jdGlvbmFsaXR5Lg0KKyAgKiBAcGFyYW0gIFBXUl9XYWtlVXBQaW46IHNwZWNpZmllcyB0aGUgV2FrZVVwUGluLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogUFdSX1dha2VVcFBpbl8xLCBQV1JfV2FrZVVwUGluXzIgb3IgUFdSX1dha2VVcFBpbl8zLg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFdha2VVcCBQaW4gZnVuY3Rpb25hbGl0eS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBQV1JfV2FrZVVwUGluQ21kKHVpbnQzMl90IFBXUl9XYWtlVXBQaW4sIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICBfX0lPIHVpbnQzMl90IHRtcCA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUFdSX1dBS0VVUF9QSU4oUFdSX1dha2VVcFBpbikpOw0KKyAgDQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKw0KKyAgdG1wID0gQ1NSX0VXVVBfQkIgKyBQV1JfV2FrZVVwUGluOw0KKyAgDQorICAqKF9fSU8gdWludDMyX3QgKikgKHRtcCkgPSAodWludDMyX3QpTmV3U3RhdGU7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEZhc3QgV2FrZVVwIGZyb20gVWx0cmEgTG93IFBvd2VyIG1vZGUuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgRmFzdCBXYWtlVXAgIGZ1bmN0aW9uYWxpdHkuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX0Zhc3RXYWtlVXBDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKw0KKyAgKihfX0lPIHVpbnQzMl90ICopIENSX0ZXVV9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVWx0cmEgTG93IFBvd2VyIG1vZGUuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVWx0cmEgTG93IFBvd2VyIG1vZGUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX1VsdHJhTG93UG93ZXJDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKw0KKyAgKihfX0lPIHVpbnQzMl90ICopIENSX1VMUF9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgdm9sdGFnZSBzY2FsaW5nIHJhbmdlLg0KKyAgKiBAcGFyYW0gIFBXUl9Wb2x0YWdlU2NhbGluZzogc3BlY2lmaWVzIHRoZSB2b2x0YWdlIHNjYWxpbmcgcmFuZ2UuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOg0KKyAgKiAgICAgQGFyZyBQV1JfVm9sdGFnZVNjYWxpbmdfUmFuZ2UxOiBWb2x0YWdlIFNjYWxpbmcgUmFuZ2UgMQ0KKyAgKiAgICAgQGFyZyBQV1JfVm9sdGFnZVNjYWxpbmdfUmFuZ2UyOiBWb2x0YWdlIFNjYWxpbmcgUmFuZ2UgMg0KKyAgKiAgICAgQGFyZyBQV1JfVm9sdGFnZVNjYWxpbmdfUmFuZ2UzOiBWb2x0YWdlIFNjYWxpbmcgUmFuZ2UgMyAgICAgIA0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBQV1JfVm9sdGFnZVNjYWxpbmdDb25maWcodWludDMyX3QgUFdSX1ZvbHRhZ2VTY2FsaW5nKQ0KK3sNCisgIHVpbnQzMl90IHRtcCA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUFdSX1ZPTFRBR0VfU0NBTElOR19SQU5HRShQV1JfVm9sdGFnZVNjYWxpbmcpKTsNCisgIA0KKyAgdG1wID0gUFdSLT5DUjsNCisNCisgIHRtcCAmPSBDUl9WT1NfTUFTSzsNCisgIHRtcCB8PSBQV1JfVm9sdGFnZVNjYWxpbmc7DQorICANCisgIFBXUi0+Q1IgPSB0bXAgJiAweEZGRkZGRkYzOw0KKw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbnRlcnMvRXhpdHMgdGhlIExvdyBQb3dlciBSdW4gbW9kZS4NCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBMb3cgUG93ZXIgUnVuIG1vZGUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX0VudGVyTG93UG93ZXJSdW5Nb2RlKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisNCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICBQV1ItPkNSIHw9IFBXUl9DUl9MUFNEU1I7DQorICAgIFBXUi0+Q1IgfD0gUFdSX0NSX0xQUlVOOyAgICAgDQorICB9DQorICBlbHNlDQorICB7DQorICAgIFBXUi0+Q1IgJj0gKHVpbnQzMl90KX4oKHVpbnQzMl90KVBXUl9DUl9MUFJVTik7IA0KKyAgICBQV1ItPkNSICY9ICh1aW50MzJfdCl+KCh1aW50MzJfdClQV1JfQ1JfTFBTRFNSKTsgIA0KKyAgfSAgDQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVudGVycyBTbGVlcCBtb2RlLg0KKyAgKiBAcGFyYW0gIFBXUl9SZWd1bGF0b3I6IHNwZWNpZmllcyB0aGUgcmVndWxhdG9yIHN0YXRlIGluIFNsZWVwIG1vZGUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgUFdSX1JlZ3VsYXRvcl9PTjogU2xlZXAgbW9kZSB3aXRoIHJlZ3VsYXRvciBPTg0KKyAgKiAgICAgQGFyZyBQV1JfUmVndWxhdG9yX0xvd1Bvd2VyOiBTbGVlcCBtb2RlIHdpdGggcmVndWxhdG9yIGluIGxvdyBwb3dlciBtb2RlDQorICAqIEBwYXJhbSAgUFdSX1NMRUVQRW50cnk6IHNwZWNpZmllcyBpZiBTTEVFUCBtb2RlIGluIGVudGVyZWQgd2l0aCBXRkkgb3IgV0ZFIGluc3RydWN0aW9uLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFBXUl9TTEVFUEVudHJ5X1dGSTogZW50ZXIgU0xFRVAgbW9kZSB3aXRoIFdGSSBpbnN0cnVjdGlvbg0KKyAgKiAgICAgQGFyZyBQV1JfU0xFRVBFbnRyeV9XRkU6IGVudGVyIFNMRUVQIG1vZGUgd2l0aCBXRkUgaW5zdHJ1Y3Rpb24NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX0VudGVyU2xlZXBNb2RlKHVpbnQzMl90IFBXUl9SZWd1bGF0b3IsIHVpbnQ4X3QgUFdSX1NMRUVQRW50cnkpDQorew0KKyAgdWludDMyX3QgdG1wcmVnID0gMDsNCisNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUFdSX1JFR1VMQVRPUihQV1JfUmVndWxhdG9yKSk7DQorDQorICBhc3NlcnRfcGFyYW0oSVNfUFdSX1NMRUVQX0VOVFJZKFBXUl9TTEVFUEVudHJ5KSk7DQorICANCisgIC8qIFNlbGVjdCB0aGUgcmVndWxhdG9yIHN0YXRlIGluIFNsZWVwIG1vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIHRtcHJlZyA9IFBXUi0+Q1I7DQorICANCisgIC8qIENsZWFyIFBERFMgYW5kIExQRFNSIGJpdHMgKi8NCisgIHRtcHJlZyAmPSBDUl9EU19NQVNLOw0KKyAgDQorICAvKiBTZXQgTFBEU1IgYml0IGFjY29yZGluZyB0byBQV1JfUmVndWxhdG9yIHZhbHVlICovDQorICB0bXByZWcgfD0gUFdSX1JlZ3VsYXRvcjsNCisgIA0KKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLw0KKyAgUFdSLT5DUiA9IHRtcHJlZzsNCisNCisgIC8qIENsZWFyIFNMRUVQREVFUCBiaXQgb2YgQ29ydGV4IFN5c3RlbSBDb250cm9sIFJlZ2lzdGVyICovDQorICBTQ0ItPlNDUiAmPSAodWludDMyX3QpfigodWludDMyX3QpU0NCX1NDUl9TTEVFUERFRVApOw0KKyAgDQorICAvKiBTZWxlY3QgU0xFRVAgbW9kZSBlbnRyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIGlmKFBXUl9TTEVFUEVudHJ5ID09IFBXUl9TTEVFUEVudHJ5X1dGSSkNCisgIHsgICANCisgICAgLyogUmVxdWVzdCBXYWl0IEZvciBJbnRlcnJ1cHQgKi8NCisgICAgX19XRkkoKTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogUmVxdWVzdCBXYWl0IEZvciBFdmVudCAqLw0KKyAgICBfX1dGRSgpOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbnRlcnMgU1RPUCBtb2RlLg0KKyAgKiBAcGFyYW0gIFBXUl9SZWd1bGF0b3I6IHNwZWNpZmllcyB0aGUgcmVndWxhdG9yIHN0YXRlIGluIFNUT1AgbW9kZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBQV1JfUmVndWxhdG9yX09OOiBTVE9QIG1vZGUgd2l0aCByZWd1bGF0b3IgT04NCisgICogICAgIEBhcmcgUFdSX1JlZ3VsYXRvcl9Mb3dQb3dlcjogU1RPUCBtb2RlIHdpdGggcmVndWxhdG9yIGluIGxvdyBwb3dlciBtb2RlDQorICAqIEBwYXJhbSAgUFdSX1NUT1BFbnRyeTogc3BlY2lmaWVzIGlmIFNUT1AgbW9kZSBpbiBlbnRlcmVkIHdpdGggV0ZJIG9yIFdGRSBpbnN0cnVjdGlvbi4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBQV1JfU1RPUEVudHJ5X1dGSTogZW50ZXIgU1RPUCBtb2RlIHdpdGggV0ZJIGluc3RydWN0aW9uDQorICAqICAgICBAYXJnIFBXUl9TVE9QRW50cnlfV0ZFOiBlbnRlciBTVE9QIG1vZGUgd2l0aCBXRkUgaW5zdHJ1Y3Rpb24NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX0VudGVyU1RPUE1vZGUodWludDMyX3QgUFdSX1JlZ3VsYXRvciwgdWludDhfdCBQV1JfU1RPUEVudHJ5KQ0KK3sNCisgIHVpbnQzMl90IHRtcHJlZyA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUFdSX1JFR1VMQVRPUihQV1JfUmVndWxhdG9yKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfUFdSX1NUT1BfRU5UUlkoUFdSX1NUT1BFbnRyeSkpOw0KKyAgDQorICAvKiBTZWxlY3QgdGhlIHJlZ3VsYXRvciBzdGF0ZSBpbiBTVE9QIG1vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIHRtcHJlZyA9IFBXUi0+Q1I7DQorICAvKiBDbGVhciBQRERTIGFuZCBMUERTUiBiaXRzICovDQorICB0bXByZWcgJj0gQ1JfRFNfTUFTSzsNCisgIA0KKyAgLyogU2V0IExQRFNSIGJpdCBhY2NvcmRpbmcgdG8gUFdSX1JlZ3VsYXRvciB2YWx1ZSAqLw0KKyAgdG1wcmVnIHw9IFBXUl9SZWd1bGF0b3I7DQorICANCisgIC8qIFN0b3JlIHRoZSBuZXcgdmFsdWUgKi8NCisgIFBXUi0+Q1IgPSB0bXByZWc7DQorICANCisgIC8qIFNldCBTTEVFUERFRVAgYml0IG9mIENvcnRleCBTeXN0ZW0gQ29udHJvbCBSZWdpc3RlciAqLw0KKyAgU0NCLT5TQ1IgfD0gU0NCX1NDUl9TTEVFUERFRVA7DQorICANCisgIC8qIFNlbGVjdCBTVE9QIG1vZGUgZW50cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgaWYoUFdSX1NUT1BFbnRyeSA9PSBQV1JfU1RPUEVudHJ5X1dGSSkNCisgIHsgICANCisgICAgLyogUmVxdWVzdCBXYWl0IEZvciBJbnRlcnJ1cHQgKi8NCisgICAgX19XRkkoKTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogUmVxdWVzdCBXYWl0IEZvciBFdmVudCAqLw0KKyAgICBfX1dGRSgpOw0KKyAgfQ0KKyAgLyogUmVzZXQgU0xFRVBERUVQIGJpdCBvZiBDb3J0ZXggU3lzdGVtIENvbnRyb2wgUmVnaXN0ZXIgKi8NCisgIFNDQi0+U0NSICY9ICh1aW50MzJfdCl+KCh1aW50MzJfdClTQ0JfU0NSX1NMRUVQREVFUCk7ICANCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW50ZXJzIFNUQU5EQlkgbW9kZS4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFBXUl9FbnRlclNUQU5EQllNb2RlKHZvaWQpDQorew0KKyAgLyogQ2xlYXIgV2FrZS11cCBmbGFnICovDQorICBQV1ItPkNSIHw9IFBXUl9DUl9DV1VGOw0KKyAgDQorICAvKiBTZWxlY3QgU1RBTkRCWSBtb2RlICovDQorICBQV1ItPkNSIHw9IFBXUl9DUl9QRERTOw0KKyAgDQorICAvKiBTZXQgU0xFRVBERUVQIGJpdCBvZiBDb3J0ZXggU3lzdGVtIENvbnRyb2wgUmVnaXN0ZXIgKi8NCisgIFNDQi0+U0NSIHw9IFNDQl9TQ1JfU0xFRVBERUVQOw0KKyAgDQorLyogVGhpcyBvcHRpb24gaXMgdXNlZCB0byBlbnN1cmUgdGhhdCBzdG9yZSBvcGVyYXRpb25zIGFyZSBjb21wbGV0ZWQgKi8NCisjaWYgZGVmaW5lZCAoIF9fQ0NfQVJNICAgKQ0KKyAgX19mb3JjZV9zdG9yZXMoKTsNCisjZW5kaWYNCisgIC8qIFJlcXVlc3QgV2FpdCBGb3IgSW50ZXJydXB0ICovDQorICBfX1dGSSgpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFBXUiBmbGFnIGlzIHNldCBvciBub3QuDQorICAqIEBwYXJhbSAgUFdSX0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjaGVjay4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBQV1JfRkxBR19XVTogV2FrZSBVcCBmbGFnDQorICAqICAgICBAYXJnIFBXUl9GTEFHX1NCOiBTdGFuZEJ5IGZsYWcNCisgICogICAgIEBhcmcgUFdSX0ZMQUdfUFZETzogUFZEIE91dHB1dA0KKyAgKiAgICAgQGFyZyBQV1JfRkxBR19WUkVGSU5UUkRZOiBJbnRlcm5hbCBWb2x0YWdlIFJlZmVyZW5jZSBSZWFkeSBmbGFnDQorICAqICAgICBAYXJnIFBXUl9GTEFHX1ZPUzogVm9sdGFnZSBTY2FsaW5nIHNlbGVjdCBmbGFnDQorICAqICAgICBAYXJnIFBXUl9GTEFHX1JFR0xQOiBSZWd1bGF0b3IgTFAgZmxhZyAgICAgICAgDQorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBQV1JfRkxBRyAoU0VUIG9yIFJFU0VUKS4NCisgICovDQorRmxhZ1N0YXR1cyBQV1JfR2V0RmxhZ1N0YXR1cyh1aW50MzJfdCBQV1JfRkxBRykNCit7DQorICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19QV1JfR0VUX0ZMQUcoUFdSX0ZMQUcpKTsNCisgIA0KKyAgaWYgKChQV1ItPkNTUiAmIFBXUl9GTEFHKSAhPSAodWludDMyX3QpUkVTRVQpDQorICB7DQorICAgIGJpdHN0YXR1cyA9IFNFVDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgYml0c3RhdHVzID0gUkVTRVQ7DQorICB9DQorICAvKiBSZXR1cm4gdGhlIGZsYWcgc3RhdHVzICovDQorICByZXR1cm4gYml0c3RhdHVzOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDbGVhcnMgdGhlIFBXUidzIHBlbmRpbmcgZmxhZ3MuDQorICAqIEBwYXJhbSAgUFdSX0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjbGVhci4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBQV1JfRkxBR19XVTogV2FrZSBVcCBmbGFnDQorICAqICAgICBAYXJnIFBXUl9GTEFHX1NCOiBTdGFuZEJ5IGZsYWcNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUFdSX0NsZWFyRmxhZyh1aW50MzJfdCBQV1JfRkxBRykNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1BXUl9DTEVBUl9GTEFHKFBXUl9GTEFHKSk7DQorICAgICAgICAgDQorICBQV1ItPkNSIHw9ICBQV1JfRkxBRyA8PCAyOw0KK30NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL3NyYy9zdG0zMmwxeHhfcmNjLmMgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9zcmMvc3RtMzJsMXh4X3JjYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YmRiNDkKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9zcmMvc3RtMzJsMXh4X3JjYy5jCkBAIC0wLDAgKzEsMTIyNSBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgc3RtMzJsMXh4X3JjYy5jDQorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorICAqIEB2ZXJzaW9uIFYxLjAuMFJDMQ0KKyAgKiBAZGF0ZSAgICAwNy8wMi8yMDEwDQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIFJDQyBmaXJtd2FyZSBmdW5jdGlvbnMuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisNCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpbmNsdWRlICJzdG0zMmwxeHhfcmNjLmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUkNDIA0KKyAgKiBAYnJpZWYgUkNDIGRyaXZlciBtb2R1bGVzDQorICAqIEB7DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFJDQ19Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUkNDX1ByaXZhdGVfRGVmaW5lcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiAtLS0tLS0tLS0tLS0gUkNDIHJlZ2lzdGVycyBiaXQgYWRkcmVzcyBpbiB0aGUgYWxpYXMgcmVnaW9uIC0tLS0tLS0tLS0tICovDQorI2RlZmluZSBSQ0NfT0ZGU0VUICAgICAgICAgICAgICAgIChSQ0NfQkFTRSAtIFBFUklQSF9CQVNFKQ0KKw0KKy8qIC0tLSBDUiBSZWdpc3RlciAtLS0qLw0KKw0KKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBIU0lPTiBiaXQgKi8NCisjZGVmaW5lIENSX09GRlNFVCAgICAgICAgICAgICAgICAgKFJDQ19PRkZTRVQgKyAweDAwKQ0KKyNkZWZpbmUgSFNJT05fQml0TnVtYmVyICAgICAgICAgICAweDAwDQorI2RlZmluZSBDUl9IU0lPTl9CQiAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoSFNJT05fQml0TnVtYmVyICogNCkpDQorDQorLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIE1TSU9OIGJpdCAqLw0KKyNkZWZpbmUgTVNJT05fQml0TnVtYmVyICAgICAgICAgICAweDA4DQorI2RlZmluZSBDUl9NU0lPTl9CQiAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoTVNJT05fQml0TnVtYmVyICogNCkpDQorDQorLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIFBMTE9OIGJpdCAqLw0KKyNkZWZpbmUgUExMT05fQml0TnVtYmVyICAgICAgICAgICAweDE4DQorI2RlZmluZSBDUl9QTExPTl9CQiAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoUExMT05fQml0TnVtYmVyICogNCkpDQorDQorLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIENTU09OIGJpdCAqLw0KKyNkZWZpbmUgQ1NTT05fQml0TnVtYmVyICAgICAgICAgICAweDFDDQorI2RlZmluZSBDUl9DU1NPTl9CQiAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoQ1NTT05fQml0TnVtYmVyICogNCkpDQorDQorLyogLS0tIENTUiBSZWdpc3RlciAtLS0qLw0KKw0KKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBMU0lPTiBiaXQgKi8NCisjZGVmaW5lIENTUl9PRkZTRVQgICAgICAgICAgICAgICAgKFJDQ19PRkZTRVQgKyAweDM0KQ0KKyNkZWZpbmUgTFNJT05fQml0TnVtYmVyICAgICAgICAgICAweDAwDQorI2RlZmluZSBDU1JfTFNJT05fQkIgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDU1JfT0ZGU0VUICogMzIpICsgKExTSU9OX0JpdE51bWJlciAqIDQpKQ0KKw0KKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBSVENFTiBiaXQgKi8NCisjZGVmaW5lIFJUQ0VOX0JpdE51bWJlciAgICAgICAgICAgMHgxNg0KKyNkZWZpbmUgQ1NSX1JUQ0VOX0JCICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ1NSX09GRlNFVCAqIDMyKSArIChSVENFTl9CaXROdW1iZXIgKiA0KSkNCisNCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgUlRDUlNUIGJpdCAqLw0KKyNkZWZpbmUgUlRDUlNUX0JpdE51bWJlciAgICAgICAgICAweDE3DQorI2RlZmluZSBDU1JfUlRDUlNUX0JCICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDU1JfT0ZGU0VUICogMzIpICsgKFJUQ1JTVF9CaXROdW1iZXIgKiA0KSkNCisNCisNCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJDQyByZWdpc3RlcnMgbWFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KKy8qIFJDQyBGbGFnIE1hc2sgKi8NCisjZGVmaW5lIEZMQUdfTUFTSyAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MUYpDQorDQorLyogQ1IgcmVnaXN0ZXIgYnl0ZSAzIChCaXRzWzIzOjE2XSkgYmFzZSBhZGRyZXNzICovDQorI2RlZmluZSBDUl9CWVRFM19BRERSRVNTICAgICAgICAgICgodWludDMyX3QpMHg0MDAyMzgwMikNCisNCisvKiBJQ1NDUiByZWdpc3RlciBieXRlIDQgKEJpdHNbMzE6MjRdKSBiYXNlIGFkZHJlc3MgKi8NCisjZGVmaW5lIElDU0NSX0JZVEU0X0FERFJFU1MgICAgICAgKCh1aW50MzJfdCkweDQwMDIzODA3KQ0KKw0KKy8qIENGR1IgcmVnaXN0ZXIgYnl0ZSAzIChCaXRzWzIzOjE2XSkgYmFzZSBhZGRyZXNzICovDQorI2RlZmluZSBDRkdSX0JZVEUzX0FERFJFU1MgICAgICAgICgodWludDMyX3QpMHg0MDAyMzgwQSkNCisNCisvKiBDRkdSIHJlZ2lzdGVyIGJ5dGUgNCAoQml0c1szMToyNF0pIGJhc2UgYWRkcmVzcyAqLw0KKyNkZWZpbmUgQ0ZHUl9CWVRFNF9BRERSRVNTICAgICAgICAoKHVpbnQzMl90KTB4NDAwMjM4MEIpDQorDQorLyogQ0lSIHJlZ2lzdGVyIGJ5dGUgMiAoQml0c1sxNTo4XSkgYmFzZSBhZGRyZXNzICovDQorI2RlZmluZSBDSVJfQllURTJfQUREUkVTUyAgICAgICAgICgodWludDMyX3QpMHg0MDAyMzgwRCkNCisNCisvKiBDSVIgcmVnaXN0ZXIgYnl0ZSAzIChCaXRzWzIzOjE2XSkgYmFzZSBhZGRyZXNzICovDQorI2RlZmluZSBDSVJfQllURTNfQUREUkVTUyAgICAgICAgICgodWludDMyX3QpMHg0MDAyMzgwRSkNCisNCisvKiBDU1IgcmVnaXN0ZXIgYnl0ZSAyIChCaXRzWzE1OjhdKSBiYXNlIGFkZHJlc3MgKi8NCisjZGVmaW5lIENTUl9CWVRFMl9BRERSRVNTICAgICAgICAgKCh1aW50MzJfdCkweDQwMDIzODM1KQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBSQ0NfUHJpdmF0ZV9NYWNyb3MNCisgICogQHsNCisgICovIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBSQ0NfUHJpdmF0ZV9WYXJpYWJsZXMNCisgICogQHsNCisgICovIA0KKw0KK3N0YXRpYyBfX0kgdWludDhfdCBQTExNdWxUYWJsZVs5XSA9IHszLCA0LCA2LCA4LCAxMiwgMTYsIDI0LCAzMiwgNDh9Ow0KK3N0YXRpYyBfX0kgdWludDhfdCBBUEJBSEJQcmVzY1RhYmxlWzE2XSA9IHswLCAwLCAwLCAwLCAxLCAyLCAzLCA0LCAxLCAyLCAzLCA0LCA2LCA3LCA4LCA5fTsNCitzdGF0aWMgX19JIHVpbnQ4X3QgTVNJVGFibGVbN10gPSB7MCwgMCwgMCwgMCwgMSwgMiwgNH07DQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgUkNDX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFJDQ19Qcml2YXRlX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQGJyaWVmICBSZXNldHMgdGhlIFJDQyBjbG9jayBjb25maWd1cmF0aW9uIHRvIHRoZSBkZWZhdWx0IHJlc2V0IHN0YXRlLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX0RlSW5pdCh2b2lkKQ0KK3sNCisgIA0KKyAgLyogU2V0IE1TSU9OIGJpdCAqLw0KKyAgUkNDLT5DUiB8PSAodWludDMyX3QpMHgwMDAwMDEwMDsNCisNCisgIC8qIFJlc2V0IFNXWzE6MF0sIEhQUkVbMzowXSwgUFBSRTFbMjowXSwgUFBSRTJbMjowXSwgTUNPU0VMWzI6MF0gYW5kIE1DT1BSRVsyOjBdIGJpdHMgKi8NCisgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpMHg4OEZGQzAwQzsNCisgIA0KKyAgLyogUmVzZXQgSFNJT04sIEhTRU9OLCBDU1NPTiBhbmQgUExMT04gYml0cyAqLw0KKyAgUkNDLT5DUiAmPSAodWludDMyX3QpMHhFRUZFRkZGRTsNCisNCisgIC8qIFJlc2V0IEhTRUJZUCBiaXQgKi8NCisgIFJDQy0+Q1IgJj0gKHVpbnQzMl90KTB4RkZGQkZGRkY7DQorDQorICAvKiBSZXNldCBQTExTUkMsIFBMTE1VTFszOjBdIGFuZCBQTExESVZbMTowXSBiaXRzICovDQorICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KTB4RkYwMkZGRkY7DQorDQorICAvKiBEaXNhYmxlIGFsbCBpbnRlcnJ1cHRzICovDQorICBSQ0MtPkNJUiA9IDB4MDAwMDAwMDA7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIEV4dGVybmFsIEhpZ2ggU3BlZWQgb3NjaWxsYXRvciAoSFNFKS4NCisgICogQG5vdGUgICBIU0UgY2FuIG5vdCBiZSBzdG9wcGVkIGlmIGl0IGlzIHVzZWQgZGlyZWN0bHkgb3IgdGhyb3VnaCB0aGUgUExMIGFzIHN5c3RlbSBjbG9jay4NCisgICogQHBhcmFtIFJDQ19IU0U6IHNwZWNpZmllcyB0aGUgbmV3IHN0YXRlIG9mIHRoZSBIU0UuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgUkNDX0hTRV9PRkY6IEhTRSBvc2NpbGxhdG9yIE9GRg0KKyAgKiAgICAgQGFyZyBSQ0NfSFNFX09OOiBIU0Ugb3NjaWxsYXRvciBPTg0KKyAgKiAgICAgQGFyZyBSQ0NfSFNFX0J5cGFzczogSFNFIG9zY2lsbGF0b3IgYnlwYXNzZWQgd2l0aCBleHRlcm5hbCBjbG9jaw0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfSFNFQ29uZmlnKHVpbnQ4X3QgUkNDX0hTRSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19IU0UoUkNDX0hTRSkpOw0KKw0KKyAgLyogUmVzZXQgSFNFT04gYW5kIEhTRUJZUCBiaXRzIGJlZm9yZSBjb25maWd1cmluZyB0aGUgSFNFIC0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAqKF9fSU8gdWludDhfdCAqKSBDUl9CWVRFM19BRERSRVNTID0gUkNDX0hTRV9PRkY7DQorDQorICAvKiBTZXQgdGhlIG5ldyBIU0UgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgICooX19JTyB1aW50OF90ICopIENSX0JZVEUzX0FERFJFU1MgPSBSQ0NfSFNFOw0KKw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBXYWl0cyBmb3IgSFNFIHN0YXJ0LXVwLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBBbiBFcnJvclN0YXR1cyBlbnVtdXJhdGlvbiB2YWx1ZToNCisgICogICAgICAgICAgLSBTVUNDRVNTOiBIU0Ugb3NjaWxsYXRvciBpcyBzdGFibGUgYW5kIHJlYWR5IHRvIHVzZQ0KKyAgKiAgICAgICAgICAtIEVSUk9SOiBIU0Ugb3NjaWxsYXRvciBub3QgeWV0IHJlYWR5DQorICAqLw0KK0Vycm9yU3RhdHVzIFJDQ19XYWl0Rm9ySFNFU3RhcnRVcCh2b2lkKQ0KK3sNCisgIF9fSU8gdWludDMyX3QgU3RhcnRVcENvdW50ZXIgPSAwOw0KKyAgRXJyb3JTdGF0dXMgc3RhdHVzID0gRVJST1I7DQorICBGbGFnU3RhdHVzIEhTRVN0YXR1cyA9IFJFU0VUOw0KKyAgDQorICAvKiBXYWl0IHRpbGwgSFNFIGlzIHJlYWR5IGFuZCBpZiBUaW1lIG91dCBpcyByZWFjaGVkIGV4aXQgKi8NCisgIGRvDQorICB7DQorICAgIEhTRVN0YXR1cyA9IFJDQ19HZXRGbGFnU3RhdHVzKFJDQ19GTEFHX0hTRVJEWSk7DQorICAgIFN0YXJ0VXBDb3VudGVyKys7ICANCisgIH0gd2hpbGUoKFN0YXJ0VXBDb3VudGVyICE9IEhTRV9TVEFSVFVQX1RJTUVPVVQpICYmIChIU0VTdGF0dXMgPT0gUkVTRVQpKTsNCisgIA0KKyAgaWYgKFJDQ19HZXRGbGFnU3RhdHVzKFJDQ19GTEFHX0hTRVJEWSkgIT0gUkVTRVQpDQorICB7DQorICAgIHN0YXR1cyA9IFNVQ0NFU1M7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIHN0YXR1cyA9IEVSUk9SOw0KKyAgfSAgDQorICByZXR1cm4gKHN0YXR1cyk7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEFkanVzdHMgdGhlIEludGVybmFsIEhpZ2ggU3BlZWQgb3NjaWxsYXRvciAoSFNJKSBjYWxpYnJhdGlvbiB2YWx1ZS4NCisgICogQHBhcmFtICBIU0lDYWxpYnJhdGlvblZhbHVlOiBzcGVjaWZpZXMgdGhlIEhTSSBjYWxpYnJhdGlvbiB0cmltbWluZyB2YWx1ZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMHgxRi4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX0FkanVzdEhTSUNhbGlicmF0aW9uVmFsdWUodWludDhfdCBIU0lDYWxpYnJhdGlvblZhbHVlKQ0KK3sNCisgIHVpbnQzMl90IHRtcHJlZyA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX0hTSV9DQUxJQlJBVElPTl9WQUxVRShIU0lDYWxpYnJhdGlvblZhbHVlKSk7DQorICANCisgIHRtcHJlZyA9IFJDQy0+SUNTQ1I7DQorICANCisgIC8qIENsZWFyIEhTSVRSSU1bNDowXSBiaXRzICovDQorICB0bXByZWcgJj0gflJDQ19JQ1NDUl9IU0lUUklNOw0KKyAgDQorICAvKiBTZXQgdGhlIEhTSVRSSU1bNDowXSBiaXRzIGFjY29yZGluZyB0byBIU0lDYWxpYnJhdGlvblZhbHVlIHZhbHVlICovDQorICB0bXByZWcgfD0gKHVpbnQzMl90KUhTSUNhbGlicmF0aW9uVmFsdWUgPDwgODsNCisNCisgIC8qIFN0b3JlIHRoZSBuZXcgdmFsdWUgKi8NCisgIFJDQy0+SUNTQ1IgPSB0bXByZWc7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEFkanVzdHMgdGhlIEludGVybmFsIE11bHRpIFNwZWVkIG9zY2lsbGF0b3IgKE1TSSkgY2FsaWJyYXRpb24gdmFsdWUuDQorICAqIEBwYXJhbSAgTVNJQ2FsaWJyYXRpb25WYWx1ZTogc3BlY2lmaWVzIHRoZSBNU0kgY2FsaWJyYXRpb24gdHJpbW1pbmcgdmFsdWUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDB4RkYuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19BZGp1c3RNU0lDYWxpYnJhdGlvblZhbHVlKHVpbnQ4X3QgTVNJQ2FsaWJyYXRpb25WYWx1ZSkNCit7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX01TSV9DQUxJQlJBVElPTl9WQUxVRShNU0lDYWxpYnJhdGlvblZhbHVlKSk7DQorDQorICAqKF9fSU8gdWludDhfdCAqKSBJQ1NDUl9CWVRFNF9BRERSRVNTID0gTVNJQ2FsaWJyYXRpb25WYWx1ZTsgIA0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBJbnRlcm5hbCBNdWx0aSBTcGVlZCBvc2NpbGxhdG9yIChNU0kpIGNsb2NrIHJhbmdlLg0KKyAgKiBAcGFyYW0gIFJDQ19NU0lSYW5nZTogc3BlY2lmaWVzIHRoZSBNU0kgQ2xjb2sgcmFuZ2UuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFJDQ19NU0lSYW5nZV82NEtIejogIE1TSSBjbG9jayBpcyBhcm91bmQgNjQgS0h6DQorICAqICAgICBAYXJnIFJDQ19NU0lSYW5nZV8xMjhLSHo6IE1TSSBjbG9jayBpcyBhcm91bmQgMTI4IEtIeg0KKyAgKiAgICAgQGFyZyBSQ0NfTVNJUmFuZ2VfMjU2S0h6OiBNU0kgY2xvY2sgaXMgYXJvdW5kIDI1NiBLSHoNCisgICogICAgIEBhcmcgUkNDX01TSVJhbmdlXzUxMktIejogTVNJIGNsb2NrIGlzIGFyb3VuZCA1MTIgS0h6DQorICAqICAgICBAYXJnIFJDQ19NU0lSYW5nZV8xTUh6OiAgIE1TSSBjbG9jayBpcyBhcm91bmQgMSBNSHoNCisgICogICAgIEBhcmcgUkNDX01TSVJhbmdlXzJNSHo6ICAgTVNJIGNsb2NrIGlzIGFyb3VuZCAyIE1Ieg0KKyAgKiAgICAgQGFyZyBSQ0NfTVNJUmFuZ2VfNE1IejogICBNU0kgY2xvY2sgaXMgYXJvdW5kIDQgTUh6ICAgICAgICAgICAgIA0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfTVNJUmFuZ2VDb25maWcodWludDMyX3QgUkNDX01TSVJhbmdlKQ0KK3sNCisgIHVpbnQzMl90IHRtcHJlZyA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX01TSV9DTE9DS19SQU5HRShSQ0NfTVNJUmFuZ2UpKTsNCisgIA0KKyAgdG1wcmVnID0gUkNDLT5JQ1NDUjsNCisgIA0KKyAgLyogQ2xlYXIgTVNJUkFOR0VbMjowXSBiaXRzICovDQorICB0bXByZWcgJj0gflJDQ19JQ1NDUl9NU0lSQU5HRTsNCisgIA0KKyAgLyogU2V0IHRoZSBNU0lSQU5HRVsyOjBdIGJpdHMgYWNjb3JkaW5nIHRvIFJDQ19NU0lSYW5nZSB2YWx1ZSAqLw0KKyAgdG1wcmVnIHw9ICh1aW50MzJfdClSQ0NfTVNJUmFuZ2U7DQorDQorICAvKiBTdG9yZSB0aGUgbmV3IHZhbHVlICovDQorICBSQ0MtPklDU0NSID0gdG1wcmVnOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBJbnRlcm5hbCBNdWx0aSBTcGVlZCBvc2NpbGxhdG9yIChNU0kpLg0KKyAgKiBAbm90ZSAgIE1TSSBjYW4gbm90IGJlIHN0b3BwZWQgaWYgaXQgaXMgdXNlZCBkaXJlY3RseSBhcyBzeXN0ZW0gY2xvY2suDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgTVNJLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19NU0lDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgDQorICAqKF9fSU8gdWludDMyX3QgKikgQ1JfTVNJT05fQkIgPSAodWludDMyX3QpTmV3U3RhdGU7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEludGVybmFsIEhpZ2ggU3BlZWQgb3NjaWxsYXRvciAoSFNJKS4NCisgICogQG5vdGUgICBIU0kgY2FuIG5vdCBiZSBzdG9wcGVkIGlmIGl0IGlzIHVzZWQgZGlyZWN0bHkgb3IgdGhyb3VnaCB0aGUgUExMIGFzIHN5c3RlbSBjbG9jay4NCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBIU0kuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX0hTSUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgICooX19JTyB1aW50MzJfdCAqKSBDUl9IU0lPTl9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgUExMIGNsb2NrIHNvdXJjZSBhbmQgbXVsdGlwbGljYXRpb24gZmFjdG9yLg0KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIG9ubHkgd2hlbiB0aGUgUExMIGlzIGRpc2FibGVkLg0KKyAgKiBAcGFyYW0gIFJDQ19QTExTb3VyY2U6IHNwZWNpZmllcyB0aGUgUExMIGVudHJ5IGNsb2NrIHNvdXJjZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfUExMU291cmNlX0hTSTogSFNJIG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5DQorICAqICAgICBAYXJnIFJDQ19QTExTb3VyY2VfSFNFOiBIU0Ugb3NjaWxsYXRvciBjbG9jayBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkNCisgICogQHBhcmFtICBSQ0NfUExMTXVsOiBzcGVjaWZpZXMgdGhlIFBMTCBtdWx0aXBsaWNhdGlvbiBmYWN0b3IuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOg0KKyAgKiAgICAgQGFyZyBSQ0NfUExMTXVsXzM6IFBMTCBDbG9jayBlbnRyeSBtdWx0aXBsaWVkIGJ5IDMNCisgICogICAgIEBhcmcgUkNDX1BMTE11bF80OiBQTEwgQ2xvY2sgZW50cnkgbXVsdGlwbGllZCBieSA0DQorICAqICAgICBAYXJnIFJDQ19QTExNdWxfNjogUExMIENsb2NrIGVudHJ5IG11bHRpcGxpZWQgYnkgNg0KKyAgKiAgICAgQGFyZyBSQ0NfUExMTXVsXzg6IFBMTCBDbG9jayBlbnRyeSBtdWx0aXBsaWVkIGJ5IDgNCisgICogICAgIEBhcmcgUkNDX1BMTE11bF8xMjogUExMIENsb2NrIGVudHJ5IG11bHRpcGxpZWQgYnkgMTINCisgICogICAgIEBhcmcgUkNDX1BMTE11bF8xNjogUExMIENsb2NrIGVudHJ5IG11bHRpcGxpZWQgYnkgMTYgIA0KKyAgKiAgICAgQGFyZyBSQ0NfUExMTXVsXzI0OiBQTEwgQ2xvY2sgZW50cnkgbXVsdGlwbGllZCBieSAyNA0KKyAgKiAgICAgQGFyZyBSQ0NfUExMTXVsXzMyOiBQTEwgQ2xvY2sgZW50cnkgbXVsdGlwbGllZCBieSAzMg0KKyAgKiAgICAgQGFyZyBSQ0NfUExMTXVsXzQ4OiBQTEwgQ2xvY2sgZW50cnkgbXVsdGlwbGllZCBieSA0OCAgICAgICAgICAgICANCisgICogQHBhcmFtICBSQ0NfUExMRGl2OiBzcGVjaWZpZXMgdGhlIFBMTCBkaXZpc2lvbiBmYWN0b3IuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOg0KKyAgKiAgICAgQGFyZyBSQ0NfUExMRGl2XzI6IFBMTCBDbG9jayBvdXRwdXQgZGl2aWRlZCBieSAyICANCisgICogICAgIEBhcmcgUkNDX1BMTERpdl8zOiBQTEwgQ2xvY2sgb3V0cHV0IGRpdmlkZWQgYnkgMyAgICAgICAgIA0KKyAgKiAgICAgQGFyZyBSQ0NfUExMRGl2XzQ6IFBMTCBDbG9jayBvdXRwdXQgZGl2aWRlZCBieSA0ICAgDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19QTExDb25maWcodWludDhfdCBSQ0NfUExMU291cmNlLCB1aW50OF90IFJDQ19QTExNdWwsIHVpbnQ4X3QgUkNDX1BMTERpdikNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19QTExfU09VUkNFKFJDQ19QTExTb3VyY2UpKTsNCisgIGFzc2VydF9wYXJhbShJU19SQ0NfUExMX01VTChSQ0NfUExMTXVsKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX1BMTF9ESVYoUkNDX1BMTERpdikpOw0KKyAgDQorICAqKF9fSU8gdWludDhfdCAqKSBDRkdSX0JZVEUzX0FERFJFU1MgPSAodWludDhfdCkoUkNDX1BMTFNvdXJjZSB8ICgodWludDhfdCkoUkNDX1BMTE11bCB8ICh1aW50OF90KShSQ0NfUExMRGl2KSkpKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgUExMLg0KKyAgKiBAbm90ZSAgIFRoZSBQTEwgY2FuIG5vdCBiZSBkaXNhYmxlZCBpZiBpdCBpcyB1c2VkIGFzIHN5c3RlbSBjbG9jay4NCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBQTEwuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX1BMTENtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgICooX19JTyB1aW50MzJfdCAqKSBDUl9QTExPTl9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgc3lzdGVtIGNsb2NrIChTWVNDTEspLg0KKyAgKiBAcGFyYW0gIFJDQ19TWVNDTEtTb3VyY2U6IHNwZWNpZmllcyB0aGUgY2xvY2sgc291cmNlIHVzZWQgYXMgc3lzdGVtIGNsb2NrLiANCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLU291cmNlX01TSTogICAgTVNJIHNlbGVjdGVkIGFzIHN5c3RlbSBjbG9jaw0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLU291cmNlX0hTSTogICAgSFNJIHNlbGVjdGVkIGFzIHN5c3RlbSBjbG9jaw0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLU291cmNlX0hTRTogICAgSFNFIHNlbGVjdGVkIGFzIHN5c3RlbSBjbG9jaw0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLU291cmNlX1BMTENMSzogUExMIHNlbGVjdGVkIGFzIHN5c3RlbSBjbG9jaw0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfU1lTQ0xLQ29uZmlnKHVpbnQzMl90IFJDQ19TWVNDTEtTb3VyY2UpDQorew0KKyAgdWludDMyX3QgdG1wcmVnID0gMDsNCisgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19SQ0NfU1lTQ0xLX1NPVVJDRShSQ0NfU1lTQ0xLU291cmNlKSk7DQorICANCisgIHRtcHJlZyA9IFJDQy0+Q0ZHUjsNCisgIA0KKyAgLyogQ2xlYXIgU1dbMTowXSBiaXRzICovDQorICB0bXByZWcgJj0gflJDQ19DRkdSX1NXOw0KKyAgDQorICAvKiBTZXQgU1dbMTowXSBiaXRzIGFjY29yZGluZyB0byBSQ0NfU1lTQ0xLU291cmNlIHZhbHVlICovDQorICB0bXByZWcgfD0gUkNDX1NZU0NMS1NvdXJjZTsNCisgIA0KKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLw0KKyAgUkNDLT5DRkdSID0gdG1wcmVnOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBjbG9jayBzb3VyY2UgdXNlZCBhcyBzeXN0ZW0gY2xvY2suDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIFRoZSBjbG9jayBzb3VyY2UgdXNlZCBhcyBzeXN0ZW0gY2xvY2suIFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmUgb25lIA0KKyAgKiAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgICAgICAgICAgLSAweDAwOiBNU0kgdXNlZCBhcyBzeXN0ZW0gY2xvY2sNCisgICogICAgICAgICAgICAgIC0gMHgwNDogSFNJIHVzZWQgYXMgc3lzdGVtIGNsb2NrICANCisgICogICAgICAgICAgICAgIC0gMHgwODogSFNFIHVzZWQgYXMgc3lzdGVtIGNsb2NrDQorICAqICAgICAgICAgICAgICAtIDB4MEM6IFBMTCB1c2VkIGFzIHN5c3RlbSBjbG9jaw0KKyAgKi8NCit1aW50OF90IFJDQ19HZXRTWVNDTEtTb3VyY2Uodm9pZCkNCit7DQorICByZXR1cm4gKCh1aW50OF90KShSQ0MtPkNGR1IgJiBSQ0NfQ0ZHUl9TV1MpKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgQUhCIGNsb2NrIChIQ0xLKS4NCisgICogQHBhcmFtICBSQ0NfU1lTQ0xLOiBkZWZpbmVzIHRoZSBBSEIgY2xvY2sgZGl2aWRlci4gVGhpcyBjbG9jayBpcyBkZXJpdmVkIGZyb20gDQorICAqICAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3RlbSBjbG9jayAoU1lTQ0xLKS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLX0RpdjE6ICAgQUhCIGNsb2NrID0gU1lTQ0xLDQorICAqICAgICBAYXJnIFJDQ19TWVNDTEtfRGl2MjogICBBSEIgY2xvY2sgPSBTWVNDTEsvMg0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLX0RpdjQ6ICAgQUhCIGNsb2NrID0gU1lTQ0xLLzQNCisgICogICAgIEBhcmcgUkNDX1NZU0NMS19EaXY4OiAgIEFIQiBjbG9jayA9IFNZU0NMSy84DQorICAqICAgICBAYXJnIFJDQ19TWVNDTEtfRGl2MTY6ICBBSEIgY2xvY2sgPSBTWVNDTEsvMTYNCisgICogICAgIEBhcmcgUkNDX1NZU0NMS19EaXY2NDogIEFIQiBjbG9jayA9IFNZU0NMSy82NA0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLX0RpdjEyODogQUhCIGNsb2NrID0gU1lTQ0xLLzEyOA0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLX0RpdjI1NjogQUhCIGNsb2NrID0gU1lTQ0xLLzI1Ng0KKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLX0RpdjUxMjogQUhCIGNsb2NrID0gU1lTQ0xLLzUxMg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfSENMS0NvbmZpZyh1aW50MzJfdCBSQ0NfU1lTQ0xLKQ0KK3sNCisgIHVpbnQzMl90IHRtcHJlZyA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX0hDTEsoUkNDX1NZU0NMSykpOw0KKyAgDQorICB0bXByZWcgPSBSQ0MtPkNGR1I7DQorICANCisgIC8qIENsZWFyIEhQUkVbMzowXSBiaXRzICovDQorICB0bXByZWcgJj0gflJDQ19DRkdSX0hQUkU7DQorICANCisgIC8qIFNldCBIUFJFWzM6MF0gYml0cyBhY2NvcmRpbmcgdG8gUkNDX1NZU0NMSyB2YWx1ZSAqLw0KKyAgdG1wcmVnIHw9IFJDQ19TWVNDTEs7DQorICANCisgIC8qIFN0b3JlIHRoZSBuZXcgdmFsdWUgKi8NCisgIFJDQy0+Q0ZHUiA9IHRtcHJlZzsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgTG93IFNwZWVkIEFQQiBjbG9jayAoUENMSzEpLg0KKyAgKiBAcGFyYW0gIFJDQ19IQ0xLOiBkZWZpbmVzIHRoZSBBUEIxIGNsb2NrIGRpdmlkZXIuIFRoaXMgY2xvY2sgaXMgZGVyaXZlZCBmcm9tIA0KKyAgKiAgICAgICAgICAgICAgICAgICB0aGUgQUhCIGNsb2NrIChIQ0xLKS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXYxOiAgQVBCMSBjbG9jayA9IEhDTEsNCisgICogICAgIEBhcmcgUkNDX0hDTEtfRGl2MjogIEFQQjEgY2xvY2sgPSBIQ0xLLzINCisgICogICAgIEBhcmcgUkNDX0hDTEtfRGl2NDogIEFQQjEgY2xvY2sgPSBIQ0xLLzQNCisgICogICAgIEBhcmcgUkNDX0hDTEtfRGl2ODogIEFQQjEgY2xvY2sgPSBIQ0xLLzgNCisgICogICAgIEBhcmcgUkNDX0hDTEtfRGl2MTY6IEFQQjEgY2xvY2sgPSBIQ0xLLzE2DQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19QQ0xLMUNvbmZpZyh1aW50MzJfdCBSQ0NfSENMSykNCit7DQorICB1aW50MzJfdCB0bXByZWcgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19QQ0xLKFJDQ19IQ0xLKSk7DQorICANCisgIHRtcHJlZyA9IFJDQy0+Q0ZHUjsNCisgIA0KKyAgLyogQ2xlYXIgUFBSRTFbMjowXSBiaXRzICovDQorICB0bXByZWcgJj0gflJDQ19DRkdSX1BQUkUxOw0KKyAgDQorICAvKiBTZXQgUFBSRTFbMjowXSBiaXRzIGFjY29yZGluZyB0byBSQ0NfSENMSyB2YWx1ZSAqLw0KKyAgdG1wcmVnIHw9IFJDQ19IQ0xLOw0KKyAgDQorICAvKiBTdG9yZSB0aGUgbmV3IHZhbHVlICovDQorICBSQ0MtPkNGR1IgPSB0bXByZWc7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIEhpZ2ggU3BlZWQgQVBCIGNsb2NrIChQQ0xLMikuDQorICAqIEBwYXJhbSAgUkNDX0hDTEs6IGRlZmluZXMgdGhlIEFQQjIgY2xvY2sgZGl2aWRlci4gVGhpcyBjbG9jayBpcyBkZXJpdmVkIGZyb20gDQorICAqICAgICAgICAgICAgICAgICAgIHRoZSBBSEIgY2xvY2sgKEhDTEspLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFJDQ19IQ0xLX0RpdjE6ICBBUEIyIGNsb2NrID0gSENMSw0KKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXYyOiAgQVBCMiBjbG9jayA9IEhDTEsvMg0KKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXY0OiAgQVBCMiBjbG9jayA9IEhDTEsvNA0KKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXY4OiAgQVBCMiBjbG9jayA9IEhDTEsvOA0KKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXYxNjogQVBCMiBjbG9jayA9IEhDTEsvMTYNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX1BDTEsyQ29uZmlnKHVpbnQzMl90IFJDQ19IQ0xLKQ0KK3sNCisgIHVpbnQzMl90IHRtcHJlZyA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX1BDTEsoUkNDX0hDTEspKTsNCisgIA0KKyAgdG1wcmVnID0gUkNDLT5DRkdSOw0KKyAgDQorICAvKiBDbGVhciBQUFJFMlsyOjBdIGJpdHMgKi8NCisgIHRtcHJlZyAmPSB+UkNDX0NGR1JfUFBSRTI7DQorICANCisgIC8qIFNldCBQUFJFMlsyOjBdIGJpdHMgYWNjb3JkaW5nIHRvIFJDQ19IQ0xLIHZhbHVlICovDQorICB0bXByZWcgfD0gUkNDX0hDTEsgPDwgMzsNCisgIA0KKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLw0KKyAgUkNDLT5DRkdSID0gdG1wcmVnOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgUkNDIGludGVycnVwdHMuDQorICAqIEBwYXJhbSAgUkNDX0lUOiBzcGVjaWZpZXMgdGhlIFJDQyBpbnRlcnJ1cHQgc291cmNlcyB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFJDQ19JVF9MU0lSRFk6IExTSSByZWFkeSBpbnRlcnJ1cHQNCisgICogICAgIEBhcmcgUkNDX0lUX0xTRVJEWTogTFNFIHJlYWR5IGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBSQ0NfSVRfSFNJUkRZOiBIU0kgcmVhZHkgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFJDQ19JVF9IU0VSRFk6IEhTRSByZWFkeSBpbnRlcnJ1cHQNCisgICogICAgIEBhcmcgUkNDX0lUX1BMTFJEWTogUExMIHJlYWR5IGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBSQ0NfSVRfTVNJUkRZOiBNU0kgcmVhZHkgaW50ZXJydXB0DQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIFJDQyBpbnRlcnJ1cHRzLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19JVENvbmZpZyh1aW50OF90IFJDQ19JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX0lUKFJDQ19JVCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIFBlcmZvcm0gQnl0ZSBhY2Nlc3MgdG8gUkNDX0NJUlsxMjo4XSBiaXRzIHRvIGVuYWJsZSB0aGUgc2VsZWN0ZWQgaW50ZXJydXB0cyAqLw0KKyAgICAqKF9fSU8gdWludDhfdCAqKSBDSVJfQllURTJfQUREUkVTUyB8PSBSQ0NfSVQ7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIFBlcmZvcm0gQnl0ZSBhY2Nlc3MgdG8gUkNDX0NJUlsxMjo4XSBiaXRzIHRvIGRpc2FibGUgdGhlIHNlbGVjdGVkIGludGVycnVwdHMgKi8NCisgICAgKihfX0lPIHVpbnQ4X3QgKikgQ0lSX0JZVEUyX0FERFJFU1MgJj0gKHVpbnQ4X3QpflJDQ19JVDsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgRXh0ZXJuYWwgTG93IFNwZWVkIG9zY2lsbGF0b3IgKExTRSkuDQorICAqIEBwYXJhbSAgUkNDX0xTRTogc3BlY2lmaWVzIHRoZSBuZXcgc3RhdGUgb2YgdGhlIExTRS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfTFNFX09GRjogTFNFIG9zY2lsbGF0b3IgT0ZGDQorICAqICAgICBAYXJnIFJDQ19MU0VfT046IExTRSBvc2NpbGxhdG9yIE9ODQorICAqICAgICBAYXJnIFJDQ19MU0VfQnlwYXNzOiBMU0Ugb3NjaWxsYXRvciBieXBhc3NlZCB3aXRoIGV4dGVybmFsIGNsb2NrDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19MU0VDb25maWcodWludDhfdCBSQ0NfTFNFKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX0xTRShSQ0NfTFNFKSk7DQorICANCisgIC8qIFJlc2V0IExTRU9OIGFuZCBMU0VCWVAgYml0cyBiZWZvcmUgY29uZmlndXJpbmcgdGhlIExTRSAtLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgKihfX0lPIHVpbnQ4X3QgKikgQ1NSX0JZVEUyX0FERFJFU1MgPSBSQ0NfTFNFX09GRjsNCisNCisgIC8qIFNldCB0aGUgbmV3IExTRSBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgKihfX0lPIHVpbnQ4X3QgKikgQ1NSX0JZVEUyX0FERFJFU1MgPSBSQ0NfTFNFOyAgDQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEludGVybmFsIExvdyBTcGVlZCBvc2NpbGxhdG9yIChMU0kpLg0KKyAgKiBAbm90ZSAgIExTSSBjYW4gbm90IGJlIGRpc2FibGVkIGlmIHRoZSBJV0RHIGlzIHJ1bm5pbmcuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgTFNJLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19MU0lDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgDQorICAqKF9fSU8gdWludDMyX3QgKikgQ1NSX0xTSU9OX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBSVEMgYW5kIExDRCBjbG9jayAoUlRDQ0xLIC8gTENEQ0xLKS4NCisgICogQG5vdGUgICANCisgICogICAtIE9uY2UgdGhlIFJUQyBjbG9jayBpcyBzZWxlY3RlZCBpdCBjYW4ndCBiZSBjaGFuZ2VkIHVubGVzcyB0aGUgUlRDIGlzDQorICAqICAgICByZXNldCB1c2luZyBSQ0NfUlRDUmVzZXRDbWQgZnVuY3Rpb24uDQorICAqICAgLSBUaGlzIFJUQyBjbG9jayAoUlRDQ0xLKSBpcyB1c2VkIHRvIGNsb2NrIHRoZSBMQ0QgKExDRENMSykuICANCisgICogQHBhcmFtICBSQ0NfUlRDQ0xLU291cmNlOiBzcGVjaWZpZXMgdGhlIFJUQyBjbG9jayBzb3VyY2UuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgUkNDX1JUQ0NMS1NvdXJjZV9MU0U6IExTRSBzZWxlY3RlZCBhcyBSVEMgY2xvY2sNCisgICogICAgIEBhcmcgUkNDX1JUQ0NMS1NvdXJjZV9MU0k6IExTSSBzZWxlY3RlZCBhcyBSVEMgY2xvY2sNCisgICogICAgIEBhcmcgUkNDX1JUQ0NMS1NvdXJjZV9IU0VfRGl2MjogSFNFIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBSVEMgY2xvY2sNCisgICogICAgIEBhcmcgUkNDX1JUQ0NMS1NvdXJjZV9IU0VfRGl2NDogSFNFIGRpdmlkZWQgYnkgNCBzZWxlY3RlZCBhcyBSVEMgY2xvY2sNCisgICogICAgIEBhcmcgUkNDX1JUQ0NMS1NvdXJjZV9IU0VfRGl2ODogSFNFIGRpdmlkZWQgYnkgOCBzZWxlY3RlZCBhcyBSVEMgY2xvY2sNCisgICogICAgIEBhcmcgUkNDX1JUQ0NMS1NvdXJjZV9IU0VfRGl2MTY6IEhTRSBkaXZpZGVkIGJ5IDE2IHNlbGVjdGVkIGFzIFJUQyBjbG9jayAgICAgIA0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfUlRDQ0xLQ29uZmlnKHVpbnQzMl90IFJDQ19SVENDTEtTb3VyY2UpDQorew0KKyAgdWludDMyX3QgCXRtcHJlZyA9IDA7DQorDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19SVENDTEtfU09VUkNFKFJDQ19SVENDTEtTb3VyY2UpKTsNCisgIA0KKyAgaWYgKChSQ0NfUlRDQ0xLU291cmNlICYgUkNDX0NTUl9SVENTRUxfSFNFKSA9PSBSQ0NfQ1NSX1JUQ1NFTF9IU0UpDQorICB7IA0KKyAgICAvKiBJZiBIU0UgaXMgc2VsZWN0ZWQgYXMgUlRDIGNsb2NrIHNvdXJjZSwgY29uZmlndXJlIEhTRSBkaXZpc2lvbiBmYWN0b3IgZm9yIFJUQyBjbG9jayAqLw0KKyAgICB0bXByZWcgPSBSQ0MtPkNSOw0KKw0KKyAgICAvKiBDbGVhciBSVENQUkVbMTowXSBiaXRzICovDQorICAgIHRtcHJlZyAmPSB+UkNDX0NSX1JUQ1BSRTsNCisNCisgICAgLyogQ29uZmlndXJlIEhTRSBkaXZpc2lvbiBmYWN0b3IgZm9yIFJUQyBjbG9jayAqLw0KKyAgICB0bXByZWcgfD0gKFJDQ19SVENDTEtTb3VyY2UgJiBSQ0NfQ1JfUlRDUFJFKTsNCisNCisgICAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLw0KKyAgICBSQ0MtPkNSID0gdG1wcmVnOw0KKyAgfQ0KKyAgICAgICAgIA0KKyAgUkNDLT5DU1IgJj0gflJDQ19DU1JfUlRDU0VMOw0KKyAgDQorICAvKiBTZWxlY3QgdGhlIFJUQyBjbG9jayBzb3VyY2UgKi8NCisgIFJDQy0+Q1NSIHw9IChSQ0NfUlRDQ0xLU291cmNlICYgUkNDX0NTUl9SVENTRUwpOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBSVEMgY2xvY2suDQorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgb25seSBhZnRlciB0aGUgUlRDIGNsb2NrIHdhcyBzZWxlY3RlZCB1c2luZyB0aGUgDQorICAqICAgUkNDX1JUQ0NMS0NvbmZpZyBmdW5jdGlvbi4NCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBSVEMgY2xvY2suDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX1JUQ0NMS0NtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgICooX19JTyB1aW50MzJfdCAqKSBDU1JfUlRDRU5fQkIgPSAodWludDMyX3QpTmV3U3RhdGU7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZvcmNlcyBvciByZWxlYXNlcyB0aGUgUlRDIHBlcmlwaGVyYWwgcmVzZXQuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgUlRDIHJlc2V0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19SVENSZXNldENtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgICooX19JTyB1aW50MzJfdCAqKSBDU1JfUlRDUlNUX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBmcmVxdWVuY2llcyBvZiBkaWZmZXJlbnQgb24gY2hpcCBjbG9ja3MuDQorICAqIEBwYXJhbSAgUkNDX0Nsb2NrczogcG9pbnRlciB0byBhIFJDQ19DbG9ja3NUeXBlRGVmIHN0cnVjdHVyZSB3aGljaCB3aWxsIGhvbGQgDQorICAqICAgdGhlIGNsb2NrcyBmcmVxdWVuY2llcy4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX0dldENsb2Nrc0ZyZXEoUkNDX0Nsb2Nrc1R5cGVEZWYqIFJDQ19DbG9ja3MpDQorew0KKyAgdWludDMyX3QgdG1wID0gMCwgcGxsbXVsID0gMCwgcGxsZGl2ID0gMCwgcGxsc291cmNlID0gMCwgcHJlc2MgPSAwLCBtc2lyYW5nZSA9IDA7DQorDQorICAvKiBHZXQgU1lTQ0xLIHNvdXJjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIHRtcCA9IFJDQy0+Q0ZHUiAmIFJDQ19DRkdSX1NXUzsNCisgIA0KKyAgc3dpdGNoICh0bXApDQorICB7DQorICAgIGNhc2UgMHgwMDogIC8qIE1TSSB1c2VkIGFzIHN5c3RlbSBjbG9jayAqLw0KKyAgICAgIG1zaXJhbmdlID0gKFJDQy0+SUNTQ1IgJiBSQ0NfSUNTQ1JfTVNJUkFOR0UgKSA+PiAxMzsNCisgICAgICBSQ0NfQ2xvY2tzLT5TWVNDTEtfRnJlcXVlbmN5ID0gKCgoMSA8PCBtc2lyYW5nZSkgKiA2NDAwMCkgLSAoTVNJVGFibGVbbXNpcmFuZ2VdICogMjQwMDApKTsNCisgICAgICBicmVhazsNCisgICAgY2FzZSAweDA0OiAgLyogSFNJIHVzZWQgYXMgc3lzdGVtIGNsb2NrICovDQorICAgICAgUkNDX0Nsb2Nrcy0+U1lTQ0xLX0ZyZXF1ZW5jeSA9IEhTSV9WQUxVRTsNCisgICAgICBicmVhazsNCisgICAgY2FzZSAweDA4OiAgLyogSFNFIHVzZWQgYXMgc3lzdGVtIGNsb2NrICovDQorICAgICAgUkNDX0Nsb2Nrcy0+U1lTQ0xLX0ZyZXF1ZW5jeSA9IEhTRV9WQUxVRTsNCisgICAgICBicmVhazsNCisgICAgY2FzZSAweDBDOiAgLyogUExMIHVzZWQgYXMgc3lzdGVtIGNsb2NrICovDQorICAgICAgLyogR2V0IFBMTCBjbG9jayBzb3VyY2UgYW5kIG11bHRpcGxpY2F0aW9uIGZhY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgICAgICBwbGxtdWwgPSBSQ0MtPkNGR1IgJiBSQ0NfQ0ZHUl9QTExNVUw7DQorICAgICAgcGxsZGl2ID0gUkNDLT5DRkdSICYgUkNDX0NGR1JfUExMRElWOw0KKyAgICAgIHBsbG11bCA9IFBMTE11bFRhYmxlWyhwbGxtdWwgPj4gMTgpXTsNCisgICAgICBwbGxkaXYgPSAocGxsZGl2ID4+IDIyKSArIDE7DQorICAgICAgDQorICAgICAgcGxsc291cmNlID0gUkNDLT5DRkdSICYgUkNDX0NGR1JfUExMU1JDOw0KKw0KKyAgICAgIGlmIChwbGxzb3VyY2UgPT0gMHgwMCkNCisgICAgICB7DQorICAgICAgICAvKiBIU0kgb3NjaWxsYXRvciBjbG9jayBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkgKi8NCisgICAgICAgIFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPSAoKChIU0lfVkFMVUUpICogcGxsbXVsKSAvIHBsbGRpdik7DQorICAgICAgfQ0KKyAgICAgIGVsc2UNCisgICAgICB7DQorICAgICAgICAvKiBIU0Ugc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5ICovDQorICAgICAgICBSQ0NfQ2xvY2tzLT5TWVNDTEtfRnJlcXVlbmN5ID0gKCgoSFNFX1ZBTFVFKSAqIHBsbG11bCkgLyBwbGxkaXYpOw0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisgICAgZGVmYXVsdDoNCisgICAgICBSQ0NfQ2xvY2tzLT5TWVNDTEtfRnJlcXVlbmN5ID0gSFNJX1ZBTFVFOw0KKyAgICAgIGJyZWFrOw0KKyAgfQ0KKyAgLyogQ29tcHV0ZSBIQ0xLLCBQQ0xLMSwgUENMSzIgYW5kIEFEQ0NMSyBjbG9ja3MgZnJlcXVlbmNpZXMgLS0tLS0tLS0tLS0tLS0tLSovDQorICAvKiBHZXQgSENMSyBwcmVzY2FsZXIgKi8NCisgIHRtcCA9IFJDQy0+Q0ZHUiAmIFJDQ19DRkdSX0hQUkU7DQorICB0bXAgPSB0bXAgPj4gNDsNCisgIHByZXNjID0gQVBCQUhCUHJlc2NUYWJsZVt0bXBdOyANCisgIC8qIEhDTEsgY2xvY2sgZnJlcXVlbmN5ICovDQorICBSQ0NfQ2xvY2tzLT5IQ0xLX0ZyZXF1ZW5jeSA9IFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPj4gcHJlc2M7DQorDQorICAvKiBHZXQgUENMSzEgcHJlc2NhbGVyICovDQorICB0bXAgPSBSQ0MtPkNGR1IgJiBSQ0NfQ0ZHUl9QUFJFMTsNCisgIHRtcCA9IHRtcCA+PiA4Ow0KKyAgcHJlc2MgPSBBUEJBSEJQcmVzY1RhYmxlW3RtcF07DQorICAvKiBQQ0xLMSBjbG9jayBmcmVxdWVuY3kgKi8NCisgIFJDQ19DbG9ja3MtPlBDTEsxX0ZyZXF1ZW5jeSA9IFJDQ19DbG9ja3MtPkhDTEtfRnJlcXVlbmN5ID4+IHByZXNjOw0KKw0KKyAgLyogR2V0IFBDTEsyIHByZXNjYWxlciAqLw0KKyAgdG1wID0gUkNDLT5DRkdSICYgUkNDX0NGR1JfUFBSRTI7DQorICB0bXAgPSB0bXAgPj4gMTE7DQorICBwcmVzYyA9IEFQQkFIQlByZXNjVGFibGVbdG1wXTsNCisgIC8qIFBDTEsyIGNsb2NrIGZyZXF1ZW5jeSAqLw0KKyAgUkNDX0Nsb2Nrcy0+UENMSzJfRnJlcXVlbmN5ID0gUkNDX0Nsb2Nrcy0+SENMS19GcmVxdWVuY3kgPj4gcHJlc2M7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEFIQiBwZXJpcGhlcmFsIGNsb2NrLg0KKyAgKiBAcGFyYW0gIFJDQ19BSEJQZXJpcGg6IHNwZWNpZmllcyB0aGUgQUhCIHBlcmlwaGVyYWwgdG8gZ2F0ZXMgaXRzIGNsb2NrLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFJDQ19BSEJQZXJpcGhfR1BJT0ENCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9HUElPQg0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0dQSU9DICANCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9HUElPRA0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0dQSU9FDQorICAqICAgICBAYXJnIFJDQ19BSEJQZXJpcGhfR1BJT0gNCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9DUkMNCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9GTElURiAoaGFzIGVmZmVjdCBvbmx5IHdoZW4gdGhlIEZsYXNoIG1lbW9yeSBpcyBpbiBwb3dlciBkb3duIG1vZGUpICANCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9ETUExDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwgY2xvY2suDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX0FIQlBlcmlwaENsb2NrQ21kKHVpbnQzMl90IFJDQ19BSEJQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19BSEJfUEVSSVBIKFJDQ19BSEJQZXJpcGgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICBSQ0MtPkFIQkVOUiB8PSBSQ0NfQUhCUGVyaXBoOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBSQ0MtPkFIQkVOUiAmPSB+UkNDX0FIQlBlcmlwaDsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgSGlnaCBTcGVlZCBBUEIgKEFQQjIpIHBlcmlwaGVyYWwgY2xvY2suDQorICAqIEBwYXJhbSAgUkNDX0FQQjJQZXJpcGg6IHNwZWNpZmllcyB0aGUgQVBCMiBwZXJpcGhlcmFsIHRvIGdhdGVzIGl0cyBjbG9jay4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9TWVNDRkcNCisgICogICAgIEBhcmcgUkNDX0FQQjJQZXJpcGhfVElNOQ0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9USU0xMA0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9USU0xMQ0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9BREMxDQorICAqICAgICBAYXJnIFJDQ19BUEIyUGVyaXBoX1NQSTENCisgICogICAgIEBhcmcgUkNDX0FQQjJQZXJpcGhfVVNBUlQxICAgICAgICAgICAgDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwgY2xvY2suDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX0FQQjJQZXJpcGhDbG9ja0NtZCh1aW50MzJfdCBSQ0NfQVBCMlBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX0FQQjJfUEVSSVBIKFJDQ19BUEIyUGVyaXBoKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKw0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIFJDQy0+QVBCMkVOUiB8PSBSQ0NfQVBCMlBlcmlwaDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgUkNDLT5BUEIyRU5SICY9IH5SQ0NfQVBCMlBlcmlwaDsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgTG93IFNwZWVkIEFQQiAoQVBCMSkgcGVyaXBoZXJhbCBjbG9jay4NCisgICogQHBhcmFtICBSQ0NfQVBCMVBlcmlwaDogc3BlY2lmaWVzIHRoZSBBUEIxIHBlcmlwaGVyYWwgdG8gZ2F0ZXMgaXRzIGNsb2NrLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1RJTTINCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfVElNMw0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9USU00DQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1RJTTYNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfVElNNw0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9MQ0QNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfV1dERw0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9TUEkyDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1VTQVJUMg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9VU0FSVDMNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfSTJDMQ0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9JMkMyDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1VTQg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9QV1INCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfREFDDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX0NPTVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBwZXJpcGhlcmFsIGNsb2NrLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19BUEIxUGVyaXBoQ2xvY2tDbWQodWludDMyX3QgUkNDX0FQQjFQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19BUEIxX1BFUklQSChSQ0NfQVBCMVBlcmlwaCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisNCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICBSQ0MtPkFQQjFFTlIgfD0gUkNDX0FQQjFQZXJpcGg7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIFJDQy0+QVBCMUVOUiAmPSB+UkNDX0FQQjFQZXJpcGg7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZvcmNlcyBvciByZWxlYXNlcyBBSEIgcGVyaXBoZXJhbCByZXNldC4NCisgICogQHBhcmFtICBSQ0NfQUhCUGVyaXBoOiBzcGVjaWZpZXMgdGhlIEFIQiBwZXJpcGhlcmFsIHRvIHJlc2V0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFJDQ19BSEJQZXJpcGhfR1BJT0ENCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9HUElPQg0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0dQSU9DICANCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9HUElPRA0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0dQSU9FDQorICAqICAgICBAYXJnIFJDQ19BSEJQZXJpcGhfR1BJT0gNCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9DUkMNCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9GTElURiAoaGFzIGVmZmVjdCBvbmx5IHdoZW4gdGhlIEZsYXNoIG1lbW9yeSBpcyBpbiBwb3dlciBkb3duIG1vZGUpICANCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9ETUExICAgDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwgcmVzZXQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgUkNDX0FIQlBlcmlwaFJlc2V0Q21kKHVpbnQzMl90IFJDQ19BSEJQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19BSEJfUEVSSVBIKFJDQ19BSEJQZXJpcGgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgUkNDLT5BSEJSU1RSIHw9IFJDQ19BSEJQZXJpcGg7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIFJDQy0+QUhCUlNUUiAmPSB+UkNDX0FIQlBlcmlwaDsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRm9yY2VzIG9yIHJlbGVhc2VzIEhpZ2ggU3BlZWQgQVBCIChBUEIyKSBwZXJpcGhlcmFsIHJlc2V0Lg0KKyAgKiBAcGFyYW0gIFJDQ19BUEIyUGVyaXBoOiBzcGVjaWZpZXMgdGhlIEFQQjIgcGVyaXBoZXJhbCB0byByZXNldC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9TWVNDRkcNCisgICogICAgIEBhcmcgUkNDX0FQQjJQZXJpcGhfVElNOQ0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9USU0xMA0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9USU0xMQ0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9BREMxDQorICAqICAgICBAYXJnIFJDQ19BUEIyUGVyaXBoX1NQSTENCisgICogICAgIEBhcmcgUkNDX0FQQjJQZXJpcGhfVVNBUlQxICANCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCByZXNldC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKHVpbnQzMl90IFJDQ19BUEIyUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19SQ0NfQVBCMl9QRVJJUEgoUkNDX0FQQjJQZXJpcGgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgUkNDLT5BUEIyUlNUUiB8PSBSQ0NfQVBCMlBlcmlwaDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgUkNDLT5BUEIyUlNUUiAmPSB+UkNDX0FQQjJQZXJpcGg7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZvcmNlcyBvciByZWxlYXNlcyBMb3cgU3BlZWQgQVBCIChBUEIxKSBwZXJpcGhlcmFsIHJlc2V0Lg0KKyAgKiBAcGFyYW0gIFJDQ19BUEIxUGVyaXBoOiBzcGVjaWZpZXMgdGhlIEFQQjEgcGVyaXBoZXJhbCB0byByZXNldC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9USU0yDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1RJTTMNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfVElNNA0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9USU02DQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1RJTTcNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfTENEDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1dXREcNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfU1BJMg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9VU0FSVDINCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfVVNBUlQzDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX0kyQzENCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfSTJDMg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9VU0INCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfUFdSDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX0RBQw0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9DT01QICAgIA0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBwZXJpcGhlcmFsIGNsb2NrLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQodWludDMyX3QgUkNDX0FQQjFQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19BUEIxX1BFUklQSChSQ0NfQVBCMVBlcmlwaCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisNCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICBSQ0MtPkFQQjFSU1RSIHw9IFJDQ19BUEIxUGVyaXBoOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBSQ0MtPkFQQjFSU1RSICY9IH5SQ0NfQVBCMVBlcmlwaDsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgQUhCIHBlcmlwaGVyYWwgY2xvY2sgZHVyaW5nIExvdyBQb3dlciAoU0xFRVApIG1vZGUuDQorICAqIEBwYXJhbSAgUkNDX0FIQlBlcmlwaDogc3BlY2lmaWVzIHRoZSBBSEIgcGVyaXBoZXJhbCB0byBnYXRlcyBpdHMgY2xvY2suDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9HUElPQQ0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0dQSU9CDQorICAqICAgICBAYXJnIFJDQ19BSEJQZXJpcGhfR1BJT0MgIA0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0dQSU9EDQorICAqICAgICBAYXJnIFJDQ19BSEJQZXJpcGhfR1BJT0UNCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9HUElPSA0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0NSQw0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0ZMSVRGIChoYXMgZWZmZWN0IG9ubHkgd2hlbiB0aGUgRmxhc2ggbWVtb3J5IGlzIGluIHBvd2VyIGRvd24gbW9kZSkgIA0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX1NSQU0gICAgIA0KKyAgKiAgICAgQGFyZyBSQ0NfQUhCUGVyaXBoX0RNQTENCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCBjbG9jay4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfQUhCUGVyaXBoQ2xvY2tMUE1vZGVDbWQodWludDMyX3QgUkNDX0FIQlBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX0FIQl9MUE1PREVfUEVSSVBIKFJDQ19BSEJQZXJpcGgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICBSQ0MtPkFIQkxQRU5SIHw9IFJDQ19BSEJQZXJpcGg7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIFJDQy0+QUhCTFBFTlIgJj0gflJDQ19BSEJQZXJpcGg7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEFQQjIgcGVyaXBoZXJhbCBjbG9jayBkdXJpbmcgTG93IFBvd2VyIChTTEVFUCkgbW9kZS4NCisgICogQHBhcmFtICBSQ0NfQVBCMlBlcmlwaDogc3BlY2lmaWVzIHRoZSBBUEIyIHBlcmlwaGVyYWwgdG8gZ2F0ZXMgaXRzIGNsb2NrLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFJDQ19BUEIyUGVyaXBoX1NZU0NGRw0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9USU05DQorICAqICAgICBAYXJnIFJDQ19BUEIyUGVyaXBoX1RJTTEwDQorICAqICAgICBAYXJnIFJDQ19BUEIyUGVyaXBoX1RJTTExDQorICAqICAgICBAYXJnIFJDQ19BUEIyUGVyaXBoX0FEQzENCisgICogICAgIEBhcmcgUkNDX0FQQjJQZXJpcGhfU1BJMQ0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9VU0FSVDEgICAgICAgICAgICANCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCBjbG9jay4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfQVBCMlBlcmlwaENsb2NrTFBNb2RlQ21kKHVpbnQzMl90IFJDQ19BUEIyUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19SQ0NfQVBCMl9QRVJJUEgoUkNDX0FQQjJQZXJpcGgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICBSQ0MtPkFQQjJMUEVOUiB8PSBSQ0NfQVBCMlBlcmlwaDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgUkNDLT5BUEIyTFBFTlIgJj0gflJDQ19BUEIyUGVyaXBoOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBBUEIxIHBlcmlwaGVyYWwgY2xvY2sgZHVyaW5nIExvdyBQb3dlciAoU0xFRVApIG1vZGUuDQorICAqIEBwYXJhbSAgUkNDX0FQQjFQZXJpcGg6IHNwZWNpZmllcyB0aGUgQVBCMSBwZXJpcGhlcmFsIHRvIGdhdGVzIGl0cyBjbG9jay4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9USU0yDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1RJTTMNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfVElNNA0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9USU02DQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1RJTTcNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfTENEDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1dXREcNCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfU1BJMg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9VU0FSVDINCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfVVNBUlQzDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX0kyQzENCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfSTJDMg0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9VU0INCisgICogICAgIEBhcmcgUkNDX0FQQjFQZXJpcGhfUFdSDQorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX0RBQw0KKyAgKiAgICAgQGFyZyBSQ0NfQVBCMVBlcmlwaF9DT01QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCBjbG9jay4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfQVBCMVBlcmlwaENsb2NrTFBNb2RlQ21kKHVpbnQzMl90IFJDQ19BUEIxUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19SQ0NfQVBCMV9QRVJJUEgoUkNDX0FQQjFQZXJpcGgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICBSQ0MtPkFQQjFMUEVOUiB8PSBSQ0NfQVBCMVBlcmlwaDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgUkNDLT5BUEIxTFBFTlIgJj0gflJDQ19BUEIxUGVyaXBoOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBDbG9jayBTZWN1cml0eSBTeXN0ZW0uDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgQ2xvY2sgU2VjdXJpdHkgU3lzdGVtLi4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfQ2xvY2tTZWN1cml0eVN5c3RlbUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgICooX19JTyB1aW50MzJfdCAqKSBDUl9DU1NPTl9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgY2xvY2sgc291cmNlIHRvIG91dHB1dCBvbiBNQ08gcGluLg0KKyAgKiBAcGFyYW0gIFJDQ19NQ09Tb3VyY2U6IHNwZWNpZmllcyB0aGUgY2xvY2sgc291cmNlIHRvIG91dHB1dC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfTUNPU291cmNlX05vQ2xvY2s6IE5vIGNsb2NrIHNlbGVjdGVkDQorICAqICAgICBAYXJnIFJDQ19NQ09Tb3VyY2VfU1lTQ0xLOiBTeXN0ZW0gY2xvY2sgc2VsZWN0ZWQNCisgICogICAgIEBhcmcgUkNDX01DT1NvdXJjZV9IU0k6IEhTSSBvc2NpbGxhdG9yIGNsb2NrIHNlbGVjdGVkDQorICAqICAgICBAYXJnIFJDQ19NQ09Tb3VyY2VfTVNJOiBNU0kgb3NjaWxsYXRvciBjbG9jayBzZWxlY3RlZCAgDQorICAqICAgICBAYXJnIFJDQ19NQ09Tb3VyY2VfSFNFOiBIU0Ugb3NjaWxsYXRvciBjbG9jayBzZWxlY3RlZA0KKyAgKiAgICAgQGFyZyBSQ0NfTUNPU291cmNlX1BMTENMSzogUExMIGNsb2NrIHNlbGVjdGVkDQorICAqICAgICBAYXJnIFJDQ19NQ09Tb3VyY2VfTFNJOiBMU0kgY2xvY2sgc2VsZWN0ZWQNCisgICogICAgIEBhcmcgUkNDX01DT1NvdXJjZV9MU0U6IExTRSBjbG9jayBzZWxlY3RlZCAgICANCisgICogQHBhcmFtICBSQ0NfTUNPRGl2OiBzcGVjaWZpZXMgdGhlIE1DTyBwcmVzY2FsZXIuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogDQorICAqICAgICBAYXJnIFJDQ19NQ09EaXZfMTogbm8gZGl2aXNpb24gYXBwbGllZCB0byBNQ08gY2xvY2sgDQorICAqICAgICBAYXJnIFJDQ19NQ09EaXZfMjogZGl2aXNpb24gYnkgMiBhcHBsaWVkIHRvIE1DTyBjbG9jaw0KKyAgKiAgICAgQGFyZyBSQ0NfTUNPRGl2XzQ6IGRpdmlzaW9uIGJ5IDQgYXBwbGllZCB0byBNQ08gY2xvY2sNCisgICogICAgIEBhcmcgUkNDX01DT0Rpdl84OiBkaXZpc2lvbiBieSA4IGFwcGxpZWQgdG8gTUNPIGNsb2NrDQorICAqICAgICBAYXJnIFJDQ19NQ09EaXZfMTY6IGRpdmlzaW9uIGJ5IDE2IGFwcGxpZWQgdG8gTUNPIGNsb2NrICAgICAgICAgICAgIA0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfTUNPQ29uZmlnKHVpbnQ4X3QgUkNDX01DT1NvdXJjZSwgdWludDhfdCBSQ0NfTUNPRGl2KQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUkNDX01DT19TT1VSQ0UoUkNDX01DT1NvdXJjZSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19NQ09fRElWKFJDQ19NQ09EaXYpKTsNCisgICAgDQorICAvKiBTZWxlY3QgTUNPIGNsb2NrIHNvdXJjZSBhbmQgcHJlc2NhbGVyICovDQorICAqKF9fSU8gdWludDhfdCAqKSBDRkdSX0JZVEU0X0FERFJFU1MgPSAgUkNDX01DT1NvdXJjZSB8IFJDQ19NQ09EaXY7IA0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFJDQyBmbGFnIGlzIHNldCBvciBub3QuDQorICAqIEBwYXJhbSAgUkNDX0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjaGVjay4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19IU0lSRFk6IEhTSSBvc2NpbGxhdG9yIGNsb2NrIHJlYWR5DQorICAqICAgICBAYXJnIFJDQ19GTEFHX01TSVJEWTogTVNJIG9zY2lsbGF0b3IgY2xvY2sgcmVhZHkgIA0KKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19IU0VSRFk6IEhTRSBvc2NpbGxhdG9yIGNsb2NrIHJlYWR5DQorICAqICAgICBAYXJnIFJDQ19GTEFHX1BMTFJEWTogUExMIGNsb2NrIHJlYWR5DQorICAqICAgICBAYXJnIFJDQ19GTEFHX0xTRVJEWTogTFNFIG9zY2lsbGF0b3IgY2xvY2sgcmVhZHkNCisgICogICAgIEBhcmcgUkNDX0ZMQUdfTFNJUkRZOiBMU0kgb3NjaWxsYXRvciBjbG9jayByZWFkeQ0KKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19PQkxSU1Q6IE9wdGlvbiBCeXRlIExvYWRlciAoT0JMKSByZXNldCANCisgICogICAgIEBhcmcgUkNDX0ZMQUdfUElOUlNUOiBQaW4gcmVzZXQNCisgICogICAgIEBhcmcgUkNDX0ZMQUdfUE9SUlNUOiBQT1IvUERSIHJlc2V0DQorICAqICAgICBAYXJnIFJDQ19GTEFHX1NGVFJTVDogU29mdHdhcmUgcmVzZXQNCisgICogICAgIEBhcmcgUkNDX0ZMQUdfSVdER1JTVDogSW5kZXBlbmRlbnQgV2F0Y2hkb2cgcmVzZXQNCisgICogICAgIEBhcmcgUkNDX0ZMQUdfV1dER1JTVDogV2luZG93IFdhdGNoZG9nIHJlc2V0DQorICAqICAgICBAYXJnIFJDQ19GTEFHX0xQV1JSU1Q6IExvdyBQb3dlciByZXNldA0KKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgUkNDX0ZMQUcgKFNFVCBvciBSRVNFVCkuDQorICAqLw0KK0ZsYWdTdGF0dXMgUkNDX0dldEZsYWdTdGF0dXModWludDhfdCBSQ0NfRkxBRykNCit7DQorICB1aW50MzJfdCB0bXAgPSAwOw0KKyAgdWludDMyX3Qgc3RhdHVzcmVnID0gMDsNCisgIEZsYWdTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7DQorDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19GTEFHKFJDQ19GTEFHKSk7DQorDQorICAvKiBHZXQgdGhlIFJDQyByZWdpc3RlciBpbmRleCAqLw0KKyAgdG1wID0gUkNDX0ZMQUcgPj4gNTsNCisNCisgIGlmICh0bXAgPT0gMSkgICAgICAgICAgICAgICAvKiBUaGUgZmxhZyB0byBjaGVjayBpcyBpbiBDUiByZWdpc3RlciAqLw0KKyAgew0KKyAgICBzdGF0dXNyZWcgPSBSQ0MtPkNSOw0KKyAgfQ0KKyAgZWxzZSAgICAgICAgICAvKiBUaGUgZmxhZyB0byBjaGVjayBpcyBpbiBDU1IgcmVnaXN0ZXIgKHRtcCA9PSAyKSAqLw0KKyAgew0KKyAgICBzdGF0dXNyZWcgPSBSQ0MtPkNTUjsNCisgIH0NCisNCisgIC8qIEdldCB0aGUgZmxhZyBwb3NpdGlvbiAqLw0KKyAgdG1wID0gUkNDX0ZMQUcgJiBGTEFHX01BU0s7DQorDQorICBpZiAoKHN0YXR1c3JlZyAmICgodWludDMyX3QpMSA8PCB0bXApKSAhPSAodWludDMyX3QpUkVTRVQpDQorICB7DQorICAgIGJpdHN0YXR1cyA9IFNFVDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgYml0c3RhdHVzID0gUkVTRVQ7DQorICB9DQorICAvKiBSZXR1cm4gdGhlIGZsYWcgc3RhdHVzICovDQorICByZXR1cm4gYml0c3RhdHVzOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDbGVhcnMgdGhlIFJDQyByZXNldCBmbGFncy4NCisgICogICBUaGUgcmVzZXQgZmxhZ3MgYXJlOiBSQ0NfRkxBR19PQkxSU1QsIFJDQ19GTEFHX1BJTlJTVCwgUkNDX0ZMQUdfUE9SUlNULCANCisgICogICBSQ0NfRkxBR19TRlRSU1QsIFJDQ19GTEFHX0lXREdSU1QsIFJDQ19GTEFHX1dXREdSU1QsIFJDQ19GTEFHX0xQV1JSU1QuDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBSQ0NfQ2xlYXJGbGFnKHZvaWQpDQorew0KKyAgLyogU2V0IFJNVkYgYml0IHRvIGNsZWFyIHRoZSByZXNldCBmbGFncyAqLw0KKyAgUkNDLT5DU1IgfD0gUkNDX0NTUl9STVZGOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFJDQyBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4NCisgICogQHBhcmFtICBSQ0NfSVQ6IHNwZWNpZmllcyB0aGUgUkNDIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgUkNDX0lUX0xTSVJEWTogTFNJIHJlYWR5IGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBSQ0NfSVRfTFNFUkRZOiBMU0UgcmVhZHkgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFJDQ19JVF9IU0lSRFk6IEhTSSByZWFkeSBpbnRlcnJ1cHQNCisgICogICAgIEBhcmcgUkNDX0lUX0hTRVJEWTogSFNFIHJlYWR5IGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBSQ0NfSVRfUExMUkRZOiBQTEwgcmVhZHkgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFJDQ19JVF9NU0lSRFk6IE1TSSByZWFkeSBpbnRlcnJ1cHQgDQorICAqICAgICBAYXJnIFJDQ19JVF9DU1M6IENsb2NrIFNlY3VyaXR5IFN5c3RlbSBpbnRlcnJ1cHQNCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIFJDQ19JVCAoU0VUIG9yIFJFU0VUKS4NCisgICovDQorSVRTdGF0dXMgUkNDX0dldElUU3RhdHVzKHVpbnQ4X3QgUkNDX0lUKQ0KK3sNCisgIElUU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19SQ0NfR0VUX0lUKFJDQ19JVCkpOw0KKyAgDQorICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgUkNDIGludGVycnVwdCAqLw0KKyAgaWYgKChSQ0MtPkNJUiAmIFJDQ19JVCkgIT0gKHVpbnQzMl90KVJFU0VUKQ0KKyAgew0KKyAgICBiaXRzdGF0dXMgPSBTRVQ7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgfQ0KKyAgLyogUmV0dXJuIHRoZSBSQ0NfSVQgc3RhdHVzICovDQorICByZXR1cm4gIGJpdHN0YXR1czsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBSQ0MncyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzLg0KKyAgKiBAcGFyYW0gIFJDQ19JVDogc3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgdG8gY2xlYXIuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgUkNDX0lUX0xTSVJEWTogTFNJIHJlYWR5IGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBSQ0NfSVRfTFNFUkRZOiBMU0UgcmVhZHkgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFJDQ19JVF9IU0lSRFk6IEhTSSByZWFkeSBpbnRlcnJ1cHQNCisgICogICAgIEBhcmcgUkNDX0lUX0hTRVJEWTogSFNFIHJlYWR5IGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBSQ0NfSVRfUExMUkRZOiBQTEwgcmVhZHkgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFJDQ19JVF9NU0lSRFk6IE1TSSByZWFkeSBpbnRlcnJ1cHQgIA0KKyAgKiAgICAgQGFyZyBSQ0NfSVRfQ1NTOiBDbG9jayBTZWN1cml0eSBTeXN0ZW0gaW50ZXJydXB0DQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFJDQ19DbGVhcklUUGVuZGluZ0JpdCh1aW50OF90IFJDQ19JVCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19DTEVBUl9JVChSQ0NfSVQpKTsNCisgIA0KKyAgLyogUGVyZm9ybSBCeXRlIGFjY2VzcyB0byBSQ0NfQ0lSWzIzOjE2XSBiaXRzIHRvIGNsZWFyIHRoZSBzZWxlY3RlZCBpbnRlcnJ1cHQNCisgICAgIHBlbmRpbmcgYml0cyAqLw0KKyAgKihfX0lPIHVpbnQ4X3QgKikgQ0lSX0JZVEUzX0FERFJFU1MgPSBSQ0NfSVQ7DQorfQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF9zcGkuYyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL3NyYy9zdG0zMmwxeHhfc3BpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdlNGIzOAotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL3NyYy9zdG0zMmwxeHhfc3BpLmMKQEAgLTAsMCArMSw2NDEgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDF4eF9zcGkuYw0KKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWMS4wLjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBTUEkgZmlybXdhcmUgZnVuY3Rpb25zLg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBjb3B5DQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKi8gDQorDQorLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaW5jbHVkZSAic3RtMzJsMXh4X3NwaS5oIg0KKyNpbmNsdWRlICJzdG0zMmwxeHhfcmNjLmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1BJIA0KKyAgKiBAYnJpZWYgU1BJIGRyaXZlciBtb2R1bGVzDQorICAqIEB7DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFNQSV9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisNCisvKiogQGRlZmdyb3VwIFNQSV9Qcml2YXRlX0RlZmluZXMNCisgICogQHsNCisgICovDQorDQorLyogU1BJIHJlZ2lzdGVycyBNYXNrcyAqLw0KKyNkZWZpbmUgQ1IxX0NMRUFSX01BU0sgICAgICAgKCh1aW50MTZfdCkweDMwNDApDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1BJX1ByaXZhdGVfTWFjcm9zDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNQSV9Qcml2YXRlX1ZhcmlhYmxlcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBTUElfUHJpdmF0ZV9GdW5jdGlvblByb3RvdHlwZXMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgU1BJX1ByaXZhdGVfRnVuY3Rpb25zDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZXMgdGhlIFNQSXggcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdA0KKyAgKiAgICAgICAgIHJlc2V0IHZhbHVlcy4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBTUEkgcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1BJX0RlSW5pdChTUElfVHlwZURlZiogU1BJeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsNCisNCisgIGlmIChTUEl4ID09IFNQSTEpDQorICB7DQorICAgIC8qIEVuYWJsZSBTUEkxIHJlc2V0IHN0YXRlICovDQorICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfU1BJMSwgRU5BQkxFKTsNCisgICAgLyogUmVsZWFzZSBTUEkxIGZyb20gcmVzZXQgc3RhdGUgKi8NCisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9TUEkxLCBESVNBQkxFKTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgaWYgKFNQSXggPT0gU1BJMikNCisgICAgew0KKyAgICAgIC8qIEVuYWJsZSBTUEkyIHJlc2V0IHN0YXRlICovDQorICAgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9TUEkyLCBFTkFCTEUpOw0KKyAgICAgIC8qIFJlbGVhc2UgU1BJMiBmcm9tIHJlc2V0IHN0YXRlICovDQorICAgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9TUEkyLCBESVNBQkxFKTsNCisgICAgfQ0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgU1BJeCBwZXJpcGhlcmFsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIA0KKyAgKiAgIHBhcmFtZXRlcnMgaW4gdGhlIFNQSV9Jbml0U3RydWN0Lg0KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIFNQSSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFNQSV9Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgU1BJX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0DQorICAqICAgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgU1BJIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNQSV9Jbml0KFNQSV9UeXBlRGVmKiBTUEl4LCBTUElfSW5pdFR5cGVEZWYqIFNQSV9Jbml0U3RydWN0KQ0KK3sNCisgIHVpbnQxNl90IHRtcHJlZyA9IDA7DQorICANCisgIC8qIGNoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOyAgIA0KKyAgDQorICAvKiBDaGVjayB0aGUgU1BJIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19TUElfRElSRUNUSU9OX01PREUoU1BJX0luaXRTdHJ1Y3QtPlNQSV9EaXJlY3Rpb24pKTsNCisgIGFzc2VydF9wYXJhbShJU19TUElfTU9ERShTUElfSW5pdFN0cnVjdC0+U1BJX01vZGUpKTsNCisgIGFzc2VydF9wYXJhbShJU19TUElfREFUQVNJWkUoU1BJX0luaXRTdHJ1Y3QtPlNQSV9EYXRhU2l6ZSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9DUE9MKFNQSV9Jbml0U3RydWN0LT5TUElfQ1BPTCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9DUEhBKFNQSV9Jbml0U3RydWN0LT5TUElfQ1BIQSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9OU1MoU1BJX0luaXRTdHJ1Y3QtPlNQSV9OU1MpKTsNCisgIGFzc2VydF9wYXJhbShJU19TUElfQkFVRFJBVEVfUFJFU0NBTEVSKFNQSV9Jbml0U3RydWN0LT5TUElfQmF1ZFJhdGVQcmVzY2FsZXIpKTsNCisgIGFzc2VydF9wYXJhbShJU19TUElfRklSU1RfQklUKFNQSV9Jbml0U3RydWN0LT5TUElfRmlyc3RCaXQpKTsNCisgIGFzc2VydF9wYXJhbShJU19TUElfQ1JDX1BPTFlOT01JQUwoU1BJX0luaXRTdHJ1Y3QtPlNQSV9DUkNQb2x5bm9taWFsKSk7DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNQSXggQ1IxIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIC8qIEdldCB0aGUgU1BJeCBDUjEgdmFsdWUgKi8NCisgIHRtcHJlZyA9IFNQSXgtPkNSMTsNCisgIC8qIENsZWFyIEJJRElNb2RlLCBCSURJT0UsIFJ4T05MWSwgU1NNLCBTU0ksIExTQkZpcnN0LCBCUiwgTVNUUiwgQ1BPTCBhbmQgQ1BIQSBiaXRzICovDQorICB0bXByZWcgJj0gQ1IxX0NMRUFSX01BU0s7DQorICAvKiBDb25maWd1cmUgU1BJeDogZGlyZWN0aW9uLCBOU1MgbWFuYWdlbWVudCwgZmlyc3QgdHJhbnNtaXR0ZWQgYml0LCBCYXVkUmF0ZSBwcmVzY2FsZXINCisgICAgIG1hc3Rlci9zYWx2ZSBtb2RlLCBDUE9MIGFuZCBDUEhBICovDQorICAvKiBTZXQgQklESW1vZGUsIEJJRElPRSBhbmQgUnhPTkxZIGJpdHMgYWNjb3JkaW5nIHRvIFNQSV9EaXJlY3Rpb24gdmFsdWUgKi8NCisgIC8qIFNldCBTU00sIFNTSSBhbmQgTVNUUiBiaXRzIGFjY29yZGluZyB0byBTUElfTW9kZSBhbmQgU1BJX05TUyB2YWx1ZXMgKi8NCisgIC8qIFNldCBMU0JGaXJzdCBiaXQgYWNjb3JkaW5nIHRvIFNQSV9GaXJzdEJpdCB2YWx1ZSAqLw0KKyAgLyogU2V0IEJSIGJpdHMgYWNjb3JkaW5nIHRvIFNQSV9CYXVkUmF0ZVByZXNjYWxlciB2YWx1ZSAqLw0KKyAgLyogU2V0IENQT0wgYml0IGFjY29yZGluZyB0byBTUElfQ1BPTCB2YWx1ZSAqLw0KKyAgLyogU2V0IENQSEEgYml0IGFjY29yZGluZyB0byBTUElfQ1BIQSB2YWx1ZSAqLw0KKyAgdG1wcmVnIHw9ICh1aW50MTZfdCkoKHVpbnQzMl90KVNQSV9Jbml0U3RydWN0LT5TUElfRGlyZWN0aW9uIHwgU1BJX0luaXRTdHJ1Y3QtPlNQSV9Nb2RlIHwNCisgICAgICAgICAgICAgICAgICBTUElfSW5pdFN0cnVjdC0+U1BJX0RhdGFTaXplIHwgU1BJX0luaXRTdHJ1Y3QtPlNQSV9DUE9MIHwgIA0KKyAgICAgICAgICAgICAgICAgIFNQSV9Jbml0U3RydWN0LT5TUElfQ1BIQSB8IFNQSV9Jbml0U3RydWN0LT5TUElfTlNTIHwgIA0KKyAgICAgICAgICAgICAgICAgIFNQSV9Jbml0U3RydWN0LT5TUElfQmF1ZFJhdGVQcmVzY2FsZXIgfCBTUElfSW5pdFN0cnVjdC0+U1BJX0ZpcnN0Qml0KTsNCisgIC8qIFdyaXRlIHRvIFNQSXggQ1IxICovDQorICBTUEl4LT5DUjEgPSB0bXByZWc7DQorICANCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BJeCBDUkNQT0xZIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgLyogV3JpdGUgdG8gU1BJeCBDUkNQT0xZICovDQorICBTUEl4LT5DUkNQUiA9IFNQSV9Jbml0U3RydWN0LT5TUElfQ1JDUG9seW5vbWlhbDsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRmlsbHMgZWFjaCBTUElfSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4NCisgICogQHBhcmFtICBTUElfSW5pdFN0cnVjdCA6IHBvaW50ZXIgdG8gYSBTUElfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHdoaWNoIHdpbGwgYmUgaW5pdGlhbGl6ZWQuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNQSV9TdHJ1Y3RJbml0KFNQSV9Jbml0VHlwZURlZiogU1BJX0luaXRTdHJ1Y3QpDQorew0KKy8qLS0tLS0tLS0tLS0tLS0tIFJlc2V0IFNQSSBpbml0IHN0cnVjdHVyZSBwYXJhbWV0ZXJzIHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tLSovDQorICAvKiBJbml0aWFsaXplIHRoZSBTUElfRGlyZWN0aW9uIG1lbWJlciAqLw0KKyAgU1BJX0luaXRTdHJ1Y3QtPlNQSV9EaXJlY3Rpb24gPSBTUElfRGlyZWN0aW9uXzJMaW5lc19GdWxsRHVwbGV4Ow0KKyAgLyogaW5pdGlhbGl6ZSB0aGUgU1BJX01vZGUgbWVtYmVyICovDQorICBTUElfSW5pdFN0cnVjdC0+U1BJX01vZGUgPSBTUElfTW9kZV9TbGF2ZTsNCisgIC8qIGluaXRpYWxpemUgdGhlIFNQSV9EYXRhU2l6ZSBtZW1iZXIgKi8NCisgIFNQSV9Jbml0U3RydWN0LT5TUElfRGF0YVNpemUgPSBTUElfRGF0YVNpemVfOGI7DQorICAvKiBJbml0aWFsaXplIHRoZSBTUElfQ1BPTCBtZW1iZXIgKi8NCisgIFNQSV9Jbml0U3RydWN0LT5TUElfQ1BPTCA9IFNQSV9DUE9MX0xvdzsNCisgIC8qIEluaXRpYWxpemUgdGhlIFNQSV9DUEhBIG1lbWJlciAqLw0KKyAgU1BJX0luaXRTdHJ1Y3QtPlNQSV9DUEhBID0gU1BJX0NQSEFfMUVkZ2U7DQorICAvKiBJbml0aWFsaXplIHRoZSBTUElfTlNTIG1lbWJlciAqLw0KKyAgU1BJX0luaXRTdHJ1Y3QtPlNQSV9OU1MgPSBTUElfTlNTX0hhcmQ7DQorICAvKiBJbml0aWFsaXplIHRoZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXIgbWVtYmVyICovDQorICBTUElfSW5pdFN0cnVjdC0+U1BJX0JhdWRSYXRlUHJlc2NhbGVyID0gU1BJX0JhdWRSYXRlUHJlc2NhbGVyXzI7DQorICAvKiBJbml0aWFsaXplIHRoZSBTUElfRmlyc3RCaXQgbWVtYmVyICovDQorICBTUElfSW5pdFN0cnVjdC0+U1BJX0ZpcnN0Qml0ID0gU1BJX0ZpcnN0Qml0X01TQjsNCisgIC8qIEluaXRpYWxpemUgdGhlIFNQSV9DUkNQb2x5bm9taWFsIG1lbWJlciAqLw0KKyAgU1BJX0luaXRTdHJ1Y3QtPlNQSV9DUkNQb2x5bm9taWFsID0gNzsNCit9DQorDQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIFNQSSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIFNQSSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFNQSXggcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1BJX0NtZChTUElfVHlwZURlZiogU1BJeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIFNQSSBwZXJpcGhlcmFsICovDQorICAgIFNQSXgtPkNSMSB8PSBTUElfQ1IxX1NQRTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgU1BJIHBlcmlwaGVyYWwgKi8NCisgICAgU1BJeC0+Q1IxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClTUElfQ1IxX1NQRSk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBTUEkgaW50ZXJydXB0cy4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgaW4gU1BJIG1vZGUgDQorICAqIEBwYXJhbSAgU1BJX0lUOiBzcGVjaWZpZXMgdGhlIFNQSSBpbnRlcnJ1cHQgc291cmNlIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFNQSV9JVF9UWEU6IFR4IGJ1ZmZlciBlbXB0eSBpbnRlcnJ1cHQgbWFzaw0KKyAgKiAgICAgQGFyZyBTUElfSVRfUlhORTogUnggYnVmZmVyIG5vdCBlbXB0eSBpbnRlcnJ1cHQgbWFzaw0KKyAgKiAgICAgQGFyZyBTUElfSVRfRVJSOiBFcnJvciBpbnRlcnJ1cHQgbWFzaw0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBTUEkgaW50ZXJydXB0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNQSV9JVENvbmZpZyhTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICB1aW50MTZfdCBpdHBvcyA9IDAsIGl0bWFzayA9IDAgOw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9DT05GSUdfSVQoU1BJX0lUKSk7DQorDQorICAvKiBHZXQgdGhlIFNQSSBJVCBpbmRleCAqLw0KKyAgaXRwb3MgPSBTUElfSVQgPj4gNDsNCisNCisgIC8qIFNldCB0aGUgSVQgbWFzayAqLw0KKyAgaXRtYXNrID0gKHVpbnQxNl90KTEgPDwgKHVpbnQxNl90KWl0cG9zOw0KKw0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgU1BJIGludGVycnVwdCAqLw0KKyAgICBTUEl4LT5DUjIgfD0gaXRtYXNrOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBTUEkgaW50ZXJydXB0ICovDQorICAgIFNQSXgtPkNSMiAmPSAodWludDE2X3Qpfml0bWFzazsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgU1BJeCBETUEgaW50ZXJmYWNlLg0KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiBpbiBTUEkgbW9kZSANCisgICogQHBhcmFtICBTUElfRE1BUmVxOiBzcGVjaWZpZXMgdGhlIFNQSSBETUEgdHJhbnNmZXIgcmVxdWVzdCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkLiANCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBTUElfRE1BUmVxX1R4OiBUeCBidWZmZXIgRE1BIHRyYW5zZmVyIHJlcXVlc3QNCisgICogICAgIEBhcmcgU1BJX0RNQVJlcV9SeDogUnggYnVmZmVyIERNQSB0cmFuc2ZlciByZXF1ZXN0DQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgU1BJIERNQSB0cmFuc2ZlciByZXF1ZXN0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNQSV9ETUFDbWQoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IFNQSV9ETUFSZXEsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0RNQVJFUShTUElfRE1BUmVxKSk7DQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBTUEkgRE1BIHJlcXVlc3RzICovDQorICAgIFNQSXgtPkNSMiB8PSBTUElfRE1BUmVxOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBTUEkgRE1BIHJlcXVlc3RzICovDQorICAgIFNQSXgtPkNSMiAmPSAodWludDE2X3QpflNQSV9ETUFSZXE7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRyYW5zbWl0cyBhIERhdGEgdGhyb3VnaCB0aGUgU1BJeCBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiBpbiBTUEkgbW9kZSANCisgICogQHBhcmFtICBEYXRhIDogRGF0YSB0byBiZSB0cmFuc21pdHRlZC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1BJX1NlbmREYXRhKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBEYXRhKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOw0KKyAgDQorICAvKiBXcml0ZSBpbiB0aGUgRFIgcmVnaXN0ZXIgdGhlIGRhdGEgdG8gYmUgc2VudCAqLw0KKyAgU1BJeC0+RFIgPSBEYXRhOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCByZWNlaXZlZCBkYXRhIGJ5IHRoZSBTUEl4IHBlcmlwaGVyYWwuIA0KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiBpbiBTUEkgbW9kZSANCisgICogQHJldHZhbCBUaGUgdmFsdWUgb2YgdGhlIHJlY2VpdmVkIGRhdGEuDQorICAqLw0KK3VpbnQxNl90IFNQSV9SZWNlaXZlRGF0YShTUElfVHlwZURlZiogU1BJeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsNCisgIA0KKyAgLyogUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBEUiByZWdpc3RlciAqLw0KKyAgcmV0dXJuIFNQSXgtPkRSOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIGludGVybmFsbHkgYnkgc29mdHdhcmUgdGhlIE5TUyBwaW4gZm9yIHRoZSBzZWxlY3RlZCBTUEkuDQorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgU1BJX05TU0ludGVybmFsU29mdDogc3BlY2lmaWVzIHRoZSBTUEkgTlNTIGludGVybmFsIHN0YXRlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFNQSV9OU1NJbnRlcm5hbFNvZnRfU2V0OiBTZXQgTlNTIHBpbiBpbnRlcm5hbGx5DQorICAqICAgICBAYXJnIFNQSV9OU1NJbnRlcm5hbFNvZnRfUmVzZXQ6IFJlc2V0IE5TUyBwaW4gaW50ZXJuYWxseQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTUElfTlNTSW50ZXJuYWxTb2Z0d2FyZUNvbmZpZyhTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX05TU0ludGVybmFsU29mdCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19TUElfTlNTX0lOVEVSTkFMKFNQSV9OU1NJbnRlcm5hbFNvZnQpKTsNCisgIGlmIChTUElfTlNTSW50ZXJuYWxTb2Z0ICE9IFNQSV9OU1NJbnRlcm5hbFNvZnRfUmVzZXQpDQorICB7DQorICAgIC8qIFNldCBOU1MgcGluIGludGVybmFsbHkgYnkgc29mdHdhcmUgKi8NCisgICAgU1BJeC0+Q1IxIHw9IFNQSV9OU1NJbnRlcm5hbFNvZnRfU2V0Ow0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBSZXNldCBOU1MgcGluIGludGVybmFsbHkgYnkgc29mdHdhcmUgKi8NCisgICAgU1BJeC0+Q1IxICY9IFNQSV9OU1NJbnRlcm5hbFNvZnRfUmVzZXQ7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFNTIG91dHB1dCBmb3IgdGhlIHNlbGVjdGVkIFNQSS4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBTUEkgcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBTUEl4IFNTIG91dHB1dC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1BJX1NTT3V0cHV0Q21kKFNQSV9UeXBlRGVmKiBTUEl4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgU1BJIFNTIG91dHB1dCAqLw0KKyAgICBTUEl4LT5DUjIgfD0gKHVpbnQxNl90KVNQSV9DUjJfU1NPRTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgU1BJIFNTIG91dHB1dCAqLw0KKyAgICBTUEl4LT5DUjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVNQSV9DUjJfU1NPRSk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIGRhdGEgc2l6ZSBmb3IgdGhlIHNlbGVjdGVkIFNQSS4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgU1BJX0RhdGFTaXplOiBzcGVjaWZpZXMgdGhlIFNQSSBkYXRhIHNpemUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgU1BJX0RhdGFTaXplXzE2YjogU2V0IGRhdGEgZnJhbWUgZm9ybWF0IHRvIDE2Yml0DQorICAqICAgICBAYXJnIFNQSV9EYXRhU2l6ZV84YjogU2V0IGRhdGEgZnJhbWUgZm9ybWF0IHRvIDhiaXQNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1BJX0RhdGFTaXplQ29uZmlnKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBTUElfRGF0YVNpemUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0RBVEFTSVpFKFNQSV9EYXRhU2l6ZSkpOw0KKyAgLyogQ2xlYXIgREZGIGJpdCAqLw0KKyAgU1BJeC0+Q1IxICY9ICh1aW50MTZfdCl+U1BJX0RhdGFTaXplXzE2YjsNCisgIC8qIFNldCBuZXcgREZGIGJpdCB2YWx1ZSAqLw0KKyAgU1BJeC0+Q1IxIHw9IFNQSV9EYXRhU2l6ZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgVHJhbnNtaXQgdGhlIFNQSXggQ1JDIHZhbHVlLg0KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiAgdG8gc2VsZWN0IHRoZSBTUEkgcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1BJX1RyYW5zbWl0Q1JDKFNQSV9UeXBlRGVmKiBTUEl4KQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOw0KKyAgDQorICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIFNQSSBDUkMgdHJhbnNtaXNzaW9uICovDQorICBTUEl4LT5DUjEgfD0gU1BJX0NSMV9DUkNORVhUOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBDUkMgdmFsdWUgY2FsY3VsYXRpb24gb2YgdGhlIHRyYW5zZmVyZWQgYnl0ZXMuDQorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgMSBvciAyICB0byBzZWxlY3QgdGhlIFNQSSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFNQSXggQ1JDIHZhbHVlIGNhbGN1bGF0aW9uLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNQSV9DYWxjdWxhdGVDUkMoU1BJX1R5cGVEZWYqIFNQSXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBTUEkgQ1JDIGNhbGN1bGF0aW9uICovDQorICAgIFNQSXgtPkNSMSB8PSBTUElfQ1IxX0NSQ0VOOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBTUEkgQ1JDIGNhbGN1bGF0aW9uICovDQorICAgIFNQSXgtPkNSMSAmPSAodWludDE2X3QpfigodWludDE2X3QpU1BJX0NSMV9DUkNFTik7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIHRyYW5zbWl0IG9yIHRoZSByZWNlaXZlIENSQyByZWdpc3RlciB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBTUEkuDQorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgMSBvciAyICB0byBzZWxlY3QgdGhlIFNQSSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFNQSV9DUkM6IHNwZWNpZmllcyB0aGUgQ1JDIHJlZ2lzdGVyIHRvIGJlIHJlYWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgU1BJX0NSQ19UeDogU2VsZWN0cyBUeCBDUkMgcmVnaXN0ZXINCisgICogICAgIEBhcmcgU1BJX0NSQ19SeDogU2VsZWN0cyBSeCBDUkMgcmVnaXN0ZXINCisgICogQHJldHZhbCBUaGUgc2VsZWN0ZWQgQ1JDIHJlZ2lzdGVyIHZhbHVlLi4NCisgICovDQordWludDE2X3QgU1BJX0dldENSQyhTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfQ1JDKQ0KK3sNCisgIHVpbnQxNl90IGNyY3JlZyA9IDA7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19TUElfQ1JDKFNQSV9DUkMpKTsNCisgIGlmIChTUElfQ1JDICE9IFNQSV9DUkNfUngpDQorICB7DQorICAgIC8qIEdldCB0aGUgVHggQ1JDIHJlZ2lzdGVyICovDQorICAgIGNyY3JlZyA9IFNQSXgtPlRYQ1JDUjsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogR2V0IHRoZSBSeCBDUkMgcmVnaXN0ZXIgKi8NCisgICAgY3JjcmVnID0gU1BJeC0+UlhDUkNSOw0KKyAgfQ0KKyAgLyogUmV0dXJuIHRoZSBzZWxlY3RlZCBDUkMgcmVnaXN0ZXIgKi8NCisgIHJldHVybiBjcmNyZWc7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIENSQyBQb2x5bm9taWFsIHJlZ2lzdGVyIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIFNQSS4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgVGhlIENSQyBQb2x5bm9taWFsIHJlZ2lzdGVyIHZhbHVlLg0KKyAgKi8NCit1aW50MTZfdCBTUElfR2V0Q1JDUG9seW5vbWlhbChTUElfVHlwZURlZiogU1BJeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsNCisgIA0KKyAgLyogUmV0dXJuIHRoZSBDUkMgcG9seW5vbWlhbCByZWdpc3RlciAqLw0KKyAgcmV0dXJuIFNQSXgtPkNSQ1BSOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBkYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiBpbiBiaS1kaXJlY3Rpb25hbCBtb2RlIGZvciB0aGUgc3BlY2lmaWVkIFNQSS4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgU1BJX0RpcmVjdGlvbjogc3BlY2lmaWVzIHRoZSBkYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiBpbiBiaS1kaXJlY3Rpb25hbCBtb2RlLiANCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBTUElfRGlyZWN0aW9uX1R4OiBTZWxlY3RzIFR4IHRyYW5zbWlzc2lvbiBkaXJlY3Rpb24NCisgICogICAgIEBhcmcgU1BJX0RpcmVjdGlvbl9SeDogU2VsZWN0cyBSeCByZWNlaXZlIGRpcmVjdGlvbg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTUElfQmlEaXJlY3Rpb25hbExpbmVDb25maWcoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IFNQSV9EaXJlY3Rpb24pDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0RJUkVDVElPTihTUElfRGlyZWN0aW9uKSk7DQorICBpZiAoU1BJX0RpcmVjdGlvbiA9PSBTUElfRGlyZWN0aW9uX1R4KQ0KKyAgew0KKyAgICAvKiBTZXQgdGhlIFR4IG9ubHkgbW9kZSAqLw0KKyAgICBTUEl4LT5DUjEgfD0gU1BJX0RpcmVjdGlvbl9UeDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogU2V0IHRoZSBSeCBvbmx5IG1vZGUgKi8NCisgICAgU1BJeC0+Q1IxICY9IFNQSV9EaXJlY3Rpb25fUng7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgU1BJIGZsYWcgaXMgc2V0IG9yIG5vdC4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgaW4gU1BJIG1vZGUgDQorICAqIEBwYXJhbSAgU1BJX0ZMQUc6IHNwZWNpZmllcyB0aGUgU1BJIGZsYWcgdG8gY2hlY2suIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFNQSV9GTEFHX1RYRTogVHJhbnNtaXQgYnVmZmVyIGVtcHR5IGZsYWcuDQorICAqICAgICBAYXJnIFNQSV9GTEFHX1JYTkU6IFJlY2VpdmUgYnVmZmVyIG5vdCBlbXB0eSBmbGFnLg0KKyAgKiAgICAgQGFyZyBTUElfRkxBR19CU1k6IEJ1c3kgZmxhZy4NCisgICogICAgIEBhcmcgU1BJX0ZMQUdfT1ZSOiBPdmVycnVuIGZsYWcuDQorICAqICAgICBAYXJnIFNQSV9GTEFHX01PREY6IE1vZGUgRmF1bHQgZmxhZy4NCisgICogICAgIEBhcmcgU1BJX0ZMQUdfQ1JDRVJSOiBDUkMgRXJyb3IgZmxhZy4NCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIFNQSV9GTEFHIChTRVQgb3IgUkVTRVQpLg0KKyAgKi8NCitGbGFnU3RhdHVzIFNQSV9HZXRGbGFnU3RhdHVzKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBTUElfRkxBRykNCit7DQorICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0dFVF9GTEFHKFNQSV9GTEFHKSk7DQorICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgU1BJIGZsYWcgKi8NCisgIGlmICgoU1BJeC0+U1IgJiBTUElfRkxBRykgIT0gKHVpbnQxNl90KVJFU0VUKQ0KKyAgew0KKyAgICAvKiBTUElfRkxBRyBpcyBzZXQgKi8NCisgICAgYml0c3RhdHVzID0gU0VUOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBTUElfRkxBRyBpcyByZXNldCAqLw0KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsNCisgIH0NCisgIC8qIFJldHVybiB0aGUgU1BJX0ZMQUcgc3RhdHVzICovDQorICByZXR1cm4gIGJpdHN0YXR1czsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBTUEl4IENSQyBFcnJvciAoQ1JDRVJSKSBmbGFnLg0KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiBpbiBTUEkgbW9kZSANCisgICogQHBhcmFtICBTUElfRkxBRzogc3BlY2lmaWVzIHRoZSBTUEkgZmxhZyB0byBjbGVhci4gDQorICAqICAgVGhpcyBmdW5jdGlvbiBjbGVhcnMgb25seSBDUkNFUlIgZmxhZy4NCisgICogQG5vdGUNCisgICogICAtIE9WUiAoT3ZlclJ1biBlcnJvcikgZmxhZyBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgDQorICAqICAgICBvcGVyYXRpb24gdG8gU1BJX0RSIHJlZ2lzdGVyIChTUElfUmVjZWl2ZURhdGEoKSkgZm9sbG93ZWQgYnkgYSByZWFkIA0KKyAgKiAgICAgb3BlcmF0aW9uIHRvIFNQSV9TUiByZWdpc3RlciAoU1BJX0dldEZsYWdTdGF0dXMoKSkuDQorICAqICAgLSBVRFIgKFVuZGVyUnVuIGVycm9yKSBmbGFnIGlzIGNsZWFyZWQgYnkgYSByZWFkIG9wZXJhdGlvbiB0byANCisgICogICAgIFNQSV9TUiByZWdpc3RlciAoU1BJX0dldEZsYWdTdGF0dXMoKSkuDQorICAqICAgLSBNT0RGIChNb2RlIEZhdWx0KSBmbGFnIGlzIGNsZWFyZWQgYnkgc29mdHdhcmUgc2VxdWVuY2U6IGEgcmVhZC93cml0ZSANCisgICogICAgIG9wZXJhdGlvbiB0byBTUElfU1IgcmVnaXN0ZXIgKFNQSV9HZXRGbGFnU3RhdHVzKCkpIGZvbGxvd2VkIGJ5IGEgDQorICAqICAgICB3cml0ZSBvcGVyYXRpb24gdG8gU1BJX0NSMSByZWdpc3RlciAoU1BJX0NtZCgpIHRvIGVuYWJsZSB0aGUgU1BJKS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1BJX0NsZWFyRmxhZyhTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX0ZMQUcpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0NMRUFSX0ZMQUcoU1BJX0ZMQUcpKTsNCisgICAgDQorICAgIC8qIENsZWFyIHRoZSBzZWxlY3RlZCBTUEkgQ1JDIEVycm9yIChDUkNFUlIpIGZsYWcgKi8NCisgICAgU1BJeC0+U1IgPSAodWludDE2X3QpflNQSV9GTEFHOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFNQSSBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZQ0KKyAgKiAgIC0gMSBvciAyIGluIFNQSSBtb2RlIA0KKyAgKiBAcGFyYW0gIFNQSV9JVDogc3BlY2lmaWVzIHRoZSBTUEkgaW50ZXJydXB0IHNvdXJjZSB0byBjaGVjay4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgU1BJX0lUX1RYRTogVHJhbnNtaXQgYnVmZmVyIGVtcHR5IGludGVycnVwdC4NCisgICogICAgIEBhcmcgU1BJX0lUX1JYTkU6IFJlY2VpdmUgYnVmZmVyIG5vdCBlbXB0eSBpbnRlcnJ1cHQuDQorICAqICAgICBAYXJnIFNQSV9JVF9PVlI6IE92ZXJydW4gaW50ZXJydXB0Lg0KKyAgKiAgICAgQGFyZyBTUElfSVRfTU9ERjogTW9kZSBGYXVsdCBpbnRlcnJ1cHQuDQorICAqICAgICBAYXJnIFNQSV9JVF9DUkNFUlI6IENSQyBFcnJvciBpbnRlcnJ1cHQuDQorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBTUElfSVQgKFNFVCBvciBSRVNFVCkuDQorICAqLw0KK0lUU3RhdHVzIFNQSV9HZXRJVFN0YXR1cyhTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfSVQpDQorew0KKyAgSVRTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7DQorICB1aW50MTZfdCBpdHBvcyA9IDAsIGl0bWFzayA9IDAsIGVuYWJsZXN0YXR1cyA9IDA7DQorDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19TUElfR0VUX0lUKFNQSV9JVCkpOw0KKw0KKyAgLyogR2V0IHRoZSBTUEkgSVQgaW5kZXggKi8NCisgIGl0cG9zID0gMHgwMSA8PCAoU1BJX0lUICYgMHgwRik7DQorDQorICAvKiBHZXQgdGhlIFNQSSBJVCBtYXNrICovDQorICBpdG1hc2sgPSBTUElfSVQgPj4gNDsNCisNCisgIC8qIFNldCB0aGUgSVQgbWFzayAqLw0KKyAgaXRtYXNrID0gMHgwMSA8PCBpdG1hc2s7DQorDQorICAvKiBHZXQgdGhlIFNQSV9JVCBlbmFibGUgYml0IHN0YXR1cyAqLw0KKyAgZW5hYmxlc3RhdHVzID0gKFNQSXgtPkNSMiAmIGl0bWFzaykgOw0KKw0KKyAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIFNQSSBpbnRlcnJ1cHQgKi8NCisgIGlmICgoKFNQSXgtPlNSICYgaXRwb3MpICE9ICh1aW50MTZfdClSRVNFVCkgJiYgZW5hYmxlc3RhdHVzKQ0KKyAgew0KKyAgICAvKiBTUElfSVQgaXMgc2V0ICovDQorICAgIGJpdHN0YXR1cyA9IFNFVDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogU1BJX0lUIGlzIHJlc2V0ICovDQorICAgIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgfQ0KKyAgLyogUmV0dXJuIHRoZSBTUElfSVQgc3RhdHVzICovDQorICByZXR1cm4gYml0c3RhdHVzOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDbGVhcnMgdGhlIFNQSXggQ1JDIEVycm9yIChDUkNFUlIpIGludGVycnVwdCBwZW5kaW5nIGJpdC4NCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZQ0KKyAgKiAgIC0gMSBvciAyIGluIFNQSSBtb2RlIA0KKyAgKiBAcGFyYW0gIFNQSV9JVDogc3BlY2lmaWVzIHRoZSBTUEkgaW50ZXJydXB0IHBlbmRpbmcgYml0IHRvIGNsZWFyLg0KKyAgKiAgIFRoaXMgZnVuY3Rpb24gY2xlYXJzIG9ubHkgQ1JDRVJSIGludGV0cnJ1cHQgcGVuZGluZyBiaXQuICAgDQorICAqIEBub3RlDQorICAqICAgLSBPVlIgKE92ZXJSdW4gRXJyb3IpIGludGVycnVwdCBwZW5kaW5nIGJpdCBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIA0KKyAgKiAgICAgc2VxdWVuY2U6IGEgcmVhZCBvcGVyYXRpb24gdG8gU1BJX0RSIHJlZ2lzdGVyIChTUElfUmVjZWl2ZURhdGEoKSkgDQorICAqICAgICBmb2xsb3dlZCBieSBhIHJlYWQgb3BlcmF0aW9uIHRvIFNQSV9TUiByZWdpc3RlciAoU1BJX0dldElUU3RhdHVzKCkpLg0KKyAgKiAgIC0gVURSIChVbmRlclJ1biBFcnJvcikgaW50ZXJydXB0IHBlbmRpbmcgYml0IGlzIGNsZWFyZWQgYnkgYSByZWFkIA0KKyAgKiAgICAgb3BlcmF0aW9uIHRvIFNQSV9TUiByZWdpc3RlciAoU1BJX0dldElUU3RhdHVzKCkpLg0KKyAgKiAgIC0gTU9ERiAoTW9kZSBGYXVsdCkgaW50ZXJydXB0IHBlbmRpbmcgYml0IGlzIGNsZWFyZWQgYnkgc29mdHdhcmUgc2VxdWVuY2U6DQorICAqICAgICBhIHJlYWQvd3JpdGUgb3BlcmF0aW9uIHRvIFNQSV9TUiByZWdpc3RlciAoU1BJX0dldElUU3RhdHVzKCkpIA0KKyAgKiAgICAgZm9sbG93ZWQgYnkgYSB3cml0ZSBvcGVyYXRpb24gdG8gU1BJX0NSMSByZWdpc3RlciAoU1BJX0NtZCgpIHRvIGVuYWJsZSANCisgICogICAgIHRoZSBTUEkpLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTUElfQ2xlYXJJVFBlbmRpbmdCaXQoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQ4X3QgU1BJX0lUKQ0KK3sNCisgIHVpbnQxNl90IGl0cG9zID0gMDsNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9DTEVBUl9JVChTUElfSVQpKTsNCisNCisgIC8qIEdldCB0aGUgU1BJIElUIGluZGV4ICovDQorICBpdHBvcyA9IDB4MDEgPDwgKFNQSV9JVCAmIDB4MEYpOw0KKw0KKyAgLyogQ2xlYXIgdGhlIHNlbGVjdGVkIFNQSSBDUkMgRXJyb3IgKENSQ0VSUikgaW50ZXJydXB0IHBlbmRpbmcgYml0ICovDQorICBTUEl4LT5TUiA9ICh1aW50MTZfdCl+aXRwb3M7DQorfQ0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF9zeXNjZmcuYyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL3NyYy9zdG0zMmwxeHhfc3lzY2ZnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ5YmVmMQotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL1NUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyL3NyYy9zdG0zMmwxeHhfc3lzY2ZnLmMKQEAgLTAsMCArMSw0OTQgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDF4eF9zeXNjZmcuYw0KKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWMS4wLjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBTWVNDRkcgYW5kIFJJIGZpcm13YXJlIGZ1bmN0aW9ucy4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eF9zeXNjZmcuaCINCisjaW5jbHVkZSAic3RtMzJsMXh4X3JjYy5oIg0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlcg0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFNZU0NGRyANCisgICogQGJyaWVmIFNZU0NGRyBkcml2ZXIgbW9kdWxlcw0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTWVNDRkdfUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zDQorICAqIEB7DQorICAqLyANCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKiBAZGVmZ3JvdXAgU1lTQ0ZHX1ByaXZhdGVfRGVmaW5lcw0KKyAgKiBAew0KKyAgKi8gDQorICANCisjZGVmaW5lIFJJX0lDUl9SRVNFVF9WQUxVRSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApIC8qITwgSUNSIFJlc2V0IHZhbHVlICovDQorI2RlZmluZSBSSV9BU0NSMV9SRVNFVF9WQUxVRSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAvKiE8IEFTQ1IxIFJlc2V0IHZhbHVlICovDQorI2RlZmluZSBSSV9BU0NSMl9SRVNFVF9WQUxVRSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAvKiE8IEFTQ1IyIFJlc2V0IHZhbHVlICovDQorI2RlZmluZSBSSV9IWVNDUjFfUkVTRVRfVkFMVUUgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAvKiE8IEhZU0NSMSBSZXNldCB2YWx1ZSAqLw0KKyNkZWZpbmUgUklfSFlTQ1IyX1JFU0VUX1ZBTFVFICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgLyohPCBIWVNDUjIgUmVzZXQgdmFsdWUgKi8NCisjZGVmaW5lIFJJX0hZU0NSM19SRVNFVF9WQUxVRSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApIC8qITwgSFlTQ1IzIFJlc2V0IHZhbHVlICovDQorDQorI2RlZmluZSBUSU1fU0VMRUNUX01BU0sgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkNGRkZGKSAvKiE8IFRJTSBzZWxlY3QgbWFzayAqLw0KKyNkZWZpbmUgSUNfUk9VVElOR19NQVNLICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikgLyohPCBJbnB1dCBDYXB0dXJlIHJvdXRpbmcgbWFzayAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTWVNDRkdfUHJpdmF0ZV9NYWNyb3MNCisgICogQHsNCisgICovIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTWVNDRkdfUHJpdmF0ZV9WYXJpYWJsZXMNCisgICogQHsNCisgICovIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTWVNDRkdfUHJpdmF0ZV9GdW5jdGlvblByb3RvdHlwZXMNCisgICogQHsNCisgICovIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTWVNDRkdfUHJpdmF0ZV9GdW5jdGlvbnMNCisgICogQHsNCisgICovIA0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZXMgdGhlIHN5c2NmZyByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICogQCBOb3RlOiBNRU1STVAgYml0cyBhcmUgbm90IHJlc2V0IGJ5IEFQQjIgcmVzZXQuDQorICAqLw0KK3ZvaWQgU1lTQ0ZHX0RlSW5pdCh2b2lkKQ0KK3sNCisgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1NZU0NGRywgRU5BQkxFKTsNCisgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1NZU0NGRywgRElTQUJMRSk7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENoYW5nZXMgdGhlIG1hcHBpbmcgb2YgdGhlIHNwZWNpZmllZCBwaW4uDQorICAqIEBwYXJhbSAgU1lTQ0ZHX01lbW9yeTogc2VsZWN0cyB0aGUgbWVtb3J5IHJlbWFwcGluZy4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBTWVNDRkdfTWVtb3J5UmVtYXBfRmxhc2g6IE1haW4gRmxhc2ggbWVtb3J5IG1hcHBlZCBhdCAweDAwMDAwMDAwICANCisgICogICAgIEBhcmcgU1lTQ0ZHX01lbW9yeVJlbWFwX1N5c3RlbUZsYXNoOiBTeXN0ZW0gRmxhc2ggbWVtb3J5IG1hcHBlZCBhdCAweDAwMDAwMDAwDQorICAqICAgICBAYXJnIFNZU0NGR19NZW1vcnlSZW1hcF9TUkFNOiBFbWJlZGRlZCBTUkFNIG1hcHBlZCBhdCAweDAwMDAwMDAwICAgICANCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1lTQ0ZHX01lbW9yeVJlbWFwQ29uZmlnKHVpbnQ4X3QgU1lTQ0ZHX01lbW9yeVJlbWFwKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfU1lTQ0ZHX01FTU9SWV9SRU1BUF9DT05GSU5HKFNZU0NGR19NZW1vcnlSZW1hcCkpOw0KKyAgU1lTQ0ZHLT5NRU1STVAgPSBTWVNDRkdfTWVtb3J5UmVtYXA7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbnRyb2wgdGhlIGludGVybmFsIHB1bGwtdXAgb24gVVNCIERQIGxpbmUuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IE5ldyBzdGF0ZSBvZiB0aGUgc3dpdGNoIGNvbnRyb2wgbW9kZS4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIEVOQUJMRTogQ29ubmVjdCBpbnRlcm5hbCBwdWxsLXVwIG9uIFVTQiBEUCBsaW5lLg0KKyAgKiAgICAgICAgICAgICAgICAgICAgICBvciBESVNBQkxFOiBEaXNjb25uZWN0IGludGVybmFsIHB1bGwtdXAgb24gVVNCIERQIGxpbmUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNZU0NGR19VU0JQdUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsgDQorICAgIC8qIENvbm5lY3QgaW50ZXJuYWwgcHVsbC11cCBvbiBVU0IgRFAgbGluZSAqLw0KKyAgICBTWVNDRkctPlBNQyB8PSAodWludDMyX3QpIFNZU0NGR19QTUNfVVNCX1BVOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBEaXNjb25uZWN0IGludGVybmFsIHB1bGwtdXAgb24gVVNCIERQIGxpbmUgKi8NCisgICAgU1lTQ0ZHLT5QTUMgJj0gKHVpbnQzMl90KSh+U1lTQ0ZHX1BNQ19VU0JfUFUpOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBHUElPIHBpbiB1c2VkIGFzIEVYVEkgTGluZS4NCisgICogQHBhcmFtICBFWFRJX1BvcnRTb3VyY2VHUElPeCA6IHNlbGVjdHMgdGhlIEdQSU8gcG9ydCB0byBiZSB1c2VkIGFzIHNvdXJjZSANCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBFWFRJIGxpbmVzIHdoZXJlIHggY2FuIGJlIChBLCBCLCBDLCBELCBFIG9yIEgpLg0KKyAgKiBAcGFyYW0gIEVYVElfUGluU291cmNleDogc3BlY2lmaWVzIHRoZSBFWFRJIGxpbmUgdG8gYmUgY29uZmlndXJlZC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgRVhUSV9QaW5Tb3VyY2V4IHdoZXJlIHggY2FuIGJlICgwLi4xNSkNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1lTQ0ZHX0VYVElMaW5lQ29uZmlnKHVpbnQ4X3QgRVhUSV9Qb3J0U291cmNlR1BJT3gsIHVpbnQ4X3QgRVhUSV9QaW5Tb3VyY2V4KQ0KK3sNCisgIHVpbnQzMl90IHRtcCA9IDB4MDA7DQorDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX0VYVElfUE9SVF9TT1VSQ0UoRVhUSV9Qb3J0U291cmNlR1BJT3gpKTsNCisgIGFzc2VydF9wYXJhbShJU19FWFRJX1BJTl9TT1VSQ0UoRVhUSV9QaW5Tb3VyY2V4KSk7DQorICANCisgIHRtcCA9ICgodWludDMyX3QpMHgwRikgPDwgKDB4MDQgKiAoRVhUSV9QaW5Tb3VyY2V4ICYgKHVpbnQ4X3QpMHgwMykpOw0KKyAgU1lTQ0ZHLT5FWFRJQ1JbRVhUSV9QaW5Tb3VyY2V4ID4+IDB4MDJdICY9IH50bXA7DQorICBTWVNDRkctPkVYVElDUltFWFRJX1BpblNvdXJjZXggPj4gMHgwMl0gfD0gKCgodWludDMyX3QpRVhUSV9Qb3J0U291cmNlR1BJT3gpIDw8ICgweDA0ICogKEVYVElfUGluU291cmNleCAmICh1aW50OF90KTB4MDMpKSk7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgRGVpbml0aWFsaXplcyB0aGUgUkkgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgdmFsdWVzLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1lTQ0ZHX1JJRGVJbml0KHZvaWQpDQorew0KKyAgUkktPklDUiAgICAgPSBSSV9JQ1JfUkVTRVRfVkFMVUU7ICAgICAgICAgLyohPCBTZXQgUkktPklDUiB0byByZXNldCB2YWx1ZSAqLw0KKyAgUkktPkFTQ1IxICAgPSBSSV9BU0NSMV9SRVNFVF9WQUxVRTsgICAgICAgLyohPCBTZXQgUkktPkFTQ1IxIHRvIHJlc2V0IHZhbHVlICovICANCisgIFJJLT5BU0NSMiAgID0gUklfQVNDUjJfUkVTRVRfVkFMVUU7ICAgICAgIC8qITwgU2V0IFJJLT5BU0NSMiB0byByZXNldCB2YWx1ZSAqLyAgDQorICBSSS0+SFlTQ1IxICA9IFJJX0hZU0NSMV9SRVNFVF9WQUxVRTsgICAgICAvKiE8IFNldCBSSS0+SFlTQ1IxIHRvIHJlc2V0IHZhbHVlICovDQorICBSSS0+SFlTQ1IyICA9IFJJX0hZU0NSMl9SRVNFVF9WQUxVRTsgICAgICAvKiE8IFNldCBSSS0+SFlTQ1IyIHRvIHJlc2V0IHZhbHVlICovDQorICBSSS0+SFlTQ1IzICA9IFJJX0hZU0NSM19SRVNFVF9WQUxVRTsgICAgICAvKiE8IFNldCBSSS0+SFlTQ1IzIHRvIHJlc2V0IHZhbHVlICovDQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIHJvdXRpbmcgaW50ZXJmYWNlIHRvIHNlbGVjdCB3aGljaCBUaW1lciB0byBiZSByb3V0ZWQuDQorICAqIEBwYXJhbSAgVElNX1NlbGVjdDogVGltZXIgc2VsZWN0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9TZWxlY3RfTm9uZSA6IE5vIHRpbWVyIHNlbGVjdGVkDQorICAqICAgICBAYXJnIFRJTV9TZWxlY3RfVElNMiA6IFRpbWVyIDIgc2VsZWN0ZWQgDQorICAqICAgICBAYXJnIFRJTV9TZWxlY3RfVElNMyA6IFRpbWVyIDMgc2VsZWN0ZWQgDQorICAqICAgICBAYXJnIFRJTV9TZWxlY3RfVElNNCA6IFRpbWVyIDQgc2VsZWN0ZWQgDQorICAqIEByZXR2YWwgTm9uZS4NCisgICovDQordm9pZCBTWVNDRkdfUklUSU1TZWxlY3QodWludDMyX3QgVElNX1NlbGVjdCkNCit7DQorICB1aW50MzJfdCB0bXByZWcgPSAwOw0KKw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19SSV9USU0oVElNX1NlbGVjdCkpOw0KKw0KKyAgLyogR2V0IHRoZSBvbGQgcmVnaXN0ZXIgdmFsdWUgKi8NCisgIHRtcHJlZyA9IFJJLT5JQ1I7DQorDQorICAvKiBDbGVhciB0aGUgVElNeCBzZWxlY3QgYml0cyAqLw0KKyAgdG1wcmVnICY9IFRJTV9TRUxFQ1RfTUFTSzsNCisNCisgIC8qIFNlbGVjdCB0aGUgVGltZXIgKi8NCisgIHRtcHJlZyB8PSAoVElNX1NlbGVjdCk7DQorDQorICAvKiBXcml0ZSB0byBSSS0+SUNSIHJlZ2lzdGVyICovDQorICBSSS0+SUNSID0gdG1wcmVnOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSByb3V0aW5nIGludGVyZmFjZSB0byBzZWxlY3Qgd2hpY2ggVGltZXIgSW5wdXQgQ2FwdHVyZQ0KKyAgKiAgICAgICAgIHRvIGJlIHJvdXRlZCB0byBhIHNlbGVjdGVkIHBpbi4NCisgICogQHBhcmFtICBSSV9JbnB1dENhcHR1cmUgc2VsZWN0cyB3aGljaCBpbnB1dCBjYXB0dXJlIHRvIGJlIHJvdXRlZC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyAgUklfSW5wdXRDYXB0dXJlX0lDMTogSW5wdXQgY2FwdHVyZSAxIGlzIHNsZWN0ZWQuDQorICAqICAgICBAYXJnICBSSV9JbnB1dENhcHR1cmVfSUMyOiBJbnB1dCBjYXB0dXJlIDIgaXMgc2xlY3RlZC4NCisgICogICAgIEBhcmcgIFJJX0lucHV0Q2FwdHVyZV9JQzM6IElucHV0IGNhcHR1cmUgMyBpcyBzbGVjdGVkLg0KKyAgKiAgICAgQGFyZyAgUklfSW5wdXRDYXB0dXJlX0lDNDogSW5wdXQgY2FwdHVyZSA0IGlzIHNsZWN0ZWQuDQorICAqIEBwYXJhbSAgUklfSW5wdXRDYXB0dXJlUm91dGluZzogc2VsZWN0cyB3aGljaCBwaW4gdG8gYmUgcm91dGVkIHRvIElucHV0IENhcHR1cmUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgIFJJX0lucHV0Q2FwdHVyZVJvdXRpbmdfMCB0byBSSV9JbnB1dENhcHR1cmVSb3V0aW5nXzE1DQorICAqIEBOb3RlIElucHV0IGNhcHR1cmUgc2VsZWN0aW9uIGJpdHMgYXJlIG5vdCByZXNldCBieSB0aGlzIGZ1bmN0aW9uLg0KKyAgKiBAcmV0dmFsIE5vbmUuDQorICAqLw0KK3ZvaWQgU1lTQ0ZHX1JJVElNSW5wdXRDYXB0dXJlQ29uZmlnKHVpbnQzMl90IFJJX0lucHV0Q2FwdHVyZSwgdWludDMyX3QgUklfSW5wdXRDYXB0dXJlUm91dGluZykNCit7DQorICB1aW50MzJfdCB0bXByZWcgPSAwOw0KKw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19SSV9JTlBVVENBUFRVUkUoUklfSW5wdXRDYXB0dXJlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfUklfSU5QVVRDQVBUVVJFX1JPVVRJTkcoUklfSW5wdXRDYXB0dXJlUm91dGluZykpOw0KKw0KKyAgLyogR2V0IHRoZSBvbGQgcmVnaXN0ZXIgdmFsdWUgKi8NCisgIHRtcHJlZyA9IFJJLT5JQ1I7DQorDQorICAvKiBTZWxlY3QgaW5wdXQgY2FwdHVyZXMgdG8gYmUgcm91dGVkICovDQorICB0bXByZWcgfD0gKFJJX0lucHV0Q2FwdHVyZSk7DQorDQorICBpZigoUklfSW5wdXRDYXB0dXJlICYgUklfSW5wdXRDYXB0dXJlX0lDMSkgPT0gUklfSW5wdXRDYXB0dXJlX0lDMSkNCisgIHsNCisgICAgLyogQ2xlYXIgdGhlIGlucHV0IGNhcHR1cmUgc2VsZWN0IGJpdHMgKi8NCisgICAgdG1wcmVnICY9ICh1aW50MzJfdCkofklDX1JPVVRJTkdfTUFTSyk7DQorDQorICAgIC8qIFNldCBSSV9JbnB1dENhcHR1cmVSb3V0aW5nIGJpdHMgICovDQorICAgIHRtcHJlZyB8PSAodWludDMyX3QpKCBSSV9JbnB1dENhcHR1cmVSb3V0aW5nKTsNCisgIH0NCisNCisgIGlmKChSSV9JbnB1dENhcHR1cmUgJiBSSV9JbnB1dENhcHR1cmVfSUMyKSA9PSBSSV9JbnB1dENhcHR1cmVfSUMyKQ0KKyAgew0KKyAgICAvKiBDbGVhciB0aGUgaW5wdXQgY2FwdHVyZSBzZWxlY3QgYml0cyAqLw0KKyAgICB0bXByZWcgJj0gKHVpbnQzMl90KSh+KElDX1JPVVRJTkdfTUFTSyA8PCA0KSk7DQorDQorICAgIC8qIFNldCBSSV9JbnB1dENhcHR1cmVSb3V0aW5nIGJpdHMgICovDQorICAgIHRtcHJlZyB8PSAodWludDMyX3QpKCAoUklfSW5wdXRDYXB0dXJlUm91dGluZyA8PCA0KSk7IA0KKyAgfQ0KKw0KKyAgaWYoKFJJX0lucHV0Q2FwdHVyZSAmIFJJX0lucHV0Q2FwdHVyZV9JQzMpID09IFJJX0lucHV0Q2FwdHVyZV9JQzMpDQorICB7DQorICAgIC8qIENsZWFyIHRoZSBpbnB1dCBjYXB0dXJlIHNlbGVjdCBiaXRzICovDQorICAgIHRtcHJlZyAmPSAodWludDMyX3QpKH4oSUNfUk9VVElOR19NQVNLIDw8IDgpKTsNCisNCisgICAgLyogU2V0IFJJX0lucHV0Q2FwdHVyZVJvdXRpbmcgYml0cyAgKi8NCisgICAgdG1wcmVnIHw9ICh1aW50MzJfdCkoIChSSV9JbnB1dENhcHR1cmVSb3V0aW5nIDw8IDgpKTsgIA0KKyAgfQ0KKw0KKyAgaWYoKFJJX0lucHV0Q2FwdHVyZSAmIFJJX0lucHV0Q2FwdHVyZV9JQzQpID09IFJJX0lucHV0Q2FwdHVyZV9JQzQpDQorICB7DQorICAgIC8qIENsZWFyIHRoZSBpbnB1dCBjYXB0dXJlIHNlbGVjdCBiaXRzICovDQorICAgIHRtcHJlZyAmPSAodWludDMyX3QpKH4oSUNfUk9VVElOR19NQVNLIDw8IDEyKSk7DQorDQorICAgIC8qIFNldCBSSV9JbnB1dENhcHR1cmVSb3V0aW5nIGJpdHMgICovDQorICAgIHRtcHJlZyB8PSAodWludDMyX3QpKCAoUklfSW5wdXRDYXB0dXJlUm91dGluZyA8PCAxMikpOyAgDQorICB9DQorDQorICAvKiBXcml0ZSB0byBSSS0+SUNSIHJlZ2lzdGVyICovDQorICBSSS0+SUNSID0gdG1wcmVnOw0KK30NCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBQdWxsLXVwIGFuZCBQdWxsLWRvd24gUmVzaXN0b3JzIA0KKyAgKiBAcGFyYW0gIFJJX1Jlc2lzdG9yIHNlbGVjdHMgdGhlIHJlc2lzdG9yIHRvIGNvbm5lY3QuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSAgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSSV9SZXNpc3Rvcl8xMEtQVSA6IDEwSyBwdWxsLXVwIHJlc2lzdG9yDQorICAqICAgICBAYXJnIFJJX1Jlc2lzdG9yXzQwMEtQVSA6IDQwMEsgcHVsbC11cCByZXNpc3RvciANCisgICogICAgIEBhcmcgUklfUmVzaXN0b3JfMTBLUEQgOiAxMEsgcHVsbC1kb3duIHJlc2lzdG9yIA0KKyAgKiAgICAgQGFyZyBSSV9SZXNpc3Rvcl80MDBLUEQgOiA0MDBLIHB1bGwtZG93biByZXNpc3Rvcg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBOZXcgc3RhdGUgb2YgdGhlIGFuYWxvZyBzd2l0Y2ggYXNzb2NpYXRlZCB0byB0aGUgc2VsZWN0ZWQgcmVzaXN0b3IuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOg0KKyAgKiAgICAgIEVOQUJMRSBzbyB0aGUgc2VsZWN0ZWQgcmVzaXN0b3IgaXMgY29ubmVjdGVkDQorICAqICAgb3IgRElTQUJMRSBzbyB0aGUgc2VsZWN0ZWQgcmVzaXN0b3IgaXMgZGlzY29ubmVjdGVkDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFNZU0NGR19SSVJlc2lzdG9yQ29uZmlnKHVpbnQzMl90IFJJX1Jlc2lzdG9yLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19SSV9SRVNJU1RPUihSSV9SZXNpc3RvcikpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIEVuYWJsZSB0aGUgcmVzaXN0b3IgKi8NCisgICAgQ09NUC0+Q1NSIHw9ICh1aW50MzJfdCkgUklfUmVzaXN0b3I7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIERpc2FibGUgdGhlIFJlc2lzdG9yICovDQorICAgIENPTVAtPkNTUiAmPSAodWludDMyX3QpICh+UklfUmVzaXN0b3IpOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDbG9zZSBvciBPcGVuIHRoZSByb3V0aW5nIGludGVyZmFjZSBJbnB1dCBPdXRwdXQgc3dpdGNoZXMuDQorICAqIEBwYXJhbSAgUklfSU9Td2l0Y2g6IHNlbGVjdHMgdGhlIEkvTyBhbmFsb2cgc3dpdGNoIG51bWJlci4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBSSV9JT1N3aXRjaF9DSDAgLS0+IFJJX0lPU3dpdGNoX0NIMTUNCisgICogICAgIEBhcmdSSV9JT1N3aXRjaF9DSDE4IC0tPiBSSV9JT1N3aXRjaF9DSDI1DQorICAqICAgICBAYXJnIFJJX0lPU3dpdGNoX0dSMTBfMSAtLT4gUklfSU9Td2l0Y2hfR1IxMF80DQorICAqICAgICBAYXJnIFJJX0lPU3dpdGNoX0dSNl8xIC0tPiBSSV9JT1N3aXRjaF9HUjZfMg0KKyAgKiAgICAgQGFyZyBSSV9JT1N3aXRjaF9HUjVfMSAtLT4gUklfSU9Td2l0Y2hfR1I1XzMNCisgICogICAgIEBhcmcgUklfSU9Td2l0Y2hfR1I0XzEgLS0+IFJJX0lPU3dpdGNoX0dSNF8zDQorICAqICAgICBAYXJnICBSSV9JT1N3aXRjaF9WQ09NUA0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBOZXcgc3RhdGUgb2YgdGhlIGFuYWxvZyBzd2l0Y2guIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSANCisgICogICAgIEVOQUJMRSBzbyB0aGUgSW5wdXQgT3V0cHV0IHN3aXRjaCBpcyBjbG9zZWQNCisgICogICAgIG9yIERJU0FCTEUgc28gdGhlIElucHV0IE91dHB1dCBzd2l0Y2ggaXMgb3Blbg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTWVNDRkdfUklJT1N3aXRjaENvbmZpZyh1aW50MzJfdCBSSV9JT1N3aXRjaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIHVpbnQzMl90IElPU3dpdGNobWFzayA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUklfSU9TV0lUQ0goUklfSU9Td2l0Y2gpKTsNCisgIA0KKyAgLyogUmVhZCBBbmFsb2cgc3dpdGNoIHJlZ2lzdGVyIGluZGV4Ki8NCisgIElPU3dpdGNobWFzayA9IFJJX0lPU3dpdGNoID4+IDI4Ow0KKyAgDQorICAvKiogR2V0IEJpdHNbMjc6MF0gb2YgdGhlIElPIHN3aXRjaCAqLw0KKyAgUklfSU9Td2l0Y2ggICY9IDB4MEZGRkZGRkY7DQorICANCisgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7IA0KKyAgICBpZiAoSU9Td2l0Y2htYXNrICE9IDApDQorICAgIHsNCisgICAgICAvKiBDbG9zZSB0aGUgYW5hbG9nIHN3aXRjaGVzICovDQorICAgICAgUkktPkFTQ1IxIHw9IFJJX0lPU3dpdGNoOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgIC8qIE9wZW4gdGhlIGFuYWxvZyBzd2l0Y2hlcyAqLw0KKyAgICAgIFJJLT5BU0NSMiB8PSBSSV9JT1N3aXRjaDsNCisgICAgfQ0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBpZiAoSU9Td2l0Y2htYXNrICE9IDApDQorICAgIHsNCisgICAgICAvKiBDbG9zZSB0aGUgYW5hbG9nIHN3aXRjaGVzICovDQorICAgICAgUkktPkFTQ1IxICY9ICh+ICh1aW50MzJfdClSSV9JT1N3aXRjaCk7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgLyogT3BlbiB0aGUgYW5hbG9nIHN3aXRjaGVzICovDQorICAgICAgUkktPkFTQ1IyICY9ICh+ICh1aW50MzJfdClSSV9JT1N3aXRjaCk7DQorICAgIH0NCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlIG9yIGRpc2FibGUgdGhlIHN3aXRjaCBjb250cm9sIG1vZGUuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IE5ldyBzdGF0ZSBvZiB0aGUgc3dpdGNoIGNvbnRyb2wgbW9kZS4gVGhpcyBwYXJhbWV0ZXIgY2FuDQorICAqICAgICAgICAgYmUgRU5BQkxFOiBBREMgYW5hbG9nIHN3aXRjaGVzIGNsb3NlZCBpZiB0aGUgY29ycmVzcG9uZGluZyANCisgICogICAgICAgICAgICAgICAgICAgIEkvTyBzd2l0Y2ggaXMgYWxzbyBjbG9zZWQuIA0KKyAgKiAgICAgICAgIG9yIERJU0FCTEU6IEFEQyBhbmFsb2cgc3dpdGNoZXMgb3BlbiBvciBjb250cm9sbGVkIGJ5IHRoZSBBREMgaW50ZXJmYWNlLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTWVNDRkdfUklTd2l0Y2hDb250cm9sTW9kZUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7ICANCisgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7IA0KKyAgICAvKiBFbmFibGUgdGhlIFN3aXRjaCBjb250cm9sIG1vZGUgKi8gIA0KKyAgICBSSS0+QVNDUjEgfD0gKHVpbnQzMl90KSBSSV9BU0NSMV9TQ007DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIERpc2FibGUgdGhlIFN3aXRjaCBjb250cm9sIG1vZGUgKi8gIA0KKyAgICBSSS0+QVNDUjEgJj0gKHVpbnQzMl90KSh+UklfQVNDUjFfU0NNKTsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlIG9yIGRpc2FibGUgSHlzdGVyZXNpcyBvZiB0aGUgaW5wdXQgc2NobWl0dCB0cmlnZXIgb2YgUG9ydHMgQS4uRSANCisgICogQHBhcmFtICBSSV9Qb3J0OiBzZWxlY3RzIHRoZSBHUElPIFBvcnQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgUklfUG9ydEEgOiBQb3J0IEEgaXMgc2VsZWN0ZWQNCisgICogICAgIEBhcmcgUklfUG9ydEIgOiBQb3J0IEIgaXMgc2VsZWN0ZWQNCisgICogICAgIEBhcmcgUklfUG9ydEMgOiBQb3J0IEMgaXMgc2VsZWN0ZWQNCisgICogICAgIEBhcmcgUklfUG9ydEQgOiBQb3J0IEQgaXMgc2VsZWN0ZWQNCisgICogICAgIEBhcmcgUklfUG9ydEUgOiBQb3J0IEUgaXMgc2VsZWN0ZWQNCisgICogIEBwYXJhbSBSSV9QaW4gOiBTZWxlY3RzIHRoZSBwaW4ocykgb24gd2hpY2ggdG8gZW5hYmxlIG9yIGRpc2FibGUgaHlzdGVyZXNpcy4NCisgICogICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGFueSB2YWx1ZSBmcm9tIFJJX1Bpbl94IHdoZXJlIHggY2FuIGJlICgwLi4xNSkgb3IgUklfUGluX0FsbC4NCisgICogIEBwYXJhbSAgTmV3U3RhdGUgbmV3IHN0YXRlIG9mIHRoZSBIeXN0ZXJlc2lzLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZToNCisgICogICAgICBFTkFCTEUgc28gdGhlIEh5c3RlcmVzaXMgaXMgb24NCisgICogICBvciBESVNBQkxFIHNvIHRoZSBIeXN0ZXJlc2lzIGlzIG9mZg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBTWVNDRkdfUklIeXN0ZXJlc2lzQ29uZmlnKHVpbnQ4X3QgUklfUG9ydCwgdWludDE2X3QgUklfUGluLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfUklfUE9SVChSSV9Qb3J0KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfUklfUElOKFJJX1BpbikpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisgIA0KKyAgaWYoUklfUG9ydCA9PSBSSV9Qb3J0QSkNCisgIHsgIA0KKyAgICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgICAgew0KKyAgICAgIC8qIEh5c3RlcmVzaXMgb24gKi8NCisgICAgICBSSS0+SFlTQ1IxICY9ICh1aW50MzJfdCl+KCh1aW50MzJfdClSSV9QaW4pOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgIC8qIEh5c3RlcmVzaXMgb2ZmICovDQorICAgICAgUkktPkhZU0NSMSB8PSAodWludDMyX3QpIFJJX1BpbjsNCisgICAgfQ0KKyAgfQ0KKyAgDQorICBlbHNlIGlmKFJJX1BvcnQgPT0gUklfUG9ydEIpDQorICB7DQorICANCisgICAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICAgIHsNCisgICAgICAvKiBIeXN0ZXJlc2lzIG9uICovDQorICAgICAgUkktPkhZU0NSMSAmPSAodWludDMyX3QpICh+KCh1aW50MzJfdClSSV9QaW4pIDw8IDE2KTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAvKiBIeXN0ZXJlc2lzIG9mZiAqLw0KKyAgICAgIFJJLT5IWVNDUjEgfD0gKHVpbnQzMl90KSAoKHVpbnQzMl90KShSSV9QaW4pIDw8IDE2KTsNCisgICAgfQ0KKyAgfSAgDQorIA0KKyAgZWxzZSBpZihSSV9Qb3J0ID09IFJJX1BvcnRDKQ0KKyAgew0KKyAgDQorICAgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgICB7DQorICAgICAgLyogSHlzdGVyZXNpcyBvbiAqLw0KKyAgICAgIFJJLT5IWVNDUjIgJj0gKHVpbnQzMl90KSAofigodWludDMyX3QpUklfUGluKSk7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgLyogSHlzdGVyZXNpcyBvZmYgKi8NCisgICAgICBSSS0+SFlTQ1IyIHw9ICh1aW50MzJfdCkgKFJJX1BpbiApOw0KKyAgICB9DQorICB9IA0KKyAgZWxzZSBpZihSSV9Qb3J0ID09IFJJX1BvcnREKQ0KKyAgew0KKyAgICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgICAgew0KKyAgICAgIC8qIEh5c3RlcmVzaXMgb24gKi8NCisgICAgICBSSS0+SFlTQ1IyICY9ICh1aW50MzJfdCkgKH4oKHVpbnQzMl90KVJJX1BpbikgPDwgMTYpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgIC8qIEh5c3RlcmVzaXMgb2ZmICovDQorICAgICAgUkktPkhZU0NSMiB8PSAodWludDMyX3QpICgodWludDMyX3QpKFJJX1BpbikgPDwgMTYpOw0KKw0KKyAgICB9DQorICB9ICAgDQorICBlbHNlIC8qIFJJX1BvcnQgPT0gUklfUG9ydEUgKi8NCisgIHsNCisgICAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICAgIHsNCisgICAgICAvKiBIeXN0ZXJlc2lzIG9uICovDQorICAgICAgUkktPkhZU0NSMyAmPSAodWludDMyX3QpICh+KCh1aW50MzJfdClSSV9QaW4pKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAvKiBIeXN0ZXJlc2lzIG9mZiAqLw0KKyAgICAgIFJJLT5IWVNDUjMgfD0gKHVpbnQzMl90KSAoUklfUGluICk7DQorICAgIH0NCisgIH0gICANCit9DQorDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8gICANCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9zcmMvc3RtMzJsMXh4X3RpbS5jIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF90aW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjRkZmFlCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF90aW0uYwpAQCAtMCwwICsxLDI1NTQgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDF4eF90aW0uYw0KKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWMS4wLjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBUSU0gZmlybXdhcmUgZnVuY3Rpb25zLg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBjb3B5DQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKi8gDQorDQorLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaW5jbHVkZSAic3RtMzJsMXh4X3RpbS5oIg0KKyNpbmNsdWRlICJzdG0zMmwxeHhfcmNjLmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNIA0KKyAgKiBAYnJpZWYgVElNIGRyaXZlciBtb2R1bGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBUSU1fUHJpdmF0ZV9EZWZpbmVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVElNIHJlZ2lzdGVycyBiaXQgbWFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCisjZGVmaW5lIFNNQ1JfRVRSX01BU0sgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGRikgDQorI2RlZmluZSBDQ01SX09GRlNFVCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTgpDQorI2RlZmluZSBDQ0VSX0NDRV9TRVQgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICANCisgIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFRJTV9Qcml2YXRlX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBUSU1fUHJpdmF0ZV9WYXJpYWJsZXMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KK3N0YXRpYyB2b2lkIFRJMV9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sDQorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpOw0KK3N0YXRpYyB2b2lkIFRJMl9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sDQorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpOw0KK3N0YXRpYyB2b2lkIFRJM19Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sDQorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpOw0KK3N0YXRpYyB2b2lkIFRJNF9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sDQorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpOw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFRJTV9Qcml2YXRlX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBUSU1fUHJpdmF0ZV9WYXJpYWJsZXMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVElNX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFRJTV9Qcml2YXRlX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBUSU14IHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgdmFsdWVzLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIgdG8gMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqICAgDQorICAqLw0KK3ZvaWQgVElNX0RlSW5pdChUSU1fVHlwZURlZiogVElNeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsgDQorICAgDQorICBpZiAoVElNeCA9PSBUSU0yKQ0KKyAgew0KKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1RJTTIsIEVOQUJMRSk7DQorICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVElNMiwgRElTQUJMRSk7DQorICB9DQorICBlbHNlIGlmIChUSU14ID09IFRJTTMpDQorICB7DQorICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVElNMywgRU5BQkxFKTsNCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU0zLCBESVNBQkxFKTsNCisgIH0NCisgIGVsc2UgaWYgKFRJTXggPT0gVElNNCkNCisgIHsNCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU00LCBFTkFCTEUpOw0KKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1RJTTQsIERJU0FCTEUpOw0KKyAgfSANCisNCisgIGVsc2UgaWYgKFRJTXggPT0gVElNNikNCisgIHsNCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU02LCBFTkFCTEUpOw0KKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1RJTTYsIERJU0FCTEUpOw0KKyAgfSANCisgIGVsc2UgaWYgKFRJTXggPT0gVElNNykNCisgIHsNCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU03LCBFTkFCTEUpOw0KKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1RJTTcsIERJU0FCTEUpOw0KKyAgfSANCisNCisgIGVsc2UgaWYgKFRJTXggPT0gVElNOSkNCisgIHsNCisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9USU05LCBFTkFCTEUpOw0KKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1RJTTksIERJU0FCTEUpOw0KKyAgfSANCisgIGVsc2UgaWYgKFRJTXggPT0gVElNMTApDQorICB7DQorICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNMTAsIEVOQUJMRSk7DQorICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNMTAsIERJU0FCTEUpOw0KKyAgfSANCisgIGVsc2UNCisgIHsNCisgICAgaWYgKFRJTXggPT0gVElNMTEpDQorICAgIHsNCisgICAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1RJTTExLCBFTkFCTEUpOw0KKyAgICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNMTEsIERJU0FCTEUpOyANCisgICAgfSAgDQorICB9DQorICAgICANCit9DQorDQorLyoqDQorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFRJTXggVGltZSBCYXNlIFVuaXQgcGVyaXBoZXJhbCBhY2NvcmRpbmcgdG8gDQorICAqICAgICAgICAgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fVGltZUJhc2VJbml0U3RydWN0Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIgdG8gMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fVGltZUJhc2VJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVElNX1RpbWVCYXNlSW5pdFR5cGVEZWYNCisgICogICAgICAgICBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3INCisgICogICAgICAgICB0aGUgc3BlY2lmaWVkIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fVGltZUJhc2VJbml0KFRJTV9UeXBlRGVmKiBUSU14LCBUSU1fVGltZUJhc2VJbml0VHlwZURlZiogVElNX1RpbWVCYXNlSW5pdFN0cnVjdCkNCit7DQorICB1aW50MTZfdCB0bXBjcjEgPSAwOw0KKw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7IA0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DT1VOVEVSX01PREUoVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX0NvdW50ZXJNb2RlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0NLRF9ESVYoVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX0Nsb2NrRGl2aXNpb24pKTsNCisNCisgIHRtcGNyMSA9IFRJTXgtPkNSMTsgIA0KKw0KKyAgaWYoKChUSU14KSA9PSBUSU0yKSB8fCAoKFRJTXgpID09IFRJTTMpIHx8ICgoVElNeCkgPT0gVElNNCkpDQorICB7CQkJCQkJCQkJCQkNCisgICAgLyogU2VsZWN0IHRoZSBDb3VudGVyIE1vZGUgKi8NCisgICAgdG1wY3IxICY9ICh1aW50MTZfdCkofigodWludDE2X3QpKFRJTV9DUjFfRElSIHwgVElNX0NSMV9DTVMpKSk7DQorICAgIHRtcGNyMSB8PSAodWludDMyX3QpVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX0NvdW50ZXJNb2RlOw0KKyAgfQ0KKyANCisgIGlmKCgoVElNeCkgIT0gVElNNikgJiYgKChUSU14KSAhPSBUSU03KSkNCisgIHsNCisgICAgLyogU2V0IHRoZSBjbG9jayBkaXZpc2lvbiAqLw0KKyAgICB0bXBjcjEgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ1IxX0NLRCkpOw0KKyAgICB0bXBjcjEgfD0gKHVpbnQzMl90KVRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QtPlRJTV9DbG9ja0RpdmlzaW9uOw0KKyAgfQ0KKw0KKyAgVElNeC0+Q1IxID0gdG1wY3IxOw0KKw0KKyAgLyogU2V0IHRoZSBBdXRvcmVsb2FkIHZhbHVlICovDQorICBUSU14LT5BUlIgPSBUSU1fVGltZUJhc2VJbml0U3RydWN0LT5USU1fUGVyaW9kIDsNCisgDQorICAvKiBTZXQgdGhlIFByZXNjYWxlciB2YWx1ZSAqLw0KKyAgVElNeC0+UFNDID0gVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX1ByZXNjYWxlcjsNCisgICAgDQorICAvKiBHZW5lcmF0ZSBhbiB1cGRhdGUgZXZlbnQgdG8gcmVsb2FkIHRoZSBQcmVzY2FsZXIgdmFsdWUgaW1tZWRpYXRseSAqLw0KKyAgVElNeC0+RUdSID0gVElNX1BTQ1JlbG9hZE1vZGVfSW1tZWRpYXRlOyAgICAgICAgICANCit9DQorDQorLyoqDQorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFRJTXggQ2hhbm5lbDEgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQNCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fT0NJbml0U3RydWN0Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX09DSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFRJTV9PQ0luaXRUeXBlRGVmIHN0cnVjdHVyZQ0KKyAgKiAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgVElNIA0KKyAgKiAgICAgICAgIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9PQzFJbml0KFRJTV9UeXBlRGVmKiBUSU14LCBUSU1fT0NJbml0VHlwZURlZiogVElNX09DSW5pdFN0cnVjdCkNCit7DQorICB1aW50MTZfdCB0bXBjY21yeCA9IDAsIHRtcGNjZXIgPSAwOw0KKyAgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0OTEwMTFfUEVSSVBIKFRJTXgpKTsgDQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX01PREUoVElNX09DSW5pdFN0cnVjdC0+VElNX09DTW9kZSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PVVRQVVRfU1RBVEUoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX1BPTEFSSVRZKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5KSk7ICAgDQorICAvKiBEaXNhYmxlIHRoZSBDaGFubmVsIDE6IFJlc2V0IHRoZSBDQzFFIEJpdCAqLw0KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpKH4odWludDE2X3QpVElNX0NDRVJfQ0MxRSk7DQorICANCisgIC8qIEdldCB0aGUgVElNeCBDQ0VSIHJlZ2lzdGVyIHZhbHVlICovDQorICB0bXBjY2VyID0gVElNeC0+Q0NFUjsNCisgIA0KKyAgLyogR2V0IHRoZSBUSU14IENDTVIxIHJlZ2lzdGVyIHZhbHVlICovDQorICB0bXBjY21yeCA9IFRJTXgtPkNDTVIxOw0KKyAgICANCisgIC8qIFJlc2V0IHRoZSBPdXRwdXQgQ29tcGFyZSBNb2RlIEJpdHMgKi8NCisgIHRtcGNjbXJ4ICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDTVIxX09DMU0pKTsNCisgIHRtcGNjbXJ4ICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDTVIxX0NDMVMpKTsNCisgIA0KKyAgLyogU2VsZWN0IHRoZSBPdXRwdXQgQ29tcGFyZSBNb2RlICovDQorICB0bXBjY21yeCB8PSBUSU1fT0NJbml0U3RydWN0LT5USU1fT0NNb2RlOw0KKyAgDQorICAvKiBSZXNldCB0aGUgT3V0cHV0IFBvbGFyaXR5IGxldmVsICovDQorICB0bXBjY2VyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDRVJfQ0MxUCkpOw0KKyAgLyogU2V0IHRoZSBPdXRwdXQgQ29tcGFyZSBQb2xhcml0eSAqLw0KKyAgdG1wY2NlciB8PSBUSU1fT0NJbml0U3RydWN0LT5USU1fT0NQb2xhcml0eTsNCisgIA0KKyAgLyogU2V0IHRoZSBPdXRwdXQgU3RhdGUgKi8NCisgIHRtcGNjZXIgfD0gVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlOw0KKyAgDQorICAvKiBTZXQgdGhlIENhcHR1cmUgQ29tcGFyZSBSZWdpc3RlciB2YWx1ZSAqLw0KKyAgVElNeC0+Q0NSMSA9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9QdWxzZTsNCisgIA0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMSAqLw0KKyAgVElNeC0+Q0NNUjEgPSB0bXBjY21yeDsNCisgIA0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ0VSICovDQorICBUSU14LT5DQ0VSID0gdG1wY2NlcjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFRJTXggQ2hhbm5lbDIgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQNCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fT0NJbml0U3RydWN0Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9PQ0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBUSU1fT0NJbml0VHlwZURlZiBzdHJ1Y3R1cmUNCisgICogICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFRJTSANCisgICogICAgICAgICBwZXJpcGhlcmFsLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fT0MySW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcnggPSAwLCB0bXBjY2VyID0gMDsNCisgICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDlfUEVSSVBIKFRJTXgpKTsgDQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX01PREUoVElNX09DSW5pdFN0cnVjdC0+VElNX09DTW9kZSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PVVRQVVRfU1RBVEUoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX1BPTEFSSVRZKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5KSk7ICAgDQorICAvKiBEaXNhYmxlIHRoZSBDaGFubmVsIDI6IFJlc2V0IHRoZSBDQzJFIEJpdCAqLw0KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMkUpKTsNCisgIA0KKyAgLyogR2V0IHRoZSBUSU14IENDRVIgcmVnaXN0ZXIgdmFsdWUgKi8gIA0KKyAgdG1wY2NlciA9IFRJTXgtPkNDRVI7DQorICANCisgIC8qIEdldCB0aGUgVElNeCBDQ01SMSByZWdpc3RlciB2YWx1ZSAqLw0KKyAgdG1wY2NtcnggPSBUSU14LT5DQ01SMTsNCisgICAgDQorICAvKiBSZXNldCB0aGUgT3V0cHV0IENvbXBhcmUgTW9kZSBCaXRzICovDQorICB0bXBjY21yeCAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ01SMV9PQzJNKSk7DQorICANCisgIC8qIFNlbGVjdCB0aGUgT3V0cHV0IENvbXBhcmUgTW9kZSAqLw0KKyAgdG1wY2NtcnggfD0gKHVpbnQxNl90KShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NNb2RlIDw8IDgpOw0KKyAgDQorICAvKiBSZXNldCB0aGUgT3V0cHV0IFBvbGFyaXR5IGxldmVsICovDQorICB0bXBjY2VyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDRVJfQ0MyUCkpOw0KKyAgLyogU2V0IHRoZSBPdXRwdXQgQ29tcGFyZSBQb2xhcml0eSAqLw0KKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5IDw8IDQpOw0KKyAgDQorICAvKiBTZXQgdGhlIE91dHB1dCBTdGF0ZSAqLw0KKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PdXRwdXRTdGF0ZSA8PCA0KTsNCisgIA0KKyAgLyogU2V0IHRoZSBDYXB0dXJlIENvbXBhcmUgUmVnaXN0ZXIgdmFsdWUgKi8NCisgIFRJTXgtPkNDUjIgPSBUSU1fT0NJbml0U3RydWN0LT5USU1fUHVsc2U7DQorICAgIA0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMSAqLw0KKyAgVElNeC0+Q0NNUjEgPSB0bXBjY21yeDsNCisgIA0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ0VSICovDQorICBUSU14LT5DQ0VSID0gdG1wY2NlcjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFRJTXggQ2hhbm5lbDMgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQNCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fT0NJbml0U3RydWN0Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAyLCAzIG9yIDQgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fT0NJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVElNX09DSW5pdFR5cGVEZWYgc3RydWN0dXJlDQorICAqICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBUSU0gDQorICAqICAgICAgICAgcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX09DM0luaXQoVElNX1R5cGVEZWYqIFRJTXgsIFRJTV9PQ0luaXRUeXBlRGVmKiBUSU1fT0NJbml0U3RydWN0KQ0KK3sNCisgIHVpbnQxNl90IHRtcGNjbXJ4ID0gMCwgdG1wY2NlciA9IDA7DQorICAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsgDQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX01PREUoVElNX09DSW5pdFN0cnVjdC0+VElNX09DTW9kZSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PVVRQVVRfU1RBVEUoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX1BPTEFSSVRZKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5KSk7ICAgDQorDQorICAvKiBEaXNhYmxlIHRoZSBDaGFubmVsIDI6IFJlc2V0IHRoZSBDQzJFIEJpdCAqLw0KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDM0UpKTsNCisgIA0KKyAgLyogR2V0IHRoZSBUSU14IENDRVIgcmVnaXN0ZXIgdmFsdWUgKi8NCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOw0KKyAgDQorICAvKiBHZXQgdGhlIFRJTXggQ0NNUjIgcmVnaXN0ZXIgdmFsdWUgKi8NCisgIHRtcGNjbXJ4ID0gVElNeC0+Q0NNUjI7DQorICAgIA0KKyAgLyogUmVzZXQgdGhlIE91dHB1dCBDb21wYXJlIE1vZGUgQml0cyAqLw0KKyAgdG1wY2NtcnggJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0MzTSkpOw0KKyAgDQorICAvKiBTZWxlY3QgdGhlIE91dHB1dCBDb21wYXJlIE1vZGUgKi8NCisgIHRtcGNjbXJ4IHw9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ01vZGU7DQorICANCisgIC8qIFJlc2V0IHRoZSBPdXRwdXQgUG9sYXJpdHkgbGV2ZWwgKi8NCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzNQKSk7DQorICAvKiBTZXQgdGhlIE91dHB1dCBDb21wYXJlIFBvbGFyaXR5ICovDQorICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DSW5pdFN0cnVjdC0+VElNX09DUG9sYXJpdHkgPDwgOCk7DQorICANCisgIC8qIFNldCB0aGUgT3V0cHV0IFN0YXRlICovDQorICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlIDw8IDgpOw0KKyAgDQorICAvKiBTZXQgdGhlIENhcHR1cmUgQ29tcGFyZSBSZWdpc3RlciB2YWx1ZSAqLw0KKyAgVElNeC0+Q0NSMyA9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9QdWxzZTsNCisgIA0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiAqLw0KKyAgVElNeC0+Q0NNUjIgPSB0bXBjY21yeDsNCisgIA0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ0VSICovDQorICBUSU14LT5DQ0VSID0gdG1wY2NlcjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFRJTXggQ2hhbm5lbDQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQNCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fT0NJbml0U3RydWN0Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9PQ0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBUSU1fT0NJbml0VHlwZURlZiBzdHJ1Y3R1cmUNCisgICogICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFRJTSANCisgICogICAgICAgICBwZXJpcGhlcmFsLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fT0M0SW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcnggPSAwLCB0bXBjY2VyID0gMDsNCisgICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOyANCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NfTU9ERShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NNb2RlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09VVFBVVF9TVEFURShUSU1fT0NJbml0U3RydWN0LT5USU1fT3V0cHV0U3RhdGUpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NfUE9MQVJJVFkoVElNX09DSW5pdFN0cnVjdC0+VElNX09DUG9sYXJpdHkpKTsgICANCisNCisgIC8qIERpc2FibGUgdGhlIENoYW5uZWwgMjogUmVzZXQgdGhlIENDNEUgQml0ICovDQorICBUSU14LT5DQ0VSICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDRVJfQ0M0RSkpOw0KKyAgDQorICAvKiBHZXQgdGhlIFRJTXggQ0NFUiByZWdpc3RlciB2YWx1ZSAqLw0KKyAgdG1wY2NlciA9IFRJTXgtPkNDRVI7DQorICANCisgIC8qIEdldCB0aGUgVElNeCBDQ01SMiByZWdpc3RlciB2YWx1ZSAqLw0KKyAgdG1wY2NtcnggPSBUSU14LT5DQ01SMjsNCisgICAgDQorICAvKiBSZXNldCB0aGUgT3V0cHV0IENvbXBhcmUgTW9kZSBCaXRzICovDQorICB0bXBjY21yeCAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ01SMl9PQzRNKSk7DQorICANCisgIC8qIFNlbGVjdCB0aGUgT3V0cHV0IENvbXBhcmUgTW9kZSAqLw0KKyAgdG1wY2NtcnggfD0gKHVpbnQxNl90KShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NNb2RlIDw8IDgpOw0KKyAgDQorICAvKiBSZXNldCB0aGUgT3V0cHV0IFBvbGFyaXR5IGxldmVsICovDQorICB0bXBjY2VyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDRVJfQ0M0UCkpOw0KKyAgLyogU2V0IHRoZSBPdXRwdXQgQ29tcGFyZSBQb2xhcml0eSAqLw0KKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5IDw8IDEyKTsNCisgIA0KKyAgLyogU2V0IHRoZSBPdXRwdXQgU3RhdGUgKi8NCisgIHRtcGNjZXIgfD0gKHVpbnQxNl90KShUSU1fT0NJbml0U3RydWN0LT5USU1fT3V0cHV0U3RhdGUgPDwgMTIpOw0KKyAgDQorICAvKiBTZXQgdGhlIENhcHR1cmUgQ29tcGFyZSBSZWdpc3RlciB2YWx1ZSAqLw0KKyAgVElNeC0+Q0NSNCA9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9QdWxzZTsNCisgIA0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiAqLyAgDQorICBUSU14LT5DQ01SMiA9IHRtcGNjbXJ4Ow0KKyAgDQorICAvKiBXcml0ZSB0byBUSU14IENDRVIgKi8NCisgIFRJTXgtPkNDRVIgPSB0bXBjY2VyOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgVElNIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQNCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fSUNJbml0U3RydWN0Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0lDSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFRJTV9JQ0luaXRUeXBlRGVmIHN0cnVjdHVyZQ0KKyAgKiAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgVElNIA0KKyAgKiAgICAgICAgIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9JQ0luaXQoVElNX1R5cGVEZWYqIFRJTXgsIFRJTV9JQ0luaXRUeXBlRGVmKiBUSU1fSUNJbml0U3RydWN0KQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDkxMDExX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0lDX1BPTEFSSVRZKFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1BvbGFyaXR5KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0lDX1NFTEVDVElPTihUSU1fSUNJbml0U3RydWN0LT5USU1fSUNTZWxlY3Rpb24pKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUFJFU0NBTEVSKFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1ByZXNjYWxlcikpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19GSUxURVIoVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDRmlsdGVyKSk7DQorICANCisgIGlmIChUSU1fSUNJbml0U3RydWN0LT5USU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8xKQ0KKyAgew0KKyAgICAvKiBUSTEgQ29uZmlndXJhdGlvbiAqLw0KKyAgICBUSTFfQ29uZmlnKFRJTXgsIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1BvbGFyaXR5LA0KKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbiwNCisgICAgICAgICAgICAgICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNGaWx0ZXIpOw0KKyAgICAvKiBTZXQgdGhlIElucHV0IENhcHR1cmUgUHJlc2NhbGVyIHZhbHVlICovDQorICAgIFRJTV9TZXRJQzFQcmVzY2FsZXIoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUHJlc2NhbGVyKTsNCisgIH0NCisgIGVsc2UgaWYgKFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9DaGFubmVsID09IFRJTV9DaGFubmVsXzIpDQorICB7DQorICAgIC8qIFRJMiBDb25maWd1cmF0aW9uICovDQorICAgIFRJMl9Db25maWcoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUG9sYXJpdHksDQorICAgICAgICAgICAgICAgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDU2VsZWN0aW9uLA0KKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ0ZpbHRlcik7DQorICAgIC8qIFNldCB0aGUgSW5wdXQgQ2FwdHVyZSBQcmVzY2FsZXIgdmFsdWUgKi8NCisgICAgVElNX1NldElDMlByZXNjYWxlcihUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQcmVzY2FsZXIpOw0KKyAgfQ0KKyAgZWxzZSBpZiAoVElNX0lDSW5pdFN0cnVjdC0+VElNX0NoYW5uZWwgPT0gVElNX0NoYW5uZWxfMykNCisgIHsNCisgICAgLyogVEkzIENvbmZpZ3VyYXRpb24gKi8NCisgICAgVEkzX0NvbmZpZyhUSU14LCAgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUG9sYXJpdHksDQorICAgICAgICAgICAgICAgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDU2VsZWN0aW9uLA0KKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ0ZpbHRlcik7DQorICAgIC8qIFNldCB0aGUgSW5wdXQgQ2FwdHVyZSBQcmVzY2FsZXIgdmFsdWUgKi8NCisgICAgVElNX1NldElDM1ByZXNjYWxlcihUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQcmVzY2FsZXIpOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBUSTQgQ29uZmlndXJhdGlvbiAqLw0KKyAgICBUSTRfQ29uZmlnKFRJTXgsIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1BvbGFyaXR5LA0KKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbiwNCisgICAgICAgICAgICAgICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNGaWx0ZXIpOw0KKyAgICAvKiBTZXQgdGhlIElucHV0IENhcHR1cmUgUHJlc2NhbGVyIHZhbHVlICovDQorICAgIFRJTV9TZXRJQzRQcmVzY2FsZXIoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUHJlc2NhbGVyKTsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQNCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fSUNJbml0U3RydWN0IHRvIG1lYXN1cmUgYW4gZXh0ZXJuYWwgUFdNIHNpZ25hbC4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzLCA0IG9yIDkgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fSUNJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVElNX0lDSW5pdFR5cGVEZWYgc3RydWN0dXJlDQorICAqICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBUSU0gDQorICAqICAgICAgICAgcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1BXTUlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIFRJTV9JQ0luaXRUeXBlRGVmKiBUSU1fSUNJbml0U3RydWN0KQ0KK3sNCisgIHVpbnQxNl90IGljb3Bwb3NpdGVwb2xhcml0eSA9IFRJTV9JQ1BvbGFyaXR5X1Jpc2luZzsNCisgIHVpbnQxNl90IGljb3Bwb3NpdGVzZWxlY3Rpb24gPSBUSU1fSUNTZWxlY3Rpb25fRGlyZWN0VEk7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5X1BFUklQSChUSU14KSk7DQorICAvKiBTZWxlY3QgdGhlIE9wcG9zaXRlIElucHV0IFBvbGFyaXR5ICovDQorICBpZiAoVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUG9sYXJpdHkgPT0gVElNX0lDUG9sYXJpdHlfUmlzaW5nKQ0KKyAgew0KKyAgICBpY29wcG9zaXRlcG9sYXJpdHkgPSBUSU1fSUNQb2xhcml0eV9GYWxsaW5nOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBpY29wcG9zaXRlcG9sYXJpdHkgPSBUSU1fSUNQb2xhcml0eV9SaXNpbmc7DQorICB9DQorICAvKiBTZWxlY3QgdGhlIE9wcG9zaXRlIElucHV0ICovDQorICBpZiAoVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDU2VsZWN0aW9uID09IFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSSkNCisgIHsNCisgICAgaWNvcHBvc2l0ZXNlbGVjdGlvbiA9IFRJTV9JQ1NlbGVjdGlvbl9JbmRpcmVjdFRJOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBpY29wcG9zaXRlc2VsZWN0aW9uID0gVElNX0lDU2VsZWN0aW9uX0RpcmVjdFRJOw0KKyAgfQ0KKyAgaWYgKFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9DaGFubmVsID09IFRJTV9DaGFubmVsXzEpDQorICB7DQorICAgIC8qIFRJMSBDb25maWd1cmF0aW9uICovDQorICAgIFRJMV9Db25maWcoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUG9sYXJpdHksIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbiwNCisgICAgICAgICAgICAgICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNGaWx0ZXIpOw0KKyAgICAvKiBTZXQgdGhlIElucHV0IENhcHR1cmUgUHJlc2NhbGVyIHZhbHVlICovDQorICAgIFRJTV9TZXRJQzFQcmVzY2FsZXIoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUHJlc2NhbGVyKTsNCisgICAgLyogVEkyIENvbmZpZ3VyYXRpb24gKi8NCisgICAgVEkyX0NvbmZpZyhUSU14LCBpY29wcG9zaXRlcG9sYXJpdHksIGljb3Bwb3NpdGVzZWxlY3Rpb24sIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ0ZpbHRlcik7DQorICAgIC8qIFNldCB0aGUgSW5wdXQgQ2FwdHVyZSBQcmVzY2FsZXIgdmFsdWUgKi8NCisgICAgVElNX1NldElDMlByZXNjYWxlcihUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQcmVzY2FsZXIpOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgeyANCisgICAgLyogVEkyIENvbmZpZ3VyYXRpb24gKi8NCisgICAgVEkyX0NvbmZpZyhUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQb2xhcml0eSwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDU2VsZWN0aW9uLA0KKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ0ZpbHRlcik7DQorICAgIC8qIFNldCB0aGUgSW5wdXQgQ2FwdHVyZSBQcmVzY2FsZXIgdmFsdWUgKi8NCisgICAgVElNX1NldElDMlByZXNjYWxlcihUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQcmVzY2FsZXIpOw0KKyAgICAvKiBUSTEgQ29uZmlndXJhdGlvbiAqLw0KKyAgICBUSTFfQ29uZmlnKFRJTXgsIGljb3Bwb3NpdGVwb2xhcml0eSwgaWNvcHBvc2l0ZXNlbGVjdGlvbiwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDRmlsdGVyKTsNCisgICAgLyogU2V0IHRoZSBJbnB1dCBDYXB0dXJlIFByZXNjYWxlciB2YWx1ZSAqLw0KKyAgICBUSU1fU2V0SUMxUHJlc2NhbGVyKFRJTXgsIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1ByZXNjYWxlcik7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggVElNX1RpbWVCYXNlSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4NCisgICogQHBhcmFtICBUSU1fVGltZUJhc2VJbml0U3RydWN0IDogcG9pbnRlciB0byBhIFRJTV9UaW1lQmFzZUluaXRUeXBlRGVmDQorICAqICAgICAgICAgc3RydWN0dXJlIHdoaWNoIHdpbGwgYmUgaW5pdGlhbGl6ZWQuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9UaW1lQmFzZVN0cnVjdEluaXQoVElNX1RpbWVCYXNlSW5pdFR5cGVEZWYqIFRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QpDQorew0KKyAgLyogU2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gKi8NCisgIFRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QtPlRJTV9QZXJpb2QgPSAweEZGRkY7DQorICBUSU1fVGltZUJhc2VJbml0U3RydWN0LT5USU1fUHJlc2NhbGVyID0gMHgwMDAwOw0KKyAgVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX0Nsb2NrRGl2aXNpb24gPSBUSU1fQ0tEX0RJVjE7DQorICBUSU1fVGltZUJhc2VJbml0U3RydWN0LT5USU1fQ291bnRlck1vZGUgPSBUSU1fQ291bnRlck1vZGVfVXA7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggVElNX09DSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4NCisgICogQHBhcmFtICBUSU1fT0NJbml0U3RydWN0IDogcG9pbnRlciB0byBhIFRJTV9PQ0luaXRUeXBlRGVmIHN0cnVjdHVyZSB3aGljaCB3aWxsDQorICAqICAgICAgICAgYmUgaW5pdGlhbGl6ZWQuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9PQ1N0cnVjdEluaXQoVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpDQorew0KKyAgLyogU2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gKi8NCisgIFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ01vZGUgPSBUSU1fT0NNb2RlX1RpbWluZzsNCisgIFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PdXRwdXRTdGF0ZSA9IFRJTV9PdXRwdXRTdGF0ZV9EaXNhYmxlOw0KKyAgVElNX09DSW5pdFN0cnVjdC0+VElNX1B1bHNlID0gMHgwMDAwOw0KKyAgVElNX09DSW5pdFN0cnVjdC0+VElNX09DUG9sYXJpdHkgPSBUSU1fT0NQb2xhcml0eV9IaWdoOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBGaWxscyBlYWNoIFRJTV9JQ0luaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUuDQorICAqIEBwYXJhbSAgVElNX0lDSW5pdFN0cnVjdCA6IHBvaW50ZXIgdG8gYSBUSU1fSUNJbml0VHlwZURlZiBzdHJ1Y3R1cmUgd2hpY2ggd2lsbA0KKyAgKiAgICAgICAgIGJlIGluaXRpYWxpemVkLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fSUNTdHJ1Y3RJbml0KFRJTV9JQ0luaXRUeXBlRGVmKiBUSU1fSUNJbml0U3RydWN0KQ0KK3sNCisgIC8qIFNldCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uICovDQorICBUSU1fSUNJbml0U3RydWN0LT5USU1fQ2hhbm5lbCA9IFRJTV9DaGFubmVsXzE7DQorICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQb2xhcml0eSA9IFRJTV9JQ1BvbGFyaXR5X1Jpc2luZzsNCisgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbiA9IFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSTsNCisgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1ByZXNjYWxlciA9IFRJTV9JQ1BTQ19ESVYxOw0KKyAgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDRmlsdGVyID0gMHgwMDsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIgdG8gMTEgdG8gc2VsZWN0IHRoZSBUSU14IHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBwZXJpcGhlcmFsLg0KKyAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9DbWQoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsgDQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogRW5hYmxlIHRoZSBUSU0gQ291bnRlciAqLw0KKyAgICBUSU14LT5DUjEgfD0gVElNX0NSMV9DRU47DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIERpc2FibGUgdGhlIFRJTSBDb3VudGVyICovDQorICAgIFRJTXgtPkNSMSAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DUjFfQ0VOKSk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBUSU0gaW50ZXJydXB0cy4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyIHRvIDExIHRvIHNlbGVjdCB0aGUgVElNeCBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9JVDogc3BlY2lmaWVzIHRoZSBUSU0gaW50ZXJydXB0cyBzb3VyY2VzIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0lUX1VwZGF0ZTogVElNIHVwZGF0ZSBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9DQzE6IFRJTSBDYXB0dXJlIENvbXBhcmUgMSBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9DQzI6IFRJTSBDYXB0dXJlIENvbXBhcmUgMiBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9DQzQ6IFRJTSBDYXB0dXJlIENvbXBhcmUgNCBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9UcmlnZ2VyOiBUSU0gVHJpZ2dlciBJbnRlcnJ1cHQgc291cmNlDQorICAqIEBub3RlIA0KKyAgKiAgIC0gVElNNiBhbmQgVElNNyBjYW4gb25seSBnZW5lcmF0ZSBhbiB1cGRhdGUgaW50ZXJydXB0LiAgDQorICAqICAgLSBUSU1fSVRfQ0MyLCBUSU1fSVRfQ0MzLCBUSU1fSVRfQ0M0IGFuZCBUSU1fSVRfVHJpZ2dlciBjYW4gbm90IGJlIHVzZWQgd2l0aCBUSU0xMCBhbmQgVElNMTENCisgICogICAtIFRJTV9JVF9DQzMsIFRJTV9JVF9DQzQgY2FuIG5vdCBiZSB1c2VkIHdpdGggVElNOS4gICANCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBUSU0gaW50ZXJydXB0cy4NCisgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fSVRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0lUKFRJTV9JVCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIEVuYWJsZSB0aGUgSW50ZXJydXB0IHNvdXJjZXMgKi8NCisgICAgVElNeC0+RElFUiB8PSBUSU1fSVQ7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIERpc2FibGUgdGhlIEludGVycnVwdCBzb3VyY2VzICovDQorICAgIFRJTXgtPkRJRVIgJj0gKHVpbnQxNl90KX5USU1fSVQ7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggZXZlbnQgdG8gYmUgZ2VuZXJhdGUgYnkgc29mdHdhcmUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiB0byAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9FdmVudFNvdXJjZTogc3BlY2lmaWVzIHRoZSBldmVudCBzb3VyY2UuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgkgICANCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX1VwZGF0ZTogVGltZXIgdXBkYXRlIEV2ZW50IHNvdXJjZQ0KKyAgKiAgICAgQGFyZyBUSU1fRXZlbnRTb3VyY2VfQ0MxOiBUaW1lciBDYXB0dXJlIENvbXBhcmUgMSBFdmVudCBzb3VyY2UNCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX0NDMjogVGltZXIgQ2FwdHVyZSBDb21wYXJlIDIgRXZlbnQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9FdmVudFNvdXJjZV9DQzM6IFRpbWVyIENhcHR1cmUgQ29tcGFyZSAzIEV2ZW50IHNvdXJjZQ0KKyAgKiAgICAgQGFyZyBUSU1fRXZlbnRTb3VyY2VfQ0M0OiBUaW1lciBDYXB0dXJlIENvbXBhcmUgNCBFdmVudCBzb3VyY2UgDQorICAqICAgICBAYXJnIFRJTV9FdmVudFNvdXJjZV9UcmlnZ2VyOiBUaW1lciBUcmlnZ2VyIEV2ZW50IHNvdXJjZQ0KKyAgKiBAbm90ZSANCisgICogICAtIFRJTTYgYW5kIFRJTTcgY2FuIG9ubHkgZ2VuZXJhdGUgYW4gdXBkYXRlIGV2ZW50LiANCisgICogICAtIFRJTTkgY2FuIG9ubHkgZ2VuZXJhdGUgYW4gdXBkYXRlIGV2ZW50LCBDYXB0dXJlIENvbXBhcmUgMSBldmVudCwgDQorICAqICAgICBDYXB0dXJlIENvbXBhcmUgMiBldmVudCBhbmQgVElNX0V2ZW50U291cmNlX1RyaWdnZXIuICANCisgICogICAtIFRJTTEwIGFuZCBUSU0xMSBjYW4gb25seSBnZW5lcmF0ZSBhbiB1cGRhdGUgZXZlbnQgYW5kIENhcHR1cmUgQ29tcGFyZSAxIGV2ZW50LiAgICAgICAgICAgIA0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fR2VuZXJhdGVFdmVudChUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0V2ZW50U291cmNlKQ0KK3sgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fRVZFTlRfU09VUkNFKFRJTV9FdmVudFNvdXJjZSkpOyANCisgIC8qIFNldCB0aGUgZXZlbnQgc291cmNlcyAqLw0KKyAgVElNeC0+RUdSID0gVElNX0V2ZW50U291cmNlOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14knMgRE1BIGludGVyZmFjZS4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzIG9yIDQgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fRE1BQmFzZTogRE1BIEJhc2UgYWRkcmVzcy4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fRE1BQmFzZV9DUiwgVElNX0RNQUJhc2VfQ1IyLCBUSU1fRE1BQmFzZV9TTUNSLA0KKyAgKiAgICAgICAgICBUSU1fRE1BQmFzZV9ESUVSLCBUSU1fRE1BQmFzZV9TUiwgVElNX0RNQUJhc2VfRUdSLA0KKyAgKiAgICAgICAgICBUSU1fRE1BQmFzZV9DQ01SMSwgVElNX0RNQUJhc2VfQ0NNUjIsIFRJTV9ETUFCYXNlX0NDRVIsDQorICAqICAgICAgICAgIFRJTV9ETUFCYXNlX0NOVCwgVElNX0RNQUJhc2VfUFNDLCBUSU1fRE1BQmFzZV9BUlIsDQorICAqICAgICAgICAgIFRJTV9ETUFCYXNlX0NDUjEsIFRJTV9ETUFCYXNlX0NDUjIsIFRJTV9ETUFCYXNlX0NDUjMsIA0KKyAgKiAgICAgICAgICBUSU1fRE1BQmFzZV9DQ1I0LCBUSU1fRE1BQmFzZV9EQ1IuDQorICAqIEBwYXJhbSAgVElNX0RNQUJ1cnN0TGVuZ3RoOiBETUEgQnVyc3QgbGVuZ3RoLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgdmFsdWUgYmV0d2VlbjoNCisgICogICBUSU1fRE1BQnVyc3RMZW5ndGhfMUJ5dGUgYW5kIFRJTV9ETUFCdXJzdExlbmd0aF8xOEJ5dGVzLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fRE1BQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRE1BQmFzZSwgdWludDE2X3QgVElNX0RNQUJ1cnN0TGVuZ3RoKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfQkFTRShUSU1fRE1BQmFzZSkpOyANCisgIGFzc2VydF9wYXJhbShJU19USU1fRE1BX0xFTkdUSChUSU1fRE1BQnVyc3RMZW5ndGgpKTsNCisgIC8qIFNldCB0aGUgRE1BIEJhc2UgYW5kIHRoZSBETUEgQnVyc3QgTGVuZ3RoICovDQorICBUSU14LT5EQ1IgPSBUSU1fRE1BQmFzZSB8IFRJTV9ETUFCdXJzdExlbmd0aDsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVElNeJJzIERNQSBSZXF1ZXN0cy4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzLCA0LCA2IG9yIDcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4gDQorICAqIEBwYXJhbSAgVElNX0RNQVNvdXJjZTogc3BlY2lmaWVzIHRoZSBETUEgUmVxdWVzdCBzb3VyY2VzLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9ETUFfVXBkYXRlOiBUSU0gdXBkYXRlIEludGVycnVwdCBzb3VyY2UNCisgICogICAgIEBhcmcgVElNX0RNQV9DQzE6IFRJTSBDYXB0dXJlIENvbXBhcmUgMSBETUEgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9ETUFfQ0MyOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDIgRE1BIHNvdXJjZQ0KKyAgKiAgICAgQGFyZyBUSU1fRE1BX0NDMzogVElNIENhcHR1cmUgQ29tcGFyZSAzIERNQSBzb3VyY2UNCisgICogICAgIEBhcmcgVElNX0RNQV9DQzQ6IFRJTSBDYXB0dXJlIENvbXBhcmUgNCBETUEgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9ETUFfVHJpZ2dlcjogVElNIFRyaWdnZXIgRE1BIHNvdXJjZQ0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIERNQSBSZXF1ZXN0IHNvdXJjZXMuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX0RNQUNtZChUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0RNQVNvdXJjZSwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ2N19QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfU09VUkNFKFRJTV9ETUFTb3VyY2UpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICAvKiBFbmFibGUgdGhlIERNQSBzb3VyY2VzICovDQorICAgIFRJTXgtPkRJRVIgfD0gVElNX0RNQVNvdXJjZTsgDQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIERpc2FibGUgdGhlIERNQSBzb3VyY2VzICovDQorICAgIFRJTXgtPkRJRVIgJj0gKHVpbnQxNl90KX5USU1fRE1BU291cmNlOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IGludGVycm5hbCBDbG9jaw0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fSW50ZXJuYWxDbG9ja0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5X1BFUklQSChUSU14KSk7DQorICAvKiBEaXNhYmxlIHNsYXZlIG1vZGUgdG8gY2xvY2sgdGhlIHByZXNjYWxlciBkaXJlY3RseSB3aXRoIHRoZSBpbnRlcm5hbCBjbG9jayAqLw0KKyAgVElNeC0+U01DUiAmPSAgKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fU01DUl9TTVMpKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBJbnRlcm5hbCBUcmlnZ2VyIGFzIEV4dGVybmFsIENsb2NrDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCBvciA5IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0lUUlNvdXJjZTogVHJpZ2dlciBzb3VyY2UuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogQHBhcmFtICBUSU1fVFNfSVRSMDogSW50ZXJuYWwgVHJpZ2dlciAwDQorICAqIEBwYXJhbSAgVElNX1RTX0lUUjE6IEludGVybmFsIFRyaWdnZXIgMQ0KKyAgKiBAcGFyYW0gIFRJTV9UU19JVFIyOiBJbnRlcm5hbCBUcmlnZ2VyIDINCisgICogQHBhcmFtICBUSU1fVFNfSVRSMzogSW50ZXJuYWwgVHJpZ2dlciAzDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9JVFJ4RXh0ZXJuYWxDbG9ja0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lucHV0VHJpZ2dlclNvdXJjZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0lOVEVSTkFMX1RSSUdHRVJfU0VMRUNUSU9OKFRJTV9JbnB1dFRyaWdnZXJTb3VyY2UpKTsNCisgIC8qIFNlbGVjdCB0aGUgSW50ZXJuYWwgVHJpZ2dlciAqLw0KKyAgVElNX1NlbGVjdElucHV0VHJpZ2dlcihUSU14LCBUSU1fSW5wdXRUcmlnZ2VyU291cmNlKTsNCisgIC8qIFNlbGVjdCB0aGUgRXh0ZXJuYWwgY2xvY2sgbW9kZTEgKi8NCisgIFRJTXgtPlNNQ1IgfD0gVElNX1NsYXZlTW9kZV9FeHRlcm5hbDE7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggVHJpZ2dlciBhcyBFeHRlcm5hbCBDbG9jaw0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9USXhFeHRlcm5hbENMS1NvdXJjZTogVHJpZ2dlciBzb3VyY2UuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX1RJeEV4dGVybmFsQ0xLMVNvdXJjZV9USTFFRDogVEkxIEVkZ2UgRGV0ZWN0b3INCisgICogICAgIEBhcmcgVElNX1RJeEV4dGVybmFsQ0xLMVNvdXJjZV9USTE6IEZpbHRlcmVkIFRpbWVyIElucHV0IDENCisgICogICAgIEBhcmcgVElNX1RJeEV4dGVybmFsQ0xLMVNvdXJjZV9USTI6IEZpbHRlcmVkIFRpbWVyIElucHV0IDINCisgICogQHBhcmFtICBUSU1fSUNQb2xhcml0eTogc3BlY2lmaWVzIHRoZSBUSXggUG9sYXJpdHkuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0lDUG9sYXJpdHlfUmlzaW5nDQorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X0ZhbGxpbmcNCisgICogQHBhcmFtICBJQ0ZpbHRlciA6IHNwZWNpZmllcyB0aGUgZmlsdGVyIHZhbHVlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIDB4MCBhbmQgMHhGLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fVEl4RXh0ZXJuYWxDbG9ja0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX1RJeEV4dGVybmFsQ0xLU291cmNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgVElNX0lDUG9sYXJpdHksIHVpbnQxNl90IElDRmlsdGVyKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDlfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUE9MQVJJVFkoVElNX0lDUG9sYXJpdHkpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfRklMVEVSKElDRmlsdGVyKSk7DQorICANCisgIC8qIENvbmZpZ3VyZSB0aGUgVGltZXIgSW5wdXQgQ2xvY2sgU291cmNlICovDQorICBpZiAoVElNX1RJeEV4dGVybmFsQ0xLU291cmNlID09IFRJTV9USXhFeHRlcm5hbENMSzFTb3VyY2VfVEkyKQ0KKyAgew0KKyAgICBUSTJfQ29uZmlnKFRJTXgsIFRJTV9JQ1BvbGFyaXR5LCBUSU1fSUNTZWxlY3Rpb25fRGlyZWN0VEksIElDRmlsdGVyKTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgVEkxX0NvbmZpZyhUSU14LCBUSU1fSUNQb2xhcml0eSwgVElNX0lDU2VsZWN0aW9uX0RpcmVjdFRJLCBJQ0ZpbHRlcik7DQorICB9DQorICAvKiBTZWxlY3QgdGhlIFRyaWdnZXIgc291cmNlICovDQorICBUSU1fU2VsZWN0SW5wdXRUcmlnZ2VyKFRJTXgsIFRJTV9USXhFeHRlcm5hbENMS1NvdXJjZSk7DQorICAvKiBTZWxlY3QgdGhlIEV4dGVybmFsIGNsb2NrIG1vZGUxICovDQorICBUSU14LT5TTUNSIHw9IFRJTV9TbGF2ZU1vZGVfRXh0ZXJuYWwxOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBFeHRlcm5hbCBjbG9jayBNb2RlMQ0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9FeHRUUkdQcmVzY2FsZXI6IFRoZSBleHRlcm5hbCBUcmlnZ2VyIFByZXNjYWxlci4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX09GRjogRVRSUCBQcmVzY2FsZXIgT0ZGLg0KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjI6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgMi4NCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BTQ19ESVY0OiBFVFJQIGZyZXF1ZW5jeSBkaXZpZGVkIGJ5IDQuDQorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQU0NfRElWODogRVRSUCBmcmVxdWVuY3kgZGl2aWRlZCBieSA4Lg0KKyAgKiBAcGFyYW0gIFRJTV9FeHRUUkdQb2xhcml0eTogVGhlIGV4dGVybmFsIFRyaWdnZXIgUG9sYXJpdHkuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BvbGFyaXR5X0ludmVydGVkOiBhY3RpdmUgbG93IG9yIGZhbGxpbmcgZWRnZSBhY3RpdmUuDQorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQb2xhcml0eV9Ob25JbnZlcnRlZDogYWN0aXZlIGhpZ2ggb3IgcmlzaW5nIGVkZ2UgYWN0aXZlLg0KKyAgKiBAcGFyYW0gIEV4dFRSR0ZpbHRlcjogRXh0ZXJuYWwgVHJpZ2dlciBGaWx0ZXIuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gMHgwMCBhbmQgMHgwRg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fRVRSQ2xvY2tNb2RlMUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0V4dFRSR1ByZXNjYWxlciwgdWludDE2X3QgVElNX0V4dFRSR1BvbGFyaXR5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgRXh0VFJHRmlsdGVyKQ0KK3sNCisgIHVpbnQxNl90IHRtcHNtY3IgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0VYVF9QUkVTQ0FMRVIoVElNX0V4dFRSR1ByZXNjYWxlcikpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfUE9MQVJJVFkoVElNX0V4dFRSR1BvbGFyaXR5KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0VYVF9GSUxURVIoRXh0VFJHRmlsdGVyKSk7DQorICANCisgIC8qIENvbmZpZ3VyZSB0aGUgRVRSIENsb2NrIHNvdXJjZSAqLw0KKyAgVElNX0VUUkNvbmZpZyhUSU14LCBUSU1fRXh0VFJHUHJlc2NhbGVyLCBUSU1fRXh0VFJHUG9sYXJpdHksIEV4dFRSR0ZpbHRlcik7DQorICANCisgIC8qIEdldCB0aGUgVElNeCBTTUNSIHJlZ2lzdGVyIHZhbHVlICovDQorICB0bXBzbWNyID0gVElNeC0+U01DUjsNCisgIC8qIFJlc2V0IHRoZSBTTVMgQml0cyAqLw0KKyAgdG1wc21jciAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9TTUNSX1NNUykpOw0KKyAgLyogU2VsZWN0IHRoZSBFeHRlcm5hbCBjbG9jayBtb2RlMSAqLw0KKyAgdG1wc21jciB8PSBUSU1fU2xhdmVNb2RlX0V4dGVybmFsMTsNCisgIC8qIFNlbGVjdCB0aGUgVHJpZ2dlciBzZWxlY3Rpb24gOiBFVFJGICovDQorICB0bXBzbWNyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX1NNQ1JfVFMpKTsNCisgIHRtcHNtY3IgfD0gVElNX1RTX0VUUkY7DQorICAvKiBXcml0ZSB0byBUSU14IFNNQ1IgKi8NCisgIFRJTXgtPlNNQ1IgPSB0bXBzbWNyOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBFeHRlcm5hbCBjbG9jayBNb2RlMg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0V4dFRSR1ByZXNjYWxlcjogVGhlIGV4dGVybmFsIFRyaWdnZXIgUHJlc2NhbGVyLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQU0NfT0ZGOiBFVFJQIFByZXNjYWxlciBPRkYuDQorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQU0NfRElWMjogRVRSUCBmcmVxdWVuY3kgZGl2aWRlZCBieSAyLg0KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjQ6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgNC4NCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BTQ19ESVY4OiBFVFJQIGZyZXF1ZW5jeSBkaXZpZGVkIGJ5IDguDQorICAqIEBwYXJhbSAgVElNX0V4dFRSR1BvbGFyaXR5OiBUaGUgZXh0ZXJuYWwgVHJpZ2dlciBQb2xhcml0eS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUG9sYXJpdHlfSW52ZXJ0ZWQ6IGFjdGl2ZSBsb3cgb3IgZmFsbGluZyBlZGdlIGFjdGl2ZS4NCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BvbGFyaXR5X05vbkludmVydGVkOiBhY3RpdmUgaGlnaCBvciByaXNpbmcgZWRnZSBhY3RpdmUuDQorICAqIEBwYXJhbSAgRXh0VFJHRmlsdGVyOiBFeHRlcm5hbCBUcmlnZ2VyIEZpbHRlci4NCisgICogICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiAweDAwIGFuZCAweDBGDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9FVFJDbG9ja01vZGUyQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRXh0VFJHUHJlc2NhbGVyLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9FeHRUUkdQb2xhcml0eSwgdWludDE2X3QgRXh0VFJHRmlsdGVyKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDkxMDExX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0VYVF9QUkVTQ0FMRVIoVElNX0V4dFRSR1ByZXNjYWxlcikpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfUE9MQVJJVFkoVElNX0V4dFRSR1BvbGFyaXR5KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0VYVF9GSUxURVIoRXh0VFJHRmlsdGVyKSk7DQorICANCisgIC8qIENvbmZpZ3VyZSB0aGUgRVRSIENsb2NrIHNvdXJjZSAqLw0KKyAgVElNX0VUUkNvbmZpZyhUSU14LCBUSU1fRXh0VFJHUHJlc2NhbGVyLCBUSU1fRXh0VFJHUG9sYXJpdHksIEV4dFRSR0ZpbHRlcik7DQorICAvKiBFbmFibGUgdGhlIEV4dGVybmFsIGNsb2NrIG1vZGUyICovDQorICBUSU14LT5TTUNSIHw9IFRJTV9TTUNSX0VDRTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBFeHRlcm5hbCBUcmlnZ2VyIChFVFIpLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0V4dFRSR1ByZXNjYWxlcjogVGhlIGV4dGVybmFsIFRyaWdnZXIgUHJlc2NhbGVyLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQU0NfT0ZGOiBFVFJQIFByZXNjYWxlciBPRkYuDQorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQU0NfRElWMjogRVRSUCBmcmVxdWVuY3kgZGl2aWRlZCBieSAyLg0KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjQ6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgNC4NCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BTQ19ESVY4OiBFVFJQIGZyZXF1ZW5jeSBkaXZpZGVkIGJ5IDguDQorICAqIEBwYXJhbSAgVElNX0V4dFRSR1BvbGFyaXR5OiBUaGUgZXh0ZXJuYWwgVHJpZ2dlciBQb2xhcml0eS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUG9sYXJpdHlfSW52ZXJ0ZWQ6IGFjdGl2ZSBsb3cgb3IgZmFsbGluZyBlZGdlIGFjdGl2ZS4NCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BvbGFyaXR5X05vbkludmVydGVkOiBhY3RpdmUgaGlnaCBvciByaXNpbmcgZWRnZSBhY3RpdmUuDQorICAqIEBwYXJhbSAgRXh0VFJHRmlsdGVyOiBFeHRlcm5hbCBUcmlnZ2VyIEZpbHRlci4NCisgICogICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiAweDAwIGFuZCAweDBGDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9FVFJDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9FeHRUUkdQcmVzY2FsZXIsIHVpbnQxNl90IFRJTV9FeHRUUkdQb2xhcml0eSwNCisgICAgICAgICAgICAgICAgICAgdWludDE2X3QgRXh0VFJHRmlsdGVyKQ0KK3sNCisgIHVpbnQxNl90IHRtcHNtY3IgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5MTAxMV9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfUFJFU0NBTEVSKFRJTV9FeHRUUkdQcmVzY2FsZXIpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fRVhUX1BPTEFSSVRZKFRJTV9FeHRUUkdQb2xhcml0eSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfRklMVEVSKEV4dFRSR0ZpbHRlcikpOw0KKyAgDQorICB0bXBzbWNyID0gVElNeC0+U01DUjsNCisgIC8qIFJlc2V0IHRoZSBFVFIgQml0cyAqLw0KKyAgdG1wc21jciAmPSBTTUNSX0VUUl9NQVNLOw0KKyAgLyogU2V0IHRoZSBQcmVzY2FsZXIsIHRoZSBGaWx0ZXIgdmFsdWUgYW5kIHRoZSBQb2xhcml0eSAqLw0KKyAgdG1wc21jciB8PSAodWludDE2X3QpKFRJTV9FeHRUUkdQcmVzY2FsZXIgfCAodWludDE2X3QpKFRJTV9FeHRUUkdQb2xhcml0eSB8ICh1aW50MTZfdCkoRXh0VFJHRmlsdGVyIDw8ICh1aW50MTZfdCk4KSkpOw0KKyAgLyogV3JpdGUgdG8gVElNeCBTTUNSICovDQorICBUSU14LT5TTUNSID0gdG1wc21jcjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBQcmVzY2FsZXIuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiB0byAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFByZXNjYWxlcjogc3BlY2lmaWVzIHRoZSBQcmVzY2FsZXIgUmVnaXN0ZXIgdmFsdWUNCisgICogQHBhcmFtICBUSU1fUFNDUmVsb2FkTW9kZTogc3BlY2lmaWVzIHRoZSBUSU0gUHJlc2NhbGVyIFJlbG9hZCBtb2RlDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX1BTQ1JlbG9hZE1vZGVfVXBkYXRlOiBUaGUgUHJlc2NhbGVyIGlzIGxvYWRlZCBhdCB0aGUgdXBkYXRlIGV2ZW50Lg0KKyAgKiAgICAgQGFyZyBUSU1fUFNDUmVsb2FkTW9kZV9JbW1lZGlhdGU6IFRoZSBQcmVzY2FsZXIgaXMgbG9hZGVkIGltbWVkaWF0bHkuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9QcmVzY2FsZXJDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFByZXNjYWxlciwgdWludDE2X3QgVElNX1BTQ1JlbG9hZE1vZGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX1BSRVNDQUxFUl9SRUxPQUQoVElNX1BTQ1JlbG9hZE1vZGUpKTsNCisgIA0KKyAgLyogU2V0IHRoZSBQcmVzY2FsZXIgdmFsdWUgKi8NCisgIFRJTXgtPlBTQyA9IFByZXNjYWxlcjsNCisgIC8qIFNldCBvciByZXNldCB0aGUgVUcgQml0ICovDQorICBUSU14LT5FR1IgPSBUSU1fUFNDUmVsb2FkTW9kZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU3BlY2lmaWVzIHRoZSBUSU14IENvdW50ZXIgTW9kZSB0byBiZSB1c2VkLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9Db3VudGVyTW9kZTogc3BlY2lmaWVzIHRoZSBDb3VudGVyIE1vZGUgdG8gYmUgdXNlZA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9Db3VudGVyTW9kZV9VcDogVElNIFVwIENvdW50aW5nIE1vZGUNCisgICogICAgIEBhcmcgVElNX0NvdW50ZXJNb2RlX0Rvd246IFRJTSBEb3duIENvdW50aW5nIE1vZGUNCisgICogICAgIEBhcmcgVElNX0NvdW50ZXJNb2RlX0NlbnRlckFsaWduZWQxOiBUSU0gQ2VudGVyIEFsaWduZWQgTW9kZTENCisgICogICAgIEBhcmcgVElNX0NvdW50ZXJNb2RlX0NlbnRlckFsaWduZWQyOiBUSU0gQ2VudGVyIEFsaWduZWQgTW9kZTINCisgICogICAgIEBhcmcgVElNX0NvdW50ZXJNb2RlX0NlbnRlckFsaWduZWQzOiBUSU0gQ2VudGVyIEFsaWduZWQgTW9kZTMNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX0NvdW50ZXJNb2RlQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fQ291bnRlck1vZGUpDQorew0KKyAgdWludDE2X3QgdG1wY3IxID0gMDsNCisgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0NPVU5URVJfTU9ERShUSU1fQ291bnRlck1vZGUpKTsNCisgIA0KKyAgdG1wY3IxID0gVElNeC0+Q1IxOw0KKyAgLyogUmVzZXQgdGhlIENNUyBhbmQgRElSIEJpdHMgKi8NCisgIHRtcGNyMSAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KShUSU1fQ1IxX0RJUiB8IFRJTV9DUjFfQ01TKSkpOw0KKyAgLyogU2V0IHRoZSBDb3VudGVyIE1vZGUgKi8NCisgIHRtcGNyMSB8PSBUSU1fQ291bnRlck1vZGU7DQorICAvKiBXcml0ZSB0byBUSU14IENSMSByZWdpc3RlciAqLw0KKyAgVElNeC0+Q1IxID0gdG1wY3IxOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBJbnB1dCBUcmlnZ2VyIHNvdXJjZQ0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9JbnB1dFRyaWdnZXJTb3VyY2U6IFRoZSBJbnB1dCBUcmlnZ2VyIHNvdXJjZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fVFNfSVRSMDogSW50ZXJuYWwgVHJpZ2dlciAwDQorICAqICAgICBAYXJnIFRJTV9UU19JVFIxOiBJbnRlcm5hbCBUcmlnZ2VyIDENCisgICogICAgIEBhcmcgVElNX1RTX0lUUjI6IEludGVybmFsIFRyaWdnZXIgMg0KKyAgKiAgICAgQGFyZyBUSU1fVFNfSVRSMzogSW50ZXJuYWwgVHJpZ2dlciAzDQorICAqICAgICBAYXJnIFRJTV9UU19USTFGX0VEOiBUSTEgRWRnZSBEZXRlY3Rvcg0KKyAgKiAgICAgQGFyZyBUSU1fVFNfVEkxRlAxOiBGaWx0ZXJlZCBUaW1lciBJbnB1dCAxDQorICAqICAgICBAYXJnIFRJTV9UU19USTJGUDI6IEZpbHRlcmVkIFRpbWVyIElucHV0IDINCisgICogICAgIEBhcmcgVElNX1RTX0VUUkY6IEV4dGVybmFsIFRyaWdnZXIgaW5wdXQNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1NlbGVjdElucHV0VHJpZ2dlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lucHV0VHJpZ2dlclNvdXJjZSkNCit7DQorICB1aW50MTZfdCB0bXBzbWNyID0gMDsNCisNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDkxMDExX1BFUklQSChUSU14KSk7IA0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9UUklHR0VSX1NFTEVDVElPTihUSU1fSW5wdXRUcmlnZ2VyU291cmNlKSk7DQorDQorICAvKiBHZXQgdGhlIFRJTXggU01DUiByZWdpc3RlciB2YWx1ZSAqLw0KKyAgdG1wc21jciA9IFRJTXgtPlNNQ1I7DQorICAvKiBSZXNldCB0aGUgVFMgQml0cyAqLw0KKyAgdG1wc21jciAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9TTUNSX1RTKSk7DQorICAvKiBTZXQgdGhlIElucHV0IFRyaWdnZXIgc291cmNlICovDQorICB0bXBzbWNyIHw9IFRJTV9JbnB1dFRyaWdnZXJTb3VyY2U7DQorICAvKiBXcml0ZSB0byBUSU14IFNNQ1IgKi8NCisgIFRJTXgtPlNNQ1IgPSB0bXBzbWNyOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IEVuY29kZXIgSW50ZXJmYWNlLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAyLCAzIG9yIDQgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fRW5jb2Rlck1vZGU6IHNwZWNpZmllcyB0aGUgVElNeCBFbmNvZGVyIE1vZGUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0VuY29kZXJNb2RlX1RJMTogQ291bnRlciBjb3VudHMgb24gVEkxRlAxIGVkZ2UgZGVwZW5kaW5nIG9uIFRJMkZQMiBsZXZlbC4NCisgICogICAgIEBhcmcgVElNX0VuY29kZXJNb2RlX1RJMjogQ291bnRlciBjb3VudHMgb24gVEkyRlAyIGVkZ2UgZGVwZW5kaW5nIG9uIFRJMUZQMSBsZXZlbC4NCisgICogICAgIEBhcmcgVElNX0VuY29kZXJNb2RlX1RJMTI6IENvdW50ZXIgY291bnRzIG9uIGJvdGggVEkxRlAxIGFuZCBUSTJGUDIgZWRnZXMgZGVwZW5kaW5nDQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgbGV2ZWwgb2YgdGhlIG90aGVyIGlucHV0Lg0KKyAgKiBAcGFyYW0gIFRJTV9JQzFQb2xhcml0eTogc3BlY2lmaWVzIHRoZSBJQzEgUG9sYXJpdHkNCisgICogICBUaGlzIHBhcm1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X0ZhbGxpbmc6IElDIEZhbGxpbmcgZWRnZS4NCisgICogICAgIEBhcmcgVElNX0lDUG9sYXJpdHlfUmlzaW5nOiBJQyBSaXNpbmcgZWRnZS4NCisgICogQHBhcmFtICBUSU1fSUMyUG9sYXJpdHk6IHNwZWNpZmllcyB0aGUgSUMyIFBvbGFyaXR5DQorICAqICAgVGhpcyBwYXJtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fSUNQb2xhcml0eV9GYWxsaW5nOiBJQyBGYWxsaW5nIGVkZ2UuDQorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X1Jpc2luZzogSUMgUmlzaW5nIGVkZ2UuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9FbmNvZGVySW50ZXJmYWNlQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRW5jb2Rlck1vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUMxUG9sYXJpdHksIHVpbnQxNl90IFRJTV9JQzJQb2xhcml0eSkNCit7DQorICB1aW50MTZfdCB0bXBzbWNyID0gMDsNCisgIHVpbnQxNl90IHRtcGNjbXIxID0gMDsNCisgIHVpbnQxNl90IHRtcGNjZXIgPSAwOw0KKyAgICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FTkNPREVSX01PREUoVElNX0VuY29kZXJNb2RlKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0lDX1BPTEFSSVRZKFRJTV9JQzFQb2xhcml0eSkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19QT0xBUklUWShUSU1fSUMyUG9sYXJpdHkpKTsNCisgIA0KKyAgLyogR2V0IHRoZSBUSU14IFNNQ1IgcmVnaXN0ZXIgdmFsdWUgKi8NCisgIHRtcHNtY3IgPSBUSU14LT5TTUNSOw0KKyAgLyogR2V0IHRoZSBUSU14IENDTVIxIHJlZ2lzdGVyIHZhbHVlICovDQorICB0bXBjY21yMSA9IFRJTXgtPkNDTVIxOw0KKyAgLyogR2V0IHRoZSBUSU14IENDRVIgcmVnaXN0ZXIgdmFsdWUgKi8NCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOw0KKyAgLyogU2V0IHRoZSBlbmNvZGVyIE1vZGUgKi8NCisgIHRtcHNtY3IgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fU01DUl9TTVMpKTsNCisgIHRtcHNtY3IgfD0gVElNX0VuY29kZXJNb2RlOw0KKyAgLyogU2VsZWN0IHRoZSBDYXB0dXJlIENvbXBhcmUgMSBhbmQgdGhlIENhcHR1cmUgQ29tcGFyZSAyIGFzIGlucHV0ICovDQorICB0bXBjY21yMSAmPSAodWludDE2X3QpKCgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0NDMVMpKSAmICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDTVIxX0NDMlMpKSk7DQorICB0bXBjY21yMSB8PSBUSU1fQ0NNUjFfQ0MxU18wIHwgVElNX0NDTVIxX0NDMlNfMDsNCisgIC8qIFNldCB0aGUgVEkxIGFuZCB0aGUgVEkyIFBvbGFyaXRpZXMgKi8NCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KSgoKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMVApKSAmICgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDRVJfQ0MyUCkpKTsNCisgICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX0lDMVBvbGFyaXR5IHwgKHVpbnQxNl90KShUSU1fSUMyUG9sYXJpdHkgPDwgKHVpbnQxNl90KTQpKTsNCisgIC8qIFdyaXRlIHRvIFRJTXggU01DUiAqLw0KKyAgVElNeC0+U01DUiA9IHRtcHNtY3I7DQorICAvKiBXcml0ZSB0byBUSU14IENDTVIxICovDQorICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOw0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ0VSICovDQorICBUSU14LT5DQ0VSID0gdG1wY2NlcjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRm9yY2VzIHRoZSBUSU14IG91dHB1dCAxIHdhdmVmb3JtIHRvIGFjdGl2ZSBvciBpbmFjdGl2ZSBsZXZlbC4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzLCA0LCA5LCAxMCBvciAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9Gb3JjZWRBY3Rpb246IHNwZWNpZmllcyB0aGUgZm9yY2VkIEFjdGlvbiB0byBiZSBzZXQgdG8gdGhlIG91dHB1dCB3YXZlZm9ybS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fRm9yY2VkQWN0aW9uX0FjdGl2ZTogRm9yY2UgYWN0aXZlIGxldmVsIG9uIE9DMVJFRg0KKyAgKiAgICAgQGFyZyBUSU1fRm9yY2VkQWN0aW9uX0luQWN0aXZlOiBGb3JjZSBpbmFjdGl2ZSBsZXZlbCBvbiBPQzFSRUYuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9Gb3JjZWRPQzFDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9Gb3JjZWRBY3Rpb24pDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwOw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0OTEwMTFfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fRk9SQ0VEX0FDVElPTihUSU1fRm9yY2VkQWN0aW9uKSk7DQorICB0bXBjY21yMSA9IFRJTXgtPkNDTVIxOw0KKyAgLyogUmVzZXQgdGhlIE9DMU0gQml0cyAqLw0KKyAgdG1wY2NtcjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMV9PQzFNKTsNCisgIC8qIENvbmZpZ3VyZSBUaGUgRm9yY2VkIG91dHB1dCBNb2RlICovDQorICB0bXBjY21yMSB8PSBUSU1fRm9yY2VkQWN0aW9uOw0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMSByZWdpc3RlciAqLw0KKyAgVElNeC0+Q0NNUjEgPSB0bXBjY21yMTsNCit9DQorIA0KKy8qKg0KKyAgKiBAYnJpZWYgIEZvcmNlcyB0aGUgVElNeCBvdXRwdXQgMiB3YXZlZm9ybSB0byBhY3RpdmUgb3IgaW5hY3RpdmUgbGV2ZWwuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCBvciA5IHRvIHNlbGVjdCB0aGUgVElNIA0KKyAgKiAgIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0ZvcmNlZEFjdGlvbjogc3BlY2lmaWVzIHRoZSBmb3JjZWQgQWN0aW9uIHRvIGJlIHNldCB0byB0aGUgb3V0cHV0IHdhdmVmb3JtLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fQWN0aXZlOiBGb3JjZSBhY3RpdmUgbGV2ZWwgb24gT0MyUkVGDQorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fSW5BY3RpdmU6IEZvcmNlIGluYWN0aXZlIGxldmVsIG9uIE9DMlJFRi4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX0ZvcmNlZE9DMkNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0ZvcmNlZEFjdGlvbikNCit7DQorICB1aW50MTZfdCB0bXBjY21yMSA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDlfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fRk9SQ0VEX0FDVElPTihUSU1fRm9yY2VkQWN0aW9uKSk7DQorICANCisgIHRtcGNjbXIxID0gVElNeC0+Q0NNUjE7DQorICAvKiBSZXNldCB0aGUgT0MyTSBCaXRzICovDQorICB0bXBjY21yMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX09DMk0pOw0KKyAgLyogQ29uZmlndXJlIFRoZSBGb3JjZWQgb3V0cHV0IE1vZGUgKi8NCisgIHRtcGNjbXIxIHw9ICh1aW50MTZfdCkoVElNX0ZvcmNlZEFjdGlvbiA8PCA4KTsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjEgcmVnaXN0ZXIgKi8NCisgIFRJTXgtPkNDTVIxID0gdG1wY2NtcjE7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZvcmNlcyB0aGUgVElNeCBvdXRwdXQgMyB3YXZlZm9ybSB0byBhY3RpdmUgb3IgaW5hY3RpdmUgbGV2ZWwuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0ZvcmNlZEFjdGlvbjogc3BlY2lmaWVzIHRoZSBmb3JjZWQgQWN0aW9uIHRvIGJlIHNldCB0byB0aGUgb3V0cHV0IHdhdmVmb3JtLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fQWN0aXZlOiBGb3JjZSBhY3RpdmUgbGV2ZWwgb24gT0MzUkVGDQorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fSW5BY3RpdmU6IEZvcmNlIGluYWN0aXZlIGxldmVsIG9uIE9DM1JFRi4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX0ZvcmNlZE9DM0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0ZvcmNlZEFjdGlvbikNCit7DQorICB1aW50MTZfdCB0bXBjY21yMiA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9GT1JDRURfQUNUSU9OKFRJTV9Gb3JjZWRBY3Rpb24pKTsNCisgIA0KKyAgdG1wY2NtcjIgPSBUSU14LT5DQ01SMjsNCisgIC8qIFJlc2V0IHRoZSBPQzFNIEJpdHMgKi8NCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0MzTSk7DQorICAvKiBDb25maWd1cmUgVGhlIEZvcmNlZCBvdXRwdXQgTW9kZSAqLw0KKyAgdG1wY2NtcjIgfD0gVElNX0ZvcmNlZEFjdGlvbjsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgcmVnaXN0ZXIgKi8NCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZvcmNlcyB0aGUgVElNeCBvdXRwdXQgNCB3YXZlZm9ybSB0byBhY3RpdmUgb3IgaW5hY3RpdmUgbGV2ZWwuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0ZvcmNlZEFjdGlvbjogc3BlY2lmaWVzIHRoZSBmb3JjZWQgQWN0aW9uIHRvIGJlIHNldCB0byB0aGUgb3V0cHV0IHdhdmVmb3JtLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fQWN0aXZlOiBGb3JjZSBhY3RpdmUgbGV2ZWwgb24gT0M0UkVGDQorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fSW5BY3RpdmU6IEZvcmNlIGluYWN0aXZlIGxldmVsIG9uIE9DNFJFRi4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX0ZvcmNlZE9DNENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0ZvcmNlZEFjdGlvbikNCit7DQorICB1aW50MTZfdCB0bXBjY21yMiA9IDA7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fRk9SQ0VEX0FDVElPTihUSU1fRm9yY2VkQWN0aW9uKSk7DQorICANCisgIHRtcGNjbXIyID0gVElNeC0+Q0NNUjI7DQorICAvKiBSZXNldCB0aGUgT0MyTSBCaXRzICovDQorICB0bXBjY21yMiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX09DNE0pOw0KKyAgLyogQ29uZmlndXJlIFRoZSBGb3JjZWQgb3V0cHV0IE1vZGUgKi8NCisgIHRtcGNjbXIyIHw9ICh1aW50MTZfdCkoVElNX0ZvcmNlZEFjdGlvbiA8PCA4KTsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgcmVnaXN0ZXIgKi8NCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgVElNeCBwZXJpcGhlcmFsIFByZWxvYWQgcmVnaXN0ZXIgb24gQVJSLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAyIHRvIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBwZXJpcGhlcmFsIFByZWxvYWQgcmVnaXN0ZXINCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fQVJSUHJlbG9hZENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsNCisgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIFNldCB0aGUgQVJSIFByZWxvYWQgQml0ICovDQorICAgIFRJTXgtPkNSMSB8PSBUSU1fQ1IxX0FSUEU7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIFJlc2V0IHRoZSBBUlIgUHJlbG9hZCBCaXQgKi8NCisgICAgVElNeC0+Q1IxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IxX0FSUEUpOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBUSU14IHBlcmlwaGVyYWwgQ2FwdHVyZSBDb21wYXJlIERNQSBzb3VyY2UuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgQ2FwdHVyZSBDb21wYXJlIERNQSBzb3VyY2UNCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fU2VsZWN0Q0NETUEoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICAvKiBTZXQgdGhlIENDRFMgQml0ICovDQorICAgIFRJTXgtPkNSMiB8PSBUSU1fQ1IyX0NDRFM7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIFJlc2V0IHRoZSBDQ0RTIEJpdCAqLw0KKyAgICBUSU14LT5DUjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DUjJfQ0NEUyk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFRJTXggcGVyaXBoZXJhbCBQcmVsb2FkIHJlZ2lzdGVyIG9uIENDUjEuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCwgOSwgMTAgb3IgMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fT0NQcmVsb2FkOiBuZXcgc3RhdGUgb2YgdGhlIFRJTXggcGVyaXBoZXJhbCBQcmVsb2FkIHJlZ2lzdGVyDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX09DUHJlbG9hZF9FbmFibGUNCisgICogICAgIEBhcmcgVElNX09DUHJlbG9hZF9EaXNhYmxlDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9PQzFQcmVsb2FkQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQcmVsb2FkKQ0KK3sNCisgIHVpbnQxNl90IHRtcGNjbXIxID0gMDsNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDkxMDExX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DUFJFTE9BRF9TVEFURShUSU1fT0NQcmVsb2FkKSk7DQorICANCisgIHRtcGNjbXIxID0gVElNeC0+Q0NNUjE7DQorICAvKiBSZXNldCB0aGUgT0MxUEUgQml0ICovDQorICB0bXBjY21yMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX09DMVBFKTsNCisgIC8qIEVuYWJsZSBvciBEaXNhYmxlIHRoZSBPdXRwdXQgQ29tcGFyZSBQcmVsb2FkIGZlYXR1cmUgKi8NCisgIHRtcGNjbXIxIHw9IFRJTV9PQ1ByZWxvYWQ7DQorICAvKiBXcml0ZSB0byBUSU14IENDTVIxIHJlZ2lzdGVyICovDQorICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBUSU14IHBlcmlwaGVyYWwgUHJlbG9hZCByZWdpc3RlciBvbiBDQ1IyLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9PQ1ByZWxvYWQ6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBwZXJpcGhlcmFsIFByZWxvYWQgcmVnaXN0ZXINCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fT0NQcmVsb2FkX0VuYWJsZQ0KKyAgKiAgICAgQGFyZyBUSU1fT0NQcmVsb2FkX0Rpc2FibGUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX09DMlByZWxvYWRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1ByZWxvYWQpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwOw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0OV9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ1BSRUxPQURfU1RBVEUoVElNX09DUHJlbG9hZCkpOw0KKyAgDQorICB0bXBjY21yMSA9IFRJTXgtPkNDTVIxOw0KKyAgLyogUmVzZXQgdGhlIE9DMlBFIEJpdCAqLw0KKyAgdG1wY2NtcjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMV9PQzJQRSk7DQorICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgUHJlbG9hZCBmZWF0dXJlICovDQorICB0bXBjY21yMSB8PSAodWludDE2X3QpKFRJTV9PQ1ByZWxvYWQgPDwgOCk7DQorICAvKiBXcml0ZSB0byBUSU14IENDTVIxIHJlZ2lzdGVyICovDQorICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBUSU14IHBlcmlwaGVyYWwgUHJlbG9hZCByZWdpc3RlciBvbiBDQ1IzLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9PQ1ByZWxvYWQ6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBwZXJpcGhlcmFsIFByZWxvYWQgcmVnaXN0ZXINCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fT0NQcmVsb2FkX0VuYWJsZQ0KKyAgKiAgICAgQGFyZyBUSU1fT0NQcmVsb2FkX0Rpc2FibGUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX09DM1ByZWxvYWRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1ByZWxvYWQpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjIgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NQUkVMT0FEX1NUQVRFKFRJTV9PQ1ByZWxvYWQpKTsNCisgIA0KKyAgdG1wY2NtcjIgPSBUSU14LT5DQ01SMjsNCisgIC8qIFJlc2V0IHRoZSBPQzNQRSBCaXQgKi8NCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0MzUEUpOw0KKyAgLyogRW5hYmxlIG9yIERpc2FibGUgdGhlIE91dHB1dCBDb21wYXJlIFByZWxvYWQgZmVhdHVyZSAqLw0KKyAgdG1wY2NtcjIgfD0gVElNX09DUHJlbG9hZDsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgcmVnaXN0ZXIgKi8NCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFRJTXggcGVyaXBoZXJhbCBQcmVsb2FkIHJlZ2lzdGVyIG9uIENDUjQuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX09DUHJlbG9hZDogbmV3IHN0YXRlIG9mIHRoZSBUSU14IHBlcmlwaGVyYWwgUHJlbG9hZCByZWdpc3Rlcg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9PQ1ByZWxvYWRfRW5hYmxlDQorICAqICAgICBAYXJnIFRJTV9PQ1ByZWxvYWRfRGlzYWJsZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fT0M0UHJlbG9hZENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUHJlbG9hZCkNCit7DQorICB1aW50MTZfdCB0bXBjY21yMiA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ1BSRUxPQURfU1RBVEUoVElNX09DUHJlbG9hZCkpOw0KKyAgDQorICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOw0KKyAgLyogUmVzZXQgdGhlIE9DNFBFIEJpdCAqLw0KKyAgdG1wY2NtcjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMl9PQzRQRSk7DQorICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgUHJlbG9hZCBmZWF0dXJlICovDQorICB0bXBjY21yMiB8PSAodWludDE2X3QpKFRJTV9PQ1ByZWxvYWQgPDwgOCk7DQorICAvKiBXcml0ZSB0byBUSU14IENDTVIyIHJlZ2lzdGVyICovDQorICBUSU14LT5DQ01SMiA9IHRtcGNjbXIyOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IE91dHB1dCBDb21wYXJlIDEgRmFzdCBmZWF0dXJlLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX09DRmFzdDogbmV3IHN0YXRlIG9mIHRoZSBPdXRwdXQgQ29tcGFyZSBGYXN0IEVuYWJsZSBCaXQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX09DRmFzdF9FbmFibGU6IFRJTSBvdXRwdXQgY29tcGFyZSBmYXN0IGVuYWJsZQ0KKyAgKiAgICAgQGFyZyBUSU1fT0NGYXN0X0Rpc2FibGU6IFRJTSBvdXRwdXQgY29tcGFyZSBmYXN0IGRpc2FibGUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX09DMUZhc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0Zhc3QpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5MTAxMV9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ0ZBU1RfU1RBVEUoVElNX09DRmFzdCkpOw0KKyAgDQorICAvKiBHZXQgdGhlIFRJTXggQ0NNUjEgcmVnaXN0ZXIgdmFsdWUgKi8NCisgIHRtcGNjbXIxID0gVElNeC0+Q0NNUjE7DQorICAvKiBSZXNldCB0aGUgT0MxRkUgQml0ICovDQorICB0bXBjY21yMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX09DMUZFKTsNCisgIC8qIEVuYWJsZSBvciBEaXNhYmxlIHRoZSBPdXRwdXQgQ29tcGFyZSBGYXN0IEJpdCAqLw0KKyAgdG1wY2NtcjEgfD0gVElNX09DRmFzdDsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjEgKi8NCisgIFRJTXgtPkNDTVIxID0gdG1wY2NtcjE7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggT3V0cHV0IENvbXBhcmUgMiBGYXN0IGZlYXR1cmUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCBvciA5IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX09DRmFzdDogbmV3IHN0YXRlIG9mIHRoZSBPdXRwdXQgQ29tcGFyZSBGYXN0IEVuYWJsZSBCaXQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX09DRmFzdF9FbmFibGU6IFRJTSBvdXRwdXQgY29tcGFyZSBmYXN0IGVuYWJsZQ0KKyAgKiAgICAgQGFyZyBUSU1fT0NGYXN0X0Rpc2FibGU6IFRJTSBvdXRwdXQgY29tcGFyZSBmYXN0IGRpc2FibGUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX09DMkZhc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0Zhc3QpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DRkFTVF9TVEFURShUSU1fT0NGYXN0KSk7DQorICANCisgIC8qIEdldCB0aGUgVElNeCBDQ01SMSByZWdpc3RlciB2YWx1ZSAqLw0KKyAgdG1wY2NtcjEgPSBUSU14LT5DQ01SMTsNCisgIC8qIFJlc2V0IHRoZSBPQzJGRSBCaXQgKi8NCisgIHRtcGNjbXIxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfT0MyRkUpOw0KKyAgLyogRW5hYmxlIG9yIERpc2FibGUgdGhlIE91dHB1dCBDb21wYXJlIEZhc3QgQml0ICovDQorICB0bXBjY21yMSB8PSAodWludDE2X3QpKFRJTV9PQ0Zhc3QgPDwgOCk7DQorICAvKiBXcml0ZSB0byBUSU14IENDTVIxICovDQorICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IE91dHB1dCBDb21wYXJlIDMgRmFzdCBmZWF0dXJlLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9PQ0Zhc3Q6IG5ldyBzdGF0ZSBvZiB0aGUgT3V0cHV0IENvbXBhcmUgRmFzdCBFbmFibGUgQml0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9PQ0Zhc3RfRW5hYmxlOiBUSU0gb3V0cHV0IGNvbXBhcmUgZmFzdCBlbmFibGUNCisgICogICAgIEBhcmcgVElNX09DRmFzdF9EaXNhYmxlOiBUSU0gb3V0cHV0IGNvbXBhcmUgZmFzdCBkaXNhYmxlDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9PQzNGYXN0Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NGYXN0KQ0KK3sNCisgIHVpbnQxNl90IHRtcGNjbXIyID0gMDsNCisgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DRkFTVF9TVEFURShUSU1fT0NGYXN0KSk7DQorICANCisgIC8qIEdldCB0aGUgVElNeCBDQ01SMiByZWdpc3RlciB2YWx1ZSAqLw0KKyAgdG1wY2NtcjIgPSBUSU14LT5DQ01SMjsNCisgIC8qIFJlc2V0IHRoZSBPQzNGRSBCaXQgKi8NCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0MzRkUpOw0KKyAgLyogRW5hYmxlIG9yIERpc2FibGUgdGhlIE91dHB1dCBDb21wYXJlIEZhc3QgQml0ICovDQorICB0bXBjY21yMiB8PSBUSU1fT0NGYXN0Ow0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiAqLw0KKyAgVElNeC0+Q0NNUjIgPSB0bXBjY21yMjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBPdXRwdXQgQ29tcGFyZSA0IEZhc3QgZmVhdHVyZS4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzIG9yIDQgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fT0NGYXN0OiBuZXcgc3RhdGUgb2YgdGhlIE91dHB1dCBDb21wYXJlIEZhc3QgRW5hYmxlIEJpdC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fT0NGYXN0X0VuYWJsZTogVElNIG91dHB1dCBjb21wYXJlIGZhc3QgZW5hYmxlDQorICAqICAgICBAYXJnIFRJTV9PQ0Zhc3RfRGlzYWJsZTogVElNIG91dHB1dCBjb21wYXJlIGZhc3QgZGlzYWJsZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fT0M0RmFzdENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DRmFzdCkNCit7DQorICB1aW50MTZfdCB0bXBjY21yMiA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ0ZBU1RfU1RBVEUoVElNX09DRmFzdCkpOw0KKyAgDQorICAvKiBHZXQgdGhlIFRJTXggQ0NNUjIgcmVnaXN0ZXIgdmFsdWUgKi8NCisgIHRtcGNjbXIyID0gVElNeC0+Q0NNUjI7DQorICAvKiBSZXNldCB0aGUgT0M0RkUgQml0ICovDQorICB0bXBjY21yMiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX09DNEZFKTsNCisgIC8qIEVuYWJsZSBvciBEaXNhYmxlIHRoZSBPdXRwdXQgQ29tcGFyZSBGYXN0IEJpdCAqLw0KKyAgdG1wY2NtcjIgfD0gKHVpbnQxNl90KShUSU1fT0NGYXN0IDw8IDgpOw0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiAqLw0KKyAgVElNeC0+Q0NNUjIgPSB0bXBjY21yMjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIG9yIHNhZmVndWFyZHMgdGhlIE9DUkVGMSBzaWduYWwgb24gYW4gZXh0ZXJuYWwgZXZlbnQNCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzLCA0LCA5LCAxMCBvciAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9PQ0NsZWFyOiBuZXcgc3RhdGUgb2YgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEVuYWJsZSBCaXQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX09DQ2xlYXJfRW5hYmxlOiBUSU0gT3V0cHV0IGNsZWFyIGVuYWJsZQ0KKyAgKiAgICAgQGFyZyBUSU1fT0NDbGVhcl9EaXNhYmxlOiBUSU0gT3V0cHV0IGNsZWFyIGRpc2FibGUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX0NsZWFyT0MxUmVmKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NDbGVhcikNCit7DQorICB1aW50MTZfdCB0bXBjY21yMSA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDkxMDExX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DQ0xFQVJfU1RBVEUoVElNX09DQ2xlYXIpKTsNCisgIA0KKyAgdG1wY2NtcjEgPSBUSU14LT5DQ01SMTsNCisgIC8qIFJlc2V0IHRoZSBPQzFDRSBCaXQgKi8NCisgIHRtcGNjbXIxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfT0MxQ0UpOw0KKyAgLyogRW5hYmxlIG9yIERpc2FibGUgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEJpdCAqLw0KKyAgdG1wY2NtcjEgfD0gVElNX09DQ2xlYXI7DQorICAvKiBXcml0ZSB0byBUSU14IENDTVIxIHJlZ2lzdGVyICovDQorICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDbGVhcnMgb3Igc2FmZWd1YXJkcyB0aGUgT0NSRUYyIHNpZ25hbCBvbiBhbiBleHRlcm5hbCBldmVudA0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9PQ0NsZWFyOiBuZXcgc3RhdGUgb2YgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEVuYWJsZSBCaXQuDQorDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX09DQ2xlYXJfRW5hYmxlOiBUSU0gT3V0cHV0IGNsZWFyIGVuYWJsZQ0KKyAgKiAgICAgQGFyZyBUSU1fT0NDbGVhcl9EaXNhYmxlOiBUSU0gT3V0cHV0IGNsZWFyIGRpc2FibGUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX0NsZWFyT0MyUmVmKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NDbGVhcikNCit7DQorICB1aW50MTZfdCB0bXBjY21yMSA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDlfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NDTEVBUl9TVEFURShUSU1fT0NDbGVhcikpOw0KKyAgDQorICB0bXBjY21yMSA9IFRJTXgtPkNDTVIxOw0KKyAgLyogUmVzZXQgdGhlIE9DMkNFIEJpdCAqLw0KKyAgdG1wY2NtcjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMV9PQzJDRSk7DQorICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgQ2xlYXIgQml0ICovDQorICB0bXBjY21yMSB8PSAodWludDE2X3QpKFRJTV9PQ0NsZWFyIDw8IDgpOw0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMSByZWdpc3RlciAqLw0KKyAgVElNeC0+Q0NNUjEgPSB0bXBjY21yMTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIG9yIHNhZmVndWFyZHMgdGhlIE9DUkVGMyBzaWduYWwgb24gYW4gZXh0ZXJuYWwgZXZlbnQNCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzIG9yIDQgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fT0NDbGVhcjogbmV3IHN0YXRlIG9mIHRoZSBPdXRwdXQgQ29tcGFyZSBDbGVhciBFbmFibGUgQml0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9PQ0NsZWFyX0VuYWJsZTogVElNIE91dHB1dCBjbGVhciBlbmFibGUNCisgICogICAgIEBhcmcgVElNX09DQ2xlYXJfRGlzYWJsZTogVElNIE91dHB1dCBjbGVhciBkaXNhYmxlDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9DbGVhck9DM1JlZihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DQ2xlYXIpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjIgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NDTEVBUl9TVEFURShUSU1fT0NDbGVhcikpOw0KKyAgDQorICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOw0KKyAgLyogUmVzZXQgdGhlIE9DM0NFIEJpdCAqLw0KKyAgdG1wY2NtcjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMl9PQzNDRSk7DQorICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgQ2xlYXIgQml0ICovDQorICB0bXBjY21yMiB8PSBUSU1fT0NDbGVhcjsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgcmVnaXN0ZXIgKi8NCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENsZWFycyBvciBzYWZlZ3VhcmRzIHRoZSBPQ1JFRjQgc2lnbmFsIG9uIGFuIGV4dGVybmFsIGV2ZW50DQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX09DQ2xlYXI6IG5ldyBzdGF0ZSBvZiB0aGUgT3V0cHV0IENvbXBhcmUgQ2xlYXIgRW5hYmxlIEJpdC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fT0NDbGVhcl9FbmFibGU6IFRJTSBPdXRwdXQgY2xlYXIgZW5hYmxlDQorICAqICAgICBAYXJnIFRJTV9PQ0NsZWFyX0Rpc2FibGU6IFRJTSBPdXRwdXQgY2xlYXIgZGlzYWJsZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fQ2xlYXJPQzRSZWYoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0NsZWFyKQ0KK3sNCisgIHVpbnQxNl90IHRtcGNjbXIyID0gMDsNCisgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DQ0xFQVJfU1RBVEUoVElNX09DQ2xlYXIpKTsNCisgIA0KKyAgdG1wY2NtcjIgPSBUSU14LT5DQ01SMjsNCisgIC8qIFJlc2V0IHRoZSBPQzRDRSBCaXQgKi8NCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0M0Q0UpOw0KKyAgLyogRW5hYmxlIG9yIERpc2FibGUgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEJpdCAqLw0KKyAgdG1wY2NtcjIgfD0gKHVpbnQxNl90KShUSU1fT0NDbGVhciA8PCA4KTsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgcmVnaXN0ZXIgKi8NCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggY2hhbm5lbCAxIHBvbGFyaXR5Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX09DUG9sYXJpdHk6IHNwZWNpZmllcyB0aGUgT0MxIFBvbGFyaXR5DQorICAqICAgVGhpcyBwYXJtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fT0NQb2xhcml0eV9IaWdoOiBPdXRwdXQgQ29tcGFyZSBhY3RpdmUgaGlnaA0KKyAgKiAgICAgQGFyZyBUSU1fT0NQb2xhcml0eV9Mb3c6IE91dHB1dCBDb21wYXJlIGFjdGl2ZSBsb3cNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX09DMVBvbGFyaXR5Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQb2xhcml0eSkNCit7DQorICB1aW50MTZfdCB0bXBjY2VyID0gMDsNCisgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0OTEwMTFfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NfUE9MQVJJVFkoVElNX09DUG9sYXJpdHkpKTsNCisgIA0KKyAgdG1wY2NlciA9IFRJTXgtPkNDRVI7DQorICAvKiBTZXQgb3IgUmVzZXQgdGhlIENDMVAgQml0ICovDQorICB0bXBjY2VyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzFQKTsNCisgIHRtcGNjZXIgfD0gVElNX09DUG9sYXJpdHk7DQorICAvKiBXcml0ZSB0byBUSU14IENDRVIgcmVnaXN0ZXIgKi8NCisgIFRJTXgtPkNDRVIgPSB0bXBjY2VyOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IGNoYW5uZWwgMiBwb2xhcml0eS4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzLCA0IG9yIDkgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fT0NQb2xhcml0eTogc3BlY2lmaWVzIHRoZSBPQzIgUG9sYXJpdHkNCisgICogICBUaGlzIHBhcm1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9PQ1BvbGFyaXR5X0hpZ2g6IE91dHB1dCBDb21wYXJlIGFjdGl2ZSBoaWdoDQorICAqICAgICBAYXJnIFRJTV9PQ1BvbGFyaXR5X0xvdzogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGxvdw0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fT0MyUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1BvbGFyaXR5KQ0KK3sNCisgIHVpbnQxNl90IHRtcGNjZXIgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX1BPTEFSSVRZKFRJTV9PQ1BvbGFyaXR5KSk7DQorICANCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOw0KKyAgLyogU2V0IG9yIFJlc2V0IHRoZSBDQzJQIEJpdCAqLw0KKyAgdG1wY2NlciAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDRVJfQ0MyUCk7DQorICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DUG9sYXJpdHkgPDwgNCk7DQorICAvKiBXcml0ZSB0byBUSU14IENDRVIgcmVnaXN0ZXIgKi8NCisgIFRJTXgtPkNDRVIgPSB0bXBjY2VyOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IGNoYW5uZWwgMyBwb2xhcml0eS4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzIG9yIDQgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fT0NQb2xhcml0eTogc3BlY2lmaWVzIHRoZSBPQzMgUG9sYXJpdHkNCisgICogICBUaGlzIHBhcm1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9PQ1BvbGFyaXR5X0hpZ2g6IE91dHB1dCBDb21wYXJlIGFjdGl2ZSBoaWdoDQorICAqICAgICBAYXJnIFRJTV9PQ1BvbGFyaXR5X0xvdzogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGxvdw0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fT0MzUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1BvbGFyaXR5KQ0KK3sNCisgIHVpbnQxNl90IHRtcGNjZXIgPSAwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NfUE9MQVJJVFkoVElNX09DUG9sYXJpdHkpKTsNCisgIA0KKyAgdG1wY2NlciA9IFRJTXgtPkNDRVI7DQorICAvKiBTZXQgb3IgUmVzZXQgdGhlIENDM1AgQml0ICovDQorICB0bXBjY2VyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzNQKTsNCisgIHRtcGNjZXIgfD0gKHVpbnQxNl90KShUSU1fT0NQb2xhcml0eSA8PCA4KTsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NFUiByZWdpc3RlciAqLw0KKyAgVElNeC0+Q0NFUiA9IHRtcGNjZXI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggY2hhbm5lbCA0IHBvbGFyaXR5Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9PQ1BvbGFyaXR5OiBzcGVjaWZpZXMgdGhlIE9DNCBQb2xhcml0eQ0KKyAgKiAgIFRoaXMgcGFybWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX09DUG9sYXJpdHlfSGlnaDogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGhpZ2gNCisgICogICAgIEBhcmcgVElNX09DUG9sYXJpdHlfTG93OiBPdXRwdXQgQ29tcGFyZSBhY3RpdmUgbG93DQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9PQzRQb2xhcml0eUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUG9sYXJpdHkpDQorew0KKyAgdWludDE2X3QgdG1wY2NlciA9IDA7DQorICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ19QT0xBUklUWShUSU1fT0NQb2xhcml0eSkpOw0KKyAgDQorICB0bXBjY2VyID0gVElNeC0+Q0NFUjsNCisgIC8qIFNldCBvciBSZXNldCB0aGUgQ0M0UCBCaXQgKi8NCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDNFApOw0KKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ1BvbGFyaXR5IDw8IDEyKTsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NFUiByZWdpc3RlciAqLw0KKyAgVElNeC0+Q0NFUiA9IHRtcGNjZXI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFRJTSBDYXB0dXJlIENvbXBhcmUgQ2hhbm5lbCB4Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0NoYW5uZWw6IHNwZWNpZmllcyB0aGUgVElNIENoYW5uZWwNCisgICogICBUaGlzIHBhcm1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9DaGFubmVsXzE6IFRJTSBDaGFubmVsIDENCisgICogICAgIEBhcmcgVElNX0NoYW5uZWxfMjogVElNIENoYW5uZWwgMg0KKyAgKiAgICAgQGFyZyBUSU1fQ2hhbm5lbF8zOiBUSU0gQ2hhbm5lbCAzDQorICAqICAgICBAYXJnIFRJTV9DaGFubmVsXzQ6IFRJTSBDaGFubmVsIDQNCisgICogQHBhcmFtICBUSU1fQ0N4OiBzcGVjaWZpZXMgdGhlIFRJTSBDaGFubmVsIENDeEUgYml0IG5ldyBzdGF0ZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IFRJTV9DQ3hfRW5hYmxlIG9yIFRJTV9DQ3hfRGlzYWJsZS4gDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9DQ3hDbWQoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9DaGFubmVsLCB1aW50MTZfdCBUSU1fQ0N4KQ0KK3sNCisgIHVpbnQxNl90IHRtcCA9IDA7DQorDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5MTAxMV9QRVJJUEgoVElNeCkpOyANCisgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYKFRJTV9DQ3gpKTsNCisNCisgIHRtcCA9IENDRVJfQ0NFX1NFVCA8PCBUSU1fQ2hhbm5lbDsNCisNCisgIC8qIFJlc2V0IHRoZSBDQ3hFIEJpdCAqLw0KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpfiB0bXA7DQorDQorICAvKiBTZXQgb3IgcmVzZXQgdGhlIENDeEUgQml0ICovIA0KKyAgVElNeC0+Q0NFUiB8PSAgKHVpbnQxNl90KShUSU1fQ0N4IDw8IFRJTV9DaGFubmVsKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgVElNIE91cHV0IENvbXBhcmUgTW9kZS4NCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBzZWxlY3RlZCBjaGFubmVsIGJlZm9yZSBjaGFuZ2luZyB0aGUgT3VwdXQNCisgICogICAgICAgICBDb21wYXJlIE1vZGUuDQorICAqICAgICAgICAgVXNlciBoYXMgdG8gZW5hYmxlIHRoaXMgY2hhbm5lbCB1c2luZyBUSU1fQ0N4Q21kIGFuZCBUSU1fQ0N4TkNtZCBmdW5jdGlvbnMuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCwgOSwgMTAgb3IgMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fQ2hhbm5lbDogc3BlY2lmaWVzIHRoZSBUSU0gQ2hhbm5lbA0KKyAgKiAgIFRoaXMgcGFybWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0NoYW5uZWxfMTogVElNIENoYW5uZWwgMQ0KKyAgKiAgICAgQGFyZyBUSU1fQ2hhbm5lbF8yOiBUSU0gQ2hhbm5lbCAyDQorICAqICAgICBAYXJnIFRJTV9DaGFubmVsXzM6IFRJTSBDaGFubmVsIDMNCisgICogICAgIEBhcmcgVElNX0NoYW5uZWxfNDogVElNIENoYW5uZWwgNA0KKyAgKiBAcGFyYW0gIFRJTV9PQ01vZGU6IHNwZWNpZmllcyB0aGUgVElNIE91dHB1dCBDb21wYXJlIE1vZGUuDQorICAqICAgVGhpcyBwYXJhbXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fT0NNb2RlX1RpbWluZw0KKyAgKiAgICAgQGFyZyBUSU1fT0NNb2RlX0FjdGl2ZQ0KKyAgKiAgICAgQGFyZyBUSU1fT0NNb2RlX1RvZ2dsZQ0KKyAgKiAgICAgQGFyZyBUSU1fT0NNb2RlX1BXTTENCisgICogICAgIEBhcmcgVElNX09DTW9kZV9QV00yDQorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fQWN0aXZlDQorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fSW5BY3RpdmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1NlbGVjdE9DeE0oVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9DaGFubmVsLCB1aW50MTZfdCBUSU1fT0NNb2RlKQ0KK3sNCisgIHVpbnQzMl90IHRtcCA9IDA7DQorICB1aW50MTZfdCB0bXAxID0gMDsNCisNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDkxMDExX1BFUklQSChUSU14KSk7ICANCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NNKFRJTV9PQ01vZGUpKTsNCisgIA0KKyAgdG1wID0gKHVpbnQzMl90KSBUSU14Ow0KKyAgdG1wICs9IENDTVJfT0ZGU0VUOw0KKw0KKyAgdG1wMSA9IENDRVJfQ0NFX1NFVCA8PCAodWludDE2X3QpVElNX0NoYW5uZWw7DQorDQorICAvKiBEaXNhYmxlIHRoZSBDaGFubmVsOiBSZXNldCB0aGUgQ0N4RSBCaXQgKi8NCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KSB+dG1wMTsNCisNCisgIGlmKChUSU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8xKSB8fChUSU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8zKSkNCisgIHsNCisgICAgdG1wICs9IChUSU1fQ2hhbm5lbD4+MSk7DQorDQorICAgIC8qIFJlc2V0IHRoZSBPQ3hNIGJpdHMgaW4gdGhlIENDTVJ4IHJlZ2lzdGVyICovDQorICAgICooX19JTyB1aW50MzJfdCAqKSB0bXAgJj0gKHVpbnQzMl90KX4oKHVpbnQzMl90KVRJTV9DQ01SMV9PQzFNKTsNCisgICANCisgICAgLyogQ29uZmlndXJlIHRoZSBPQ3hNIGJpdHMgaW4gdGhlIENDTVJ4IHJlZ2lzdGVyICovDQorICAgICooX19JTyB1aW50MzJfdCAqKSB0bXAgfD0gVElNX09DTW9kZTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgdG1wICs9ICh1aW50MTZfdCkoVElNX0NoYW5uZWwgLSAodWludDE2X3QpNCk+PiAodWludDE2X3QpMTsNCisNCisgICAgLyogUmVzZXQgdGhlIE9DeE0gYml0cyBpbiB0aGUgQ0NNUnggcmVnaXN0ZXIgKi8NCisgICAgKihfX0lPIHVpbnQzMl90ICopIHRtcCAmPSAodWludDMyX3QpfigodWludDMyX3QpVElNX0NDTVIxX09DMk0pOw0KKyAgICANCisgICAgLyogQ29uZmlndXJlIHRoZSBPQ3hNIGJpdHMgaW4gdGhlIENDTVJ4IHJlZ2lzdGVyICovDQorICAgICooX19JTyB1aW50MzJfdCAqKSB0bXAgfD0gKHVpbnQxNl90KShUSU1fT0NNb2RlIDw8IDgpOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIERpc2FibGVzIHRoZSBUSU14IFVwZGF0ZSBldmVudC4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyIHRvIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBVRElTIGJpdA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9VcGRhdGVEaXNhYmxlQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogU2V0IHRoZSBVcGRhdGUgRGlzYWJsZSBCaXQgKi8NCisgICAgVElNeC0+Q1IxIHw9IFRJTV9DUjFfVURJUzsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogUmVzZXQgdGhlIFVwZGF0ZSBEaXNhYmxlIEJpdCAqLw0KKyAgICBUSU14LT5DUjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DUjFfVURJUyk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggVXBkYXRlIFJlcXVlc3QgSW50ZXJydXB0IHNvdXJjZS4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyIHRvIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX1VwZGF0ZVNvdXJjZTogc3BlY2lmaWVzIHRoZSBVcGRhdGUgc291cmNlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9VcGRhdGVTb3VyY2VfUmVndWxhcjogU291cmNlIG9mIHVwZGF0ZSBpcyB0aGUgY291bnRlciBvdmVyZmxvdy91bmRlcmZsb3cNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgc2V0dGluZyBvZiBVRyBiaXQsIG9yIGFuIHVwZGF0ZSBnZW5lcmF0aW9uDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgc2xhdmUgbW9kZSBjb250cm9sbGVyLg0KKyAgKiAgICAgQGFyZyBUSU1fVXBkYXRlU291cmNlX0dsb2JhbDogU291cmNlIG9mIHVwZGF0ZSBpcyBjb3VudGVyIG92ZXJmbG93L3VuZGVyZmxvdy4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1VwZGF0ZVJlcXVlc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9VcGRhdGVTb3VyY2UpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX1VQREFURV9TT1VSQ0UoVElNX1VwZGF0ZVNvdXJjZSkpOw0KKyAgDQorICBpZiAoVElNX1VwZGF0ZVNvdXJjZSAhPSBUSU1fVXBkYXRlU291cmNlX0dsb2JhbCkNCisgIHsNCisgICAgLyogU2V0IHRoZSBVUlMgQml0ICovDQorICAgIFRJTXgtPkNSMSB8PSBUSU1fQ1IxX1VSUzsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogUmVzZXQgdGhlIFVSUyBCaXQgKi8NCisgICAgVElNeC0+Q1IxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IxX1VSUyk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFRJTXiScyBIYWxsIHNlbnNvciBpbnRlcmZhY2UuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBIYWxsIHNlbnNvciBpbnRlcmZhY2UuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1NlbGVjdEhhbGxTZW5zb3IoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICAvKiBTZXQgdGhlIFRJMVMgQml0ICovDQorICAgIFRJTXgtPkNSMiB8PSBUSU1fQ1IyX1RJMVM7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIFJlc2V0IHRoZSBUSTFTIEJpdCAqLw0KKyAgICBUSU14LT5DUjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DUjJfVEkxUyk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNlbGVjdHMgdGhlIFRJTXiScyBPbmUgUHVsc2UgTW9kZS4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyIHRvIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX09QTW9kZTogc3BlY2lmaWVzIHRoZSBPUE0gTW9kZSB0byBiZSB1c2VkLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9PUE1vZGVfU2luZ2xlDQorICAqICAgICBAYXJnIFRJTV9PUE1vZGVfUmVwZXRpdGl2ZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fU2VsZWN0T25lUHVsc2VNb2RlKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT1BNb2RlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PUE1fTU9ERShUSU1fT1BNb2RlKSk7DQorICANCisgIC8qIFJlc2V0IHRoZSBPUE0gQml0ICovDQorICBUSU14LT5DUjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DUjFfT1BNKTsNCisgIC8qIENvbmZpZ3VyZSB0aGUgT1BNIE1vZGUgKi8NCisgIFRJTXgtPkNSMSB8PSBUSU1fT1BNb2RlOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBUSU14IFRyaWdnZXIgT3V0cHV0IE1vZGUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCwgNiwgNyBvciA5IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX1RSR09Tb3VyY2U6IHNwZWNpZmllcyB0aGUgVHJpZ2dlciBPdXRwdXQgc291cmNlLg0KKyAgKiAgIFRoaXMgcGFyYW10ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICoNCisgICogIC0gRm9yIGFsbCBUSU14DQorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX1Jlc2V0OiAgVGhlIFVHIGJpdCBpbiB0aGUgVElNX0VHUiByZWdpc3RlciBpcyB1c2VkIGFzIHRoZSB0cmlnZ2VyIG91dHB1dCAoVFJHTykuDQorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX0VuYWJsZTogVGhlIENvdW50ZXIgRW5hYmxlIENFTiBpcyB1c2VkIGFzIHRoZSB0cmlnZ2VyIG91dHB1dCAoVFJHTykuDQorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX1VwZGF0ZTogVGhlIHVwZGF0ZSBldmVudCBpcyBzZWxlY3RlZCBhcyB0aGUgdHJpZ2dlciBvdXRwdXQgKFRSR08pLg0KKyAgKg0KKyAgKiAgLSBGb3IgYWxsIFRJTXggZXhjZXB0IFRJTTYgYW5kIFRJTTcNCisgICogICAgIEBhcmcgVElNX1RSR09Tb3VyY2VfT0MxOiBUaGUgdHJpZ2dlciBvdXRwdXQgc2VuZHMgYSBwb3NpdGl2ZSBwdWxzZSB3aGVuIHRoZSBDQzFJRiBmbGFnDQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdG8gYmUgc2V0LCBhcyBzb29uIGFzIGEgY2FwdHVyZSBvciBjb21wYXJlIG1hdGNoIG9jY3VycyAoVFJHTykuDQorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX09DMVJlZjogT0MxUkVGIHNpZ25hbCBpcyB1c2VkIGFzIHRoZSB0cmlnZ2VyIG91dHB1dCAoVFJHTykuDQorDQorICAqICAtIEZvciBhbGwgVElNeCBleGNlcHQgVElNNiwgVElNNywgVElNMTAgYW5kIFRJTTExDQorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX09DMlJlZjogT0MyUkVGIHNpZ25hbCBpcyB1c2VkIGFzIHRoZSB0cmlnZ2VyIG91dHB1dCAoVFJHTykuDQorDQorICAqICAtIEZvciBUSU0yLCBUSU0zIGFuZCBUSU00DQorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX09DM1JlZjogT0MzUkVGIHNpZ25hbCBpcyB1c2VkIGFzIHRoZSB0cmlnZ2VyIG91dHB1dCAoVFJHTykuDQorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX09DNFJlZjogT0M0UkVGIHNpZ25hbCBpcyB1c2VkIGFzIHRoZSB0cmlnZ2VyIG91dHB1dCAoVFJHTykuDQorICAqDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9TZWxlY3RPdXRwdXRUcmlnZ2VyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fVFJHT1NvdXJjZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ2NzlfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fVFJHT19TT1VSQ0UoVElNX1RSR09Tb3VyY2UpKTsNCisNCisgIC8qIFJlc2V0IHRoZSBNTVMgQml0cyAqLw0KKyAgVElNeC0+Q1IyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IyX01NUyk7DQorICAvKiBTZWxlY3QgdGhlIFRSR08gc291cmNlICovDQorICBUSU14LT5DUjIgfD0gIFRJTV9UUkdPU291cmNlOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBUSU14IFNsYXZlIE1vZGUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCBvciA5IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX1NsYXZlTW9kZTogc3BlY2lmaWVzIHRoZSBUaW1lciBTbGF2ZSBNb2RlLg0KKyAgKiAgIFRoaXMgcGFyYW10ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX1NsYXZlTW9kZV9SZXNldDogUmlzaW5nIGVkZ2Ugb2YgdGhlIHNlbGVjdGVkIHRyaWdnZXIgc2lnbmFsIChUUkdJKSByZS1pbml0aWFsaXplcw0KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY291bnRlciBhbmQgdHJpZ2dlcnMgYW4gdXBkYXRlIG9mIHRoZSByZWdpc3RlcnMuDQorICAqICAgICBAYXJnIFRJTV9TbGF2ZU1vZGVfR2F0ZWQ6ICAgICBUaGUgY291bnRlciBjbG9jayBpcyBlbmFibGVkIHdoZW4gdGhlIHRyaWdnZXIgc2lnbmFsIChUUkdJKSBpcyBoaWdoLg0KKyAgKiAgICAgQGFyZyBUSU1fU2xhdmVNb2RlX1RyaWdnZXI6ICAgVGhlIGNvdW50ZXIgc3RhcnRzIGF0IGEgcmlzaW5nIGVkZ2Ugb2YgdGhlIHRyaWdnZXIgVFJHSS4NCisgICogICAgIEBhcmcgVElNX1NsYXZlTW9kZV9FeHRlcm5hbDE6IFJpc2luZyBlZGdlcyBvZiB0aGUgc2VsZWN0ZWQgdHJpZ2dlciAoVFJHSSkgY2xvY2sgdGhlIGNvdW50ZXIuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9TZWxlY3RTbGF2ZU1vZGUoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9TbGF2ZU1vZGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0OV9QRVJJUEgoVElNeCkpOyANCisgIGFzc2VydF9wYXJhbShJU19USU1fU0xBVkVfTU9ERShUSU1fU2xhdmVNb2RlKSk7DQorICANCisgIC8qIFJlc2V0IHRoZSBTTVMgQml0cyAqLw0KKyAgVElNeC0+U01DUiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX1NNQ1JfU01TKTsNCisgIC8qIFNlbGVjdCB0aGUgU2xhdmUgTW9kZSAqLw0KKyAgVElNeC0+U01DUiB8PSBUSU1fU2xhdmVNb2RlOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZXRzIG9yIFJlc2V0cyB0aGUgVElNeCBNYXN0ZXIvU2xhdmUgTW9kZS4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzLCA0IG9yIDkgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fTWFzdGVyU2xhdmVNb2RlOiBzcGVjaWZpZXMgdGhlIFRpbWVyIE1hc3RlciBTbGF2ZSBNb2RlLg0KKyAgKiAgIFRoaXMgcGFyYW10ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX01hc3RlclNsYXZlTW9kZV9FbmFibGU6IHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHRoZSBjdXJyZW50IHRpbWVyDQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaXRzIHNsYXZlcyAodGhyb3VnaCBUUkdPKS4NCisgICogICAgIEBhcmcgVElNX01hc3RlclNsYXZlTW9kZV9EaXNhYmxlOiBObyBhY3Rpb24NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1NlbGVjdE1hc3RlclNsYXZlTW9kZShUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX01hc3RlclNsYXZlTW9kZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX01TTV9TVEFURShUSU1fTWFzdGVyU2xhdmVNb2RlKSk7DQorICANCisgIC8qIFJlc2V0IHRoZSBNU00gQml0ICovDQorICBUSU14LT5TTUNSICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fU01DUl9NU00pOw0KKyAgDQorICAvKiBTZXQgb3IgUmVzZXQgdGhlIE1TTSBCaXQgKi8NCisgIFRJTXgtPlNNQ1IgfD0gVElNX01hc3RlclNsYXZlTW9kZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgVElNeCBDb3VudGVyIFJlZ2lzdGVyIHZhbHVlDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiB0byAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIENvdW50ZXI6IHNwZWNpZmllcyB0aGUgQ291bnRlciByZWdpc3RlciBuZXcgdmFsdWUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9TZXRDb3VudGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MzJfdCBDb3VudGVyKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsNCisgICANCisgIC8qIFNldCB0aGUgQ291bnRlciBSZWdpc3RlciB2YWx1ZSAqLw0KKyAgVElNeC0+Q05UID0gQ291bnRlcjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgVElNeCBBdXRvcmVsb2FkIFJlZ2lzdGVyIHZhbHVlDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiB0byAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIEF1dG9yZWxvYWQ6IHNwZWNpZmllcyB0aGUgQXV0b3JlbG9hZCByZWdpc3RlciBuZXcgdmFsdWUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9TZXRBdXRvcmVsb2FkKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MzJfdCBBdXRvcmVsb2FkKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOw0KKyAgDQorICAvKiBTZXQgdGhlIEF1dG9yZWxvYWQgUmVnaXN0ZXIgdmFsdWUgKi8NCisgIFRJTXgtPkFSUiA9IEF1dG9yZWxvYWQ7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgdGhlIFRJTXggQ2FwdHVyZSBDb21wYXJlMSBSZWdpc3RlciB2YWx1ZQ0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgQ29tcGFyZTE6IHNwZWNpZmllcyB0aGUgQ2FwdHVyZSBDb21wYXJlMSByZWdpc3RlciBuZXcgdmFsdWUuDQorICAqIEByZXR2YWwgTm9uZQ0KKw0KKyAgKi8NCit2b2lkIFRJTV9TZXRDb21wYXJlMShUSU1fVHlwZURlZiogVElNeCwgdWludDMyX3QgQ29tcGFyZTEpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0OTEwMTFfUEVSSVBIKFRJTXgpKTsNCisgIA0KKyAgLyogU2V0IHRoZSBDYXB0dXJlIENvbXBhcmUxIFJlZ2lzdGVyIHZhbHVlICovDQorICBUSU14LT5DQ1IxID0gQ29tcGFyZTE7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgdGhlIFRJTXggQ2FwdHVyZSBDb21wYXJlMiBSZWdpc3RlciB2YWx1ZQ0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIENvbXBhcmUyOiBzcGVjaWZpZXMgdGhlIENhcHR1cmUgQ29tcGFyZTIgcmVnaXN0ZXIgbmV3IHZhbHVlLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisNCisgICovDQordm9pZCBUSU1fU2V0Q29tcGFyZTIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQzMl90IENvbXBhcmUyKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDlfUEVSSVBIKFRJTXgpKTsNCisgIA0KKyAgLyogU2V0IHRoZSBDYXB0dXJlIENvbXBhcmUyIFJlZ2lzdGVyIHZhbHVlICovDQorICBUSU14LT5DQ1IyID0gQ29tcGFyZTI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgdGhlIFRJTXggQ2FwdHVyZSBDb21wYXJlMyBSZWdpc3RlciB2YWx1ZQ0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIENvbXBhcmUzOiBzcGVjaWZpZXMgdGhlIENhcHR1cmUgQ29tcGFyZTMgcmVnaXN0ZXIgbmV3IHZhbHVlLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisNCisgICovDQordm9pZCBUSU1fU2V0Q29tcGFyZTMoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQzMl90IENvbXBhcmUzKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOw0KKyAgDQorICAvKiBTZXQgdGhlIENhcHR1cmUgQ29tcGFyZTMgUmVnaXN0ZXIgdmFsdWUgKi8NCisgIFRJTXgtPkNDUjMgPSBDb21wYXJlMzsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgVElNeCBDYXB0dXJlIENvbXBhcmU0IFJlZ2lzdGVyIHZhbHVlDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgQ29tcGFyZTQ6IHNwZWNpZmllcyB0aGUgQ2FwdHVyZSBDb21wYXJlNCByZWdpc3RlciBuZXcgdmFsdWUuDQorICAqIEByZXR2YWwgTm9uZQ0KKw0KKyAgKi8NCit2b2lkIFRJTV9TZXRDb21wYXJlNChUSU1fVHlwZURlZiogVElNeCwgdWludDMyX3QgQ29tcGFyZTQpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0X1BFUklQSChUSU14KSk7DQorICANCisgIC8qIFNldCB0aGUgQ2FwdHVyZSBDb21wYXJlNCBSZWdpc3RlciB2YWx1ZSAqLw0KKyAgVElNeC0+Q0NSNCA9IENvbXBhcmU0Ow0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IElucHV0IENhcHR1cmUgMSBwcmVzY2FsZXIuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCwgOSwgMTAgb3IgMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fSUNQU0M6IHNwZWNpZmllcyB0aGUgSW5wdXQgQ2FwdHVyZTEgcHJlc2NhbGVyIG5ldyB2YWx1ZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWMTogbm8gcHJlc2NhbGVyDQorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVYyOiBjYXB0dXJlIGlzIGRvbmUgb25jZSBldmVyeSAyIGV2ZW50cw0KKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWNDogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgNCBldmVudHMNCisgICogICAgIEBhcmcgVElNX0lDUFNDX0RJVjg6IGNhcHR1cmUgaXMgZG9uZSBvbmNlIGV2ZXJ5IDggZXZlbnRzDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9TZXRJQzFQcmVzY2FsZXIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BTQykNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5MTAxMV9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19QUkVTQ0FMRVIoVElNX0lDUFNDKSk7DQorICANCisgIC8qIFJlc2V0IHRoZSBJQzFQU0MgQml0cyAqLw0KKyAgVElNeC0+Q0NNUjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMV9JQzFQU0MpOw0KKyAgLyogU2V0IHRoZSBJQzFQU0MgdmFsdWUgKi8NCisgIFRJTXgtPkNDTVIxIHw9IFRJTV9JQ1BTQzsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgVElNeCBJbnB1dCBDYXB0dXJlIDIgcHJlc2NhbGVyLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9JQ1BTQzogc3BlY2lmaWVzIHRoZSBJbnB1dCBDYXB0dXJlMiBwcmVzY2FsZXIgbmV3IHZhbHVlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVYxOiBubyBwcmVzY2FsZXINCisgICogICAgIEBhcmcgVElNX0lDUFNDX0RJVjI6IGNhcHR1cmUgaXMgZG9uZSBvbmNlIGV2ZXJ5IDIgZXZlbnRzDQorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVY0OiBjYXB0dXJlIGlzIGRvbmUgb25jZSBldmVyeSA0IGV2ZW50cw0KKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWODogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgOCBldmVudHMNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1NldElDMlByZXNjYWxlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lDUFNDKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDlfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUFJFU0NBTEVSKFRJTV9JQ1BTQykpOw0KKyAgDQorICAvKiBSZXNldCB0aGUgSUMyUFNDIEJpdHMgKi8NCisgIFRJTXgtPkNDTVIxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfSUMyUFNDKTsNCisgIC8qIFNldCB0aGUgSUMyUFNDIHZhbHVlICovDQorICBUSU14LT5DQ01SMSB8PSAodWludDE2X3QpKFRJTV9JQ1BTQyA8PCA4KTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgVElNeCBJbnB1dCBDYXB0dXJlIDMgcHJlc2NhbGVyLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9JQ1BTQzogc3BlY2lmaWVzIHRoZSBJbnB1dCBDYXB0dXJlMyBwcmVzY2FsZXIgbmV3IHZhbHVlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVYxOiBubyBwcmVzY2FsZXINCisgICogICAgIEBhcmcgVElNX0lDUFNDX0RJVjI6IGNhcHR1cmUgaXMgZG9uZSBvbmNlIGV2ZXJ5IDIgZXZlbnRzDQorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVY0OiBjYXB0dXJlIGlzIGRvbmUgb25jZSBldmVyeSA0IGV2ZW50cw0KKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWODogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgOCBldmVudHMNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1NldElDM1ByZXNjYWxlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lDUFNDKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNF9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19QUkVTQ0FMRVIoVElNX0lDUFNDKSk7DQorICANCisgIC8qIFJlc2V0IHRoZSBJQzNQU0MgQml0cyAqLw0KKyAgVElNeC0+Q0NNUjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMl9JQzNQU0MpOw0KKyAgLyogU2V0IHRoZSBJQzNQU0MgdmFsdWUgKi8NCisgIFRJTXgtPkNDTVIyIHw9IFRJTV9JQ1BTQzsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgVElNeCBJbnB1dCBDYXB0dXJlIDQgcHJlc2NhbGVyLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9JQ1BTQzogc3BlY2lmaWVzIHRoZSBJbnB1dCBDYXB0dXJlNCBwcmVzY2FsZXIgbmV3IHZhbHVlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVYxOiBubyBwcmVzY2FsZXINCisgICogICAgIEBhcmcgVElNX0lDUFNDX0RJVjI6IGNhcHR1cmUgaXMgZG9uZSBvbmNlIGV2ZXJ5IDIgZXZlbnRzDQorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVY0OiBjYXB0dXJlIGlzIGRvbmUgb25jZSBldmVyeSA0IGV2ZW50cw0KKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWODogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgOCBldmVudHMNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1NldElDNFByZXNjYWxlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lDUFNDKQ0KK3sgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fMjM0X1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0lDX1BSRVNDQUxFUihUSU1fSUNQU0MpKTsNCisgIA0KKyAgLyogUmVzZXQgdGhlIElDNFBTQyBCaXRzICovDQorICBUSU14LT5DQ01SMiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX0lDNFBTQyk7DQorICAvKiBTZXQgdGhlIElDNFBTQyB2YWx1ZSAqLw0KKyAgVElNeC0+Q0NNUjIgfD0gKHVpbnQxNl90KShUSU1fSUNQU0MgPDwgOCk7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgdGhlIFRJTXggQ2xvY2sgRGl2aXNpb24gdmFsdWUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDIsIDMsIDQsIDksIDEwIG9yIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0NLRDogc3BlY2lmaWVzIHRoZSBjbG9jayBkaXZpc2lvbiB2YWx1ZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWU6DQorICAqICAgICBAYXJnIFRJTV9DS0RfRElWMTogVERUUyA9IFRja190aW0NCisgICogICAgIEBhcmcgVElNX0NLRF9ESVYyOiBURFRTID0gMipUY2tfdGltDQorICAqICAgICBAYXJnIFRJTV9DS0RfRElWNDogVERUUyA9IDQqVGNrX3RpbQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBUSU1fU2V0Q2xvY2tEaXZpc2lvbihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0NLRCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5MTAxMV9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DS0RfRElWKFRJTV9DS0QpKTsNCisgIA0KKyAgLyogUmVzZXQgdGhlIENLRCBCaXRzICovDQorICBUSU14LT5DUjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DUjFfQ0tEKTsNCisgIC8qIFNldCB0aGUgQ0tEIHZhbHVlICovDQorICBUSU14LT5DUjEgfD0gVElNX0NLRDsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgR2V0cyB0aGUgVElNeCBJbnB1dCBDYXB0dXJlIDEgdmFsdWUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCwgOSwgMTAgb3IgMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBDYXB0dXJlIENvbXBhcmUgMSBSZWdpc3RlciB2YWx1ZS4NCisNCisgICovDQordWludDMyX3QgVElNX0dldENhcHR1cmUxKFRJTV9UeXBlRGVmKiBUSU14KQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNXzIzNDkxMDExX1BFUklQSChUSU14KSk7DQorICANCisgIC8qIEdldCB0aGUgQ2FwdHVyZSAxIFJlZ2lzdGVyIHZhbHVlICovDQorICByZXR1cm4gVElNeC0+Q0NSMTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgR2V0cyB0aGUgVElNeCBJbnB1dCBDYXB0dXJlIDIgdmFsdWUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMywgNCBvciA5IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgQ2FwdHVyZSBDb21wYXJlIDIgUmVnaXN0ZXIgdmFsdWUuDQorDQorICAqLw0KK3VpbnQzMl90IFRJTV9HZXRDYXB0dXJlMihUSU1fVHlwZURlZiogVElNeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzQ5X1BFUklQSChUSU14KSk7DQorICANCisgIC8qIEdldCB0aGUgQ2FwdHVyZSAyIFJlZ2lzdGVyIHZhbHVlICovDQorICByZXR1cm4gVElNeC0+Q0NSMjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgR2V0cyB0aGUgVElNeCBJbnB1dCBDYXB0dXJlIDMgdmFsdWUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgQ2FwdHVyZSBDb21wYXJlIDMgUmVnaXN0ZXIgdmFsdWUuDQorICAqLw0KK3VpbnQzMl90IFRJTV9HZXRDYXB0dXJlMyhUSU1fVHlwZURlZiogVElNeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsgDQorICANCisgIC8qIEdldCB0aGUgQ2FwdHVyZSAzIFJlZ2lzdGVyIHZhbHVlICovDQorICByZXR1cm4gVElNeC0+Q0NSMzsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgR2V0cyB0aGUgVElNeCBJbnB1dCBDYXB0dXJlIDQgdmFsdWUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEByZXR2YWwgQ2FwdHVyZSBDb21wYXJlIDQgUmVnaXN0ZXIgdmFsdWUuDQorICAqLw0KK3VpbnQzMl90IFRJTV9HZXRDYXB0dXJlNChUSU1fVHlwZURlZiogVElNeCkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsNCisgIA0KKyAgLyogR2V0IHRoZSBDYXB0dXJlIDQgUmVnaXN0ZXIgdmFsdWUgKi8NCisgIHJldHVybiBUSU14LT5DQ1I0Ow0KK30NCisNCisvKioNCisgICogQGJyaWVmICBHZXRzIHRoZSBUSU14IENvdW50ZXIgdmFsdWUuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiB0byAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcmV0dmFsIENvdW50ZXIgUmVnaXN0ZXIgdmFsdWUuDQorICAqLw0KK3VpbnQzMl90IFRJTV9HZXRDb3VudGVyKFRJTV9UeXBlRGVmKiBUSU14KQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOw0KKyAgDQorICAvKiBHZXQgdGhlIENvdW50ZXIgUmVnaXN0ZXIgdmFsdWUgKi8NCisgIHJldHVybiBUSU14LT5DTlQ7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEdldHMgdGhlIFRJTXggUHJlc2NhbGVyIHZhbHVlLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIgdG8gMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBQcmVzY2FsZXIgUmVnaXN0ZXIgdmFsdWUuDQorICAqLw0KK3VpbnQxNl90IFRJTV9HZXRQcmVzY2FsZXIoVElNX1R5cGVEZWYqIFRJTXgpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7DQorICANCisgIC8qIEdldCB0aGUgUHJlc2NhbGVyIFJlZ2lzdGVyIHZhbHVlICovDQorICByZXR1cm4gVElNeC0+UFNDOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBPQ1JlZmVyZW5jZSBDbGVhciBzb3VyY2UuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX09DUmVmZXJlbmNlQ2xlYXI6IHNwZWNpZmllcyB0aGUgT0NSZWZlcmVuY2UgQ2xlYXIgc291cmNlLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9PQ1JlZmVyZW5jZUNsZWFyX0VUUkY6IFRoZSBpbnRlcm5hbCBPQ3JlZmVyZW5jZSBjbGVhciBpbnB1dCBpcyBjb25uZWN0ZWQgdG8gRVRSRi4NCisgICogICAgIEBhcmcgVElNX09DUmVmZXJlbmNlQ2xlYXJfT0NSRUZDTFI6IFRoZSBpbnRlcm5hbCBPQ3JlZmVyZW5jZSBjbGVhciBpbnB1dCBpcyBjb25uZWN0ZWQgdG8gT0NSRUZfQ0xSIGlucHV0LiAgDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9TZWxlY3RPQ1JFRkNsZWFyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NSZWZlcmVuY2VDbGVhcikNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV8yMzRfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShUSU1fT0NSRUZFUkVOQ0VDRUNMRUFSX1NPVVJDRShUSU1fT0NSZWZlcmVuY2VDbGVhcikpOw0KKw0KKyAgLyogU2V0IHRoZSBUSU1fT0NSZWZlcmVuY2VDbGVhciBzb3VyY2UgKi8NCisgIFRJTXgtPlNNQ1IgJj0gICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fU01DUl9PQ0NTKTsNCisgIFRJTXgtPlNNQ1IgfD0gIFRJTV9PQ1JlZmVyZW5jZUNsZWFyOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU05LCBUSU0xMCBhbmQgVElNMTEgUmVtYXBwaW5nIGlucHV0IENhcGFiaWxpdGllcy4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSA5LCAxMCBvciAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9SZW1hcDogc3BlY2lmaWVzIHRoZSBUSU0gaW5wdXQgcmVhbXBwaW5nIHNvdXJjZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU05X0dQSU86IFRJTTkgQ2hhbm5lbCAxIGlzIGNvbm5lY3RlZCB0byBkZWRpY2F0ZWQgVGltZXIgcGluKGRlZmF1bHQpDQorICAqICAgICBAYXJnIFRJTTlfTFNFOiBUSU05IENoYW5uZWwgMSBpcyBjb25uZWN0ZWQgdG8gTFNFIGNsb2NrLg0KKyAgKiAgICAgQGFyZyBUSU0xMF9HUElPOiBUSU0xMCBDaGFubmVsIDEgaXMgY29ubmVjdGVkIHRvIGRlZGljYXRlZCBUaW1lciBwaW4oZGVmYXVsdCkgDQorICAqICAgICBAYXJnIFRJTTEwX0xTSTogVElNMTAgQ2hhbm5lbCAxIGlzIGNvbm5lY3RlZCB0byBMU0kgY2xvY2suDQorICAqICAgICBAYXJnIFRJTTEwX0xTRTogVElNMTAgQ2hhbm5lbCAxIGlzIGNvbm5lY3RlZCB0byBMU0UgY2xvY2suDQorICAqICAgICBAYXJnIFRJTTEwX1JUQzogVElNMTAgQ2hhbm5lbCAxIGlzIGNvbm5lY3RlZCB0byBSVEMgT3V0cHV0IGV2ZW50LiANCisgICogICAgIEBhcmcgVElNMTFfR1BJTzogVElNMTEgQ2hhbm5lbCAxIGlzIGNvbm5lY3RlZCB0byBkZWRpY2F0ZWQgVGltZXIgcGluKGRlZmF1bHQpIA0KKyAgKiAgICAgQGFyZyBUSU0xMV9NU0k6IFRJTTExIENoYW5uZWwgMSBpcyBjb25uZWN0ZWQgdG8gTVNJIGNsb2NrLg0KKyAgKiAgICAgQGFyZyBUSU0xMV9IU0VfUlRDOiBUSU0xMSBDaGFubmVsIDEgaXMgY29ubmVjdGVkIHRvIEhTRV9SVEMgY2xvY2suICANCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX1JlbWFwQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fUmVtYXApDQorew0KKyAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV85MTAxMV9QRVJJUEgoVElNeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9SRU1BUChUSU1fUmVtYXApKTsNCisNCisgIC8qIFNldCB0aGUgVGltZXIgcmVtYXBwaW5nIGNvbmZpZ3VyYXRpb24gKi8NCisgIFRJTXgtPk9SID0gIFRJTV9SZW1hcDsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBUSU0gZmxhZyBpcyBzZXQgb3Igbm90Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIgdG8gMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNoZWNrLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9GTEFHX1VwZGF0ZTogVElNIHVwZGF0ZSBGbGFnDQorICAqICAgICBAYXJnIFRJTV9GTEFHX0NDMTogVElNIENhcHR1cmUgQ29tcGFyZSAxIEZsYWcNCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MyOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDIgRmxhZw0KKyAgKiAgICAgQGFyZyBUSU1fRkxBR19DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBGbGFnDQorICAqICAgICBAYXJnIFRJTV9GTEFHX0NDNDogVElNIENhcHR1cmUgQ29tcGFyZSA0IEZsYWcNCisgICogICAgIEBhcmcgVElNX0ZMQUdfVHJpZ2dlcjogVElNIFRyaWdnZXIgRmxhZw0KKyAgKiAgICAgQGFyZyBUSU1fRkxBR19DQzFPRjogVElNIENhcHR1cmUgQ29tcGFyZSAxIG92ZXJjYXB0dXJlIEZsYWcNCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MyT0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgMiBvdmVyY2FwdHVyZSBGbGFnDQorICAqICAgICBAYXJnIFRJTV9GTEFHX0NDM09GOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDMgb3ZlcmNhcHR1cmUgRmxhZw0KKyAgKiAgICAgQGFyZyBUSU1fRkxBR19DQzRPRjogVElNIENhcHR1cmUgQ29tcGFyZSA0IG92ZXJjYXB0dXJlIEZsYWcNCisgICogQG5vdGUNCisgICogICAtIFRJTTYgYW5kIFRJTTcgY2FuIGhhdmUgb25seSBvbmUgdXBkYXRlIGZsYWcuDQorICAqICAgLSBUSU05IGNhbiBoYXZlIG9ubHkgdXBkYXRlIGZsYWcsIFRJTV9GTEFHX0NDMSwgVElNX0ZMQUdfQ0MyIGFuZCBUSU1fRkxBR19UcmlnZ2VyLA0KKyAgKiAgICAgVElNX0ZMQUdfQ0MxT0Ygb3IgVElNX0ZMQUdfQ0MyT0YgZmxhZ3MgIA0KKyAgKiAgIC0gVElNMTAgYW5kIFRJTTExIGNhbiBoYXZlIG9ubHkgdXBkYXRlIGZsYWcsIFRJTV9GTEFHX0NDMSBvciBUSU1fRkxBR19DQzFPRiBmbGFncyAgICAgICAgIA0KKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgVElNX0ZMQUcgKFNFVCBvciBSRVNFVCkuDQorICAqLw0KK0ZsYWdTdGF0dXMgVElNX0dldEZsYWdTdGF0dXMoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9GTEFHKQ0KK3sgDQorICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsgDQorICAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fR0VUX0ZMQUcoVElNX0ZMQUcpKTsNCisgIA0KKyAgaWYgKChUSU14LT5TUiAmIFRJTV9GTEFHKSAhPSAodWludDE2X3QpUkVTRVQpDQorICB7DQorICAgIGJpdHN0YXR1cyA9IFNFVDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgYml0c3RhdHVzID0gUkVTRVQ7DQorICB9DQorICByZXR1cm4gYml0c3RhdHVzOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDbGVhcnMgdGhlIFRJTXgncyBwZW5kaW5nIGZsYWdzLg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIgdG8gMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIGJpdCB0byBjbGVhci4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fRkxBR19VcGRhdGU6IFRJTSB1cGRhdGUgRmxhZw0KKyAgKiAgICAgQGFyZyBUSU1fRkxBR19DQzE6IFRJTSBDYXB0dXJlIENvbXBhcmUgMSBGbGFnDQorICAqICAgICBAYXJnIFRJTV9GTEFHX0NDMjogVElNIENhcHR1cmUgQ29tcGFyZSAyIEZsYWcNCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MzOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDMgRmxhZw0KKyAgKiAgICAgQGFyZyBUSU1fRkxBR19DQzQ6IFRJTSBDYXB0dXJlIENvbXBhcmUgNCBGbGFnDQorICAqICAgICBAYXJnIFRJTV9GTEFHX1RyaWdnZXI6IFRJTSBUcmlnZ2VyIEZsYWcNCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MxT0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgMSBvdmVyY2FwdHVyZSBGbGFnDQorICAqICAgICBAYXJnIFRJTV9GTEFHX0NDMk9GOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDIgb3ZlcmNhcHR1cmUgRmxhZw0KKyAgKiAgICAgQGFyZyBUSU1fRkxBR19DQzNPRjogVElNIENhcHR1cmUgQ29tcGFyZSAzIG92ZXJjYXB0dXJlIEZsYWcNCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0M0T0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgNCBvdmVyY2FwdHVyZSBGbGFnDQorICAqIEBub3RlDQorICAqICAgLSBUSU02IGFuZCBUSU03IGNhbiBoYXZlIG9ubHkgb25lIHVwZGF0ZSBmbGFnLiANCisgICogICAtIFRJTTkgY2FuIGhhdmUgb25seSB1cGRhdGUgZmxhZywgVElNX0ZMQUdfQ0MxLCBUSU1fRkxBR19DQzIgYW5kIFRJTV9GTEFHX1RyaWdnZXIgZmxhZ3MNCisgICogICAgIFRJTV9GTEFHX0NDMU9GIG9yIFRJTV9GTEFHX0NDMk9GIGZsYWdzICANCisgICogICAtIFRJTTEwIGFuZCBUSU0xMSBjYW4gaGF2ZSBvbmx5IHVwZGF0ZSBmbGFnLCBUSU1fRkxBR19DQzENCisgICogICAgIG9yIFRJTV9GTEFHX0NDMU9GIGZsYWdzICAgICAgDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFRJTV9DbGVhckZsYWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9GTEFHKQ0KK3sgIA0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0NMRUFSX0ZMQUcoVElNX0ZMQUcpKTsNCisgICANCisgIC8qIENsZWFyIHRoZSBmbGFncyAqLw0KKyAgVElNeC0+U1IgPSAodWludDE2X3QpflRJTV9GTEFHOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgVElNIGludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIgdG8gMTEgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4NCisgICogQHBhcmFtICBUSU1fSVQ6IHNwZWNpZmllcyB0aGUgVElNIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0lUX1VwZGF0ZTogVElNIHVwZGF0ZSBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9DQzE6IFRJTSBDYXB0dXJlIENvbXBhcmUgMSBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9DQzI6IFRJTSBDYXB0dXJlIENvbXBhcmUgMiBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9DQzQ6IFRJTSBDYXB0dXJlIENvbXBhcmUgNCBJbnRlcnJ1cHQgc291cmNlDQorICAqICAgICBAYXJnIFRJTV9JVF9UcmlnZ2VyOiBUSU0gVHJpZ2dlciBJbnRlcnJ1cHQgc291cmNlDQorICAqIEBub3RlDQorICAqICAgLSBUSU02IGFuZCBUSU03IGNhbiBnZW5lcmF0ZSBvbmx5IGFuIHVwZGF0ZSBpbnRlcnJ1cHQuDQorICAqICAgLSBUSU05IGNhbiBoYXZlIG9ubHkgdXBkYXRlIGludGVycnVwdCwgVElNX0ZMQUdfQ0MxIG9yIFRJTV9GTEFHX0NDMiwNCisgICogICAgIGludGVycnVwdCBhbmQgVElNX0lUX1RyaWdnZXIgaW50ZXJydXB0Lg0KKyAgKiAgIC0gVElNMTAgYW5kIFRJTTExIGNhbiBoYXZlIG9ubHkgdXBkYXRlIGludGVycnVwdCBvciBUSU1fRkxBR19DQzENCisgICogICAgIGludGVycnVwdCAgICAgIA0KKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgdGhlIFRJTV9JVChTRVQgb3IgUkVTRVQpLg0KKyAgKi8NCitJVFN0YXR1cyBUSU1fR2V0SVRTdGF0dXMoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JVCkNCit7DQorICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsgIA0KKyAgdWludDE2X3QgaXRzdGF0dXMgPSAweDAsIGl0ZW5hYmxlID0gMHgwOw0KKyAgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsNCisgIGFzc2VydF9wYXJhbShJU19USU1fR0VUX0lUKFRJTV9JVCkpOw0KKyAgIA0KKyAgaXRzdGF0dXMgPSBUSU14LT5TUiAmIFRJTV9JVDsNCisgIA0KKyAgaXRlbmFibGUgPSBUSU14LT5ESUVSICYgVElNX0lUOw0KKyAgaWYgKChpdHN0YXR1cyAhPSAodWludDE2X3QpUkVTRVQpICYmIChpdGVuYWJsZSAhPSAodWludDE2X3QpUkVTRVQpKQ0KKyAgew0KKyAgICBiaXRzdGF0dXMgPSBTRVQ7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgfQ0KKyAgcmV0dXJuIGJpdHN0YXR1czsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBUSU14J3MgaW50ZXJydXB0IHBlbmRpbmcgYml0cy4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyIHRvIDExIHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0lUOiBzcGVjaWZpZXMgdGhlIHBlbmRpbmcgYml0IHRvIGNsZWFyLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9JVF9VcGRhdGU6IFRJTSB1cGRhdGUgSW50ZXJydXB0IHNvdXJjZQ0KKyAgKiAgICAgQGFyZyBUSU1fSVRfQ0MxOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDEgSW50ZXJydXB0IHNvdXJjZQ0KKyAgKiAgICAgQGFyZyBUSU1fSVRfQ0MyOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDIgSW50ZXJydXB0IHNvdXJjZQ0KKyAgKiAgICAgQGFyZyBUSU1fSVRfQ0MzOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDMgSW50ZXJydXB0IHNvdXJjZQ0KKyAgKiAgICAgQGFyZyBUSU1fSVRfQ0M0OiBUSU0gQ2FwdHVyZSBDb21wYXJlIDQgSW50ZXJydXB0IHNvdXJjZQ0KKyAgKiAgICAgQGFyZyBUSU1fSVRfVHJpZ2dlcjogVElNIFRyaWdnZXIgSW50ZXJydXB0IHNvdXJjZQ0KKyAgKiBAbm90ZQ0KKyAgKiAgIC0gVElNNiBhbmQgVElNNyBjYW4gZ2VuZXJhdGUgb25seSBhbiB1cGRhdGUgaW50ZXJydXB0Lg0KKyAgKiAgIC0gVElNOSBjYW4gaGF2ZSBvbmx5IHVwZGF0ZSBpbnRlcnJ1cHQsIFRJTV9JVF9DQzEgb3IgVElNX0lUX0NDMiwNCisgICogICAgIGFuZCBUSU1fSVRfVHJpZ2dlciBpbnRlcnJ1cHQuICANCisgICogICAtIFRJTTEwIGFuZCBUSU0xMSBjYW4gaGF2ZSBvbmx5IHVwZGF0ZSBpbnRlcnJ1cHQgb3IgVElNX0lUX0NDMQ0KKyAgKiAgICAgaW50ZXJydXB0ICAgICAgICANCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVElNX0NsZWFySVRQZW5kaW5nQml0KFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSVQpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVElNX0lUKFRJTV9JVCkpOw0KKyAgIA0KKyAgLyogQ2xlYXIgdGhlIElUIHBlbmRpbmcgQml0ICovDQorICBUSU14LT5TUiA9ICh1aW50MTZfdCl+VElNX0lUOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDb25maWd1cmUgdGhlIFRJMSBhcyBJbnB1dC4NCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAyLCAzLCA0LCA5LCAxMCBvciAxMSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9JQ1BvbGFyaXR5IDogVGhlIElucHV0IFBvbGFyaXR5Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X1Jpc2luZw0KKyAgKiAgICAgQGFyZyBUSU1fSUNQb2xhcml0eV9GYWxsaW5nDQorICAqIEBwYXJhbSAgVElNX0lDU2VsZWN0aW9uOiBzcGVjaWZpZXMgdGhlIGlucHV0IHRvIGJlIHVzZWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX0RpcmVjdFRJOiBUSU0gSW5wdXQgMSBpcyBzZWxlY3RlZCB0byBiZSBjb25uZWN0ZWQgdG8gSUMxLg0KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSTogVElNIElucHV0IDEgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIElDMi4NCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX1RSQzogVElNIElucHV0IDEgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIFRSQy4NCisgICogQHBhcmFtICBUSU1fSUNGaWx0ZXI6IFNwZWNpZmllcyB0aGUgSW5wdXQgQ2FwdHVyZSBGaWx0ZXIuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gMHgwMCBhbmQgMHgwRi4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3N0YXRpYyB2b2lkIFRJMV9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sDQorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwLCB0bXBjY2VyID0gMDsNCisgIA0KKyAgLyogRGlzYWJsZSB0aGUgQ2hhbm5lbCAxOiBSZXNldCB0aGUgQ0MxRSBCaXQgKi8NCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMUUpOw0KKyAgdG1wY2NtcjEgPSBUSU14LT5DQ01SMTsNCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOw0KKyAgLyogU2VsZWN0IHRoZSBJbnB1dCBhbmQgc2V0IHRoZSBmaWx0ZXIgKi8NCisgIHRtcGNjbXIxICY9ICh1aW50MTZfdCkoKCh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfQ0MxUykpICYgKCh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfSUMxRikpKTsNCisgIHRtcGNjbXIxIHw9ICh1aW50MTZfdCkoVElNX0lDU2VsZWN0aW9uIHwgKHVpbnQxNl90KShUSU1fSUNGaWx0ZXIgPDwgKHVpbnQxNl90KTQpKTsNCisgIC8qIFNlbGVjdCB0aGUgUG9sYXJpdHkgYW5kIHNldCB0aGUgQ0MxRSBCaXQgKi8NCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KShUSU1fQ0NFUl9DQzFQIHwgVElNX0NDRVJfQ0MxTlApKTsNCisgIHRtcGNjZXIgfD0gKHVpbnQxNl90KShUSU1fSUNQb2xhcml0eSB8ICh1aW50MTZfdClUSU1fQ0NFUl9DQzFFKTsNCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjEgYW5kIENDRVIgcmVnaXN0ZXJzICovDQorICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOw0KKyAgVElNeC0+Q0NFUiA9IHRtcGNjZXI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZSB0aGUgVEkyIGFzIElucHV0Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMsIDQgb3IgOSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9JQ1BvbGFyaXR5IDogVGhlIElucHV0IFBvbGFyaXR5Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X1Jpc2luZw0KKyAgKiAgICAgQGFyZyBUSU1fSUNQb2xhcml0eV9GYWxsaW5nDQorICAqIEBwYXJhbSAgVElNX0lDU2VsZWN0aW9uOiBzcGVjaWZpZXMgdGhlIGlucHV0IHRvIGJlIHVzZWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX0RpcmVjdFRJOiBUSU0gSW5wdXQgMiBpcyBzZWxlY3RlZCB0byBiZSBjb25uZWN0ZWQgdG8gSUMyLg0KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSTogVElNIElucHV0IDIgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIElDMS4NCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX1RSQzogVElNIElucHV0IDIgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIFRSQy4NCisgICogQHBhcmFtICBUSU1fSUNGaWx0ZXI6IFNwZWNpZmllcyB0aGUgSW5wdXQgQ2FwdHVyZSBGaWx0ZXIuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gMHgwMCBhbmQgMHgwRi4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3N0YXRpYyB2b2lkIFRJMl9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sDQorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwLCB0bXBjY2VyID0gMCwgdG1wID0gMDsNCisgIA0KKyAgLyogRGlzYWJsZSB0aGUgQ2hhbm5lbCAyOiBSZXNldCB0aGUgQ0MyRSBCaXQgKi8NCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMkUpOw0KKyAgdG1wY2NtcjEgPSBUSU14LT5DQ01SMTsNCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOw0KKyAgdG1wID0gKHVpbnQxNl90KShUSU1fSUNQb2xhcml0eSA8PCA0KTsNCisgIC8qIFNlbGVjdCB0aGUgSW5wdXQgYW5kIHNldCB0aGUgZmlsdGVyICovDQorICB0bXBjY21yMSAmPSAodWludDE2X3QpKCgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0NDMlMpKSAmICgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0lDMkYpKSk7DQorICB0bXBjY21yMSB8PSAodWludDE2X3QpKFRJTV9JQ0ZpbHRlciA8PCAxMik7DQorICB0bXBjY21yMSB8PSAodWludDE2X3QpKFRJTV9JQ1NlbGVjdGlvbiA8PCA4KTsNCisgIC8qIFNlbGVjdCB0aGUgUG9sYXJpdHkgYW5kIHNldCB0aGUgQ0MyRSBCaXQgKi8NCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KShUSU1fQ0NFUl9DQzJQIHwgVElNX0NDRVJfQ0MyTlApKTsNCisgIHRtcGNjZXIgfD0gICh1aW50MTZfdCkodG1wIHwgKHVpbnQxNl90KVRJTV9DQ0VSX0NDMkUpOw0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMSBhbmQgQ0NFUiByZWdpc3RlcnMgKi8NCisgIFRJTXgtPkNDTVIxID0gdG1wY2NtcjEgOw0KKyAgVElNeC0+Q0NFUiA9IHRtcGNjZXI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZSB0aGUgVEkzIGFzIElucHV0Lg0KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDIsIDMgb3IgNCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFRJTV9JQ1BvbGFyaXR5IDogVGhlIElucHV0IFBvbGFyaXR5Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X1Jpc2luZw0KKyAgKiAgICAgQGFyZyBUSU1fSUNQb2xhcml0eV9GYWxsaW5nDQorICAqIEBwYXJhbSAgVElNX0lDU2VsZWN0aW9uOiBzcGVjaWZpZXMgdGhlIGlucHV0IHRvIGJlIHVzZWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX0RpcmVjdFRJOiBUSU0gSW5wdXQgMyBpcyBzZWxlY3RlZCB0byBiZSBjb25uZWN0ZWQgdG8gSUMzLg0KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSTogVElNIElucHV0IDMgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIElDNC4NCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX1RSQzogVElNIElucHV0IDMgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIFRSQy4NCisgICogQHBhcmFtICBUSU1fSUNGaWx0ZXI6IFNwZWNpZmllcyB0aGUgSW5wdXQgQ2FwdHVyZSBGaWx0ZXIuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gMHgwMCBhbmQgMHgwRi4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3N0YXRpYyB2b2lkIFRJM19Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sDQorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpDQorew0KKyAgdWludDE2X3QgdG1wY2NtcjIgPSAwLCB0bXBjY2VyID0gMCwgdG1wID0gMDsNCisgIA0KKyAgLyogRGlzYWJsZSB0aGUgQ2hhbm5lbCAzOiBSZXNldCB0aGUgQ0MzRSBCaXQgKi8NCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDM0UpOw0KKyAgdG1wY2NtcjIgPSBUSU14LT5DQ01SMjsNCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOw0KKyAgdG1wID0gKHVpbnQxNl90KShUSU1fSUNQb2xhcml0eSA8PCA4KTsNCisgIC8qIFNlbGVjdCB0aGUgSW5wdXQgYW5kIHNldCB0aGUgZmlsdGVyICovDQorICB0bXBjY21yMiAmPSAodWludDE2X3QpKCgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX0NDM1MpKSAmICgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX0lDM0YpKSk7DQorICB0bXBjY21yMiB8PSAodWludDE2X3QpKFRJTV9JQ1NlbGVjdGlvbiB8ICh1aW50MTZfdCkoVElNX0lDRmlsdGVyIDw8ICh1aW50MTZfdCk0KSk7DQorICAvKiBTZWxlY3QgdGhlIFBvbGFyaXR5IGFuZCBzZXQgdGhlIENDM0UgQml0ICovDQorICB0bXBjY2VyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdCkoVElNX0NDRVJfQ0MzUCB8IFRJTV9DQ0VSX0NDM05QKSk7DQorICB0bXBjY2VyIHw9ICh1aW50MTZfdCkodG1wIHwgKHVpbnQxNl90KVRJTV9DQ0VSX0NDM0UpOw0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiBhbmQgQ0NFUiByZWdpc3RlcnMgKi8NCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7DQorICBUSU14LT5DQ0VSID0gdG1wY2NlcjsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ29uZmlndXJlIHRoZSBUSTQgYXMgSW5wdXQuDQorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMiwgMyBvciA0IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVElNX0lDUG9sYXJpdHkgOiBUaGUgSW5wdXQgUG9sYXJpdHkuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVElNX0lDUG9sYXJpdHlfUmlzaW5nDQorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X0ZhbGxpbmcNCisgICogQHBhcmFtICBUSU1fSUNTZWxlY3Rpb246IHNwZWNpZmllcyB0aGUgaW5wdXQgdG8gYmUgdXNlZC4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fRGlyZWN0VEk6IFRJTSBJbnB1dCA0IGlzIHNlbGVjdGVkIHRvIGJlIGNvbm5lY3RlZCB0byBJQzQuDQorICAqICAgICBAYXJnIFRJTV9JQ1NlbGVjdGlvbl9JbmRpcmVjdFRJOiBUSU0gSW5wdXQgNCBpcyBzZWxlY3RlZCB0byBiZSBjb25uZWN0ZWQgdG8gSUMzLg0KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fVFJDOiBUSU0gSW5wdXQgNCBpcyBzZWxlY3RlZCB0byBiZSBjb25uZWN0ZWQgdG8gVFJDLg0KKyAgKiBAcGFyYW0gIFRJTV9JQ0ZpbHRlcjogU3BlY2lmaWVzIHRoZSBJbnB1dCBDYXB0dXJlIEZpbHRlci4NCisgICogICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiAweDAwIGFuZCAweDBGLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQorc3RhdGljIHZvaWQgVEk0X0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lDUG9sYXJpdHksIHVpbnQxNl90IFRJTV9JQ1NlbGVjdGlvbiwNCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQ0ZpbHRlcikNCit7DQorICB1aW50MTZfdCB0bXBjY21yMiA9IDAsIHRtcGNjZXIgPSAwLCB0bXAgPSAwOw0KKyAgDQorICAvKiBEaXNhYmxlIHRoZSBDaGFubmVsIDQ6IFJlc2V0IHRoZSBDQzRFIEJpdCAqLw0KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDRVJfQ0M0RSk7DQorICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOw0KKyAgdG1wY2NlciA9IFRJTXgtPkNDRVI7DQorICB0bXAgPSAodWludDE2X3QpKFRJTV9JQ1BvbGFyaXR5IDw8IDEyKTsNCisgIC8qIFNlbGVjdCB0aGUgSW5wdXQgYW5kIHNldCB0aGUgZmlsdGVyICovDQorICB0bXBjY21yMiAmPSAodWludDE2X3QpKCh1aW50MTZfdCkofih1aW50MTZfdClUSU1fQ0NNUjJfQ0M0UykgJiAoKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMl9JQzRGKSkpOw0KKyAgdG1wY2NtcjIgfD0gKHVpbnQxNl90KShUSU1fSUNTZWxlY3Rpb24gPDwgOCk7DQorICB0bXBjY21yMiB8PSAodWludDE2X3QpKFRJTV9JQ0ZpbHRlciA8PCAxMik7DQorDQorICAvKiBTZWxlY3QgdGhlIFBvbGFyaXR5IGFuZCBzZXQgdGhlIENDNEUgQml0ICovDQorICB0bXBjY2VyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdCkoVElNX0NDRVJfQ0M0UCB8IFRJTV9DQ0VSX0NDNE5QKSk7DQorICB0bXBjY2VyIHw9ICh1aW50MTZfdCkodG1wIHwgKHVpbnQxNl90KVRJTV9DQ0VSX0NDNEUpOw0KKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiBhbmQgQ0NFUiByZWdpc3RlcnMgKi8NCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7DQorICBUSU14LT5DQ0VSID0gdG1wY2NlciA7DQorfQ0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF91c2FydC5jIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvU1RNMzJMMXh4X1N0ZFBlcmlwaF9Ecml2ZXIvc3JjL3N0bTMybDF4eF91c2FydC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYzE0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9TVE0zMkwxeHhfU3RkUGVyaXBoX0RyaXZlci9zcmMvc3RtMzJsMXh4X3VzYXJ0LmMKQEAgLTAsMCArMSw5OTUgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIHN0bTMybDF4eF91c2FydC5jDQorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorICAqIEB2ZXJzaW9uIFYxLjAuMFJDMQ0KKyAgKiBAZGF0ZSAgICAwNy8wMi8yMDEwDQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIFVTQVJUIGZpcm13YXJlIGZ1bmN0aW9ucy4NCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAY29weQ0KKyAgKg0KKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMNCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUNCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQ0KKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HDQorICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUNCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLg0KKyAgKg0KKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4NCisgICovIA0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eF91c2FydC5oIg0KKyNpbmNsdWRlICJzdG0zMmwxeHhfcmNjLmgiDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TdGRQZXJpcGhfRHJpdmVyDQorICAqIEB7DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlQgDQorICAqIEBicmllZiBVU0FSVCBkcml2ZXIgbW9kdWxlcw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGRlZmdyb3VwIFVTQVJUX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBkZWZncm91cCBVU0FSVF9Qcml2YXRlX0RlZmluZXMNCisgICogQHsNCisgICovDQorDQorLyohPCBVU0FSVCBDUjEgcmVnaXN0ZXIgY2xlYXIgTWFzayAoKH4odWludDE2X3QpMHhFOUYzKSkgKi8NCisjZGVmaW5lIENSMV9DTEVBUl9NQVNLICAgICAgICAgICAgKCh1aW50MTZfdCkoVVNBUlRfQ1IxX00gfCBVU0FSVF9DUjFfUENFIHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9DUjFfUFMgfCBVU0FSVF9DUjFfVEUgfCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0NSMV9SRSkpDQorDQorLyohPCBVU0FSVCBDUjIgcmVnaXN0ZXIgY2xvY2sgYml0cyBjbGVhciBNYXNrICgofih1aW50MTZfdCkweEYwRkYpKSAqLw0KKyNkZWZpbmUgQ1IyX0NMT0NLX0NMRUFSX01BU0sgICAgICAoKHVpbnQxNl90KShVU0FSVF9DUjJfQ0xLRU4gfCBVU0FSVF9DUjJfQ1BPTCB8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfQ1IyX0NQSEEgfCBVU0FSVF9DUjJfTEJDTCkpDQorDQorLyohPCBVU0FSVCBDUjMgcmVnaXN0ZXIgY2xlYXIgTWFzayAoKH4odWludDE2X3QpMHhGQ0ZGKSkgKi8NCisjZGVmaW5lIENSM19DTEVBUl9NQVNLICAgICAgICAgICAgKCh1aW50MTZfdCkoVVNBUlRfQ1IzX1JUU0UgfCBVU0FSVF9DUjNfQ1RTRSkpDQorDQorLyohPCBVU0FSVCBJbnRlcnJ1cHRzIG1hc2sgKi8NCisjZGVmaW5lIElUX01BU0sgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMUYpDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfUHJpdmF0ZV9NYWNyb3MNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfUHJpdmF0ZV9WYXJpYWJsZXMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfUHJpdmF0ZV9GdW5jdGlvblByb3RvdHlwZXMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAZGVmZ3JvdXAgVVNBUlRfUHJpdmF0ZV9GdW5jdGlvbnMNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEBicmllZiAgRGVpbml0aWFsaXplcyB0aGUgVVNBUlR4IHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgdmFsdWVzLg0KKyAgKiBAcGFyYW0gIFVTQVJUeDogU2VsZWN0IHRoZSBVU0FSVCBwZXJpcGhlcmFsLiANCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFVTQVJUX0RlSW5pdChVU0FSVF9UeXBlRGVmKiBVU0FSVHgpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOw0KKw0KKyAgaWYgKFVTQVJUeCA9PSBVU0FSVDEpDQorICB7DQorICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVVNBUlQxLCBFTkFCTEUpOw0KKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1VTQVJUMSwgRElTQUJMRSk7DQorICB9DQorICBlbHNlIGlmIChVU0FSVHggPT0gVVNBUlQyKQ0KKyAgew0KKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1VTQVJUMiwgRU5BQkxFKTsNCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9VU0FSVDIsIERJU0FCTEUpOw0KKyAgfQ0KKyAgZWxzZSANCisgIHsNCisgICAgaWYgKFVTQVJUeCA9PSBVU0FSVDMpDQorICAgIHsNCisgICAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1VTQVJUMywgRU5BQkxFKTsNCisgICAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1VTQVJUMywgRElTQUJMRSk7ICAgIA0KKyAgICB9DQorICB9ICAgIA0KK30NCisNCisvKioNCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgVVNBUlR4IHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQNCisgICogICBwYXJhbWV0ZXJzIGluIHRoZSBVU0FSVF9Jbml0U3RydWN0IC4NCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEBwYXJhbSAgVVNBUlRfSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFVTQVJUX0luaXRUeXBlRGVmIHN0cnVjdHVyZQ0KKyAgKiAgIHRoYXQgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgVVNBUlQgcGVyaXBoZXJhbC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfSW5pdChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIFVTQVJUX0luaXRUeXBlRGVmKiBVU0FSVF9Jbml0U3RydWN0KQ0KK3sNCisgIHVpbnQzMl90IHRtcHJlZyA9IDB4MDAsIGFwYmNsb2NrID0gMHgwMDsNCisgIHVpbnQzMl90IGludGVnZXJkaXZpZGVyID0gMHgwMDsNCisgIHVpbnQzMl90IGZyYWN0aW9uYWxkaXZpZGVyID0gMHgwMDsNCisgIFJDQ19DbG9ja3NUeXBlRGVmIFJDQ19DbG9ja3NTdGF0dXM7DQorDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQkFVRFJBVEUoVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfQmF1ZFJhdGUpKTsgIA0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX1dPUkRfTEVOR1RIKFVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX1dvcmRMZW5ndGgpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9TVE9QQklUUyhVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9TdG9wQml0cykpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX1BBUklUWShVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9QYXJpdHkpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9NT0RFKFVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX01vZGUpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9IQVJEV0FSRV9GTE9XX0NPTlRST0woVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbCkpOw0KKyAgDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVTQVJUIENSMiBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIHRtcHJlZyA9IFVTQVJUeC0+Q1IyOw0KKyAgLyogQ2xlYXIgU1RPUFsxMzoxMl0gYml0cyAqLw0KKyAgdG1wcmVnICY9ICh1aW50MzJfdCl+KCh1aW50MzJfdClVU0FSVF9DUjJfU1RPUCk7DQorDQorICAvKiBDb25maWd1cmUgdGhlIFVTQVJUIFN0b3AgQml0cywgQ2xvY2ssIENQT0wsIENQSEEgYW5kIExhc3RCaXQgLS0tLS0tLS0tLS0tKi8NCisgIC8qIFNldCBTVE9QWzEzOjEyXSBiaXRzIGFjY29yZGluZyB0byBVU0FSVF9TdG9wQml0cyB2YWx1ZSAqLw0KKyAgdG1wcmVnIHw9ICh1aW50MzJfdClVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9TdG9wQml0czsNCisgIA0KKyAgLyogV3JpdGUgdG8gVVNBUlQgQ1IyICovDQorICBVU0FSVHgtPkNSMiA9ICh1aW50MTZfdCl0bXByZWc7DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVTQVJUIENSMSBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIHRtcHJlZyA9IFVTQVJUeC0+Q1IxOw0KKyAgLyogQ2xlYXIgTSwgUENFLCBQUywgVEUgYW5kIFJFIGJpdHMgKi8NCisgIHRtcHJlZyAmPSAodWludDMyX3QpfigodWludDMyX3QpQ1IxX0NMRUFSX01BU0spOw0KKw0KKyAgLyogQ29uZmlndXJlIHRoZSBVU0FSVCBXb3JkIExlbmd0aCwgUGFyaXR5IGFuZCBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQorICAvKiBTZXQgdGhlIE0gYml0cyBhY2NvcmRpbmcgdG8gVVNBUlRfV29yZExlbmd0aCB2YWx1ZSAqLw0KKyAgLyogU2V0IFBDRSBhbmQgUFMgYml0cyBhY2NvcmRpbmcgdG8gVVNBUlRfUGFyaXR5IHZhbHVlICovDQorICAvKiBTZXQgVEUgYW5kIFJFIGJpdHMgYWNjb3JkaW5nIHRvIFVTQVJUX01vZGUgdmFsdWUgKi8NCisgIHRtcHJlZyB8PSAodWludDMyX3QpVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfV29yZExlbmd0aCB8IFVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX1Bhcml0eSB8DQorICAgICAgICAgICAgVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfTW9kZTsNCisNCisgIC8qIFdyaXRlIHRvIFVTQVJUIENSMSAqLw0KKyAgVVNBUlR4LT5DUjEgPSAodWludDE2X3QpdG1wcmVnOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVU0FSVCBDUjMgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICANCisgIHRtcHJlZyA9IFVTQVJUeC0+Q1IzOw0KKyAgLyogQ2xlYXIgQ1RTRSBhbmQgUlRTRSBiaXRzICovDQorICB0bXByZWcgJj0gKHVpbnQzMl90KX4oKHVpbnQzMl90KUNSM19DTEVBUl9NQVNLKTsNCisNCisgIC8qIENvbmZpZ3VyZSB0aGUgVVNBUlQgSEZDIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgLyogU2V0IENUU0UgYW5kIFJUU0UgYml0cyBhY2NvcmRpbmcgdG8gVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbCB2YWx1ZSAqLw0KKyAgdG1wcmVnIHw9IFVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2w7DQorDQorICAvKiBXcml0ZSB0byBVU0FSVCBDUjMgKi8NCisgIFVTQVJUeC0+Q1IzID0gKHVpbnQxNl90KXRtcHJlZzsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVNBUlQgQlJSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgLyogQ29uZmlndXJlIHRoZSBVU0FSVCBCYXVkIFJhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICBSQ0NfR2V0Q2xvY2tzRnJlcSgmUkNDX0Nsb2Nrc1N0YXR1cyk7DQorICBpZiAoVVNBUlR4ID09IFVTQVJUMSkgDQorICB7DQorICAgIGFwYmNsb2NrID0gUkNDX0Nsb2Nrc1N0YXR1cy5QQ0xLMl9GcmVxdWVuY3k7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIGFwYmNsb2NrID0gUkNDX0Nsb2Nrc1N0YXR1cy5QQ0xLMV9GcmVxdWVuY3k7DQorICB9DQorDQorICAvKiBEZXRlcm1pbmUgdGhlIGludGVnZXIgcGFydCAqLw0KKyAgaWYgKChVU0FSVHgtPkNSMSAmIFVTQVJUX0NSMV9PVkVSOCkgIT0gMCkNCisgIHsNCisgICAgLyogSW50ZWdlciBwYXJ0IGNvbXB1dGluZyBpbiBjYXNlIE92ZXJzYW1wbGluZyBtb2RlIGlzIDggU2FtcGxlcyAqLw0KKyAgICBpbnRlZ2VyZGl2aWRlciA9ICgoMjUgKiBhcGJjbG9jaykgLyAoMiAqIChVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9CYXVkUmF0ZSkpKTsgICAgDQorICB9DQorICBlbHNlIC8qIGlmICgoVVNBUlR4LT5DUjEgJiBDUjFfT1ZFUjhfU2V0KSA9PSAwKSAqLw0KKyAgew0KKyAgICAvKiBJbnRlZ2VyIHBhcnQgY29tcHV0aW5nIGluIGNhc2UgT3ZlcnNhbXBsaW5nIG1vZGUgaXMgMTYgU2FtcGxlcyAqLw0KKyAgICBpbnRlZ2VyZGl2aWRlciA9ICgoMjUgKiBhcGJjbG9jaykgLyAoNCAqIChVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9CYXVkUmF0ZSkpKTsgICAgDQorICB9DQorICB0bXByZWcgPSAoaW50ZWdlcmRpdmlkZXIgLyAxMDApIDw8IDQ7DQorDQorICAvKiBEZXRlcm1pbmUgdGhlIGZyYWN0aW9uYWwgcGFydCAqLw0KKyAgZnJhY3Rpb25hbGRpdmlkZXIgPSBpbnRlZ2VyZGl2aWRlciAtICgxMDAgKiAodG1wcmVnID4+IDQpKTsNCisNCisgIC8qIEltcGxlbWVudCB0aGUgZnJhY3Rpb25hbCBwYXJ0IGluIHRoZSByZWdpc3RlciAqLw0KKyAgaWYgKChVU0FSVHgtPkNSMSAmIFVTQVJUX0NSMV9PVkVSOCkgIT0gMCkNCisgIHsNCisgICAgdG1wcmVnIHw9ICgoKChmcmFjdGlvbmFsZGl2aWRlciAqIDgpICsgNTApIC8gMTAwKSkgJiAoKHVpbnQ4X3QpMHgwNyk7DQorICB9DQorICBlbHNlIC8qIGlmICgoVVNBUlR4LT5DUjEgJiBDUjFfT1ZFUjhfU2V0KSA9PSAwKSAqLw0KKyAgew0KKyAgICB0bXByZWcgfD0gKCgoKGZyYWN0aW9uYWxkaXZpZGVyICogMTYpICsgNTApIC8gMTAwKSkgJiAoKHVpbnQ4X3QpMHgwRik7DQorICB9DQorIA0KKyAgLyogV3JpdGUgdG8gVVNBUlQgQlJSICovDQorICBVU0FSVHgtPkJSUiA9ICh1aW50MTZfdCl0bXByZWc7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggVVNBUlRfSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4NCisgICogQHBhcmFtICBVU0FSVF9Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVVNBUlRfSW5pdFR5cGVEZWYgc3RydWN0dXJlDQorICAqICAgd2hpY2ggd2lsbCBiZSBpbml0aWFsaXplZC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfU3RydWN0SW5pdChVU0FSVF9Jbml0VHlwZURlZiogVVNBUlRfSW5pdFN0cnVjdCkNCit7DQorICAvKiBVU0FSVF9Jbml0U3RydWN0IG1lbWJlcnMgZGVmYXVsdCB2YWx1ZSAqLw0KKyAgVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfQmF1ZFJhdGUgPSA5NjAwOw0KKyAgVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfV29yZExlbmd0aCA9IFVTQVJUX1dvcmRMZW5ndGhfOGI7DQorICBVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9TdG9wQml0cyA9IFVTQVJUX1N0b3BCaXRzXzE7DQorICBVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9QYXJpdHkgPSBVU0FSVF9QYXJpdHlfTm8gOw0KKyAgVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfTW9kZSA9IFVTQVJUX01vZGVfUnggfCBVU0FSVF9Nb2RlX1R4Ow0KKyAgVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbCA9IFVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2xfTm9uZTsgIA0KK30NCisNCisvKioNCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgVVNBUlR4IHBlcmlwaGVyYWwgQ2xvY2sgYWNjb3JkaW5nIHRvIHRoZSANCisgICogICBzcGVjaWZpZWQgcGFyYW1ldGVycyBpbiB0aGUgVVNBUlRfQ2xvY2tJbml0U3RydWN0IC4NCisgICogQHBhcmFtICBVU0FSVHg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMgdG8gc2VsZWN0IHRoZSBVU0FSVCBwZXJpcGhlcmFsLg0KKyAgKiBAcGFyYW0gIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFVTQVJUX0Nsb2NrSW5pdFR5cGVEZWYNCisgICogICBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCANCisgICogICBVU0FSVCBwZXJpcGhlcmFsLiAgDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFVTQVJUX0Nsb2NrSW5pdChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIFVTQVJUX0Nsb2NrSW5pdFR5cGVEZWYqIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdCkNCit7DQorICB1aW50MzJfdCB0bXByZWcgPSAweDAwOw0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0NMT0NLKFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfQ2xvY2spKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9DUE9MKFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfQ1BPTCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0NQSEEoVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9DUEhBKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfTEFTVEJJVChVU0FSVF9DbG9ja0luaXRTdHJ1Y3QtPlVTQVJUX0xhc3RCaXQpKTsNCisgIA0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVU0FSVCBDUjIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICB0bXByZWcgPSBVU0FSVHgtPkNSMjsNCisgIC8qIENsZWFyIENMS0VOLCBDUE9MLCBDUEhBIGFuZCBMQkNMIGJpdHMgKi8NCisgIHRtcHJlZyAmPSAodWludDMyX3QpfigodWludDMyX3QpQ1IyX0NMT0NLX0NMRUFSX01BU0spOw0KKyAgLyogQ29uZmlndXJlIHRoZSBVU0FSVCBDbG9jaywgQ1BPTCwgQ1BIQSBhbmQgTGFzdEJpdCAtLS0tLS0tLS0tLS0qLw0KKyAgLyogU2V0IENMS0VOIGJpdCBhY2NvcmRpbmcgdG8gVVNBUlRfQ2xvY2sgdmFsdWUgKi8NCisgIC8qIFNldCBDUE9MIGJpdCBhY2NvcmRpbmcgdG8gVVNBUlRfQ1BPTCB2YWx1ZSAqLw0KKyAgLyogU2V0IENQSEEgYml0IGFjY29yZGluZyB0byBVU0FSVF9DUEhBIHZhbHVlICovDQorICAvKiBTZXQgTEJDTCBiaXQgYWNjb3JkaW5nIHRvIFVTQVJUX0xhc3RCaXQgdmFsdWUgKi8NCisgIHRtcHJlZyB8PSAodWludDMyX3QpVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9DbG9jayB8IFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfQ1BPTCB8IA0KKyAgICAgICAgICAgICAgICAgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9DUEhBIHwgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9MYXN0Qml0Ow0KKyAgLyogV3JpdGUgdG8gVVNBUlQgQ1IyICovDQorICBVU0FSVHgtPkNSMiA9ICh1aW50MTZfdCl0bXByZWc7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggVVNBUlRfQ2xvY2tJbml0U3RydWN0IG1lbWJlciB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlLg0KKyAgKiBAcGFyYW0gIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFVTQVJUX0Nsb2NrSW5pdFR5cGVEZWYNCisgICogICBzdHJ1Y3R1cmUgd2hpY2ggd2lsbCBiZSBpbml0aWFsaXplZC4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfQ2xvY2tTdHJ1Y3RJbml0KFVTQVJUX0Nsb2NrSW5pdFR5cGVEZWYqIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdCkNCit7DQorICAvKiBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QgbWVtYmVycyBkZWZhdWx0IHZhbHVlICovDQorICBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QtPlVTQVJUX0Nsb2NrID0gVVNBUlRfQ2xvY2tfRGlzYWJsZTsNCisgIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfQ1BPTCA9IFVTQVJUX0NQT0xfTG93Ow0KKyAgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9DUEhBID0gVVNBUlRfQ1BIQV8xRWRnZTsNCisgIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfTGFzdEJpdCA9IFVTQVJUX0xhc3RCaXRfRGlzYWJsZTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIFVTQVJUIHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFVTQVJUeCBwZXJpcGhlcmFsLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFVTQVJUX0NtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBVU0FSVCBieSBzZXR0aW5nIHRoZSBVRSBiaXQgaW4gdGhlIENSMSByZWdpc3RlciAqLw0KKyAgICBVU0FSVHgtPkNSMSB8PSBVU0FSVF9DUjFfVUU7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIFVTQVJUIGJ5IGNsZWFyaW5nIHRoZSBVRSBiaXQgaW4gdGhlIENSMSByZWdpc3RlciAqLw0KKyAgICBVU0FSVHgtPkNSMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVVNBUlRfQ1IxX1VFKTsNCisgIH0NCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIFVTQVJUIGludGVycnVwdHMuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIFVTQVJUX0lUOiBzcGVjaWZpZXMgdGhlIFVTQVJUIGludGVycnVwdCBzb3VyY2VzIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVVNBUlRfSVRfQ1RTOiAgQ1RTIGNoYW5nZSBpbnRlcnJ1cHQgKG5vdCBhdmFpbGFibGUgZm9yIFVBUlQ0IGFuZCBVQVJUNSkNCisgICogICAgIEBhcmcgVVNBUlRfSVRfTEJEOiAgTElOIEJyZWFrIGRldGVjdGlvbiBpbnRlcnJ1cHQNCisgICogICAgIEBhcmcgVVNBUlRfSVRfVFhFOiAgVGFuc21pdCBEYXRhIFJlZ2lzdGVyIGVtcHR5IGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9UQzogICBUcmFuc21pc3Npb24gY29tcGxldGUgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFVTQVJUX0lUX1JYTkU6IFJlY2VpdmUgRGF0YSByZWdpc3RlciBub3QgZW1wdHkgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFVTQVJUX0lUX0lETEU6IElkbGUgbGluZSBkZXRlY3Rpb24gaW50ZXJydXB0DQorICAqICAgICBAYXJnIFVTQVJUX0lUX1BFOiAgIFBhcml0eSBFcnJvciBpbnRlcnJ1cHQNCisgICogICAgIEBhcmcgVVNBUlRfSVRfRVJSOiAgRXJyb3IgaW50ZXJydXB0KEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikNCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgVVNBUlR4IGludGVycnVwdHMuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfSVRDb25maWcoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIHVpbnQzMl90IHVzYXJ0cmVnID0gMHgwMCwgaXRwb3MgPSAweDAwLCBpdG1hc2sgPSAweDAwOw0KKyAgdWludDMyX3QgdXNhcnR4YmFzZSA9IDB4MDA7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQ09ORklHX0lUKFVTQVJUX0lUKSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgDQorICB1c2FydHhiYXNlID0gKHVpbnQzMl90KVVTQVJUeDsNCisNCisgIC8qIEdldCB0aGUgVVNBUlQgcmVnaXN0ZXIgaW5kZXggKi8NCisgIHVzYXJ0cmVnID0gKCgodWludDhfdClVU0FSVF9JVCkgPj4gMHgwNSk7DQorDQorICAvKiBHZXQgdGhlIGludGVycnVwdCBwb3NpdGlvbiAqLw0KKyAgaXRwb3MgPSBVU0FSVF9JVCAmIElUX01BU0s7DQorICBpdG1hc2sgPSAoKCh1aW50MzJfdCkweDAxKSA8PCBpdHBvcyk7DQorICAgIA0KKyAgaWYgKHVzYXJ0cmVnID09IDB4MDEpIC8qIFRoZSBJVCBpcyBpbiBDUjEgcmVnaXN0ZXIgKi8NCisgIHsNCisgICAgdXNhcnR4YmFzZSArPSAweDBDOw0KKyAgfQ0KKyAgZWxzZSBpZiAodXNhcnRyZWcgPT0gMHgwMikgLyogVGhlIElUIGlzIGluIENSMiByZWdpc3RlciAqLw0KKyAgew0KKyAgICB1c2FydHhiYXNlICs9IDB4MTA7DQorICB9DQorICBlbHNlIC8qIFRoZSBJVCBpcyBpbiBDUjMgcmVnaXN0ZXIgKi8NCisgIHsNCisgICAgdXNhcnR4YmFzZSArPSAweDE0OyANCisgIH0NCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICAqKF9fSU8gdWludDMyX3QqKXVzYXJ0eGJhc2UgIHw9IGl0bWFzazsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgKihfX0lPIHVpbnQzMl90Kil1c2FydHhiYXNlICY9IH5pdG1hc2s7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFVTQVJUknMgRE1BIGludGVyZmFjZS4NCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEBwYXJhbSAgVVNBUlRfRE1BUmVxOiBzcGVjaWZpZXMgdGhlIERNQSByZXF1ZXN0Lg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFVTQVJUX0RNQVJlcV9UeDogVVNBUlQgRE1BIHRyYW5zbWl0IHJlcXVlc3QNCisgICogICAgIEBhcmcgVVNBUlRfRE1BUmVxX1J4OiBVU0FSVCBETUEgcmVjZWl2ZSByZXF1ZXN0DQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgRE1BIFJlcXVlc3Qgc291cmNlcy4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAbm90ZSBUaGUgRE1BIG1vZGUgaXMgbm90IGF2YWlsYWJsZSBmb3IgVUFSVDUuICANCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfRE1BQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfRE1BUmVxLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0RNQVJFUShVU0FSVF9ETUFSZXEpKTsgIA0KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsgDQorDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogRW5hYmxlIHRoZSBETUEgdHJhbnNmZXIgZm9yIHNlbGVjdGVkIHJlcXVlc3RzIGJ5IHNldHRpbmcgdGhlIERNQVQgYW5kL29yDQorICAgICAgIERNQVIgYml0cyBpbiB0aGUgVVNBUlQgQ1IzIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IzIHw9IFVTQVJUX0RNQVJlcTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogRGlzYWJsZSB0aGUgRE1BIHRyYW5zZmVyIGZvciBzZWxlY3RlZCByZXF1ZXN0cyBieSBjbGVhcmluZyB0aGUgRE1BVCBhbmQvb3INCisgICAgICAgRE1BUiBiaXRzIGluIHRoZSBVU0FSVCBDUjMgcmVnaXN0ZXIgKi8NCisgICAgVVNBUlR4LT5DUjMgJj0gKHVpbnQxNl90KX5VU0FSVF9ETUFSZXE7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgdGhlIGFkZHJlc3Mgb2YgdGhlIFVTQVJUIG5vZGUuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIFVTQVJUX0FkZHJlc3M6IEluZGljYXRlcyB0aGUgYWRkcmVzcyBvZiB0aGUgVVNBUlQgbm9kZS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfU2V0QWRkcmVzcyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQ4X3QgVVNBUlRfQWRkcmVzcykNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUREUkVTUyhVU0FSVF9BZGRyZXNzKSk7IA0KKyAgICANCisgIC8qIENsZWFyIHRoZSBVU0FSVCBhZGRyZXNzICovDQorICBVU0FSVHgtPkNSMiAmPSAodWludDE2X3QpfigodWludDE2X3QpVVNBUlRfQ1IyX0FERCk7DQorICAvKiBTZXQgdGhlIFVTQVJUIGFkZHJlc3Mgbm9kZSAqLw0KKyAgVVNBUlR4LT5DUjIgfD0gVVNBUlRfQWRkcmVzczsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgVVNBUlQgV2FrZVVwIG1ldGhvZC4NCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEBwYXJhbSAgVVNBUlRfV2FrZVVwOiBzcGVjaWZpZXMgdGhlIFVTQVJUIHdha2V1cCBtZXRob2QuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVVNBUlRfV2FrZVVwX0lkbGVMaW5lOiBXYWtlVXAgYnkgYW4gaWRsZSBsaW5lIGRldGVjdGlvbg0KKyAgKiAgICAgQGFyZyBVU0FSVF9XYWtlVXBfQWRkcmVzc01hcms6IFdha2VVcCBieSBhbiBhZGRyZXNzIG1hcmsNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfV2FrZVVwQ29uZmlnKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfV2FrZVVwKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9XQUtFVVAoVVNBUlRfV2FrZVVwKSk7DQorICANCisgIFVTQVJUeC0+Q1IxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClVU0FSVF9DUjFfV0FLRSk7DQorICBVU0FSVHgtPkNSMSB8PSBVU0FSVF9XYWtlVXA7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIERldGVybWluZXMgaWYgdGhlIFVTQVJUIGlzIGluIG11dGUgbW9kZSBvciBub3QuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFVTQVJUIG11dGUgbW9kZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBVU0FSVF9SZWNlaXZlcldha2VVcENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOyANCisgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIEVuYWJsZSB0aGUgVVNBUlQgbXV0ZSBtb2RlICBieSBzZXR0aW5nIHRoZSBSV1UgYml0IGluIHRoZSBDUjEgcmVnaXN0ZXIgKi8NCisgICAgVVNBUlR4LT5DUjEgfD0gVVNBUlRfQ1IxX1JXVTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogRGlzYWJsZSB0aGUgVVNBUlQgbXV0ZSBtb2RlIGJ5IGNsZWFyaW5nIHRoZSBSV1UgYml0IGluIHRoZSBDUjEgcmVnaXN0ZXIgKi8NCisgICAgVVNBUlR4LT5DUjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVVTQVJUX0NSMV9SV1UpOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZXRzIHRoZSBVU0FSVCBMSU4gQnJlYWsgZGV0ZWN0aW9uIGxlbmd0aC4NCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEBwYXJhbSAgVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGg6IHNwZWNpZmllcyB0aGUgTElOIGJyZWFrIGRldGVjdGlvbiBsZW5ndGguDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGhfMTBiOiAxMC1iaXQgYnJlYWsgZGV0ZWN0aW9uDQorICAqICAgICBAYXJnIFVTQVJUX0xJTkJyZWFrRGV0ZWN0TGVuZ3RoXzExYjogMTEtYml0IGJyZWFrIGRldGVjdGlvbg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aENvbmZpZyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0xJTkJyZWFrRGV0ZWN0TGVuZ3RoKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9MSU5fQlJFQUtfREVURUNUX0xFTkdUSChVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aCkpOw0KKyAgDQorICBVU0FSVHgtPkNSMiAmPSAodWludDE2X3QpfigodWludDE2X3QpVVNBUlRfQ1IyX0xCREwpOw0KKyAgVVNBUlR4LT5DUjIgfD0gVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGg7ICANCit9DQorDQorLyoqDQorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVVNBUlSScyBMSU4gbW9kZS4NCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVVNBUlQgTElOIG1vZGUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfTElOQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICAvKiBFbmFibGUgdGhlIExJTiBtb2RlIGJ5IHNldHRpbmcgdGhlIExJTkVOIGJpdCBpbiB0aGUgQ1IyIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IyIHw9IFVTQVJUX0NSMl9MSU5FTjsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogRGlzYWJsZSB0aGUgTElOIG1vZGUgYnkgY2xlYXJpbmcgdGhlIExJTkVOIGJpdCBpbiB0aGUgQ1IyIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClVU0FSVF9DUjJfTElORU4pOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBUcmFuc21pdHMgc2luZ2xlIGRhdGEgdGhyb3VnaCB0aGUgVVNBUlR4IHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIERhdGE6IHRoZSBkYXRhIHRvIHRyYW5zbWl0Lg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBVU0FSVF9TZW5kRGF0YShVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IERhdGEpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0RBVEEoRGF0YSkpOyANCisgICAgDQorICAvKiBUcmFuc21pdCBEYXRhICovDQorICBVU0FSVHgtPkRSID0gKERhdGEgJiAodWludDE2X3QpMHgwMUZGKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgUmV0dXJucyB0aGUgbW9zdCByZWNlbnQgcmVjZWl2ZWQgZGF0YSBieSB0aGUgVVNBUlR4IHBlcmlwaGVyYWwuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcmV0dmFsIFRoZSByZWNlaXZlZCBkYXRhLg0KKyAgKi8NCit1aW50MTZfdCBVU0FSVF9SZWNlaXZlRGF0YShVU0FSVF9UeXBlRGVmKiBVU0FSVHgpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOw0KKyAgDQorICAvKiBSZWNlaXZlIERhdGEgKi8NCisgIHJldHVybiAodWludDE2X3QpKFVTQVJUeC0+RFIgJiAodWludDE2X3QpMHgwMUZGKTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgVHJhbnNtaXRzIGJyZWFrIGNoYXJhY3RlcnMuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBVU0FSVF9TZW5kQnJlYWsoVVNBUlRfVHlwZURlZiogVVNBUlR4KQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIA0KKyAgLyogU2VuZCBicmVhayBjaGFyYWN0ZXJzICovDQorICBVU0FSVHgtPkNSMSB8PSBVU0FSVF9DUjFfU0JLOw0KK30NCisNCisvKioNCisgICogQGJyaWVmICBTZXRzIHRoZSBzcGVjaWZpZWQgVVNBUlQgZ3VhcmQgdGltZS4NCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEBwYXJhbSAgVVNBUlRfR3VhcmRUaW1lOiBzcGVjaWZpZXMgdGhlIGd1YXJkIHRpbWUuDQorICAqIEBub3RlIFRoZSBndWFyZCB0aW1lIGJpdHMgYXJlIG5vdCBhdmFpbGFibGUgZm9yIFVBUlQ0IGFuZCBVQVJUNS4gICANCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfU2V0R3VhcmRUaW1lKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDhfdCBVU0FSVF9HdWFyZFRpbWUpDQoreyAgICANCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIA0KKyAgLyogQ2xlYXIgdGhlIFVTQVJUIEd1YXJkIHRpbWUgKi8NCisgIFVTQVJUeC0+R1RQUiAmPSBVU0FSVF9HVFBSX1BTQzsNCisgIC8qIFNldCB0aGUgVVNBUlQgZ3VhcmQgdGltZSAqLw0KKyAgVVNBUlR4LT5HVFBSIHw9ICh1aW50MTZfdCkoKHVpbnQxNl90KVVTQVJUX0d1YXJkVGltZSA8PCAweDA4KTsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgU2V0cyB0aGUgc3lzdGVtIGNsb2NrIHByZXNjYWxlci4NCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEBwYXJhbSAgVVNBUlRfUHJlc2NhbGVyOiBzcGVjaWZpZXMgdGhlIHByZXNjYWxlciBjbG9jay4gIA0KKyAgKiBAbm90ZSAgIFRoZSBmdW5jdGlvbiBpcyB1c2VkIGZvciBJckRBIG1vZGUgd2l0aCBVQVJUNCBhbmQgVUFSVDUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFVTQVJUX1NldFByZXNjYWxlcihVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQ4X3QgVVNBUlRfUHJlc2NhbGVyKQ0KK3sgDQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICANCisgIC8qIENsZWFyIHRoZSBVU0FSVCBwcmVzY2FsZXIgKi8NCisgIFVTQVJUeC0+R1RQUiAmPSBVU0FSVF9HVFBSX0dUOw0KKyAgLyogU2V0IHRoZSBVU0FSVCBwcmVzY2FsZXIgKi8NCisgIFVTQVJUeC0+R1RQUiB8PSBVU0FSVF9QcmVzY2FsZXI7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFVTQVJUknMgU21hcnQgQ2FyZCBtb2RlLg0KKyAgKiBAcGFyYW0gIFVTQVJUeDogU2VsZWN0IHRoZSBVU0FSVCBwZXJpcGhlcmFsLiANCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgIFVTQVJUMSwgVVNBUlQyIG9yIFVTQVJUMy4NCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBTbWFydCBDYXJkIG1vZGUuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4gICAgIA0KKyAgKiBAbm90ZSBUaGUgU21hcnQgQ2FyZCBtb2RlIGlzIG5vdCBhdmFpbGFibGUgZm9yIFVBUlQ0IGFuZCBVQVJUNS4gDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFVTQVJUX1NtYXJ0Q2FyZENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIEVuYWJsZSB0aGUgU0MgbW9kZSBieSBzZXR0aW5nIHRoZSBTQ0VOIGJpdCBpbiB0aGUgQ1IzIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IzIHw9IFVTQVJUX0NSM19TQ0VOOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBEaXNhYmxlIHRoZSBTQyBtb2RlIGJ5IGNsZWFyaW5nIHRoZSBTQ0VOIGJpdCBpbiB0aGUgQ1IzIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IzICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClVU0FSVF9DUjNfU0NFTik7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgTkFDSyB0cmFuc21pc3Npb24uDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIE5BQ0sgdHJhbnNtaXNzaW9uLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuICANCisgICogQG5vdGUgVGhlIFNtYXJ0IENhcmQgbW9kZSBpcyBub3QgYXZhaWxhYmxlIGZvciBVQVJUNCBhbmQgVUFSVDUuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFVTQVJUX1NtYXJ0Q2FyZE5BQ0tDbWQoVVNBUlRfVHlwZURlZiogVVNBUlR4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpDQorew0KKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8NCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOyANCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogRW5hYmxlIHRoZSBOQUNLIHRyYW5zbWlzc2lvbiBieSBzZXR0aW5nIHRoZSBOQUNLIGJpdCBpbiB0aGUgQ1IzIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IzIHw9IFVTQVJUX0NSM19OQUNLOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBEaXNhYmxlIHRoZSBOQUNLIHRyYW5zbWlzc2lvbiBieSBjbGVhcmluZyB0aGUgTkFDSyBiaXQgaW4gdGhlIENSMyByZWdpc3RlciAqLw0KKyAgICBVU0FSVHgtPkNSMyAmPSAodWludDE2X3QpfigodWludDE2X3QpVVNBUlRfQ1IzX05BQ0spOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBVU0FSVJJzIEhhbGYgRHVwbGV4IGNvbW11bmljYXRpb24uDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFVTQVJUIENvbW11bmljYXRpb24uDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfSGFsZkR1cGxleENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogRW5hYmxlIHRoZSBIYWxmLUR1cGxleCBtb2RlIGJ5IHNldHRpbmcgdGhlIEhEU0VMIGJpdCBpbiB0aGUgQ1IzIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IzIHw9IFVTQVJUX0NSM19IRFNFTDsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogRGlzYWJsZSB0aGUgSGFsZi1EdXBsZXggbW9kZSBieSBjbGVhcmluZyB0aGUgSERTRUwgYml0IGluIHRoZSBDUjMgcmVnaXN0ZXIgKi8NCisgICAgVVNBUlR4LT5DUjMgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVVTQVJUX0NSM19IRFNFTCk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFVTQVJUJ3MgOHggb3ZlcnNhbXBsaW5nIG1vZGUuDQorICAqIEBwYXJhbSBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgb3IgdGhlIFVBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMuDQorICAqIEBwYXJhbSBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBVU0FSVCA4eCBvdmVyc2FtcGxpbmcgbW9kZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKg0KKyAgKiBAbm90ZQ0KKyAgKiAgIFRoaXMgZnVuY3Rpb24gaGFzIHRvIGJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBVU0FSVF9Jbml0KCkNCisgICogICBmdW5jdGlvbiBpbiBvcmRlciB0byBoYXZlIGNvcnJlY3QgYmF1ZHJhdGUgRGl2aWRlciB2YWx1ZS4NCisgICogQHJldHZhbCA6IE5vbmUNCisgICovDQordm9pZCBVU0FSVF9PdmVyU2FtcGxpbmc4Q21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICANCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQ0KKyAgew0KKyAgICAvKiBFbmFibGUgdGhlIDh4IE92ZXJzYW1wbGluZyBtb2RlIGJ5IHNldHRpbmcgdGhlIE9WRVI4IGJpdCBpbiB0aGUgQ1IxIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IxIHw9IFVTQVJUX0NSMV9PVkVSODsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogRGlzYWJsZSB0aGUgOHggT3ZlcnNhbXBsaW5nIG1vZGUgYnkgY2xlYXJpbmcgdGhlIE9WRVI4IGJpdCBpbiB0aGUgQ1IxIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClVU0FSVF9DUjFfT1ZFUjgpOw0KKyAgfQ0KK30gIA0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFVTQVJUJ3Mgb25lIGJpdCBzYW1wbGluZyBtZXRob2RlLg0KKyAgKiBAcGFyYW0gVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIsIFVTQVJUMy4NCisgICogQHBhcmFtIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFVTQVJUIG9uZSBiaXQgc2FtcGxpbmcgbWV0aG9kZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIDogTm9uZQ0KKyAgKi8NCit2b2lkIFVTQVJUX09uZUJpdE1ldGhvZENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOw0KKyAgDQorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkNCisgIHsNCisgICAgLyogRW5hYmxlIHRoZSBvbmUgYml0IG1ldGhvZCBieSBzZXR0aW5nIHRoZSBPTkVCSVRFIGJpdCBpbiB0aGUgQ1IzIHJlZ2lzdGVyICovDQorICAgIFVTQVJUeC0+Q1IzIHw9IFVTQVJUX0NSM19PTkVCSVQ7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIERpc2FibGUgdHRoZSBvbmUgYml0IG1ldGhvZCBieSBjbGVhcmluZyB0aGUgT05FQklURSBiaXQgaW4gdGhlIENSMyByZWdpc3RlciAqLw0KKyAgICBVU0FSVHgtPkNSMyAmPSAodWludDE2X3QpfigodWludDE2X3QpVVNBUlRfQ1IzX09ORUJJVCk7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFVTQVJUknMgSXJEQSBpbnRlcmZhY2UuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIFVTQVJUX0lyREFNb2RlOiBzcGVjaWZpZXMgdGhlIElyREEgbW9kZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBVU0FSVF9JckRBTW9kZV9Mb3dQb3dlcg0KKyAgKiAgICAgQGFyZyBVU0FSVF9JckRBTW9kZV9Ob3JtYWwNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfSXJEQUNvbmZpZyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0lyREFNb2RlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9JUkRBX01PREUoVVNBUlRfSXJEQU1vZGUpKTsNCisgICAgDQorICBVU0FSVHgtPkNSMyAmPSAodWludDE2X3QpfigodWludDE2X3QpVVNBUlRfQ1IzX0lSTFApOw0KKyAgVVNBUlR4LT5DUjMgfD0gVVNBUlRfSXJEQU1vZGU7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFVTQVJUknMgSXJEQSBpbnRlcmZhY2UuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIElyREEgbW9kZS4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBVU0FSVF9JckRBQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQ0KK3sNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7DQorICAgIA0KKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpDQorICB7DQorICAgIC8qIEVuYWJsZSB0aGUgSXJEQSBtb2RlIGJ5IHNldHRpbmcgdGhlIElSRU4gYml0IGluIHRoZSBDUjMgcmVnaXN0ZXIgKi8NCisgICAgVVNBUlR4LT5DUjMgfD0gVVNBUlRfQ1IzX0lSRU47DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIERpc2FibGUgdGhlIElyREEgbW9kZSBieSBjbGVhcmluZyB0aGUgSVJFTiBiaXQgaW4gdGhlIENSMyByZWdpc3RlciAqLw0KKyAgICBVU0FSVHgtPkNSMyAmPSAodWludDE2X3QpfigodWludDE2X3QpVVNBUlRfQ1IzX0lSRU4pOw0KKyAgfQ0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVTQVJUIGZsYWcgaXMgc2V0IG9yIG5vdC4NCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgcGVyaXBoZXJhbC4gDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICBVU0FSVDEsIFVTQVJUMiBvciBVU0FSVDMuDQorICAqIEBwYXJhbSAgVVNBUlRfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNoZWNrLg0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfQ1RTOiAgQ1RTIENoYW5nZSBmbGFnDQorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfTEJEOiAgTElOIEJyZWFrIGRldGVjdGlvbiBmbGFnDQorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfVFhFOiAgVHJhbnNtaXQgZGF0YSByZWdpc3RlciBlbXB0eSBmbGFnDQorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfVEM6ICAgVHJhbnNtaXNzaW9uIENvbXBsZXRlIGZsYWcNCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19SWE5FOiBSZWNlaXZlIGRhdGEgcmVnaXN0ZXIgbm90IGVtcHR5IGZsYWcNCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19JRExFOiBJZGxlIExpbmUgZGV0ZWN0aW9uIGZsYWcNCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19PUkU6ICBPdmVyUnVuIEVycm9yIGZsYWcNCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19ORTogICBOb2lzZSBFcnJvciBmbGFnDQorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfRkU6ICAgRnJhbWluZyBFcnJvciBmbGFnDQorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfUEU6ICAgUGFyaXR5IEVycm9yIGZsYWcNCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIFVTQVJUX0ZMQUcgKFNFVCBvciBSRVNFVCkuDQorICAqLw0KK0ZsYWdTdGF0dXMgVVNBUlRfR2V0RmxhZ1N0YXR1cyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0ZMQUcpDQorew0KKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9GTEFHKFVTQVJUX0ZMQUcpKTsNCisgIA0KKyAgaWYgKChVU0FSVHgtPlNSICYgVVNBUlRfRkxBRykgIT0gKHVpbnQxNl90KVJFU0VUKQ0KKyAgew0KKyAgICBiaXRzdGF0dXMgPSBTRVQ7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIGJpdHN0YXR1cyA9IFJFU0VUOw0KKyAgfQ0KKyAgcmV0dXJuIGJpdHN0YXR1czsNCit9DQorDQorLyoqDQorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBVU0FSVHgncyBwZW5kaW5nIGZsYWdzLg0KKyAgKiBAcGFyYW0gIFVTQVJUeDogU2VsZWN0IHRoZSBVU0FSVCBwZXJpcGhlcmFsLiANCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgIFVTQVJUMSwgVVNBUlQyIG9yIFVTQVJUMy4NCisgICogQHBhcmFtICBVU0FSVF9GTEFHOiBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2xlYXIuDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19DVFM6ICBDVFMgQ2hhbmdlIGZsYWcuDQorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfTEJEOiAgTElOIEJyZWFrIGRldGVjdGlvbiBmbGFnLg0KKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX1RDOiAgIFRyYW5zbWlzc2lvbiBDb21wbGV0ZSBmbGFnLg0KKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX1JYTkU6IFJlY2VpdmUgZGF0YSByZWdpc3RlciBub3QgZW1wdHkgZmxhZy4NCisgICogICANCisgICogQG5vdGUNCisgICogICAtIFBFIChQYXJpdHkgZXJyb3IpLCBGRSAoRnJhbWluZyBlcnJvciksIE5FIChOb2lzZSBlcnJvciksIE9SRSAoT3ZlclJ1biANCisgICogICAgIGVycm9yKSBhbmQgSURMRSAoSWRsZSBsaW5lIGRldGVjdGVkKSBmbGFncyBhcmUgY2xlYXJlZCBieSBzb2Z0d2FyZSANCisgICogICAgIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIHRvIFVTQVJUX1NSIHJlZ2lzdGVyIChVU0FSVF9HZXRGbGFnU3RhdHVzKCkpIA0KKyAgKiAgICAgZm9sbG93ZWQgYnkgYSByZWFkIG9wZXJhdGlvbiB0byBVU0FSVF9EUiByZWdpc3RlciAoVVNBUlRfUmVjZWl2ZURhdGEoKSkuDQorICAqICAgLSBSWE5FIGZsYWcgY2FuIGJlIGFsc28gY2xlYXJlZCBieSBhIHJlYWQgdG8gdGhlIFVTQVJUX0RSIHJlZ2lzdGVyIA0KKyAgKiAgICAgKFVTQVJUX1JlY2VpdmVEYXRhKCkpLg0KKyAgKiAgIC0gVEMgZmxhZyBjYW4gYmUgYWxzbyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIHRvIA0KKyAgKiAgICAgVVNBUlRfU1IgcmVnaXN0ZXIgKFVTQVJUX0dldEZsYWdTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSB3cml0ZSBvcGVyYXRpb24NCisgICogICAgIHRvIFVTQVJUX0RSIHJlZ2lzdGVyIChVU0FSVF9TZW5kRGF0YSgpKS4NCisgICogICAtIFRYRSBmbGFnIGlzIGNsZWFyZWQgb25seSBieSBhIHdyaXRlIHRvIHRoZSBVU0FSVF9EUiByZWdpc3RlciANCisgICogICAgIChVU0FSVF9TZW5kRGF0YSgpKS4NCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgVVNBUlRfQ2xlYXJGbGFnKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfRkxBRykNCit7DQorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLw0KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7DQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQ0xFQVJfRkxBRyhVU0FSVF9GTEFHKSk7DQorICAgICANCisgIFVTQVJUeC0+U1IgPSAodWludDE2X3QpflVTQVJUX0ZMQUc7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVNBUlQgaW50ZXJydXB0IGhhcyBvY2N1cnJlZCBvciBub3QuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIFVTQVJUX0lUOiBzcGVjaWZpZXMgdGhlIFVTQVJUIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suDQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoNCisgICogICAgIEBhcmcgVVNBUlRfSVRfQ1RTOiAgQ1RTIGNoYW5nZSBpbnRlcnJ1cHQNCisgICogICAgIEBhcmcgVVNBUlRfSVRfTEJEOiAgTElOIEJyZWFrIGRldGVjdGlvbiBpbnRlcnJ1cHQNCisgICogICAgIEBhcmcgVVNBUlRfSVRfVFhFOiAgVGFuc21pdCBEYXRhIFJlZ2lzdGVyIGVtcHR5IGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9UQzogICBUcmFuc21pc3Npb24gY29tcGxldGUgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFVTQVJUX0lUX1JYTkU6IFJlY2VpdmUgRGF0YSByZWdpc3RlciBub3QgZW1wdHkgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFVTQVJUX0lUX0lETEU6IElkbGUgbGluZSBkZXRlY3Rpb24gaW50ZXJydXB0DQorICAqICAgICBAYXJnIFVTQVJUX0lUX09SRTogIE92ZXJSdW4gRXJyb3IgaW50ZXJydXB0DQorICAqICAgICBAYXJnIFVTQVJUX0lUX05FOiAgIE5vaXNlIEVycm9yIGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9GRTogICBGcmFtaW5nIEVycm9yIGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9QRTogICBQYXJpdHkgRXJyb3IgaW50ZXJydXB0DQorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBVU0FSVF9JVCAoU0VUIG9yIFJFU0VUKS4NCisgICovDQorSVRTdGF0dXMgVVNBUlRfR2V0SVRTdGF0dXMoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9JVCkNCit7DQorICB1aW50MzJfdCBiaXRwb3MgPSAweDAwLCBpdG1hc2sgPSAweDAwLCB1c2FydHJlZyA9IDB4MDA7DQorICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9HRVRfSVQoVVNBUlRfSVQpKTsgDQorICANCisgIC8qIEdldCB0aGUgVVNBUlQgcmVnaXN0ZXIgaW5kZXggKi8NCisgIHVzYXJ0cmVnID0gKCgodWludDhfdClVU0FSVF9JVCkgPj4gMHgwNSk7DQorICAvKiBHZXQgdGhlIGludGVycnVwdCBwb3NpdGlvbiAqLw0KKyAgaXRtYXNrID0gVVNBUlRfSVQgJiBJVF9NQVNLOw0KKyAgaXRtYXNrID0gKHVpbnQzMl90KTB4MDEgPDwgaXRtYXNrOw0KKyAgDQorICBpZiAodXNhcnRyZWcgPT0gMHgwMSkgLyogVGhlIElUICBpcyBpbiBDUjEgcmVnaXN0ZXIgKi8NCisgIHsNCisgICAgaXRtYXNrICY9IFVTQVJUeC0+Q1IxOw0KKyAgfQ0KKyAgZWxzZSBpZiAodXNhcnRyZWcgPT0gMHgwMikgLyogVGhlIElUICBpcyBpbiBDUjIgcmVnaXN0ZXIgKi8NCisgIHsNCisgICAgaXRtYXNrICY9IFVTQVJUeC0+Q1IyOw0KKyAgfQ0KKyAgZWxzZSAvKiBUaGUgSVQgIGlzIGluIENSMyByZWdpc3RlciAqLw0KKyAgew0KKyAgICBpdG1hc2sgJj0gVVNBUlR4LT5DUjM7DQorICB9DQorICANCisgIGJpdHBvcyA9IFVTQVJUX0lUID4+IDB4MDg7DQorICBiaXRwb3MgPSAodWludDMyX3QpMHgwMSA8PCBiaXRwb3M7DQorICBiaXRwb3MgJj0gVVNBUlR4LT5TUjsNCisgIGlmICgoaXRtYXNrICE9ICh1aW50MTZfdClSRVNFVCkmJihiaXRwb3MgIT0gKHVpbnQxNl90KVJFU0VUKSkNCisgIHsNCisgICAgYml0c3RhdHVzID0gU0VUOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsNCisgIH0NCisgIA0KKyAgcmV0dXJuIGJpdHN0YXR1czsgIA0KK30NCisNCisvKioNCisgICogQGJyaWVmICBDbGVhcnMgdGhlIFVTQVJUeJJzIGludGVycnVwdCBwZW5kaW5nIGJpdHMuDQorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuIA0KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQorICAqICAgVVNBUlQxLCBVU0FSVDIgb3IgVVNBUlQzLg0KKyAgKiBAcGFyYW0gIFVTQVJUX0lUOiBzcGVjaWZpZXMgdGhlIGludGVycnVwdCBwZW5kaW5nIGJpdCB0byBjbGVhci4NCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9DVFM6ICBDVFMgY2hhbmdlIGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9MQkQ6ICBMSU4gQnJlYWsgZGV0ZWN0aW9uIGludGVycnVwdA0KKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9UQzogICBUcmFuc21pc3Npb24gY29tcGxldGUgaW50ZXJydXB0LiANCisgICogICAgIEBhcmcgVVNBUlRfSVRfUlhORTogUmVjZWl2ZSBEYXRhIHJlZ2lzdGVyIG5vdCBlbXB0eSBpbnRlcnJ1cHQuDQorICAqICAgDQorICAqIEBub3RlDQorICAqICAgLSBQRSAoUGFyaXR5IGVycm9yKSwgRkUgKEZyYW1pbmcgZXJyb3IpLCBORSAoTm9pc2UgZXJyb3IpLCBPUkUgKE92ZXJSdW4gDQorICAqICAgICBlcnJvcikgYW5kIElETEUgKElkbGUgbGluZSBkZXRlY3RlZCkgcGVuZGluZyBiaXRzIGFyZSBjbGVhcmVkIGJ5IA0KKyAgKiAgICAgc29mdHdhcmUgc2VxdWVuY2U6IGEgcmVhZCBvcGVyYXRpb24gdG8gVVNBUlRfU1IgcmVnaXN0ZXIgDQorICAqICAgICAoVVNBUlRfR2V0SVRTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSByZWFkIG9wZXJhdGlvbiB0byBVU0FSVF9EUiByZWdpc3RlciANCisgICogICAgIChVU0FSVF9SZWNlaXZlRGF0YSgpKS4NCisgICogICAtIFJYTkUgcGVuZGluZyBiaXQgY2FuIGJlIGFsc28gY2xlYXJlZCBieSBhIHJlYWQgdG8gdGhlIFVTQVJUX0RSIHJlZ2lzdGVyIA0KKyAgKiAgICAgKFVTQVJUX1JlY2VpdmVEYXRhKCkpLg0KKyAgKiAgIC0gVEMgcGVuZGluZyBiaXQgY2FuIGJlIGFsc28gY2xlYXJlZCBieSBzb2Z0d2FyZSBzZXF1ZW5jZTogYSByZWFkIA0KKyAgKiAgICAgb3BlcmF0aW9uIHRvIFVTQVJUX1NSIHJlZ2lzdGVyIChVU0FSVF9HZXRJVFN0YXR1cygpKSBmb2xsb3dlZCBieSBhIHdyaXRlIA0KKyAgKiAgICAgb3BlcmF0aW9uIHRvIFVTQVJUX0RSIHJlZ2lzdGVyIChVU0FSVF9TZW5kRGF0YSgpKS4NCisgICogICAtIFRYRSBwZW5kaW5nIGJpdCBpcyBjbGVhcmVkIG9ubHkgYnkgYSB3cml0ZSB0byB0aGUgVVNBUlRfRFIgcmVnaXN0ZXIgDQorICAqICAgICAoVVNBUlRfU2VuZERhdGEoKSkuDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFVTQVJUX0NsZWFySVRQZW5kaW5nQml0KFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfSVQpDQorew0KKyAgdWludDE2X3QgYml0cG9zID0gMHgwMCwgaXRtYXNrID0gMHgwMDsNCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovDQorICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsNCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9DTEVBUl9JVChVU0FSVF9JVCkpOyANCisgIA0KKyAgYml0cG9zID0gVVNBUlRfSVQgPj4gMHgwODsNCisgIGl0bWFzayA9ICgodWludDE2X3QpMHgwMSA8PCAodWludDE2X3QpYml0cG9zKTsNCisgIFVTQVJUeC0+U1IgPSAodWludDE2X3Qpfml0bWFzazsNCit9DQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9zdGFydHVwX3N0bTMybDF4eF9tZC5zIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvc3RhcnR1cF9zdG0zMmwxeHhfbWQucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWRlMDViCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvc3RhcnR1cF9zdG0zMmwxeHhfbWQucwpAQCAtMCwwICsxLDQ1OSBAQAorOy8qKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqKioqKioqKioqKioqKioqDQorOyogRmlsZSBOYW1lICAgICAgICAgIDogc3RhcnR1cF9zdG0zMmwxNXhfbHAucw0KKzsqIEF1dGhvciAgICAgICAgICAgICA6IE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorOyogVmVyc2lvbiAgICAgICAgICAgIDogVjEuMC4wUkMxDQorOyogRGF0ZSAgICAgICAgICAgICAgIDogMDcvMDIvMjAxMA0KKzsqIERlc2NyaXB0aW9uICAgICAgICA6IFNUTTMyTDE1eCBMb3cgUG93ZXIgRGV2aWNlcyB2ZWN0b3IgdGFibGUgZm9yIEVXQVJNNS54IHRvb2xjaGFpbi4NCis7KiAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1vZHVsZSBwZXJmb3JtczoNCis7KiAgICAgICAgICAgICAgICAgICAgICAtIFNldCB0aGUgaW5pdGlhbCBTUA0KKzsqICAgICAgICAgICAgICAgICAgICAgIC0gU2V0IHRoZSBpbml0aWFsIFBDID09IF9faWFyX3Byb2dyYW1fc3RhcnQsDQorOyogICAgICAgICAgICAgICAgICAgICAgLSBTZXQgdGhlIHZlY3RvciB0YWJsZSBlbnRyaWVzIHdpdGggdGhlIGV4Y2VwdGlvbnMgSVNSDQorOyogICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLg0KKzsqICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIFJlc2V0IHRoZSBDb3J0ZXgtTTMgcHJvY2Vzc29yIGlzIGluIFRocmVhZCBtb2RlLA0KKzsqICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5IGlzIFByaXZpbGVnZWQsIGFuZCB0aGUgU3RhY2sgaXMgc2V0IHRvIE1haW4uDQorOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorOyogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorOyogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUgVElNRS4NCis7KiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwNCis7KiBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORyBGUk9NIFRIRQ0KKzsqIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUgQ09ESU5HDQorOyogSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorOw0KKzsNCis7IFRoZSBtb2R1bGVzIGluIHRoaXMgZmlsZSBhcmUgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcmllcywgYW5kIG1heSBiZSByZXBsYWNlZA0KKzsgYnkgYW55IHVzZXItZGVmaW5lZCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBQVUJMSUMgc3ltYm9sIF9wcm9ncmFtX3N0YXJ0IG9yDQorOyBhIHVzZXIgZGVmaW5lZCBzdGFydCBzeW1ib2wuDQorOyBUbyBvdmVycmlkZSB0aGUgY3N0YXJ0dXAgZGVmaW5lZCBpbiB0aGUgbGlicmFyeSwgc2ltcGx5IGFkZCB5b3VyIG1vZGlmaWVkDQorOyB2ZXJzaW9uIHRvIHRoZSB3b3JrYmVuY2ggcHJvamVjdC4NCis7DQorOyBUaGUgdmVjdG9yIHRhYmxlIGlzIG5vcm1hbGx5IGxvY2F0ZWQgYXQgYWRkcmVzcyAwLg0KKzsgV2hlbiBkZWJ1Z2dpbmcgaW4gUkFNLCBpdCBjYW4gYmUgbG9jYXRlZCBpbiBSQU0sIGFsaWduZWQgdG8gYXQgbGVhc3QgMl42Lg0KKzsgVGhlIG5hbWUgIl9fdmVjdG9yX3RhYmxlIiBoYXMgc3BlY2lhbCBtZWFuaW5nIGZvciBDLVNQWToNCis7IGl0IGlzIHdoZXJlIHRoZSBTUCBzdGFydCB2YWx1ZSBpcyBmb3VuZCwgYW5kIHRoZSBOVklDIHZlY3Rvcg0KKzsgdGFibGUgcmVnaXN0ZXIgKFZUT1IpIGlzIGluaXRpYWxpemVkIHRvIHRoaXMgYWRkcmVzcyBpZiAhPSAwLg0KKzsNCis7IENvcnRleC1NIHZlcnNpb24NCis7DQorDQorICAgICAgICBNT0RVTEUgID9jc3RhcnR1cA0KKw0KKyAgICAgICAgOzsgRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBzZWN0aW9ucy4NCisgICAgICAgIFNFQ1RJT04gQ1NUQUNLOkRBVEE6Tk9ST09UKDMpDQorDQorICAgICAgICBTRUNUSU9OIC5pbnR2ZWM6Q09ERTpOT1JPT1QoMikNCisNCisgICAgICAgIEVYVEVSTiAgX19pYXJfcHJvZ3JhbV9zdGFydA0KKyAgICAgICAgRVhURVJOICBTeXN0ZW1Jbml0DQorICAgICAgICBFWFRFUk4gdlBvcnRTVkNIYW5kbGVyDQorICAgICAgICBFWFRFUk4geFBvcnRQZW5kU1ZIYW5kbGVyDQorICAgICAgICBFWFRFUk4geFBvcnRTeXNUaWNrSGFuZGxlcgkJDQorCQkNCisgICAgICAgIFBVQkxJQyAgX192ZWN0b3JfdGFibGUNCisNCisgICAgICAgIERBVEENCitfX3ZlY3Rvcl90YWJsZQ0KKyAgICAgICAgRENEICAgICBzZmUoQ1NUQUNLKQ0KKyAgICAgICAgRENEICAgICBSZXNldF9IYW5kbGVyICAgICAgICAgICAgIDsgUmVzZXQgSGFuZGxlcg0KKw0KKyAgICAgICAgRENEICAgICBOTUlfSGFuZGxlciAgICAgICAgICAgICAgIDsgTk1JIEhhbmRsZXINCisgICAgICAgIERDRCAgICAgSGFyZEZhdWx0X0hhbmRsZXIgICAgICAgICA7IEhhcmQgRmF1bHQgSGFuZGxlcg0KKyAgICAgICAgRENEICAgICBNZW1NYW5hZ2VfSGFuZGxlciAgICAgICAgIDsgTVBVIEZhdWx0IEhhbmRsZXINCisgICAgICAgIERDRCAgICAgQnVzRmF1bHRfSGFuZGxlciAgICAgICAgICA7IEJ1cyBGYXVsdCBIYW5kbGVyDQorICAgICAgICBEQ0QgICAgIFVzYWdlRmF1bHRfSGFuZGxlciAgICAgICAgOyBVc2FnZSBGYXVsdCBIYW5kbGVyDQorICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgIERDRCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICA7IFJlc2VydmVkDQorICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgOyBSZXNlcnZlZA0KKyAgICAgICAgRENEICAgICB2UG9ydFNWQ0hhbmRsZXIgICAgICAgICAgIDsgU1ZDYWxsIEhhbmRsZXINCisgICAgICAgIERDRCAgICAgRGVidWdNb25fSGFuZGxlciAgICAgICAgICA7IERlYnVnIE1vbml0b3IgSGFuZGxlcg0KKyAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQNCisgICAgICAgIERDRCAgICAgeFBvcnRQZW5kU1ZIYW5kbGVyICAgICAgICA7IFBlbmRTViBIYW5kbGVyDQorICAgICAgICBEQ0QgICAgIHhQb3J0U3lzVGlja0hhbmRsZXIgICAgICAgOyBTeXNUaWNrIEhhbmRsZXINCisNCisgICAgICAgICA7IEV4dGVybmFsIEludGVycnVwdHMNCisgICAgICAgIERDRCAgICAgV1dER19JUlFIYW5kbGVyICAgICAgICAgICA7IFdpbmRvdyBXYXRjaGRvZw0KKyAgICAgICAgRENEICAgICBQVkRfSVJRSGFuZGxlciAgICAgICAgICAgIDsgUFZEIHRocm91Z2ggRVhUSSBMaW5lIGRldGVjdA0KKyAgICAgICAgRENEICAgICBUQU1QRVJfU1RBTVBfSVJRSGFuZGxlciAgIDsgVGFtcGVyIGFuZCBUaW1lIFN0YW1wDQorICAgICAgICBEQ0QgICAgIFJUQ19XS1VQX0lSUUhhbmRsZXIgICAgICAgOyBSVEMgV2FrZXVwDQorICAgICAgICBEQ0QgICAgIEZMQVNIX0lSUUhhbmRsZXIgICAgICAgICAgOyBGTEFTSA0KKyAgICAgICAgRENEICAgICBSQ0NfSVJRSGFuZGxlciAgICAgICAgICAgIDsgUkNDDQorICAgICAgICBEQ0QgICAgIEVYVEkwX0lSUUhhbmRsZXIgICAgICAgICAgOyBFWFRJIExpbmUgMA0KKyAgICAgICAgRENEICAgICBFWFRJMV9JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDENCisgICAgICAgIERDRCAgICAgRVhUSTJfSVJRSGFuZGxlciAgICAgICAgICA7IEVYVEkgTGluZSAyDQorICAgICAgICBEQ0QgICAgIEVYVEkzX0lSUUhhbmRsZXIgICAgICAgICAgOyBFWFRJIExpbmUgMw0KKyAgICAgICAgRENEICAgICBFWFRJNF9JUlFIYW5kbGVyICAgICAgICAgIDsgRVhUSSBMaW5lIDQNCisgICAgICAgIERDRCAgICAgRE1BMV9DaGFubmVsMV9JUlFIYW5kbGVyICA7IERNQTEgQ2hhbm5lbCAxDQorICAgICAgICBEQ0QgICAgIERNQTFfQ2hhbm5lbDJfSVJRSGFuZGxlciAgOyBETUExIENoYW5uZWwgMg0KKyAgICAgICAgRENEICAgICBETUExX0NoYW5uZWwzX0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDMNCisgICAgICAgIERDRCAgICAgRE1BMV9DaGFubmVsNF9JUlFIYW5kbGVyICA7IERNQTEgQ2hhbm5lbCA0DQorICAgICAgICBEQ0QgICAgIERNQTFfQ2hhbm5lbDVfSVJRSGFuZGxlciAgOyBETUExIENoYW5uZWwgNQ0KKyAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw2X0lSUUhhbmRsZXIgIDsgRE1BMSBDaGFubmVsIDYNCisgICAgICAgIERDRCAgICAgRE1BMV9DaGFubmVsN19JUlFIYW5kbGVyICA7IERNQTEgQ2hhbm5lbCA3DQorICAgICAgICBEQ0QgICAgIEFEQzFfSVJRSGFuZGxlciAgICAgICAgICAgOyBBREMxDQorICAgICAgICBEQ0QgICAgIFVTQl9IUF9JUlFIYW5kbGVyICAgICAgICAgOyBVU0IgSGlnaCBQcmlvcml0eQ0KKyAgICAgICAgRENEICAgICBVU0JfTFBfSVJRSGFuZGxlciAgICAgICAgIDsgVVNCIExvdyAgUHJpb3JpdHkNCisgICAgICAgIERDRCAgICAgREFDX0lSUUhhbmRsZXIgICAgICAgICAgICA7IERBQw0KKyAgICAgICAgRENEICAgICBDT01QX0lSUUhhbmRsZXIgICAgICAgICAgIDsgQ09NUCB0aHJvdWdoIEVYVEkgTGluZQ0KKyAgICAgICAgRENEICAgICBFWFRJOV81X0lSUUhhbmRsZXIgICAgICAgIDsgRVhUSSBMaW5lIDkuLjUNCisgICAgICAgIERDRCAgICAgTENEX0lSUUhhbmRsZXIgICAgICAgICAgICA7IExDRA0KKyAgICAgICAgRENEICAgICBUSU05X0lSUUhhbmRsZXIgICAgICAgICAgIDsgVElNOQ0KKyAgICAgICAgRENEICAgICBUSU0xMF9JUlFIYW5kbGVyICAgICAgICAgIDsgVElNMTANCisgICAgICAgIERDRCAgICAgVElNMTFfSVJRSGFuZGxlciAgICAgICAgICA7IFRJTTExDQorICAgICAgICBEQ0QgICAgIFRJTTJfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU0yDQorICAgICAgICBEQ0QgICAgIFRJTTNfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU0zDQorICAgICAgICBEQ0QgICAgIFRJTTRfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU00DQorICAgICAgICBEQ0QgICAgIEkyQzFfRVZfSVJRSGFuZGxlciAgICAgICAgOyBJMkMxIEV2ZW50DQorICAgICAgICBEQ0QgICAgIEkyQzFfRVJfSVJRSGFuZGxlciAgICAgICAgOyBJMkMxIEVycm9yDQorICAgICAgICBEQ0QgICAgIEkyQzJfRVZfSVJRSGFuZGxlciAgICAgICAgOyBJMkMyIEV2ZW50DQorICAgICAgICBEQ0QgICAgIEkyQzJfRVJfSVJRSGFuZGxlciAgICAgICAgOyBJMkMyIEVycm9yDQorICAgICAgICBEQ0QgICAgIFNQSTFfSVJRSGFuZGxlciAgICAgICAgICAgOyBTUEkxDQorICAgICAgICBEQ0QgICAgIFNQSTJfSVJRSGFuZGxlciAgICAgICAgICAgOyBTUEkyDQorICAgICAgICBEQ0QgICAgIFVTQVJUMV9JUlFIYW5kbGVyICAgICAgICAgOyBVU0FSVDENCisgICAgICAgIERDRCAgICAgVVNBUlQyX0lSUUhhbmRsZXIgICAgICAgICA7IFVTQVJUMg0KKyAgICAgICAgRENEICAgICBVU0FSVDNfSVJRSGFuZGxlciAgICAgICAgIDsgVVNBUlQzDQorICAgICAgICBEQ0QgICAgIEVYVEkxNV8xMF9JUlFIYW5kbGVyICAgICAgOyBFWFRJIExpbmUgMTUuLjEwDQorICAgICAgICBEQ0QgICAgIFJUQ19BbGFybV9JUlFIYW5kbGVyICAgICAgOyBSVEMgQWxhcm0gdGhyb3VnaCBFWFRJIExpbmUNCisgICAgICAgIERDRCAgICAgVVNCX0ZTX1dLVVBfSVJRSGFuZGxlciAgICA7IFVTQiBGUyBXYWtldXAgZnJvbSBzdXNwZW5kDQorICAgICAgICBEQ0QgICAgIFRJTTZfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU02DQorICAgICAgICBEQ0QgICAgIFRJTTdfSVJRSGFuZGxlciAgICAgICAgICAgOyBUSU03DQorDQorOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KKzs7DQorOzsgRGVmYXVsdCBpbnRlcnJ1cHQgaGFuZGxlcnMuDQorOzsNCisgICAgICAgIFRIVU1CDQorDQorICAgICAgICBQVUJXRUFLIFJlc2V0X0hhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDIpDQorUmVzZXRfSGFuZGxlcg0KKyAgICAgICAgTERSICAgICBSMCwgPVN5c3RlbUluaXQNCisgICAgICAgIEJMWCAgICAgUjANCisgICAgICAgIExEUiAgICAgUjAsID1fX2lhcl9wcm9ncmFtX3N0YXJ0DQorICAgICAgICBCWCAgICAgIFIwDQorDQorICAgICAgICBQVUJXRUFLIE5NSV9IYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK05NSV9IYW5kbGVyDQorICAgICAgICBCIE5NSV9IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEhhcmRGYXVsdF9IYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0hhcmRGYXVsdF9IYW5kbGVyDQorICAgICAgICBCIEhhcmRGYXVsdF9IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIE1lbU1hbmFnZV9IYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK01lbU1hbmFnZV9IYW5kbGVyDQorICAgICAgICBCIE1lbU1hbmFnZV9IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEJ1c0ZhdWx0X0hhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorQnVzRmF1bHRfSGFuZGxlcg0KKyAgICAgICAgQiBCdXNGYXVsdF9IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFVzYWdlRmF1bHRfSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitVc2FnZUZhdWx0X0hhbmRsZXINCisgICAgICAgIEIgVXNhZ2VGYXVsdF9IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFNWQ19IYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1NWQ19IYW5kbGVyDQorICAgICAgICBCIFNWQ19IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERlYnVnTW9uX0hhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRGVidWdNb25fSGFuZGxlcg0KKyAgICAgICAgQiBEZWJ1Z01vbl9IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFBlbmRTVl9IYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1BlbmRTVl9IYW5kbGVyDQorICAgICAgICBCIFBlbmRTVl9IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFN5c1RpY2tfSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitTeXNUaWNrX0hhbmRsZXINCisgICAgICAgIEIgU3lzVGlja19IYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFdXREdfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitXV0RHX0lSUUhhbmRsZXINCisgICAgICAgIEIgV1dER19JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFBWRF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1BWRF9JUlFIYW5kbGVyDQorICAgICAgICBCIFBWRF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRBTVBFUl9TVEFNUF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1RBTVBFUl9TVEFNUF9JUlFIYW5kbGVyDQorICAgICAgICBCIFRBTVBFUl9TVEFNUF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFJUQ19XS1VQX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorUlRDX1dLVVBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBSVENfV0tVUF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEZMQVNIX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRkxBU0hfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBGTEFTSF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFJDQ19JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1JDQ19JUlFIYW5kbGVyDQorICAgICAgICBCIFJDQ19JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEVYVEkwX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRVhUSTBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJMF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEVYVEkxX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRVhUSTFfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJMV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEVYVEkyX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRVhUSTJfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJMl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEVYVEkzX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRVhUSTNfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJM19JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEVYVEk0X0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorRVhUSTRfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBFWFRJNF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDFfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWwxX0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsMV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDJfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWwyX0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsMl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDNfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWwzX0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsM19JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDRfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWw0X0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsNF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDVfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWw1X0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsNV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDZfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWw2X0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsNl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERNQTFfQ2hhbm5lbDdfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitETUExX0NoYW5uZWw3X0lSUUhhbmRsZXINCisgICAgICAgIEIgRE1BMV9DaGFubmVsN19JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEFEQzFfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitBREMxX0lSUUhhbmRsZXINCisgICAgICAgIEIgQURDMV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFVTQl9IUF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1VTQl9IUF9JUlFIYW5kbGVyDQorICAgICAgICBCIFVTQl9IUF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFVTQl9MUF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1VTQl9MUF9JUlFIYW5kbGVyDQorICAgICAgICBCIFVTQl9MUF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIERBQ19JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0RBQ19JUlFIYW5kbGVyDQorICAgICAgICBCIERBQ19JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIENPTVBfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitDT01QX0lSUUhhbmRsZXINCisgICAgICAgIEIgQ09NUF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEVYVEk5XzVfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitFWFRJOV81X0lSUUhhbmRsZXINCisgICAgICAgIEIgRVhUSTlfNV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIExDRF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0xDRF9JUlFIYW5kbGVyDQorICAgICAgICBCIExDRF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRJTTlfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitUSU05X0lSUUhhbmRsZXINCisgICAgICAgIEIgVElNOV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRJTTEwX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVElNMTBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBUSU0xMF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRJTTExX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVElNMTFfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBUSU0xMV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRJTTJfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitUSU0yX0lSUUhhbmRsZXINCisgICAgICAgIEIgVElNMl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRJTTNfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitUSU0zX0lSUUhhbmRsZXINCisgICAgICAgIEIgVElNM19JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRJTTRfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitUSU00X0lSUUhhbmRsZXINCisgICAgICAgIEIgVElNNF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEkyQzFfRVZfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitJMkMxX0VWX0lSUUhhbmRsZXINCisgICAgICAgIEIgSTJDMV9FVl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEkyQzFfRVJfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitJMkMxX0VSX0lSUUhhbmRsZXINCisgICAgICAgIEIgSTJDMV9FUl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEkyQzJfRVZfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitJMkMyX0VWX0lSUUhhbmRsZXINCisgICAgICAgIEIgSTJDMl9FVl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEkyQzJfRVJfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitJMkMyX0VSX0lSUUhhbmRsZXINCisgICAgICAgIEIgSTJDMl9FUl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFNQSTFfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitTUEkxX0lSUUhhbmRsZXINCisgICAgICAgIEIgU1BJMV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFNQSTJfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitTUEkyX0lSUUhhbmRsZXINCisgICAgICAgIEIgU1BJMl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFVTQVJUMV9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1VTQVJUMV9JUlFIYW5kbGVyDQorICAgICAgICBCIFVTQVJUMV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFVTQVJUMl9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1VTQVJUMl9JUlFIYW5kbGVyDQorICAgICAgICBCIFVTQVJUMl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFVTQVJUM19JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1VTQVJUM19JUlFIYW5kbGVyDQorICAgICAgICBCIFVTQVJUM19JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIEVYVEkxNV8xMF9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK0VYVEkxNV8xMF9JUlFIYW5kbGVyDQorICAgICAgICBCIEVYVEkxNV8xMF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFJUQ19BbGFybV9JUlFIYW5kbGVyDQorICAgICAgICBTRUNUSU9OIC50ZXh0OkNPREU6UkVPUkRFUigxKQ0KK1JUQ19BbGFybV9JUlFIYW5kbGVyDQorICAgICAgICBCIFJUQ19BbGFybV9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFVTQl9GU19XS1VQX0lSUUhhbmRsZXINCisgICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpSRU9SREVSKDEpDQorVVNCX0ZTX1dLVVBfSVJRSGFuZGxlcg0KKyAgICAgICAgQiBVU0JfRlNfV0tVUF9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRJTTZfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitUSU02X0lSUUhhbmRsZXINCisgICAgICAgIEIgVElNNl9JUlFIYW5kbGVyDQorDQorDQorICAgICAgICBQVUJXRUFLIFRJTTdfSVJRSGFuZGxlcg0KKyAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOlJFT1JERVIoMSkNCitUSU03X0lSUUhhbmRsZXINCisgICAgICAgIEIgVElNN19JUlFIYW5kbGVyDQorDQorICAgICAgICBFTkQNCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTAgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0KZGlmZiAtLWdpdCBhL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL3N0bTMyX2V2YWwuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL3N0bTMyX2V2YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDFjYWJkCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvc3RtMzJfZXZhbC5oCkBAIC0wLDAgKzEsMzYwIEBACisvKioNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAZmlsZSAgICBzdG0zMl9ldmFsLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjQuNC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgSGVhZGVyIGZpbGUgZm9yIHN0bTMyX2V2YWwuYyBtb2R1bGUuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLyANCisgIA0KKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmbmRlZiBfX1NUTTMyX0VWQUxfSA0KKyNkZWZpbmUgX19TVE0zMl9FVkFMX0gNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCisgZXh0ZXJuICJDIiB7DQorI2VuZGlmIA0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyoqIEBhZGR0b2dyb3VwIFV0aWxpdGllcw0KKyAgKiBAew0KKyAgKi8gDQorICANCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJfRVZBTA0KKyAgKiBAew0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTVE0zMl9FVkFMX0Fic3RyYWN0aW9uX0xheWVyDQorICAqIEB7DQorICAqLw0KKyAgDQorLyoqIEBkZWZncm91cCBTVE0zMl9FVkFMX0hBUkRXQVJFX1JFU09VUkNFUw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCitAY29kZSAgDQorIFRoZSB0YWJsZSBiZWxvdyBnaXZlcyBhbiBvdmVydmlldyBvZiB0aGUgaGFyZHdhcmUgcmVzb3VyY2VzIHN1cHBvcnRlZCBieSBlYWNoIA0KKyBTVE0zMiBFVkFMIGJvYXJkLg0KKyAgICAgLSBMQ0Q6IFRGVCBDb2xvciBMQ0QgKFBhcmFsbGVsIChGU01DKSBhbmQgU2VyaWFsIChTUEkpKQ0KKyAgICAgLSBJT0U6IElPIEV4cGFuZGVyIG9uIEkyQw0KKyAgICAgLSBzRkxBU0g6IHNlcmlhbCBTUEkgRkxBU0ggKE0yNVB4eHgpDQorICAgICAtIHNFRTogc2VyaWFsIEkyQyBFRVBST00gKE0yNEMwOCwgTTI0QzMyLCBNMjRDNjQpDQorICAgICAtIFRTRU5TT1I6IFRlbXBlcmF0dXJlIFNlbnNvciAoTE03NSkNCisgICAgIC0gU0Q6IFNEIENhcmQgbWVtb3J5IChTUEkgYW5kIFNESU8gKFNEIENhcmQgTU9ERSkpIA0KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rDQorICAgIFNUTTMyIEVWQUwgICAgIHwgTEVEIHwgQnV0dG9ucyAgfCBDb20gUG9ydHMgfCAgICBMQ0QgICAgfCBJT0UgIHwgc0ZMQVNIIHwgc0VFIHwgVFNFTlNPUiB8IFNEIChTUEkpIHwgU0QoU0RJTykgIHwNCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kw0KKyAgIFNUTTMyMTBCLUVWQUwgICB8ICA0ICB8ICAgIDggICAgIHwgICAgIDIgICAgIHwgWUVTIChTUEkpIHwgTk8gICB8ICBZRVMgICB8IE5PICB8ICAgWUVTICAgfCAgICBZRVMgICB8ICAgIE5PICAgICB8DQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCisgICBTVE0zMjEwRS1FVkFMICAgfCAgNCAgfCAgICA4ICAgICB8ICAgICAyICAgICB8IFlFUyAoRlNNQyl8IE5PICAgfCAgWUVTICAgfCBOTyAgfCAgIFlFUyAgIHwgICAgTk8gICAgfCAgICBZRVMgICAgfA0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQorICAgU1RNMzIxMEMtRVZBTCAgIHwgIDQgIHwgICAgMyAgICAgfCAgICAgMSAgICAgfCBZRVMgKFNQSSkgfCBZRVMgIHwgIE5PICAgIHwgWUVTIHwgICBOTyAgICB8ICAgIFlFUyAgIHwgICAgTk8gICAgIHwNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KKyAgIFNUTTMyMTAwQi1FVkFMICB8ICA0ICB8ICAgIDggICAgIHwgICAgIDIgICAgIHwgWUVTIChTUEkpIHwgTk8gICB8ICBZRVMgICB8IE5PICB8ICAgWUVTICAgfCAgICBZRVMgICB8ICAgIE5PICAgICB8DQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCisgICBTVE0zMkwxNTItRVZBTCAgfCAgNCAgfCAgICA4ICAgICB8ICAgICAyICAgICB8IFlFUyAoU1BJKSB8IE5PICAgfCAgTk8gICAgfCBOTyAgfCAgIFlFUyAgIHwgICAgWUVTICAgfCAgICBOTyAgICAgfA0KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rDQorQGVuZGNvZGUNCisqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisgIA0KKy8qKiBAZGVmZ3JvdXAgU1RNMzJfRVZBTF9FeHBvcnRlZF9UeXBlcw0KKyAgKiBAew0KKyAgKi8NCit0eXBlZGVmIGVudW0gDQorew0KKyAgTEVEMSA9IDAsDQorICBMRUQyID0gMSwNCisgIExFRDMgPSAyLA0KKyAgTEVENCA9IDMNCit9IExlZF9UeXBlRGVmOw0KKw0KK3R5cGVkZWYgZW51bSANCit7ICANCisgIEJVVFRPTl9XQUtFVVAgPSAwLA0KKyAgQlVUVE9OX1RBTVBFUiA9IDEsDQorICBCVVRUT05fS0VZID0gMiwNCisgIEJVVFRPTl9SSUdIVCA9IDMsDQorICBCVVRUT05fTEVGVCA9IDQsDQorICBCVVRUT05fVVAgPSA1LA0KKyAgQlVUVE9OX0RPV04gPSA2LA0KKyAgQlVUVE9OX1NFTCA9IDcNCit9IEJ1dHRvbl9UeXBlRGVmOw0KKw0KK3R5cGVkZWYgZW51bSANCit7ICANCisgIEJVVFRPTl9NT0RFX0dQSU8gPSAwLA0KKyAgQlVUVE9OX01PREVfRVhUSSA9IDENCit9IEJ1dHRvbk1vZGVfVHlwZURlZjsNCisNCit0eXBlZGVmIGVudW0gDQoreyANCisgIEpPWV9OT05FID0gMCwNCisgIEpPWV9TRUwgPSAxLA0KKyAgSk9ZX0RPV04gPSAyLA0KKyAgSk9ZX0xFRlQgPSAzLA0KKyAgSk9ZX1JJR0hUID0gNCwNCisgIEpPWV9VUCA9IDUNCit9IEpPWVN0YXRlX1R5cGVEZWYNCis7DQorDQordHlwZWRlZiBlbnVtIA0KK3sNCisgIENPTTEgPSAwLA0KKyAgQ09NMiA9IDENCit9IENPTV9UeXBlRGVmOyAgIA0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorICANCisvKiogQGRlZmdyb3VwIFNUTTMyX0VWQUxfRXhwb3J0ZWRfQ29uc3RhbnRzDQorICAqIEB7DQorICAqLyANCisNCisvKiogDQorICAqIEBicmllZiAgVW5jb21tZW50IHRoZSBsaW5lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBldmFsdWF0aW9uDQorICAqICAgYm9hcmQgdXNlZCBpbiB5b3VyIGFwcGxpY2F0aW9uLg0KKyAgKiAgIA0KKyAgKiAgVGlwOiBUbyBhdm9pZCBtb2RpZnlpbmcgdGhpcyBmaWxlIGVhY2ggdGltZSB5b3UgbmVlZCB0byBzd2l0Y2ggYmV0d2VlbiB0aGVzZQ0KKyAgKiAgICAgICBib2FyZHMsIHlvdSBjYW4gZGVmaW5lIHRoZSBib2FyZCBpbiB5b3VyIHRvb2xjaGFpbiBjb21waWxlciBwcmVwcm9jZXNzb3IuICAgIA0KKyAgKi8gDQorI2lmICFkZWZpbmVkIChVU0VfU1RNMzIxMDBCX0VWQUwpICYmICFkZWZpbmVkIChVU0VfU1RNMzIxMEJfRVZBTCkgJiYgICFkZWZpbmVkIChVU0VfU1RNMzIxMEVfRVZBTClcDQorICAgJiYgICFkZWZpbmVkIChVU0VfU1RNMzIxMENfRVZBTCkgJiYgICFkZWZpbmVkIChVU0VfU1RNMzJMMTUyX0VWQUwpDQorIC8vI2RlZmluZSBVU0VfU1RNMzIxMDBCX0VWQUwNCisgLy8jZGVmaW5lIFVTRV9TVE0zMjEwQl9FVkFMDQorIC8vI2RlZmluZSBVU0VfU1RNMzIxMEVfRVZBTA0KKyAvLyNkZWZpbmUgVVNFX1NUTTMyMTBDX0VWQUwNCisgLy8jZGVmaW5lIFVTRV9TVE0zMkwxNTJfRVZBTA0KKyNlbmRpZg0KKw0KKyNpZmRlZiBVU0VfU1RNMzIxMDBCX0VWQUwNCisgI2luY2x1ZGUgInN0bTMyZjEweC5oIg0KKyAjaW5jbHVkZSAic3RtMzIxMDBiX2V2YWwvc3RtMzIxMDBiX2V2YWwuaCINCisjZWxpZiBkZWZpbmVkIFVTRV9TVE0zMjEwQl9FVkFMDQorICNpbmNsdWRlICJzdG0zMmYxMHguaCINCisgI2luY2x1ZGUgInN0bTMyMTBiX2V2YWwvc3RtMzIxMGJfZXZhbC5oIiANCisjZWxpZiBkZWZpbmVkIFVTRV9TVE0zMjEwRV9FVkFMDQorICNpbmNsdWRlICJzdG0zMmYxMHguaCINCisgI2luY2x1ZGUgInN0bTMyMTBlX2V2YWwvc3RtMzIxMGVfZXZhbC5oIg0KKyNlbGlmIGRlZmluZWQgVVNFX1NUTTMyMTBDX0VWQUwNCisgI2luY2x1ZGUgInN0bTMyZjEweC5oIg0KKyAjaW5jbHVkZSAic3RtMzIxMGNfZXZhbC9zdG0zMjEwY19ldmFsLmgiDQorI2VsaWYgZGVmaW5lZCBVU0VfU1RNMzJMMTUyX0VWQUwNCisgI2luY2x1ZGUgInN0bTMybDF4eC5oIg0KKyAjaW5jbHVkZSAic3RtMzJsMTUyX2V2YWwvc3RtMzJsMTUyX2V2YWwuaCIgDQorI2Vsc2UgDQorICNlcnJvciAiUGxlYXNlIHNlbGVjdCBmaXJzdCB0aGUgU1RNMzIgRVZBTCBib2FyZCB0byBiZSB1c2VkIChpbiBzdG0zMl9ldmFsLmgpIg0KKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICANCisNCisNCisvKiogDQorICAqIEBicmllZiAgU1RNMzIgQnV0dG9uIERlZmluZXMgTGVnYWN5ICANCisgICovIA0KKyNkZWZpbmUgQnV0dG9uX1dBS0VVUCAgICAgICAgQlVUVE9OX1dBS0VVUA0KKyNkZWZpbmUgQnV0dG9uX1RBTVBFUiAgICAgICAgQlVUVE9OX1RBTVBFUg0KKyNkZWZpbmUgQnV0dG9uX0tFWSAgICAgICAgICAgQlVUVE9OX0tFWQ0KKyNkZWZpbmUgQnV0dG9uX1JJR0hUICAgICAgICAgQlVUVE9OX1JJR0hUDQorI2RlZmluZSBCdXR0b25fTEVGVCAgICAgICAgICBCVVRUT05fTEVGVA0KKyNkZWZpbmUgQnV0dG9uX1VQICAgICAgICAgICAgQlVUVE9OX1VQDQorI2RlZmluZSBCdXR0b25fRE9XTiAgICAgICAgICBCVVRUT05fRE9XTg0KKyNkZWZpbmUgQnV0dG9uX1NFTCAgICAgICAgICAgQlVUVE9OX1NFTA0KKyNkZWZpbmUgTW9kZV9HUElPICAgICAgICAgICAgQlVUVE9OX01PREVfR1BJTw0KKyNkZWZpbmUgTW9kZV9FWFRJICAgICAgICAgICAgQlVUVE9OX01PREVfRVhUSQ0KKyNkZWZpbmUgQnV0dG9uX01vZGVfVHlwZURlZiAgQnV0dG9uTW9kZV9UeXBlRGVmDQorI2RlZmluZSBKT1lfQ0VOVEVSICAgICAgICAgICBKT1lfU0VMDQorI2RlZmluZSBKT1lfU3RhdGVfVHlwZURlZiAgICBKT1lTdGF0ZV9UeXBlRGVmIA0KKw0KKy8qKiANCisgICogQGJyaWVmICBMQ0QgRGVmaW5lcyBMZWdhY3kgIA0KKyAgKi8gDQorI2RlZmluZSBMQ0RfUlNOV1JfR1BJT19DTEsgIExDRF9OV1JfR1BJT19DTEsNCisjZGVmaW5lIExDRF9TUElfR1BJT19QT1JUICAgTENEX1NQSV9TQ0tfR1BJT19QT1JUDQorI2RlZmluZSBMQ0RfU1BJX0dQSU9fQ0xLICAgIExDRF9TUElfU0NLX0dQSU9fQ0xLDQorI2RlZmluZSBSMCAgICAgICAgICAgICAgICAgIExDRF9SRUdfMA0KKyNkZWZpbmUgUjEgICAgICAgICAgICAgICAgICBMQ0RfUkVHXzENCisjZGVmaW5lIFIyICAgICAgICAgICAgICAgICAgTENEX1JFR18yDQorI2RlZmluZSBSMyAgICAgICAgICAgICAgICAgIExDRF9SRUdfMw0KKyNkZWZpbmUgUjQgICAgICAgICAgICAgICAgICBMQ0RfUkVHXzQNCisjZGVmaW5lIFI1ICAgICAgICAgICAgICAgICAgTENEX1JFR181DQorI2RlZmluZSBSNiAgICAgICAgICAgICAgICAgIExDRF9SRUdfNg0KKyNkZWZpbmUgUjcgICAgICAgICAgICAgICAgICBMQ0RfUkVHXzcNCisjZGVmaW5lIFI4ICAgICAgICAgICAgICAgICAgTENEX1JFR184DQorI2RlZmluZSBSOSAgICAgICAgICAgICAgICAgIExDRF9SRUdfOQ0KKyNkZWZpbmUgUjEwICAgICAgICAgICAgICAgICBMQ0RfUkVHXzEwDQorI2RlZmluZSBSMTIgICAgICAgICAgICAgICAgIExDRF9SRUdfMTINCisjZGVmaW5lIFIxMyAgICAgICAgICAgICAgICAgTENEX1JFR18xMw0KKyNkZWZpbmUgUjE0ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzE0DQorI2RlZmluZSBSMTUgICAgICAgICAgICAgICAgIExDRF9SRUdfMTUNCisjZGVmaW5lIFIxNiAgICAgICAgICAgICAgICAgTENEX1JFR18xNg0KKyNkZWZpbmUgUjE3ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzE3DQorI2RlZmluZSBSMTggICAgICAgICAgICAgICAgIExDRF9SRUdfMTgNCisjZGVmaW5lIFIxOSAgICAgICAgICAgICAgICAgTENEX1JFR18xOQ0KKyNkZWZpbmUgUjIwICAgICAgICAgICAgICAgICBMQ0RfUkVHXzIwDQorI2RlZmluZSBSMjEgICAgICAgICAgICAgICAgIExDRF9SRUdfMjENCisjZGVmaW5lIFIyMiAgICAgICAgICAgICAgICAgTENEX1JFR18yMg0KKyNkZWZpbmUgUjIzICAgICAgICAgICAgICAgICBMQ0RfUkVHXzIzDQorI2RlZmluZSBSMjQgICAgICAgICAgICAgICAgIExDRF9SRUdfMjQNCisjZGVmaW5lIFIyNSAgICAgICAgICAgICAgICAgTENEX1JFR18yNQ0KKyNkZWZpbmUgUjI2ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzI2DQorI2RlZmluZSBSMjcgICAgICAgICAgICAgICAgIExDRF9SRUdfMjcNCisjZGVmaW5lIFIyOCAgICAgICAgICAgICAgICAgTENEX1JFR18yOA0KKyNkZWZpbmUgUjI5ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzI5DQorI2RlZmluZSBSMzAgICAgICAgICAgICAgICAgIExDRF9SRUdfMzANCisjZGVmaW5lIFIzMSAgICAgICAgICAgICAgICAgTENEX1JFR18zMQ0KKyNkZWZpbmUgUjMyICAgICAgICAgICAgICAgICBMQ0RfUkVHXzMyDQorI2RlZmluZSBSMzMgICAgICAgICAgICAgICAgIExDRF9SRUdfMzMNCisjZGVmaW5lIFIzNCAgICAgICAgICAgICAgICAgTENEX1JFR18zNA0KKyNkZWZpbmUgUjM2ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzM2DQorI2RlZmluZSBSMzcgICAgICAgICAgICAgICAgIExDRF9SRUdfMzcNCisjZGVmaW5lIFI0MCAgICAgICAgICAgICAgICAgTENEX1JFR180MA0KKyNkZWZpbmUgUjQxICAgICAgICAgICAgICAgICBMQ0RfUkVHXzQxDQorI2RlZmluZSBSNDMgICAgICAgICAgICAgICAgIExDRF9SRUdfNDMNCisjZGVmaW5lIFI0NSAgICAgICAgICAgICAgICAgTENEX1JFR180NQ0KKyNkZWZpbmUgUjQ4ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzQ4DQorI2RlZmluZSBSNDkgICAgICAgICAgICAgICAgIExDRF9SRUdfNDkNCisjZGVmaW5lIFI1MCAgICAgICAgICAgICAgICAgTENEX1JFR181MA0KKyNkZWZpbmUgUjUxICAgICAgICAgICAgICAgICBMQ0RfUkVHXzUxDQorI2RlZmluZSBSNTIgICAgICAgICAgICAgICAgIExDRF9SRUdfNTINCisjZGVmaW5lIFI1MyAgICAgICAgICAgICAgICAgTENEX1JFR181Mw0KKyNkZWZpbmUgUjU0ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzU0DQorI2RlZmluZSBSNTUgICAgICAgICAgICAgICAgIExDRF9SRUdfNTUNCisjZGVmaW5lIFI1NiAgICAgICAgICAgICAgICAgTENEX1JFR181Ng0KKyNkZWZpbmUgUjU3ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzU3DQorI2RlZmluZSBSNTkgICAgICAgICAgICAgICAgIExDRF9SRUdfNTkNCisjZGVmaW5lIFI2MCAgICAgICAgICAgICAgICAgTENEX1JFR182MA0KKyNkZWZpbmUgUjYxICAgICAgICAgICAgICAgICBMQ0RfUkVHXzYxDQorI2RlZmluZSBSNjIgICAgICAgICAgICAgICAgIExDRF9SRUdfNjINCisjZGVmaW5lIFI2MyAgICAgICAgICAgICAgICAgTENEX1JFR182Mw0KKyNkZWZpbmUgUjY0ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzY0DQorI2RlZmluZSBSNjUgICAgICAgICAgICAgICAgIExDRF9SRUdfNjUNCisjZGVmaW5lIFI2NiAgICAgICAgICAgICAgICAgTENEX1JFR182Ng0KKyNkZWZpbmUgUjY3ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzY3DQorI2RlZmluZSBSNjggICAgICAgICAgICAgICAgIExDRF9SRUdfNjgNCisjZGVmaW5lIFI2OSAgICAgICAgICAgICAgICAgTENEX1JFR182OQ0KKyNkZWZpbmUgUjcwICAgICAgICAgICAgICAgICBMQ0RfUkVHXzcwDQorI2RlZmluZSBSNzEgICAgICAgICAgICAgICAgIExDRF9SRUdfNzENCisjZGVmaW5lIFI3MiAgICAgICAgICAgICAgICAgTENEX1JFR183Mg0KKyNkZWZpbmUgUjczICAgICAgICAgICAgICAgICBMQ0RfUkVHXzczDQorI2RlZmluZSBSNzQgICAgICAgICAgICAgICAgIExDRF9SRUdfNzQNCisjZGVmaW5lIFI3NSAgICAgICAgICAgICAgICAgTENEX1JFR183NQ0KKyNkZWZpbmUgUjc2ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzc2DQorI2RlZmluZSBSNzcgICAgICAgICAgICAgICAgIExDRF9SRUdfNzcNCisjZGVmaW5lIFI3OCAgICAgICAgICAgICAgICAgTENEX1JFR183OA0KKyNkZWZpbmUgUjc5ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzc5DQorI2RlZmluZSBSODAgICAgICAgICAgICAgICAgIExDRF9SRUdfODANCisjZGVmaW5lIFI4MSAgICAgICAgICAgICAgICAgTENEX1JFR184MQ0KKyNkZWZpbmUgUjgyICAgICAgICAgICAgICAgICBMQ0RfUkVHXzgyDQorI2RlZmluZSBSODMgICAgICAgICAgICAgICAgIExDRF9SRUdfODMNCisjZGVmaW5lIFI5NiAgICAgICAgICAgICAgICAgTENEX1JFR185Ng0KKyNkZWZpbmUgUjk3ICAgICAgICAgICAgICAgICBMQ0RfUkVHXzk3DQorI2RlZmluZSBSMTA2ICAgICAgICAgICAgICAgIExDRF9SRUdfMTA2DQorI2RlZmluZSBSMTE4ICAgICAgICAgICAgICAgIExDRF9SRUdfMTE4DQorI2RlZmluZSBSMTI4ICAgICAgICAgICAgICAgIExDRF9SRUdfMTI4DQorI2RlZmluZSBSMTI5ICAgICAgICAgICAgICAgIExDRF9SRUdfMTI5DQorI2RlZmluZSBSMTMwICAgICAgICAgICAgICAgIExDRF9SRUdfMTMwDQorI2RlZmluZSBSMTMxICAgICAgICAgICAgICAgIExDRF9SRUdfMTMxDQorI2RlZmluZSBSMTMyICAgICAgICAgICAgICAgIExDRF9SRUdfMTMyDQorI2RlZmluZSBSMTMzICAgICAgICAgICAgICAgIExDRF9SRUdfMTMzDQorI2RlZmluZSBSMTM0ICAgICAgICAgICAgICAgIExDRF9SRUdfMTM0DQorI2RlZmluZSBSMTM1ICAgICAgICAgICAgICAgIExDRF9SRUdfMTM1DQorI2RlZmluZSBSMTM2ICAgICAgICAgICAgICAgIExDRF9SRUdfMTM2DQorI2RlZmluZSBSMTM3ICAgICAgICAgICAgICAgIExDRF9SRUdfMTM3DQorI2RlZmluZSBSMTM5ICAgICAgICAgICAgICAgIExDRF9SRUdfMTM5DQorI2RlZmluZSBSMTQwICAgICAgICAgICAgICAgIExDRF9SRUdfMTQwDQorI2RlZmluZSBSMTQxICAgICAgICAgICAgICAgIExDRF9SRUdfMTQxDQorI2RlZmluZSBSMTQzICAgICAgICAgICAgICAgIExDRF9SRUdfMTQzDQorI2RlZmluZSBSMTQ0ICAgICAgICAgICAgICAgIExDRF9SRUdfMTQ0DQorI2RlZmluZSBSMTQ1ICAgICAgICAgICAgICAgIExDRF9SRUdfMTQ1DQorI2RlZmluZSBSMTQ2ICAgICAgICAgICAgICAgIExDRF9SRUdfMTQ2DQorI2RlZmluZSBSMTQ3ICAgICAgICAgICAgICAgIExDRF9SRUdfMTQ3DQorI2RlZmluZSBSMTQ4ICAgICAgICAgICAgICAgIExDRF9SRUdfMTQ4DQorI2RlZmluZSBSMTQ5ICAgICAgICAgICAgICAgIExDRF9SRUdfMTQ5DQorI2RlZmluZSBSMTUwICAgICAgICAgICAgICAgIExDRF9SRUdfMTUwDQorI2RlZmluZSBSMTUxICAgICAgICAgICAgICAgIExDRF9SRUdfMTUxDQorI2RlZmluZSBSMTUyICAgICAgICAgICAgICAgIExDRF9SRUdfMTUyDQorI2RlZmluZSBSMTUzICAgICAgICAgICAgICAgIExDRF9SRUdfMTUzDQorI2RlZmluZSBSMTU0ICAgICAgICAgICAgICAgIExDRF9SRUdfMTU0DQorI2RlZmluZSBSMTU3ICAgICAgICAgICAgICAgIExDRF9SRUdfMTU3DQorI2RlZmluZSBSMTkyICAgICAgICAgICAgICAgIExDRF9SRUdfMTkyDQorI2RlZmluZSBSMTkzICAgICAgICAgICAgICAgIExDRF9SRUdfMTkzDQorI2RlZmluZSBSMjI3ICAgICAgICAgICAgICAgIExDRF9SRUdfMjI3DQorI2RlZmluZSBSMjI5ICAgICAgICAgICAgICAgIExDRF9SRUdfMjI5DQorI2RlZmluZSBSMjMxICAgICAgICAgICAgICAgIExDRF9SRUdfMjMxDQorI2RlZmluZSBSMjM5ICAgICAgICAgICAgICAgIExDRF9SRUdfMjM5DQorI2RlZmluZSBXaGl0ZSAgICAgICAgICAgICAgIExDRF9DT0xPUl9XSElURQ0KKyNkZWZpbmUgQmxhY2sgICAgICAgICAgICAgICBMQ0RfQ09MT1JfQkxBQ0sNCisjZGVmaW5lIEdyZXkgICAgICAgICAgICAgICAgTENEX0NPTE9SX0dSRVkNCisjZGVmaW5lIEJsdWUgICAgICAgICAgICAgICAgTENEX0NPTE9SX0JMVUUNCisjZGVmaW5lIEJsdWUyICAgICAgICAgICAgICAgTENEX0NPTE9SX0JMVUUyDQorI2RlZmluZSBSZWQgICAgICAgICAgICAgICAgIExDRF9DT0xPUl9SRUQNCisjZGVmaW5lIE1hZ2VudGEgICAgICAgICAgICAgTENEX0NPTE9SX01BR0VOVEENCisjZGVmaW5lIEdyZWVuICAgICAgICAgICAgICAgTENEX0NPTE9SX0dSRUVODQorI2RlZmluZSBDeWFuICAgICAgICAgICAgICAgIExDRF9DT0xPUl9DWUFODQorI2RlZmluZSBZZWxsb3cgICAgICAgICAgICAgIExDRF9DT0xPUl9ZRUxMT1cNCisjZGVmaW5lIExpbmUwICAgICAgICAgICAgICAgTENEX0xJTkVfMA0KKyNkZWZpbmUgTGluZTEgICAgICAgICAgICAgICBMQ0RfTElORV8xDQorI2RlZmluZSBMaW5lMiAgICAgICAgICAgICAgIExDRF9MSU5FXzINCisjZGVmaW5lIExpbmUzICAgICAgICAgICAgICAgTENEX0xJTkVfMw0KKyNkZWZpbmUgTGluZTQgICAgICAgICAgICAgICBMQ0RfTElORV80DQorI2RlZmluZSBMaW5lNSAgICAgICAgICAgICAgIExDRF9MSU5FXzUNCisjZGVmaW5lIExpbmU2ICAgICAgICAgICAgICAgTENEX0xJTkVfNg0KKyNkZWZpbmUgTGluZTcgICAgICAgICAgICAgICBMQ0RfTElORV83DQorI2RlZmluZSBMaW5lOCAgICAgICAgICAgICAgIExDRF9MSU5FXzgNCisjZGVmaW5lIExpbmU5ICAgICAgICAgICAgICAgTENEX0xJTkVfOQ0KKyNkZWZpbmUgSG9yaXpvbnRhbCAgICAgICAgICBMQ0RfRElSX0hPUklaT05UQUwNCisjZGVmaW5lIFZlcnRpY2FsICAgICAgICAgICAgTENEX0RJUl9WRVJUSUNBTA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqIEBkZWZncm91cCBTVE0zMl9FVkFMX0V4cG9ydGVkX01hY3Jvcw0KKyAgKiBAew0KKyAgKi8gDQorLyoqDQorICAqIEB9DQorICAqLyANCisNCisvKiogQGRlZmdyb3VwIFNUTTMyX0VWQUxfRXhwb3J0ZWRfRnVuY3Rpb25zDQorICAqIEB7DQorICAqLyANCisvKioNCisgICogQH0NCisgICovIA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisNCisjZW5kaWYgLyogX19TVE0zMl9FVkFMX0ggKi8NCisNCisvKioNCisgICogQH0NCisgICovIA0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8gDQorDQorLyoqDQorICAqIEB9DQorICAqLyAgIA0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvc3RtMzJsMXh4X2NvbmYuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL3N0bTMybDF4eF9jb25mLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q3OWRhMAotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL3N0bTMybDF4eF9jb25mLmgKQEAgLTAsMCArMSw3NCBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgUHJvamVjdC9TVE0zMkwxeHhfU3RkUGVyaXBoX1RlbXBsYXRlL3N0bTMybDF4eF9jb25mLmgNCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCisgICogQHZlcnNpb24gVjEuMC4wUkMxDQorICAqIEBkYXRlICAgIDA3LzAyLzIwMTANCisgICogQGJyaWVmICAgTGlicmFyeSBjb25maWd1cmF0aW9uIGZpbGUuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLw0KKw0KKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmbmRlZiBfX1NUTTMyTDF4eF9DT05GX0gNCisjZGVmaW5lIF9fU1RNMzJMMXh4X0NPTkZfSA0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLyogVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIGVuYWJsZSBwZXJpcGhlcmFsIGhlYWRlciBmaWxlIGluY2x1c2lvbiAqLw0KKy8qICNpbmNsdWRlICJzdG0zMmwxeHhfYWRjLmgiICovDQorLyogI2luY2x1ZGUgInN0bTMybDF4eF9jcmMuaCIgKi8NCisvKiAjaW5jbHVkZSAic3RtMzJsMXh4X2NvbXAuaCIgKi8NCisvKiAjaW5jbHVkZSAic3RtMzJsMXh4X2RhYy5oIiAqLw0KKy8qICNpbmNsdWRlICJzdG0zMmwxeHhfZGJnbWN1LmgiICovDQorLyogI2luY2x1ZGUgInN0bTMybDF4eF9kbWEuaCIgKi8NCisjaW5jbHVkZSAic3RtMzJsMXh4X2V4dGkuaCINCisvKiAjaW5jbHVkZSAic3RtMzJsMXh4X2ZsYXNoLmgiICovDQorI2luY2x1ZGUgInN0bTMybDF4eF9ncGlvLmgiDQorI2luY2x1ZGUgInN0bTMybDF4eF9zeXNjZmcuaCINCisvKiAjaW5jbHVkZSAic3RtMzJsMXh4X2kyYy5oIiAqLw0KKy8qICNpbmNsdWRlICJzdG0zMmwxeHhfaXdkZy5oIiAqLw0KKy8qICNpbmNsdWRlICJzdG0zMmwxeHhfbGNkLmgiICovDQorI2luY2x1ZGUgInN0bTMybDF4eF9wd3IuaCINCisjaW5jbHVkZSAic3RtMzJsMXh4X3JjYy5oIg0KKy8qICNpbmNsdWRlICJzdG0zMmwxeHhfcnRjLmgiICovDQorI2luY2x1ZGUgInN0bTMybDF4eF9zcGkuaCINCisjaW5jbHVkZSAic3RtMzJsMXh4X3RpbS5oIg0KKyNpbmNsdWRlICJzdG0zMmwxeHhfdXNhcnQuaCINCisvKiAjaW5jbHVkZSAic3RtMzJsMXh4X3d3ZGcuaCIgKi8NCisjaW5jbHVkZSAibWlzYy5oIiAgLyogSGlnaCBsZXZlbCBmdW5jdGlvbnMgZm9yIE5WSUMgYW5kIFN5c1RpY2sgKGFkZC1vbiB0byBDTVNJUyBmdW5jdGlvbnMpICovDQorDQorLyogRXhwb3J0ZWQgdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiBFeHBvcnRlZCBjb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKy8qIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyB0byBleHBhbnNlIHRoZSAiYXNzZXJ0X3BhcmFtIiBtYWNybyBpbiB0aGUNCisgICBTdGFuZGFyZCBQZXJpcGhlcmFsIExpYnJhcnkgZHJpdmVycyBjb2RlICovDQorLyogI2RlZmluZSBVU0VfRlVMTF9BU1NFUlQgICAgMSAqLw0KKw0KKy8qIEV4cG9ydGVkIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmZGVmICBVU0VfRlVMTF9BU1NFUlQNCisNCisvKioNCisgICogQGJyaWVmICBUaGUgYXNzZXJ0X3BhcmFtIG1hY3JvIGlzIHVzZWQgZm9yIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycyBjaGVjay4NCisgICogQHBhcmFtICBleHByOiBJZiBleHByIGlzIGZhbHNlLCBpdCBjYWxscyBhc3NlcnRfZmFpbGVkIGZ1bmN0aW9uIHdoaWNoIHJlcG9ydHMNCisgICogICAgICAgICB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgYW5kIHRoZSBzb3VyY2UgbGluZSBudW1iZXIgb2YgdGhlIGNhbGwNCisgICogICAgICAgICB0aGF0IGZhaWxlZC4gSWYgZXhwciBpcyB0cnVlLCBpdCByZXR1cm5zIG5vIHZhbHVlLg0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQorICAjZGVmaW5lIGFzc2VydF9wYXJhbShleHByKSAoKGV4cHIpID8gKHZvaWQpMCA6IGFzc2VydF9mYWlsZWQoKHVpbnQ4X3QgKilfX0ZJTEVfXywgX19MSU5FX18pKQ0KKy8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQorICB2b2lkIGFzc2VydF9mYWlsZWQodWludDhfdCogZmlsZSwgdWludDMyX3QgbGluZSk7DQorI2Vsc2UNCisgICNkZWZpbmUgYXNzZXJ0X3BhcmFtKGV4cHIpICgodm9pZCkwKQ0KKyNlbmRpZiAvKiBVU0VfRlVMTF9BU1NFUlQgKi8NCisNCisjZW5kaWYgLyogX19TVE0zMkwxeHhfQ09ORl9IICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9zdG0zMmwxeHhfZmxhc2guaWNmIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvc3RtMzJsMXh4X2ZsYXNoLmljZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTAwZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvc3RtMzJsMXh4X2ZsYXNoLmljZgpAQCAtMCwwICsxLDMxIEBACisvKiMjI0lDRiMjIyBTZWN0aW9uIGhhbmRsZWQgYnkgSUNGIGVkaXRvciwgZG9uJ3QgdG91Y2ghICoqKiovDQorLyotRWRpdG9yIGFubm90YXRpb24gZmlsZS0qLw0KKy8qIEljZkVkaXRvckZpbGU9IiRUT09MS0lUX0RJUiRcY29uZmlnXGlkZVxJY2ZFZGl0b3JcY29ydGV4X3YxXzAueG1sIiAqLw0KKy8qLVNwZWNpYWxzLSovDQorZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18gPSAweDA4MDAwMDAwOw0KKy8qLU1lbW9yeSBSZWdpb25zLSovDQorZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9zdGFydF9fID0gMHgwODAwMDAwMCA7DQorZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9lbmRfXyAgID0gMHgwODAxRkZGRjsNCitkZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gPSAweDIwMDAwMDAwOw0KK2RlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SQU1fZW5kX18gICA9IDB4MjAwMDNGRkY7DQorLyotU2l6ZXMtKi8NCitkZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2NzdGFja19fID0gMHgzMDA7DQorZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9oZWFwX18gICA9IDB4MDsNCisvKioqKiBFbmQgb2YgSUNGIGVkaXRvciBzZWN0aW9uLiAjIyNJQ0YjIyMqLw0KKw0KKw0KK2RlZmluZSBtZW1vcnkgbWVtIHdpdGggc2l6ZSA9IDRHOw0KK2RlZmluZSByZWdpb24gUk9NX3JlZ2lvbiAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUk9NX3N0YXJ0X18gICB0byBfX0lDRkVESVRfcmVnaW9uX1JPTV9lbmRfX107DQorZGVmaW5lIHJlZ2lvbiBSQU1fcmVnaW9uICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fc3RhcnRfXyAgIHRvIF9fSUNGRURJVF9yZWdpb25fUkFNX2VuZF9fXTsNCisNCitkZWZpbmUgYmxvY2sgQ1NUQUNLICAgIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2NzdGFja19fICAgeyB9Ow0KK2RlZmluZSBibG9jayBIRUFQICAgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaGVhcF9fICAgICB7IH07DQorDQoraW5pdGlhbGl6ZSBieSBjb3B5IHsgcmVhZHdyaXRlIH07DQorZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiAubm9pbml0IH07DQorDQorcGxhY2UgYXQgYWRkcmVzcyBtZW06X19JQ0ZFRElUX2ludHZlY19zdGFydF9fIHsgcmVhZG9ubHkgc2VjdGlvbiAuaW50dmVjIH07DQorDQorcGxhY2UgaW4gUk9NX3JlZ2lvbiAgIHsgcmVhZG9ubHkgfTsNCitwbGFjZSBpbiBSQU1fcmVnaW9uICAgeyByZWFkd3JpdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sgQ1NUQUNLLCBibG9jayBIRUFQIH07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvc3RtMzJsMXh4X2l0LmMgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9zdG0zMmwxeHhfaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWZjZDJhCi0tLSAvZGV2L251bGwKKysrIGIvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zeXN0ZW1fYW5kX1NUX2NvZGUvc3RtMzJsMXh4X2l0LmMKQEAgLTAsMCArMSwxNjAgQEAKKy8qKg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBmaWxlICAgIFByb2plY3QvU1RNMzJMMXh4X1N0ZFBlcmlwaF9UZW1wbGF0ZS9zdG0zMmwxeHhfaXQuYw0KKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQ0KKyAgKiBAdmVyc2lvbiBWMS4wLjBSQzENCisgICogQGRhdGUgICAgMDcvMDIvMjAxMA0KKyAgKiBAYnJpZWYgICBNYWluIEludGVycnVwdCBTZXJ2aWNlIFJvdXRpbmVzLg0KKyAgKiAgICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgdGVtcGxhdGUgZm9yIGFsbCBleGNlcHRpb25zIGhhbmRsZXIgYW5kDQorICAqICAgICAgICAgIHBlcmlwaGVyYWxzIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUuDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGNvcHkNCisgICoNCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTDQorICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFDQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkNCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORw0KKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFDQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4NCisgICoNCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQorICAqLw0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eF9pdC5oIg0KKw0KKw0KKy8qKiBAYWRkdG9ncm91cCBUZW1wbGF0ZV9Qcm9qZWN0DQorICAqIEB7DQorICAqLw0KKw0KKy8qIFByaXZhdGUgdHlwZWRlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLyogUHJpdmF0ZSBkZWZpbmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKy8qIFByaXZhdGUgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLyogUHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiBQcml2YXRlIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICBDb3J0ZXgtTTMgUHJvY2Vzc29yIEV4Y2VwdGlvbnMgSGFuZGxlcnMgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBOTUkgZXhjZXB0aW9uLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgTk1JX0hhbmRsZXIodm9pZCkNCit7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBIYXJkIEZhdWx0IGV4Y2VwdGlvbi4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIEhhcmRGYXVsdF9IYW5kbGVyKHZvaWQpDQorew0KKyAgLyogR28gdG8gaW5maW5pdGUgbG9vcCB3aGVuIEhhcmQgRmF1bHQgZXhjZXB0aW9uIG9jY3VycyAqLw0KKyAgd2hpbGUgKDEpDQorICB7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBNZW1vcnkgTWFuYWdlIGV4Y2VwdGlvbi4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIE1lbU1hbmFnZV9IYW5kbGVyKHZvaWQpDQorew0KKyAgLyogR28gdG8gaW5maW5pdGUgbG9vcCB3aGVuIE1lbW9yeSBNYW5hZ2UgZXhjZXB0aW9uIG9jY3VycyAqLw0KKyAgd2hpbGUgKDEpDQorICB7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBCdXMgRmF1bHQgZXhjZXB0aW9uLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgQnVzRmF1bHRfSGFuZGxlcih2b2lkKQ0KK3sNCisgIC8qIEdvIHRvIGluZmluaXRlIGxvb3Agd2hlbiBCdXMgRmF1bHQgZXhjZXB0aW9uIG9jY3VycyAqLw0KKyAgd2hpbGUgKDEpDQorICB7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBVc2FnZSBGYXVsdCBleGNlcHRpb24uDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQordm9pZCBVc2FnZUZhdWx0X0hhbmRsZXIodm9pZCkNCit7DQorICAvKiBHbyB0byBpbmZpbml0ZSBsb29wIHdoZW4gVXNhZ2UgRmF1bHQgZXhjZXB0aW9uIG9jY3VycyAqLw0KKyAgd2hpbGUgKDEpDQorICB7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBTVkNhbGwgZXhjZXB0aW9uLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU1ZDX0hhbmRsZXIodm9pZCkNCit7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBEZWJ1ZyBNb25pdG9yIGV4Y2VwdGlvbi4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIERlYnVnTW9uX0hhbmRsZXIodm9pZCkNCit7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBQZW5kU1ZDIGV4Y2VwdGlvbi4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFBlbmRTVl9IYW5kbGVyKHZvaWQpDQorew0KK30NCisNCisvKioNCisgICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgU3lzVGljayBIYW5kbGVyLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3ZvaWQgU3lzVGlja19IYW5kbGVyKHZvaWQpDQorew0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qICAgICAgICAgICAgICAgICBTVE0zMkwxeHggUGVyaXBoZXJhbHMgSW50ZXJydXB0IEhhbmRsZXJzICAgICAgICAgICAgICAgICAgICovDQorLyogIEFkZCBoZXJlIHRoZSBJbnRlcnJ1cHQgSGFuZGxlciBmb3IgdGhlIHVzZWQgcGVyaXBoZXJhbChzKSAoUFBQKSwgZm9yIHRoZSAgKi8NCisvKiAgYXZhaWxhYmxlIHBlcmlwaGVyYWwgaW50ZXJydXB0IGhhbmRsZXIncyBuYW1lIHBsZWFzZSByZWZlciB0byB0aGUgc3RhcnR1cCAqLw0KKy8qICBmaWxlIChzdGFydHVwX3N0bTMybDF4eF9tZC5zKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioNCisgICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgUFBQIGludGVycnVwdCByZXF1ZXN0Lg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KKy8qdm9pZCBQUFBfSVJRSGFuZGxlcih2b2lkKQ0KK3sNCit9Ki8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9zdG0zMmwxeHhfaXQuaCBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL3N0bTMybDF4eF9pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYWJjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9zdG0zMmwxeHhfaXQuaApAQCAtMCwwICsxLDUzIEBACisvKioNCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgKiBAZmlsZSAgICBQcm9qZWN0L1NUTTMyTDF4eF9TdGRQZXJpcGhfVGVtcGxhdGUvc3RtMzJsMXh4X2l0LmggDQorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorICAqIEB2ZXJzaW9uIFYxLjAuMFJDMQ0KKyAgKiBAZGF0ZSAgICAwNy8wMi8yMDEwDQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaGVhZGVycyBvZiB0aGUgaW50ZXJydXB0IGhhbmRsZXJzLg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqIEBjb3B5DQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKi8gDQorDQorLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaWZuZGVmIF9fU1RNMzJMMXh4X0lUX0gNCisjZGVmaW5lIF9fU1RNMzJMMXh4X0lUX0gNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCisgZXh0ZXJuICJDIiB7DQorI2VuZGlmIA0KKw0KKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2luY2x1ZGUgInN0bTMybDF4eC5oIg0KKw0KKy8qIEV4cG9ydGVkIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLyogRXhwb3J0ZWQgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisvKiBFeHBvcnRlZCBtYWNybyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKy8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQorDQordm9pZCBOTUlfSGFuZGxlcih2b2lkKTsNCit2b2lkIEhhcmRGYXVsdF9IYW5kbGVyKHZvaWQpOw0KK3ZvaWQgTWVtTWFuYWdlX0hhbmRsZXIodm9pZCk7DQordm9pZCBCdXNGYXVsdF9IYW5kbGVyKHZvaWQpOw0KK3ZvaWQgVXNhZ2VGYXVsdF9IYW5kbGVyKHZvaWQpOw0KK3ZvaWQgU1ZDX0hhbmRsZXIodm9pZCk7DQordm9pZCBEZWJ1Z01vbl9IYW5kbGVyKHZvaWQpOw0KK3ZvaWQgUGVuZFNWX0hhbmRsZXIodm9pZCk7DQordm9pZCBTeXNUaWNrX0hhbmRsZXIodm9pZCk7DQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKw0KKyNlbmRpZiAvKiBfX1NUTTMyTDF4eF9JVF9IICovDQorDQorLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDEwIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCmRpZmYgLS1naXQgYS9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9zeXN0ZW1fc3RtMzJsMXh4LmMgYi9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3N5c3RlbV9hbmRfU1RfY29kZS9zeXN0ZW1fc3RtMzJsMXh4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM4ODFjMQotLS0gL2Rldi9udWxsCisrKyBiL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc3lzdGVtX2FuZF9TVF9jb2RlL3N5c3RlbV9zdG0zMmwxeHguYwpAQCAtMCwwICsxLDkzNCBAQAorLyoqDQorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICogQGZpbGUgICAgc3lzdGVtX3N0bTMybDF4eC5jDQorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtDQorICAqIEB2ZXJzaW9uIFYxLjAuMFJDMQ0KKyAgKiBAZGF0ZSAgICAwNy8wMi8yMDEwDQorICAqIEBicmllZiAgIENNU0lTIENvcnRleC1NMyBEZXZpY2UgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXIgU3lzdGVtIFNvdXJjZSBGaWxlLg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqDQorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUw0KKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQ0KKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZDQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcNCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQ0KKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuDQorICAqDQorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBDTVNJUw0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgc3RtMzJsMXh4X3N5c3RlbQ0KKyAgKiBAew0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMXh4X1N5c3RlbV9Qcml2YXRlX0luY2x1ZGVzDQorICAqIEB7DQorICAqLw0KKw0KKyNpbmNsdWRlICJzdG0zMmwxeHguaCINCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TeXN0ZW1fUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zDQorICAqIEB7DQorICAqLw0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMXh4X1N5c3RlbV9Qcml2YXRlX0RlZmluZXMNCisgICogQHsNCisgICovDQorDQorLyohPCBVbmNvbW1lbnQgdGhlIGxpbmUgY29ycmVzcG9uZGluZyB0byB0aGUgZGVzaXJlZCBTeXN0ZW0gY2xvY2sgKFNZU0NMSykNCisgICBmcmVxdWVuY3kgKGFmdGVyIHJlc2V0IHRoZSBNU0kgaXMgdXNlZCBhcyBTWVNDTEsgc291cmNlKQ0KKw0KKyAgIElNUE9SVEFOVCBOT1RFOg0KKyAgID09PT09PT09PT09PT09DQorICAgMS4gQWZ0ZXIgZWFjaCBkZXZpY2UgcmVzZXQgdGhlIE1TSSBpcyB1c2VkIGFzIFN5c3RlbSBjbG9jayBzb3VyY2UuDQorDQorICAgMi4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZWxlY3RlZCBTeXN0ZW0gY2xvY2sgZG9lc24ndCBleGNlZWQgeW91ciBkZXZpY2Uncw0KKyAgICAgIG1heGltdW0gZnJlcXVlbmN5Lg0KKw0KKyAgIDMuIElmIG5vbmUgb2YgdGhlIGRlZmluZSBiZWxvdyBpcyBlbmFibGVkLCB0aGUgTVNJICgyTUh6IGRlZmF1bHQpIGlzIHVzZWQgYXMNCisgICAgICBTeXN0ZW0gY2xvY2sgc291cmNlLg0KKw0KKyAgIDQuIFRoZSBTeXN0ZW0gY2xvY2sgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMgcHJvdmlkZWQgd2l0aGluIHRoaXMgZmlsZSBhc3N1bWUgdGhhdDoNCisgICAgICAgIC0gRm9yIFVsdHJhIExvdyBQb3dlciBNZWRpdW0gTWVuc2l0eSBkZXZpY2VzIGFuIGV4dGVybmFsIDhNSHogY3J5c3RhbCBpcw0KKyAgICAgICAgICB1c2VkIHRvIGRyaXZlIHRoZSBTeXN0ZW0gY2xvY2suDQorICAgICBJZiB5b3UgYXJlIHVzaW5nIGRpZmZlcmVudCBjcnlzdGFsIHlvdSBoYXZlIHRvIGFkYXB0IHRob3NlIGZ1bmN0aW9ucyBhY2NvcmRpbmdseS4NCisgICAgKi8NCisNCisvKiAjZGVmaW5lIFNZU0NMS19GUkVRX01TSSAqLw0KKw0KKyNpZm5kZWYgU1lTQ0xLX0ZSRVFfTVNJDQorLyogI2RlZmluZSBTWVNDTEtfRlJFUV9IU0kgICAgSFNJX1ZBTFVFICovDQorLyogI2RlZmluZSBTWVNDTEtfRlJFUV9IU0UgICAgSFNFX1ZBTFVFICovDQorLyogI2RlZmluZSBTWVNDTEtfRlJFUV80TUh6ICAgNDAwMDAwMCAqLw0KKy8qICNkZWZpbmUgU1lTQ0xLX0ZSRVFfOE1IeiAgIDgwMDAwMDAgKi8NCisvKiAjZGVmaW5lIFNZU0NMS19GUkVRXzE2TUh6ICAxNjAwMDAwMCAqLw0KKyNkZWZpbmUgU1lTQ0xLX0ZSRVFfMzJNSHogIDMyMDAwMDAwDQorI2Vsc2UNCisvKiAjZGVmaW5lIFNZU0NMS19GUkVRX01TSV82NEtIeiAgICAgNjQwMDAgKi8NCisvKiAjZGVmaW5lIFNZU0NMS19GUkVRX01TSV8xMjhLSHogICAgMTI4MDAwICovDQorLyogI2RlZmluZSBTWVNDTEtfRlJFUV9NU0lfMjU2S0h6ICAgIDI1NjAwMCAqLw0KKy8qICNkZWZpbmUgU1lTQ0xLX0ZSRVFfTVNJXzUxMktIeiAgICA1MTIwMDAgKi8NCisvKiAjZGVmaW5lIFNZU0NMS19GUkVRX01TSV8xTUh6ICAgICAgMTAwMDAwMCAqLw0KKy8qICNkZWZpbmUgU1lTQ0xLX0ZSRVFfTVNJXzJNSHogICAgICAyMDAwMDAwICovDQorLyogI2RlZmluZSBTWVNDTEtfRlJFUV9NU0lfNE1IeiAgICAgIDQwMDAwMDAgKi8NCisjZW5kaWYNCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqIEBhZGR0b2dyb3VwIFNUTTMyTDF4eF9TeXN0ZW1fUHJpdmF0ZV9NYWNyb3MNCisgICogQHsNCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKiBAYWRkdG9ncm91cCBTVE0zMkwxeHhfU3lzdGVtX1ByaXZhdGVfVmFyaWFibGVzDQorICAqIEB7DQorICAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgQ2xvY2sgRGVmaW5pdGlvbnMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpZm5kZWYgU1lTQ0xLX0ZSRVFfTVNJDQorI2lmZGVmIFNZU0NMS19GUkVRX0hTSQ0KKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBTWVNDTEtfRlJFUV9IU0k7ICAgICAgICAvKiE8IFN5c3RlbSBDbG9jayBGcmVxdWVuY3kgKENvcmUgQ2xvY2spICovDQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV9IU0UNCisgIHVpbnQzMl90IFN5c3RlbUNvcmVDbG9jayAgICAgICAgID0gU1lTQ0xLX0ZSRVFfSFNFOyAgICAgICAgLyohPCBTeXN0ZW0gQ2xvY2sgRnJlcXVlbmN5IChDb3JlIENsb2NrKSAqLw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfNE1Ieg0KKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBTWVNDTEtfRlJFUV80TUh6OyAgICAgICAvKiE8IFN5c3RlbSBDbG9jayBGcmVxdWVuY3kgKENvcmUgQ2xvY2spICovDQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV84TUh6DQorICB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2sgICAgICAgICA9IFNZU0NMS19GUkVRXzhNSHo7ICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8NCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzE2TUh6DQorICB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2sgICAgICAgICA9IFNZU0NMS19GUkVRXzE2TUh6OyAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8NCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzMyTUh6DQorICB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2sgICAgICAgICA9IFNZU0NMS19GUkVRXzMyTUh6OyAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8NCisjZWxzZSAvKiE8IE1TSSBTZWxlY3RlZCBhcyBTeXN0ZW0gQ2xvY2sgc291cmNlICovDQorICB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2sgICAgICAgICA9IE1TSV9WQUxVRTsgICAgICAgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8NCisjZW5kaWYNCisjZWxzZQ0KKyNpZmRlZiBTWVNDTEtfRlJFUV9NU0lfNjRLSHoNCisgIHVpbnQzMl90IFN5c3RlbUNvcmVDbG9jayAgICAgICAgID0gU1lTQ0xLX0ZSRVFfTVNJXzY0S0h6OyAgLyohPCBTeXN0ZW0gQ2xvY2sgRnJlcXVlbmN5IChDb3JlIENsb2NrKSAqLw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfTVNJXzEyOEtIeg0KKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBTWVNDTEtfRlJFUV9NU0lfMTI4S0h6OyAvKiE8IFN5c3RlbSBDbG9jayBGcmVxdWVuY3kgKENvcmUgQ2xvY2spICovDQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV9NU0lfMjU2S0h6DQorICB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2sgICAgICAgICA9IFNZU0NMS19GUkVRX01TSV8yNTZLSHo7IC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8NCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRX01TSV81MTJLSHoNCisgIHVpbnQzMl90IFN5c3RlbUNvcmVDbG9jayAgICAgICAgID0gU1lTQ0xLX0ZSRVFfTVNJXzUxMktIejsgLyohPCBTeXN0ZW0gQ2xvY2sgRnJlcXVlbmN5IChDb3JlIENsb2NrKSAqLw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfTVNJXzFNSHoNCisgIHVpbnQzMl90IFN5c3RlbUNvcmVDbG9jayAgICAgICAgID0gU1lTQ0xLX0ZSRVFfTVNJXzFNSHo7ICAgLyohPCBTeXN0ZW0gQ2xvY2sgRnJlcXVlbmN5IChDb3JlIENsb2NrKSAqLw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfTVNJXzJNSHoNCisgIHVpbnQzMl90IFN5c3RlbUNvcmVDbG9jayAgICAgICAgID0gU1lTQ0xLX0ZSRVFfTVNJXzJNSHo7ICAgLyohPCBTeXN0ZW0gQ2xvY2sgRnJlcXVlbmN5IChDb3JlIENsb2NrKSAqLw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfTVNJXzRNSHoNCisgIHVpbnQzMl90IFN5c3RlbUNvcmVDbG9jayAgICAgICAgID0gU1lTQ0xLX0ZSRVFfTVNJXzRNSHo7ICAgLyohPCBTeXN0ZW0gQ2xvY2sgRnJlcXVlbmN5IChDb3JlIENsb2NrKSAqLw0KKyNlbHNlDQorICB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2sgICAgICAgICA9IE1TSV9WQUxVRTsgICAgICAgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8NCisjZW5kaWYNCisjZW5kaWYNCisNCitfX0kgdWludDhfdCBQTExNdWxUYWJsZVs5XSA9IHszLCA0LCA2LCA4LCAxMiwgMTYsIDI0LCAzMiwgNDh9Ow0KK19fSSB1aW50OF90IE1TSVRhYmxlWzddID0gezAsIDAsIDAsIDAsIDEsIDIsIDR9Ow0KK19fSSB1aW50OF90IEFIQlByZXNjVGFibGVbMTZdID0gezAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDIsIDMsIDQsIDYsIDcsIDgsIDl9Ow0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMXh4X1N5c3RlbV9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcw0KKyAgKiBAew0KKyAgKi8NCisNCitzdGF0aWMgdm9pZCBTZXRTeXNDbG9jayh2b2lkKTsNCisNCisjaWZkZWYgU1lTQ0xLX0ZSRVFfSFNJDQorICBzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvSFNJKHZvaWQpOw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfSFNFDQorICBzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvSFNFKHZvaWQpOw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfNE1Ieg0KKyAgc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUbzQodm9pZCk7DQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV84TUh6DQorICBzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvOCh2b2lkKTsNCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzE2TUh6DQorICBzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvMTYodm9pZCk7DQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV8zMk1Ieg0KKyAgc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUbzMyKHZvaWQpOw0KKyNlbHNlDQorICBzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvTVNJKHZvaWQpOw0KKyNlbmRpZg0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJMMXh4X1N5c3RlbV9Qcml2YXRlX0Z1bmN0aW9ucw0KKyAgKiBAew0KKyAgKi8NCisNCisvKioNCisgICogQGJyaWVmICBTZXR1cCB0aGUgbWljcm9jb250cm9sbGVyIHN5c3RlbQ0KKyAgKiAgICAgICAgIEluaXRpYWxpemUgdGhlIEVtYmVkZGVkIEZsYXNoIEludGVyZmFjZSwgdGhlIFBMTCBhbmQgdXBkYXRlIHRoZQ0KKyAgKiAgICAgICAgIFN5c3RlbUNvcmVDbG9jayB2YXJpYWJsZQ0KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb25seSBhZnRlciByZXNldC4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFN5c3RlbUluaXQgKHZvaWQpDQorew0KKyAgLyohPCBTZXQgTVNJT04gYml0ICovDQorICBSQ0MtPkNSIHw9ICh1aW50MzJfdCkweDAwMDAwMTAwOw0KKw0KKyAgLyohPCBSZXNldCBTV1sxOjBdLCBIUFJFWzM6MF0sIFBQUkUxWzI6MF0sIFBQUkUyWzI6MF0sIE1DT1NFTFsyOjBdIGFuZCBNQ09QUkVbMjowXSBiaXRzICovDQorICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KTB4ODhGRkMwMEM7DQorDQorICAvKiE8IFJlc2V0IEhTSU9OLCBIU0VPTiwgQ1NTT04gYW5kIFBMTE9OIGJpdHMgKi8NCisgIFJDQy0+Q1IgJj0gKHVpbnQzMl90KTB4RUVGRUZGRkU7DQorDQorICAvKiE8IFJlc2V0IEhTRUJZUCBiaXQgKi8NCisgIFJDQy0+Q1IgJj0gKHVpbnQzMl90KTB4RkZGQkZGRkY7DQorDQorICAvKiE8IFJlc2V0IFBMTFNSQywgUExMTVVMWzM6MF0gYW5kIFBMTERJVlsxOjBdIGJpdHMgKi8NCisgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpMHhGRjAyRkZGRjsNCisNCisgIC8qITwgRGlzYWJsZSBhbGwgaW50ZXJydXB0cyAqLw0KKyAgUkNDLT5DSVIgPSAweDAwMDAwMDAwOw0KKw0KKyAgLyohPCBDb25maWd1cmUgdGhlIFN5c3RlbSBjbG9jayBmcmVxdWVuY3ksIEhDTEssIFBDTEsyIGFuZCBQQ0xLMSBwcmVzY2FsZXJzICovDQorICAvKiE8IENvbmZpZ3VyZSB0aGUgRmxhc2ggTGF0ZW5jeSBjeWNsZXMgYW5kIGVuYWJsZSBwcmVmZXRjaCBidWZmZXIgKi8NCisgIFNldFN5c0Nsb2NrKCk7DQorDQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIFVwZGF0ZSBTeXN0ZW1Db3JlQ2xvY2sgYWNjb3JkaW5nIHRvIENsb2NrIFJlZ2lzdGVyIFZhbHVlcw0KKyAgKiBAbm90ZSAgIE5vbmUNCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCit2b2lkIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSAodm9pZCkNCit7DQorICB1aW50MzJfdCB0bXAgPSAwLCBwbGxtdWwgPSAwLCBwbGxkaXYgPSAwLCBwbGxzb3VyY2UgPSAwLCBtc2lyYW5nZSA9IDA7DQorDQorICAvKiBHZXQgU1lTQ0xLIHNvdXJjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIHRtcCA9IFJDQy0+Q0ZHUiAmIFJDQ19DRkdSX1NXUzsNCisNCisgIHN3aXRjaCAodG1wKQ0KKyAgew0KKyAgICBjYXNlIDB4MDA6ICAvKiBNU0kgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8NCisgICAgICBtc2lyYW5nZSA9IChSQ0MtPklDU0NSICYgUkNDX0lDU0NSX01TSVJBTkdFKSA+PiAxMzsNCisgICAgICBTeXN0ZW1Db3JlQ2xvY2sgPSAoKCgxIDw8IG1zaXJhbmdlKSAqIDY0MDAwKSAtIChNU0lUYWJsZVttc2lyYW5nZV0gKiAyNDAwMCkpOw0KKyAgICAgIGJyZWFrOw0KKyAgICBjYXNlIDB4MDQ6ICAvKiBIU0kgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8NCisgICAgICBTeXN0ZW1Db3JlQ2xvY2sgPSBIU0lfVkFMVUU7DQorICAgICAgYnJlYWs7DQorICAgIGNhc2UgMHgwODogIC8qIEhTRSB1c2VkIGFzIHN5c3RlbSBjbG9jayAqLw0KKyAgICAgIFN5c3RlbUNvcmVDbG9jayA9IEhTRV9WQUxVRTsNCisgICAgICBicmVhazsNCisgICAgY2FzZSAweDBDOiAgLyogUExMIHVzZWQgYXMgc3lzdGVtIGNsb2NrICovDQorICAgICAgLyogR2V0IFBMTCBjbG9jayBzb3VyY2UgYW5kIG11bHRpcGxpY2F0aW9uIGZhY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgICAgICBwbGxtdWwgPSBSQ0MtPkNGR1IgJiBSQ0NfQ0ZHUl9QTExNVUw7DQorICAgICAgcGxsZGl2ID0gUkNDLT5DRkdSICYgUkNDX0NGR1JfUExMRElWOw0KKyAgICAgIHBsbG11bCA9IFBMTE11bFRhYmxlWyhwbGxtdWwgPj4gMTgpXTsNCisgICAgICBwbGxkaXYgPSAocGxsZGl2ID4+IDIyKSArIDE7DQorDQorICAgICAgcGxsc291cmNlID0gUkNDLT5DRkdSICYgUkNDX0NGR1JfUExMU1JDOw0KKw0KKyAgICAgIGlmIChwbGxzb3VyY2UgPT0gMHgwMCkNCisgICAgICB7DQorICAgICAgICAvKiBIU0kgb3NjaWxsYXRvciBjbG9jayBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkgKi8NCisgICAgICAgIFN5c3RlbUNvcmVDbG9jayA9ICgoKEhTSV9WQUxVRSkgKiBwbGxtdWwpIC8gcGxsZGl2KTsNCisgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICAgIC8qIEhTRSBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkgKi8NCisgICAgICAgIFN5c3RlbUNvcmVDbG9jayA9ICgoKEhTRV9WQUxVRSkgKiBwbGxtdWwpIC8gcGxsZGl2KTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorICAgIGRlZmF1bHQ6DQorICAgICAgU3lzdGVtQ29yZUNsb2NrID0gTVNJX1ZBTFVFOw0KKyAgICAgIGJyZWFrOw0KKyAgfQ0KKyAgLyogQ29tcHV0ZSBIQ0xLIGNsb2NrIGZyZXF1ZW5jeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAvKiBHZXQgSENMSyBwcmVzY2FsZXIgKi8NCisgIHRtcCA9IEFIQlByZXNjVGFibGVbKChSQ0MtPkNGR1IgJiBSQ0NfQ0ZHUl9IUFJFKSA+PiA0KV07DQorICAvKiBIQ0xLIGNsb2NrIGZyZXF1ZW5jeSAqLw0KKyAgU3lzdGVtQ29yZUNsb2NrID4+PSB0bXA7DQorfQ0KKw0KKy8qKg0KKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFN5c3RlbSBjbG9jayBmcmVxdWVuY3ksIEhDTEssIFBDTEsyIGFuZCBQQ0xLMSBwcmVzY2FsZXJzLg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3N0YXRpYyB2b2lkIFNldFN5c0Nsb2NrKHZvaWQpDQorew0KKyNpZmRlZiBTWVNDTEtfRlJFUV9IU0kNCisgIFNldFN5c0Nsb2NrVG9IU0koKTsNCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRX0hTRQ0KKyAgU2V0U3lzQ2xvY2tUb0hTRSgpOw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfNE1Ieg0KKyAgU2V0U3lzQ2xvY2tUbzQoKTsNCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzhNSHoNCisgIFNldFN5c0Nsb2NrVG84KCk7DQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV8xNk1Ieg0KKyAgU2V0U3lzQ2xvY2tUbzE2KCk7DQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV8zMk1Ieg0KKyAgU2V0U3lzQ2xvY2tUbzMyKCk7DQorI2Vsc2UNCisgIFNldFN5c0Nsb2NrVG9NU0koKTsNCisjZW5kaWYNCisNCisgLyogSWYgbm9uZSBvZiB0aGUgZGVmaW5lIGFib3ZlIGlzIGVuYWJsZWQsIHRoZSBNU0kgKDJNSHogZGVmYXVsdCkgaXMgdXNlZCBhcw0KKyAgICBTeXN0ZW0gY2xvY2sgc291cmNlIChkZWZhdWx0IGFmdGVyIHJlc2V0KSAqLw0KK30NCisNCisjaWZkZWYgU1lTQ0xLX0ZSRVFfSFNJDQorLyoqDQorICAqIEBicmllZiAgU2VsZWN0cyBIU0kgYXMgU3lzdGVtIGNsb2NrIHNvdXJjZSBhbmQgY29uZmlndXJlIEhDTEssIFBDTEsyDQorICAqICAgICAgICAgYW5kIFBDTEsxIHByZXNjYWxlcnMuDQorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGFmdGVyIHJlc2V0Lg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3N0YXRpYyB2b2lkIFNldFN5c0Nsb2NrVG9IU0kodm9pZCkNCit7DQorICBfX0lPIHVpbnQzMl90IFN0YXJ0VXBDb3VudGVyID0gMCwgSFNJU3RhdHVzID0gMDsNCisNCisgIC8qIFNZU0NMSywgSENMSywgUENMSzIgYW5kIFBDTEsxIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIC8qIEVuYWJsZSBIU0kgKi8NCisgIFJDQy0+Q1IgfD0gKCh1aW50MzJfdClSQ0NfQ1JfSFNJT04pOw0KKw0KKyAgLyogV2FpdCB0aWxsIEhTSSBpcyByZWFkeSBhbmQgaWYgVGltZSBvdXQgaXMgcmVhY2hlZCBleGl0ICovDQorICBkbw0KKyAgew0KKyAgICBIU0lTdGF0dXMgPSBSQ0MtPkNSICYgUkNDX0NSX0hTSVJEWTsNCisgICAgU3RhcnRVcENvdW50ZXIrKzsNCisgIH0gd2hpbGUoKEhTSVN0YXR1cyA9PSAwKSAmJiAoU3RhcnRVcENvdW50ZXIgIT0gSFNFX1NUQVJUVVBfVElNRU9VVCkpOw0KKw0KKyAgaWYgKChSQ0MtPkNSICYgUkNDX0NSX0hTSVJEWSkgIT0gUkVTRVQpDQorICB7DQorICAgIEhTSVN0YXR1cyA9ICh1aW50MzJfdCkweDAxOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBIU0lTdGF0dXMgPSAodWludDMyX3QpMHgwMDsNCisgIH0NCisNCisgIGlmIChIU0lTdGF0dXMgPT0gKHVpbnQzMl90KTB4MDEpDQorICB7DQorICAgIC8qIEVuYWJsZSA2NC1iaXQgYWNjZXNzICovDQorICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX0FDQzY0Ow0KKw0KKyAgICAvKiBFbmFibGUgUHJlZmV0Y2ggQnVmZmVyICovDQorICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX1BSRlRFTjsNCisNCisgICAgLyogRmxhc2ggMSB3YWl0IHN0YXRlICovDQorICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX0xBVEVOQ1k7DQorDQorICAgIC8qIEVuYWJsZSB0aGUgUFdSIEFQQjEgQ2xvY2sgKi8NCisgICAgUkNDLT5BUEIxRU5SIHw9IFJDQ19BUEIxRU5SX1BXUkVOOw0KKw0KKyAgICAvKiBTZWxlY3QgdGhlIFZvbHRhZ2UgUmFuZ2UgMSAoMS44VikgKi8NCisgICAgUFdSLT5DUiA9IFBXUl9DUl9WT1NfMDsNCisNCisgICAgLyogV2FpdCBVbnRpbCB0aGUgVm9sdGFnZSBSZWd1bGF0b3IgaXMgcmVhZHkgKi8NCisgICAgd2hpbGUoKFBXUi0+Q1NSICYgUFdSX0NTUl9WT1NGKSAhPSBSRVNFVCkNCisgICAgew0KKyAgICB9DQorDQorICAgIC8qIEhDTEsgPSBTWVNDTEsgKi8NCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9IUFJFX0RJVjE7DQorDQorICAgIC8qIFBDTEsyID0gSENMSyAqLw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUyX0RJVjE7DQorDQorICAgIC8qIFBDTEsxID0gSENMSyAqLw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUxX0RJVjE7DQorDQorICAgIC8qIFNlbGVjdCBIU0kgYXMgc3lzdGVtIGNsb2NrIHNvdXJjZSAqLw0KKyAgICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfQ0ZHUl9TVykpOw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1NXX0hTSTsNCisNCisgICAgLyogV2FpdCB0aWxsIEhTSSBpcyB1c2VkIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8NCisgICAgd2hpbGUgKChSQ0MtPkNGR1IgJiAodWludDMyX3QpUkNDX0NGR1JfU1dTKSAhPSAodWludDMyX3QpMHgwNCkNCisgICAgew0KKyAgICB9DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIElmIEhTSSBmYWlscyB0byBzdGFydC11cCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgaGF2ZSB3cm9uZyBjbG9jaw0KKyAgICAgICBjb25maWd1cmF0aW9uLiBVc2VyIGNhbiBhZGQgaGVyZSBzb21lIGNvZGUgdG8gZGVhbCB3aXRoIHRoaXMgZXJyb3IgKi8NCisgIH0NCit9DQorDQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV9IU0UNCisvKioNCisgICogQGJyaWVmICBTZWxlY3RzIEhTRSBhcyBTeXN0ZW0gY2xvY2sgc291cmNlIGFuZCBjb25maWd1cmUgSENMSywgUENMSzINCisgICogICAgICAgICBhbmQgUENMSzEgcHJlc2NhbGVycy4NCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIG9ubHkgYWZ0ZXIgcmVzZXQuDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQorc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUb0hTRSh2b2lkKQ0KK3sNCisgIF9fSU8gdWludDMyX3QgU3RhcnRVcENvdW50ZXIgPSAwLCBIU0VTdGF0dXMgPSAwOw0KKw0KKyAgLyogU1lTQ0xLLCBIQ0xLLCBQQ0xLMiBhbmQgUENMSzEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgLyogRW5hYmxlIEhTRSAqLw0KKyAgUkNDLT5DUiB8PSAoKHVpbnQzMl90KVJDQ19DUl9IU0VPTik7DQorDQorICAvKiBXYWl0IHRpbGwgSFNFIGlzIHJlYWR5IGFuZCBpZiBUaW1lIG91dCBpcyByZWFjaGVkIGV4aXQgKi8NCisgIGRvDQorICB7DQorICAgIEhTRVN0YXR1cyA9IFJDQy0+Q1IgJiBSQ0NfQ1JfSFNFUkRZOw0KKyAgICBTdGFydFVwQ291bnRlcisrOw0KKyAgfSB3aGlsZSgoSFNFU3RhdHVzID09IDApICYmIChTdGFydFVwQ291bnRlciAhPSBIU0VfU1RBUlRVUF9USU1FT1VUKSk7DQorDQorICBpZiAoKFJDQy0+Q1IgJiBSQ0NfQ1JfSFNFUkRZKSAhPSBSRVNFVCkNCisgIHsNCisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDE7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAwOw0KKyAgfQ0KKw0KKyAgaWYgKEhTRVN0YXR1cyA9PSAodWludDMyX3QpMHgwMSkNCisgIHsNCisgICAgLyogRmxhc2ggMCB3YWl0IHN0YXRlICovDQorICAgIEZMQVNILT5BQ1IgJj0gfkZMQVNIX0FDUl9MQVRFTkNZOw0KKw0KKyAgICAvKiBEaXNhYmxlIFByZWZldGNoIEJ1ZmZlciAqLw0KKyAgICBGTEFTSC0+QUNSICY9IH5GTEFTSF9BQ1JfUFJGVEVOOw0KKw0KKyAgICAvKiBEaXNhYmxlIDY0LWJpdCBhY2Nlc3MgKi8NCisgICAgRkxBU0gtPkFDUiAmPSB+RkxBU0hfQUNSX0FDQzY0Ow0KKw0KKyAgICAvKiBFbmFibGUgdGhlIFBXUiBBUEIxIENsb2NrICovDQorICAgIFJDQy0+QVBCMUVOUiB8PSBSQ0NfQVBCMUVOUl9QV1JFTjsNCisNCisgICAgLyogU2VsZWN0IHRoZSBWb2x0YWdlIFJhbmdlIDIgKDEuNVYpICovDQorICAgIFBXUi0+Q1IgPSBQV1JfQ1JfVk9TXzE7DQorDQorICAgIC8qIFdhaXQgVW50aWwgdGhlIFZvbHRhZ2UgUmVndWxhdG9yIGlzIHJlYWR5ICovDQorICAgIHdoaWxlKChQV1ItPkNTUiAmIFBXUl9DU1JfVk9TRikgIT0gUkVTRVQpDQorICAgIHsNCisgICAgfQ0KKw0KKyAgICAvKiBIQ0xLID0gU1lTQ0xLICovDQorICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfSFBSRV9ESVYxOw0KKw0KKyAgICAvKiBQQ0xLMiA9IEhDTEsgKi8NCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9QUFJFMl9ESVYxOw0KKw0KKyAgICAvKiBQQ0xLMSA9IEhDTEsgKi8NCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9QUFJFMV9ESVYxOw0KKw0KKyAgICAvKiBTZWxlY3QgSFNFIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8NCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0NGR1JfU1cpKTsNCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9TV19IU0U7DQorDQorICAgIC8qIFdhaXQgdGlsbCBIU0UgaXMgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovDQorICAgIHdoaWxlICgoUkNDLT5DRkdSICYgKHVpbnQzMl90KVJDQ19DRkdSX1NXUykgIT0gKHVpbnQzMl90KTB4MDgpDQorICAgIHsNCisgICAgfQ0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBJZiBIU0UgZmFpbHMgdG8gc3RhcnQtdXAsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGhhdmUgd3JvbmcgY2xvY2sNCisgICAgICAgY29uZmlndXJhdGlvbi4gVXNlciBjYW4gYWRkIGhlcmUgc29tZSBjb2RlIHRvIGRlYWwgd2l0aCB0aGlzIGVycm9yICovDQorICB9DQorfQ0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfNE1Ieg0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgU3lzdGVtIGNsb2NrIGZyZXF1ZW5jeSB0byA0TUh6IGFuZCBjb25maWd1cmUgSENMSywgUENMSzINCisgICogICAgICAgICBhbmQgUENMSzEgcHJlc2NhbGVycy4NCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIG9ubHkgYWZ0ZXIgcmVzZXQuDQorICAqIEBwYXJhbSAgTm9uZQ0KKyAgKiBAcmV0dmFsIE5vbmUNCisgICovDQorc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUbzQodm9pZCkNCit7DQorICBfX0lPIHVpbnQzMl90IFN0YXJ0VXBDb3VudGVyID0gMCwgSFNFU3RhdHVzID0gMDsNCisNCisgIC8qIFNZU0NMSywgSENMSywgUENMSzIgYW5kIFBDTEsxIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIC8qIEVuYWJsZSBIU0UgKi8NCisgIFJDQy0+Q1IgfD0gKCh1aW50MzJfdClSQ0NfQ1JfSFNFT04pOw0KKw0KKyAgLyogV2FpdCB0aWxsIEhTRSBpcyByZWFkeSBhbmQgaWYgVGltZSBvdXQgaXMgcmVhY2hlZCBleGl0ICovDQorICBkbw0KKyAgew0KKyAgICBIU0VTdGF0dXMgPSBSQ0MtPkNSICYgUkNDX0NSX0hTRVJEWTsNCisgICAgU3RhcnRVcENvdW50ZXIrKzsNCisgIH0gd2hpbGUoKEhTRVN0YXR1cyA9PSAwKSAmJiAoU3RhcnRVcENvdW50ZXIgIT0gSFNFX1NUQVJUVVBfVElNRU9VVCkpOw0KKw0KKyAgaWYgKChSQ0MtPkNSICYgUkNDX0NSX0hTRVJEWSkgIT0gUkVTRVQpDQorICB7DQorICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAxOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBIU0VTdGF0dXMgPSAodWludDMyX3QpMHgwMDsNCisgIH0NCisNCisgIGlmIChIU0VTdGF0dXMgPT0gKHVpbnQzMl90KTB4MDEpDQorICB7DQorICAgIC8qIEZsYXNoIDAgd2FpdCBzdGF0ZSAqLw0KKyAgICBGTEFTSC0+QUNSICY9IH5GTEFTSF9BQ1JfTEFURU5DWTsNCisNCisgICAgLyogRGlzYWJsZSBQcmVmZXRjaCBCdWZmZXIgKi8NCisgICAgRkxBU0gtPkFDUiAmPSB+RkxBU0hfQUNSX1BSRlRFTjsNCisNCisgICAgLyogRGlzYWJsZSA2NC1iaXQgYWNjZXNzICovDQorICAgIEZMQVNILT5BQ1IgJj0gfkZMQVNIX0FDUl9BQ0M2NDsNCisNCisgICAgLyogRW5hYmxlIHRoZSBQV1IgQVBCMSBDbG9jayAqLw0KKyAgICBSQ0MtPkFQQjFFTlIgfD0gUkNDX0FQQjFFTlJfUFdSRU47DQorDQorICAgIC8qIFNlbGVjdCB0aGUgVm9sdGFnZSBSYW5nZSAyICgxLjVWKSAqLw0KKyAgICBQV1ItPkNSID0gUFdSX0NSX1ZPU18xOw0KKw0KKyAgICAvKiBXYWl0IFVudGlsIHRoZSBWb2x0YWdlIFJlZ3VsYXRvciBpcyByZWFkeSAqLw0KKyAgICB3aGlsZSgoUFdSLT5DU1IgJiBQV1JfQ1NSX1ZPU0YpICE9IFJFU0VUKQ0KKyAgICB7DQorICAgIH0NCisNCisgICAgLyogSENMSyA9IFNZU0NMSyAqLw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX0hQUkVfRElWMjsNCisNCisgICAgLyogUENMSzIgPSBIQ0xLICovDQorICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTJfRElWMTsNCisNCisgICAgLyogUENMSzEgPSBIQ0xLICovDQorICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTFfRElWMTsNCisNCisgICAgLyogU2VsZWN0IEhTRSBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovDQorICAgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+KFJDQ19DRkdSX1NXKSk7DQorICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfU1dfSFNFOw0KKw0KKyAgICAvKiBXYWl0IHRpbGwgSFNFIGlzIHVzZWQgYXMgc3lzdGVtIGNsb2NrIHNvdXJjZSAqLw0KKyAgICB3aGlsZSAoKFJDQy0+Q0ZHUiAmICh1aW50MzJfdClSQ0NfQ0ZHUl9TV1MpICE9ICh1aW50MzJfdCkweDA4KQ0KKyAgICB7DQorICAgIH0NCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogSWYgSFNFIGZhaWxzIHRvIHN0YXJ0LXVwLCB0aGUgYXBwbGljYXRpb24gd2lsbCBoYXZlIHdyb25nIGNsb2NrDQorICAgICAgIGNvbmZpZ3VyYXRpb24uIFVzZXIgY2FuIGFkZCBoZXJlIHNvbWUgY29kZSB0byBkZWFsIHdpdGggdGhpcyBlcnJvciAqLw0KKyAgfQ0KK30NCisNCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzhNSHoNCisvKioNCisgICogQGJyaWVmICBTZXRzIFN5c3RlbSBjbG9jayBmcmVxdWVuY3kgdG8gOE1IeiBhbmQgY29uZmlndXJlIEhDTEssIFBDTEsyDQorICAqICAgICAgICAgYW5kIFBDTEsxIHByZXNjYWxlcnMuDQorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGFmdGVyIHJlc2V0Lg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3N0YXRpYyB2b2lkIFNldFN5c0Nsb2NrVG84KHZvaWQpDQorew0KKyAgX19JTyB1aW50MzJfdCBTdGFydFVwQ291bnRlciA9IDAsIEhTRVN0YXR1cyA9IDA7DQorDQorICAvKiBTWVNDTEssIEhDTEssIFBDTEsyIGFuZCBQQ0xLMSBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAvKiBFbmFibGUgSFNFICovDQorICBSQ0MtPkNSIHw9ICgodWludDMyX3QpUkNDX0NSX0hTRU9OKTsNCisNCisgIC8qIFdhaXQgdGlsbCBIU0UgaXMgcmVhZHkgYW5kIGlmIFRpbWUgb3V0IGlzIHJlYWNoZWQgZXhpdCAqLw0KKyAgZG8NCisgIHsNCisgICAgSFNFU3RhdHVzID0gUkNDLT5DUiAmIFJDQ19DUl9IU0VSRFk7DQorICAgIFN0YXJ0VXBDb3VudGVyKys7DQorICB9IHdoaWxlKChIU0VTdGF0dXMgPT0gMCkgJiYgKFN0YXJ0VXBDb3VudGVyICE9IEhTRV9TVEFSVFVQX1RJTUVPVVQpKTsNCisNCisgIGlmICgoUkNDLT5DUiAmIFJDQ19DUl9IU0VSRFkpICE9IFJFU0VUKQ0KKyAgew0KKyAgICBIU0VTdGF0dXMgPSAodWludDMyX3QpMHgwMTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDA7DQorICB9DQorDQorICBpZiAoSFNFU3RhdHVzID09ICh1aW50MzJfdCkweDAxKQ0KKyAgew0KKyAgICAvKiBGbGFzaCAwIHdhaXQgc3RhdGUgKi8NCisgICAgRkxBU0gtPkFDUiAmPSB+RkxBU0hfQUNSX0xBVEVOQ1k7DQorDQorICAgIC8qIERpc2FibGUgUHJlZmV0Y2ggQnVmZmVyICovDQorICAgIEZMQVNILT5BQ1IgJj0gfkZMQVNIX0FDUl9QUkZURU47DQorDQorICAgIC8qIERpc2FibGUgNjQtYml0IGFjY2VzcyAqLw0KKyAgICBGTEFTSC0+QUNSICY9IH5GTEFTSF9BQ1JfQUNDNjQ7DQorDQorICAgIC8qIEVuYWJsZSB0aGUgUFdSIEFQQjEgQ2xvY2sgKi8NCisgICAgUkNDLT5BUEIxRU5SIHw9IFJDQ19BUEIxRU5SX1BXUkVOOw0KKw0KKyAgICAvKiBTZWxlY3QgdGhlIFZvbHRhZ2UgUmFuZ2UgMiAoMS41VikgKi8NCisgICAgUFdSLT5DUiA9IFBXUl9DUl9WT1NfMTsNCisNCisgICAgLyogV2FpdCBVbnRpbCB0aGUgVm9sdGFnZSBSZWd1bGF0b3IgaXMgcmVhZHkgKi8NCisgICAgd2hpbGUoKFBXUi0+Q1NSICYgUFdSX0NTUl9WT1NGKSAhPSBSRVNFVCkNCisgICAgew0KKyAgICB9DQorDQorICAgIC8qIEhDTEsgPSBTWVNDTEsgKi8NCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9IUFJFX0RJVjE7DQorDQorICAgIC8qIFBDTEsyID0gSENMSyAqLw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUyX0RJVjE7DQorDQorICAgIC8qIFBDTEsxID0gSENMSyAqLw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUxX0RJVjE7DQorDQorICAgIC8qIFNlbGVjdCBIU0UgYXMgc3lzdGVtIGNsb2NrIHNvdXJjZSAqLw0KKyAgICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfQ0ZHUl9TVykpOw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1NXX0hTRTsNCisNCisgICAgLyogV2FpdCB0aWxsIEhTRSBpcyB1c2VkIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8NCisgICAgd2hpbGUgKChSQ0MtPkNGR1IgJiAodWludDMyX3QpUkNDX0NGR1JfU1dTKSAhPSAodWludDMyX3QpMHgwOCkNCisgICAgew0KKyAgICB9DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIElmIEhTRSBmYWlscyB0byBzdGFydC11cCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgaGF2ZSB3cm9uZyBjbG9jaw0KKyAgICAgICBjb25maWd1cmF0aW9uLiBVc2VyIGNhbiBhZGQgaGVyZSBzb21lIGNvZGUgdG8gZGVhbCB3aXRoIHRoaXMgZXJyb3IgKi8NCisgIH0NCit9DQorDQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV8xNk1Ieg0KKy8qKg0KKyAgKiBAYnJpZWYgIFNldHMgU3lzdGVtIGNsb2NrIGZyZXF1ZW5jeSB0byAxNk1IeiBhbmQgY29uZmlndXJlIEhDTEssIFBDTEsyDQorICAqICAgICAgICAgYW5kIFBDTEsxIHByZXNjYWxlcnMuDQorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGFmdGVyIHJlc2V0Lg0KKyAgKiBAcGFyYW0gIE5vbmUNCisgICogQHJldHZhbCBOb25lDQorICAqLw0KK3N0YXRpYyB2b2lkIFNldFN5c0Nsb2NrVG8xNih2b2lkKQ0KK3sNCisgIF9fSU8gdWludDMyX3QgU3RhcnRVcENvdW50ZXIgPSAwLCBIU0VTdGF0dXMgPSAwOw0KKw0KKyAgLyogU1lTQ0xLLCBIQ0xLLCBQQ0xLMiBhbmQgUENMSzEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgLyogRW5hYmxlIEhTRSAqLw0KKyAgUkNDLT5DUiB8PSAoKHVpbnQzMl90KVJDQ19DUl9IU0VPTik7DQorDQorICAvKiBXYWl0IHRpbGwgSFNFIGlzIHJlYWR5IGFuZCBpZiBUaW1lIG91dCBpcyByZWFjaGVkIGV4aXQgKi8NCisgIGRvDQorICB7DQorICAgIEhTRVN0YXR1cyA9IFJDQy0+Q1IgJiBSQ0NfQ1JfSFNFUkRZOw0KKyAgICBTdGFydFVwQ291bnRlcisrOw0KKyAgfSB3aGlsZSgoSFNFU3RhdHVzID09IDApICYmIChTdGFydFVwQ291bnRlciAhPSBIU0VfU1RBUlRVUF9USU1FT1VUKSk7DQorDQorICBpZiAoKFJDQy0+Q1IgJiBSQ0NfQ1JfSFNFUkRZKSAhPSBSRVNFVCkNCisgIHsNCisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDE7DQorICB9DQorICBlbHNlDQorICB7DQorICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAwOw0KKyAgfQ0KKw0KKyAgaWYgKEhTRVN0YXR1cyA9PSAodWludDMyX3QpMHgwMSkNCisgIHsNCisgICAgLyogRW5hYmxlIDY0LWJpdCBhY2Nlc3MgKi8NCisgICAgRkxBU0gtPkFDUiB8PSBGTEFTSF9BQ1JfQUNDNjQ7DQorDQorICAgIC8qIEVuYWJsZSBQcmVmZXRjaCBCdWZmZXIgKi8NCisgICAgRkxBU0gtPkFDUiB8PSBGTEFTSF9BQ1JfUFJGVEVOOw0KKw0KKyAgICAvKiBGbGFzaCAxIHdhaXQgc3RhdGUgKi8NCisgICAgRkxBU0gtPkFDUiB8PSBGTEFTSF9BQ1JfTEFURU5DWTsNCisNCisgICAgLyogRW5hYmxlIHRoZSBQV1IgQVBCMSBDbG9jayAqLw0KKyAgICBSQ0MtPkFQQjFFTlIgfD0gUkNDX0FQQjFFTlJfUFdSRU47DQorDQorICAgIC8qIFNlbGVjdCB0aGUgVm9sdGFnZSBSYW5nZSAyICgxLjVWKSAqLw0KKyAgICBQV1ItPkNSID0gUFdSX0NSX1ZPU18xOw0KKw0KKyAgICAvKiBXYWl0IFVudGlsIHRoZSBWb2x0YWdlIFJlZ3VsYXRvciBpcyByZWFkeSAqLw0KKyAgICB3aGlsZSgoUFdSLT5DU1IgJiBQV1JfQ1NSX1ZPU0YpICE9IFJFU0VUKQ0KKyAgICB7DQorICAgIH0NCisNCisgICAgLyogSENMSyA9IFNZU0NMSyAqLw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX0hQUkVfRElWMjsNCisNCisgICAgLyogUENMSzIgPSBIQ0xLICovDQorICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTJfRElWMTsNCisNCisgICAgLyogUENMSzEgPSBIQ0xLICovDQorICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTFfRElWMTsNCisNCisgICAgLyogIFBMTCBjb25maWd1cmF0aW9uOiBQTExDTEsgPSAoSFNFICogMTIpIC8gMyA9IDMyTUh6ICovDQorICAgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+KFJDQ19DRkdSX1BMTFNSQyB8IFJDQ19DRkdSX1BMTE1VTCB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSX1BMTERJVikpOw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KShSQ0NfQ0ZHUl9QTExTUkNfSFNFIHwgUkNDX0NGR1JfUExMTVVMMTIgfCBSQ0NfQ0ZHUl9QTExESVYzKTsNCisNCisgICAgLyogRW5hYmxlIFBMTCAqLw0KKyAgICBSQ0MtPkNSIHw9IFJDQ19DUl9QTExPTjsNCisNCisgICAgLyogV2FpdCB0aWxsIFBMTCBpcyByZWFkeSAqLw0KKyAgICB3aGlsZSgoUkNDLT5DUiAmIFJDQ19DUl9QTExSRFkpID09IDApDQorICAgIHsNCisgICAgfQ0KKw0KKyAgICAvKiBTZWxlY3QgUExMIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8NCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0NGR1JfU1cpKTsNCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9TV19QTEw7DQorDQorICAgIC8qIFdhaXQgdGlsbCBQTEwgaXMgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovDQorICAgIHdoaWxlICgoUkNDLT5DRkdSICYgKHVpbnQzMl90KVJDQ19DRkdSX1NXUykgIT0gKHVpbnQzMl90KTB4MEMpDQorICAgIHsNCisgICAgfQ0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBJZiBIU0UgZmFpbHMgdG8gc3RhcnQtdXAsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGhhdmUgd3JvbmcgY2xvY2sNCisgICAgICAgY29uZmlndXJhdGlvbi4gVXNlciBjYW4gYWRkIGhlcmUgc29tZSBjb2RlIHRvIGRlYWwgd2l0aCB0aGlzIGVycm9yICovDQorICB9DQorfQ0KKw0KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfMzJNSHoNCisvKioNCisgICogQGJyaWVmICBTZXRzIFN5c3RlbSBjbG9jayBmcmVxdWVuY3kgdG8gMzJNSHogYW5kIGNvbmZpZ3VyZSBIQ0xLLCBQQ0xLMg0KKyAgKiAgICAgICAgIGFuZCBQQ0xLMSBwcmVzY2FsZXJzLg0KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb25seSBhZnRlciByZXNldC4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCitzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvMzIodm9pZCkNCit7DQorICBfX0lPIHVpbnQzMl90IFN0YXJ0VXBDb3VudGVyID0gMCwgSFNFU3RhdHVzID0gMDsNCisNCisgIC8qIFNZU0NMSywgSENMSywgUENMSzIgYW5kIFBDTEsxIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgIC8qIEVuYWJsZSBIU0UgKi8NCisgIFJDQy0+Q1IgfD0gKCh1aW50MzJfdClSQ0NfQ1JfSFNFT04pOw0KKw0KKyAgLyogV2FpdCB0aWxsIEhTRSBpcyByZWFkeSBhbmQgaWYgVGltZSBvdXQgaXMgcmVhY2hlZCBleGl0ICovDQorICBkbw0KKyAgew0KKyAgICBIU0VTdGF0dXMgPSBSQ0MtPkNSICYgUkNDX0NSX0hTRVJEWTsNCisgICAgU3RhcnRVcENvdW50ZXIrKzsNCisgIH0gd2hpbGUoKEhTRVN0YXR1cyA9PSAwKSAmJiAoU3RhcnRVcENvdW50ZXIgIT0gSFNFX1NUQVJUVVBfVElNRU9VVCkpOw0KKw0KKyAgaWYgKChSQ0MtPkNSICYgUkNDX0NSX0hTRVJEWSkgIT0gUkVTRVQpDQorICB7DQorICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAxOw0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICBIU0VTdGF0dXMgPSAodWludDMyX3QpMHgwMDsNCisgIH0NCisNCisgIGlmIChIU0VTdGF0dXMgPT0gKHVpbnQzMl90KTB4MDEpDQorICB7DQorICAgIC8qIEVuYWJsZSA2NC1iaXQgYWNjZXNzICovDQorICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX0FDQzY0Ow0KKw0KKyAgICAvKiBFbmFibGUgUHJlZmV0Y2ggQnVmZmVyICovDQorICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX1BSRlRFTjsNCisNCisgICAgLyogRmxhc2ggMSB3YWl0IHN0YXRlICovDQorICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX0xBVEVOQ1k7DQorDQorICAgIC8qIEVuYWJsZSB0aGUgUFdSIEFQQjEgQ2xvY2sgKi8NCisgICAgUkNDLT5BUEIxRU5SIHw9IFJDQ19BUEIxRU5SX1BXUkVOOw0KKw0KKyAgICAvKiBTZWxlY3QgdGhlIFZvbHRhZ2UgUmFuZ2UgMSAoMS44VikgKi8NCisgICAgUFdSLT5DUiA9IFBXUl9DUl9WT1NfMDsNCisNCisgICAgLyogV2FpdCBVbnRpbCB0aGUgVm9sdGFnZSBSZWd1bGF0b3IgaXMgcmVhZHkgKi8NCisgICAgd2hpbGUoKFBXUi0+Q1NSICYgUFdSX0NTUl9WT1NGKSAhPSBSRVNFVCkNCisgICAgew0KKyAgICB9DQorDQorICAgIC8qIEhDTEsgPSBTWVNDTEsgKi8NCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9IUFJFX0RJVjE7DQorDQorICAgIC8qIFBDTEsyID0gSENMSyAqLw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUyX0RJVjE7DQorDQorICAgIC8qIFBDTEsxID0gSENMSyAqLw0KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUxX0RJVjE7DQorDQorICAgIC8qICBQTEwgY29uZmlndXJhdGlvbjogUExMQ0xLID0gKEhTRSAqIDEyKSAvIDMgPSAzMk1IeiAqLw0KKyAgICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfQ0ZHUl9QTExTUkMgfCBSQ0NfQ0ZHUl9QTExNVUwgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUl9QTExESVYpKTsNCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMU1JDX0hTRSB8IFJDQ19DRkdSX1BMTE1VTDEyIHwgUkNDX0NGR1JfUExMRElWMyk7DQorDQorICAgIC8qIEVuYWJsZSBQTEwgKi8NCisgICAgUkNDLT5DUiB8PSBSQ0NfQ1JfUExMT047DQorDQorICAgIC8qIFdhaXQgdGlsbCBQTEwgaXMgcmVhZHkgKi8NCisgICAgd2hpbGUoKFJDQy0+Q1IgJiBSQ0NfQ1JfUExMUkRZKSA9PSAwKQ0KKyAgICB7DQorICAgIH0NCisNCisgICAgLyogU2VsZWN0IFBMTCBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovDQorICAgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+KFJDQ19DRkdSX1NXKSk7DQorICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfU1dfUExMOw0KKw0KKyAgICAvKiBXYWl0IHRpbGwgUExMIGlzIHVzZWQgYXMgc3lzdGVtIGNsb2NrIHNvdXJjZSAqLw0KKyAgICB3aGlsZSAoKFJDQy0+Q0ZHUiAmICh1aW50MzJfdClSQ0NfQ0ZHUl9TV1MpICE9ICh1aW50MzJfdCkweDBDKQ0KKyAgICB7DQorICAgIH0NCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgLyogSWYgSFNFIGZhaWxzIHRvIHN0YXJ0LXVwLCB0aGUgYXBwbGljYXRpb24gd2lsbCBoYXZlIHdyb25nIGNsb2NrDQorICAgICAgIGNvbmZpZ3VyYXRpb24uIFVzZXIgY2FuIGFkZCBoZXJlIHNvbWUgY29kZSB0byBkZWFsIHdpdGggdGhpcyBlcnJvciAqLw0KKyAgfQ0KK30NCisNCisjZWxzZQ0KKy8qKg0KKyAgKiBAYnJpZWYgIFNlbGVjdHMgTVNJIGFzIFN5c3RlbSBjbG9jayBzb3VyY2UgYW5kIGNvbmZpZ3VyZSBIQ0xLLCBQQ0xLMg0KKyAgKiAgICAgICAgIGFuZCBQQ0xLMSBwcmVzY2FsZXJzLg0KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb25seSBhZnRlciByZXNldC4NCisgICogQHBhcmFtICBOb25lDQorICAqIEByZXR2YWwgTm9uZQ0KKyAgKi8NCitzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvTVNJKHZvaWQpDQorew0KKyAgX19JTyB1aW50MzJfdCBTdGFydFVwQ291bnRlciA9IDAsIE1TSVN0YXR1cyA9IDA7DQorDQorICAvKiBTWVNDTEssIEhDTEssIFBDTEsyIGFuZCBQQ0xLMSBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAvKiBFbmFibGUgTVNJICovDQorICBSQ0MtPkNSIHw9ICgodWludDMyX3QpUkNDX0NSX01TSU9OKTsNCisNCisgIC8qIFdhaXQgdGlsbCBNU0kgaXMgcmVhZHkgYW5kIGlmIFRpbWUgb3V0IGlzIHJlYWNoZWQgZXhpdCAqLw0KKyAgZG8NCisgIHsNCisgICAgTVNJU3RhdHVzID0gUkNDLT5DUiAmIFJDQ19DUl9NU0lSRFk7DQorICAgIFN0YXJ0VXBDb3VudGVyKys7DQorICB9IHdoaWxlKChNU0lTdGF0dXMgPT0gMCkgJiYgKFN0YXJ0VXBDb3VudGVyICE9IEhTRV9TVEFSVFVQX1RJTUVPVVQpKTsNCisNCisgIGlmICgoUkNDLT5DUiAmIFJDQ19DUl9NU0lSRFkpICE9IFJFU0VUKQ0KKyAgew0KKyAgICBNU0lTdGF0dXMgPSAodWludDMyX3QpMHgwMTsNCisgIH0NCisgIGVsc2UNCisgIHsNCisgICAgTVNJU3RhdHVzID0gKHVpbnQzMl90KTB4MDA7DQorICB9DQorDQorICBpZiAoTVNJU3RhdHVzID09ICh1aW50MzJfdCkweDAxKQ0KKyAgew0KKyNpZmRlZiBTWVNDTEtfRlJFUV9NU0kNCisjaWZkZWYgU1lTQ0xLX0ZSRVFfTVNJXzRNSHoNCisgICAgLyogRW5hYmxlIDY0LWJpdCBhY2Nlc3MgKi8NCisgICAgRkxBU0gtPkFDUiB8PSBGTEFTSF9BQ1JfQUNDNjQ7DQorDQorICAgIC8qIEVuYWJsZSBQcmVmZXRjaCBCdWZmZXIgKi8NCisgICAgRkxBU0gtPkFDUiB8PSBGTEFTSF9BQ1JfUFJGVEVOOw0KKw0KKyAgICAvKiBGbGFzaCAxIHdhaXQgc3RhdGUgKi8NCisgICAgRkxBU0gtPkFDUiB8PSBGTEFTSF9BQ1JfTEFURU5DWTsNCisjZWxzZQ0KKyAgICAvKiBGbGFzaCAwIHdhaXQgc3RhdGUgKi8NCisgICAgRkxBU0gtPkFDUiAmPSB+RkxBU0hfQUNSX0xBVEVOQ1k7DQorDQorICAgIC8qIERpc2FibGUgUHJlZmV0Y2ggQnVmZmVyICovDQorICAgIEZMQVNILT5BQ1IgJj0gfkZMQVNIX0FDUl9QUkZURU47DQorDQorICAgIC8qIERpc2FibGUgNjQtYml0IGFjY2VzcyAqLw0KKyAgICBGTEFTSC0+QUNSICY9IH5GTEFTSF9BQ1JfQUNDNjQ7DQorI2VuZGlmDQorI2VuZGlmDQorICAgIC8qIEVuYWJsZSB0aGUgUFdSIEFQQjEgQ2xvY2sgKi8NCisgICAgUkNDLT5BUEIxRU5SIHw9IFJDQ19BUEIxRU5SX1BXUkVOOw0KKw0KKyAgICAvKiBTZWxlY3QgdGhlIFZvbHRhZ2UgUmFuZ2UgMyAoMS4yVikgKi8NCisgICAgUFdSLT5DUiA9IFBXUl9DUl9WT1M7DQorDQorICAgIC8qIFdhaXQgVW50aWwgdGhlIFZvbHRhZ2UgUmVndWxhdG9yIGlzIHJlYWR5ICovDQorICAgIHdoaWxlKChQV1ItPkNTUiAmIFBXUl9DU1JfVk9TRikgIT0gUkVTRVQpDQorICAgIHsNCisgICAgfQ0KKw0KKyAgICAvKiBIQ0xLID0gU1lTQ0xLICovDQorICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfSFBSRV9ESVYxOw0KKw0KKyAgICAvKiBQQ0xLMiA9IEhDTEsgKi8NCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9QUFJFMl9ESVYxOw0KKw0KKyAgICAvKiBQQ0xLMSA9IEhDTEsgKi8NCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9QUFJFMV9ESVYxOw0KKw0KKyNpZmRlZiBTWVNDTEtfRlJFUV9NU0kNCisgICNpZmRlZiBTWVNDTEtfRlJFUV9NU0lfNjRLSHoNCisgICAgLyogU2V0IE1TSSBjbG9jayByYW5nZSAqLw0KKyAgICBSQ0MtPklDU0NSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0lDU0NSX01TSVJBTkdFKSk7DQorICAgIFJDQy0+SUNTQ1IgfD0gKHVpbnQzMl90KVJDQ19JQ1NDUl9NU0lSQU5HRV82NEtIejsNCisgICNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfTVNJXzEyOEtIeg0KKyAgICAvKiBTZXQgTVNJIGNsb2NrIHJhbmdlICovDQorICAgIFJDQy0+SUNTQ1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfSUNTQ1JfTVNJUkFOR0UpKTsNCisgICAgUkNDLT5JQ1NDUiB8PSAodWludDMyX3QpUkNDX0lDU0NSX01TSVJBTkdFXzEyOEtIejsNCisgICNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfTVNJXzI1NktIeg0KKyAgICAvKiBTZXQgTVNJIGNsb2NrIHJhbmdlICovDQorICAgIFJDQy0+SUNTQ1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfSUNTQ1JfTVNJUkFOR0UpKTsNCisgICAgUkNDLT5JQ1NDUiB8PSAodWludDMyX3QpUkNDX0lDU0NSX01TSVJBTkdFXzI1NktIejsNCisgICNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfTVNJXzUxMktIeg0KKyAgICAvKiBTZXQgTVNJIGNsb2NrIHJhbmdlICovDQorICAgIFJDQy0+SUNTQ1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfSUNTQ1JfTVNJUkFOR0UpKTsNCisgICAgUkNDLT5JQ1NDUiB8PSAodWludDMyX3QpUkNDX0lDU0NSX01TSVJBTkdFXzUxMktIejsNCisgICNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfTVNJXzFNSHoNCisgICAgLyogU2V0IE1TSSBjbG9jayByYW5nZSAqLw0KKyAgICBSQ0MtPklDU0NSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0lDU0NSX01TSVJBTkdFKSk7DQorICAgIFJDQy0+SUNTQ1IgfD0gKHVpbnQzMl90KVJDQ19JQ1NDUl9NU0lSQU5HRV8xTUh6Ow0KKyAgI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV9NU0lfMk1Ieg0KKyAgICAvKiBTZXQgTVNJIGNsb2NrIHJhbmdlICovDQorICAgIFJDQy0+SUNTQ1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfSUNTQ1JfTVNJUkFOR0UpKTsNCisgICAgUkNDLT5JQ1NDUiB8PSAodWludDMyX3QpUkNDX0lDU0NSX01TSVJBTkdFXzJNSHo7DQorICAjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRX01TSV80TUh6DQorICAgIC8qIFNldCBNU0kgY2xvY2sgcmFuZ2UgKi8NCisgICAgUkNDLT5JQ1NDUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+KFJDQ19JQ1NDUl9NU0lSQU5HRSkpOw0KKyAgICBSQ0MtPklDU0NSIHw9ICh1aW50MzJfdClSQ0NfSUNTQ1JfTVNJUkFOR0VfNE1IejsNCisgICNlbmRpZg0KKyNlbmRpZg0KKw0KKyAgICAvKiBTZWxlY3QgTVNJIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8NCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0NGR1JfU1cpKTsNCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9TV19NU0k7DQorDQorICAgIC8qIFdhaXQgdGlsbCBNU0kgaXMgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovDQorICAgIHdoaWxlICgoUkNDLT5DRkdSICYgKHVpbnQzMl90KVJDQ19DRkdSX1NXUykgIT0gKHVpbnQzMl90KTB4MDApDQorICAgIHsNCisgICAgfQ0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KKyAgICAvKiBJZiBNU0kgZmFpbHMgdG8gc3RhcnQtdXAsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGhhdmUgd3JvbmcgY2xvY2sNCisgICAgICAgY29uZmlndXJhdGlvbi4gVXNlciBjYW4gYWRkIGhlcmUgc29tZSBjb2RlIHRvIGRlYWwgd2l0aCB0aGlzIGVycm9yICovDQorICB9DQorfQ0KKyNlbmRpZg0KKw0KKy8qKg0KKyAgKiBAfQ0KKyAgKi8NCisNCisvKioNCisgICogQH0NCisgICovDQorDQorLyoqDQorICAqIEB9DQorICAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovDQo=