From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50860) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPyg1-0001Od-0m for qemu-devel@nongnu.org; Fri, 05 Sep 2014 14:56:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XPyfp-0006AZ-3G for qemu-devel@nongnu.org; Fri, 05 Sep 2014 14:56:04 -0400 Received: from smtpbgbr1.qq.com ([54.207.19.206]:43519) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPyfo-00069R-3n for qemu-devel@nongnu.org; Fri, 05 Sep 2014 14:55:53 -0400 From: "=?gb18030?B?MjFH?=" Sender: xiaodong_gong@qq.com Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_540A072E_08B527B8_4B2F9251" Content-Transfer-Encoding: 8Bit Date: Sat, 6 Sep 2014 02:55:42 +0800 Message-ID: Subject: [Qemu-devel] [RFC PATCH v2] Support vhd type VHD_DIFFERENCING List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?gb18030?B?a3dvbGY=?= , =?gb18030?B?c3RlZmFuaGE=?= Cc: =?gb18030?B?cWVtdS1kZXZlbA==?= This is a multi-part message in MIME format. ------=_NextPart_540A072E_08B527B8_4B2F9251 Content-Type: text/plain; charset="gb18030" Content-Transfer-Encoding: base64 Tm93IHFlbXUgb25seSBzdXBwb3J0cyB2aGQgdHlwZSBWSERfRklYRUQgYW5kIFZIRF9EWU5B TUlDLA0Kc28gcWVtdSBjYW4ndCByZWFkIHNuYXBzaG90IHZvbHVtZSBvZiB2aGQsIGFuZCBj YW4ndCBzdXBwb3J0DQpvdGhlciBzdG9yYWdlIGZlYXR1cmVzIG9mIHZoZCBmaWxlLg0KDQpU aGlzIHBhdGNoIGFkZCByZWFkIHBhcmVudCBpbmZvcm1hdGlvbiBpbiBmdW5jdGlvbiAidnBj X29wZW4iLA0KcmVhZCBiaXRtYXAgaW4gInZwY19yZWFkIiwgYW5kIGNoYW5nZSBiaXRtYXAg aW4gInZwY193cml0ZSIuDQoNClNpZ25lZC1vZmYtYnk6IFhpYW9kb25nIEdvbmcgPGdvcmRv bmdvbmcwMzUwQGdtYWlsLmNvbT4NCi0tLQ0KIGJsb2NrL3ZwYy5jIHwgMzI5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQ0K IDEgZmlsZSBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pDQoN CmRpZmYgLS1naXQgYS9ibG9jay92cGMuYyBiL2Jsb2NrL3ZwYy5jDQppbmRleCBjMDI0YjRj Li4zYmEwZDU3IDEwMDY0NA0KLS0tIGEvYmxvY2svdnBjLmMNCisrKyBiL2Jsb2NrL3ZwYy5j DQpAQCAtMzMsMTMgKzMzLDE4IEBADQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIA0KICNkZWZpbmUgSEVBREVS X1NJWkUgNTEyDQorI2RlZmluZSBEWU5BTUlDX0hFQURFUl9TSVpFIDEwMjQNCisjZGVmaW5l IFBBUkVOVF9MT0NBVE9SX05VTSA4DQorI2RlZmluZSBQQVJFTlRfUFJFRklYX0xFTiA3IC8q IHN1Y2ggYXMgZmlsZTovLyAqLw0KKyNkZWZpbmUgVEJCQVRNQVBfSEVBRF9TSVpFIDI4DQor I2RlZmluZSBNQUNYIDB4NTg2MzYxNGQgLyogYmlnIGVuZGlhbiAqLw0KIA0KIC8vI2RlZmlu ZSBDQUNIRQ0KIA0KIGVudW0gdmhkX3R5cGUgew0KICAgICBWSERfRklYRUQgICAgICAgICAg ID0gMiwNCiAgICAgVkhEX0RZTkFNSUMgICAgICAgICA9IDMsDQotICAgIFZIRF9ESUZGRVJF TkNJTkcgICAgPSA0LA0KKyAgICBWSERfRElGRiAgICAgICAgICAgID0gNCwNCiB9Ow0KIA0K IC8vIFNlY29uZHMgc2luY2UgSmFuIDEsIDIwMDAgMDowMDowMCAoVVRDKQ0KQEAgLTEzOCw2 ICsxNDMsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgQkRSVlZQQ1N0YXRlIHsNCiAgICAgRXJyb3Ig Km1pZ3JhdGlvbl9ibG9ja2VyOw0KIH0gQkRSVlZQQ1N0YXRlOw0KIA0KK3R5cGVkZWYgc3Ry dWN0IHZoZF90ZGJhdG1hcF9oZWFkZXIgew0KKyAgICBjaGFyIG1hZ2ljWzhdOyAvKiBhbHdh eXMgInRkYmF0bWFwIiAqLw0KKw0KKyAgICB1aW50NjRfdCBiYXRtYXBfb2Zmc2V0Ow0KKyAg ICB1aW50MzJfdCBiYXRtYXBfc2l6ZTsNCisgICAgdWludDMyX3QgYmF0bWFwX3ZlcnNpb247 DQorICAgIHVpbnQzMl90IGNoZWNrc3VtOw0KK30gUUVNVV9QQUNLRUQgVkhEVGRCYXRtYXBI ZWFkZXI7DQorDQogc3RhdGljIHVpbnQzMl90IHZwY19jaGVja3N1bSh1aW50OF90KiBidWYs IHNpemVfdCBzaXplKQ0KIHsNCiAgICAgdWludDMyX3QgcmVzID0gMDsNCkBAIC0xNTMsNyAr MTY3LDcgQEAgc3RhdGljIHVpbnQzMl90IHZwY19jaGVja3N1bSh1aW50OF90KiBidWYsIHNp emVfdCBzaXplKQ0KIHN0YXRpYyBpbnQgdnBjX3Byb2JlKGNvbnN0IHVpbnQ4X3QgKmJ1Ziwg aW50IGJ1Zl9zaXplLCBjb25zdCBjaGFyICpmaWxlbmFtZSkNCiB7DQogICAgIGlmIChidWZf c2l6ZSA+PSA4ICYmICFzdHJuY21wKChjaGFyICopYnVmLCAiY29uZWN0aXgiLCA4KSkNCi0J cmV0dXJuIDEwMDsNCisgICAgICAgIHJldHVybiAxMDA7DQogICAgIHJldHVybiAwOw0KIH0N CiANCkBAIC0xNjQsMTEgKzE3OCwxNyBAQCBzdGF0aWMgaW50IHZwY19vcGVuKEJsb2NrRHJp dmVyU3RhdGUgKmJzLCBRRGljdCAqb3B0aW9ucywgaW50IGZsYWdzLA0KICAgICBpbnQgaTsN CiAgICAgVkhERm9vdGVyICpmb290ZXI7DQogICAgIFZIRER5bkRpc2tIZWFkZXIgKmR5bmRp c2tfaGVhZGVyOw0KLSAgICB1aW50OF90IGJ1ZltIRUFERVJfU0laRV07DQorICAgIHVpbnQ4 X3QgYnVmW0RZTkFNSUNfSEVBREVSX1NJWkVdOw0KKyAgICB1aW50OF90IHRkYmF0bWFwX2hl YWRlcl9idWZbVEJCQVRNQVBfSEVBRF9TSVpFXTsNCiAgICAgdWludDMyX3QgY2hlY2tzdW07 DQogICAgIHVpbnQ2NF90IGNvbXB1dGVkX3NpemU7DQotICAgIGludCBkaXNrX3R5cGUgPSBW SERfRFlOQU1JQzsNCisgICAgdWludDMyX3QgZGlza190eXBlOw0KICAgICBpbnQgcmV0Ow0K KyAgICBWSERUZEJhdG1hcEhlYWRlciAqdGRiYXRtYXBfaGVhZGVyOw0KKyAgICBpbnQgcGFy ZW50X2xvY2F0b3Jfb2Zmc2V0ID0gMDsNCisgICAgaW50NjRfdCBkYXRhX29mZnNldCA9IDA7 DQorICAgIGludCBkYXRhX2xlbmd0aCA9IDA7DQorICAgIHVpbnQzMl90IHBsYXRmb3JtOw0K IA0KICAgICByZXQgPSBiZHJ2X3ByZWFkKGJzLT5maWxlLCAwLCBzLT5mb290ZXJfYnVmLCBI RUFERVJfU0laRSk7DQogICAgIGlmIChyZXQgPCAwKSB7DQpAQCAtMTc2LDYgKzE5Niw4IEBA IHN0YXRpYyBpbnQgdnBjX29wZW4oQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIFFEaWN0ICpvcHRp b25zLCBpbnQgZmxhZ3MsDQogICAgIH0NCiANCiAgICAgZm9vdGVyID0gKFZIREZvb3RlciAq KSBzLT5mb290ZXJfYnVmOw0KKyAgICBkaXNrX3R5cGUgPSBiZTMyX3RvX2NwdShmb290ZXIt PnR5cGUpOw0KKw0KICAgICBpZiAoc3RybmNtcChmb290ZXItPmNyZWF0b3IsICJjb25lY3Rp eCIsIDgpKSB7DQogICAgICAgICBpbnQ2NF90IG9mZnNldCA9IGJkcnZfZ2V0bGVuZ3RoKGJz LT5maWxlKTsNCiAgICAgICAgIGlmIChvZmZzZXQgPCAwKSB7DQpAQCAtMjMwLDkgKzI1Miw5 IEBAIHN0YXRpYyBpbnQgdnBjX29wZW4oQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIFFEaWN0ICpv cHRpb25zLCBpbnQgZmxhZ3MsDQogICAgICAgICBnb3RvIGZhaWw7DQogICAgIH0NCiANCi0g ICAgaWYgKGRpc2tfdHlwZSA9PSBWSERfRFlOQU1JQykgew0KKyAgICBpZiAoZGlza190eXBl ID09IFZIRF9EWU5BTUlDIHx8IGRpc2tfdHlwZSA9PSBWSERfRElGRikgew0KICAgICAgICAg cmV0ID0gYmRydl9wcmVhZChicy0+ZmlsZSwgYmU2NF90b19jcHUoZm9vdGVyLT5kYXRhX29m ZnNldCksIGJ1ZiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgSEVBREVSX1NJWkUpOw0K KyAgICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDX0hFQURFUl9TSVpFKTsNCiAgICAg ICAgIGlmIChyZXQgPCAwKSB7DQogICAgICAgICAgICAgZ290byBmYWlsOw0KICAgICAgICAg fQ0KQEAgLTI4Niw2ICszMDgsNTYgQEAgc3RhdGljIGludCB2cGNfb3BlbihCbG9ja0RyaXZl clN0YXRlICpicywgUURpY3QgKm9wdGlvbnMsIGludCBmbGFncywNCiAgICAgICAgIHMtPmZy ZWVfZGF0YV9ibG9ja19vZmZzZXQgPQ0KICAgICAgICAgICAgIChzLT5iYXRfb2Zmc2V0ICsg KHMtPm1heF90YWJsZV9lbnRyaWVzICogNCkgKyA1MTEpICYgfjUxMTsNCiANCisgICAgICAg IC8qIFJlYWQgdGRiYXRtYXAgaGVhZGVyIGJ5IG9mZnNldCAqLw0KKyAgICAgICAgcmV0ID0g YmRydl9wcmVhZChicy0+ZmlsZSwgcy0+ZnJlZV9kYXRhX2Jsb2NrX29mZnNldCwNCisgICAg ICAgICAgICB0ZGJhdG1hcF9oZWFkZXJfYnVmLCBUQkJBVE1BUF9IRUFEX1NJWkUpOw0KKyAg ICAgICAgaWYgKHJldCA8IDApIHsNCisgICAgICAgICAgICBnb3RvIGZhaWw7DQorICAgICAg ICB9DQorDQorICAgICAgICB0ZGJhdG1hcF9oZWFkZXIgPSAoVkhEVGRCYXRtYXBIZWFkZXIg KikgdGRiYXRtYXBfaGVhZGVyX2J1ZjsNCisgICAgICAgIGlmICghc3RybmNtcCh0ZGJhdG1h cF9oZWFkZXItPm1hZ2ljLCAidGRiYXRtYXAiLCA4KSkgew0KKyAgICAgICAgICAgIHMtPmZy ZWVfZGF0YV9ibG9ja19vZmZzZXQgPQ0KKyAgICAgICAgICAgICAgICBiZTMyX3RvX2NwdSh0 ZGJhdG1hcF9oZWFkZXItPmJhdG1hcF9zaXplKSAqIDUxMg0KKyAgICAgICAgICAgICAgICAr IGJlNjRfdG9fY3B1KHRkYmF0bWFwX2hlYWRlci0+YmF0bWFwX29mZnNldCk7DQorICAgICAg ICB9DQorDQorICAgICAgICAvKiBSZWFkIGJhY2tpbmcgZmlsZSBsb2NhdGlvbiBmcm9tIGR5 biBoZWFkZXIgdGFibGUgKi8NCisgICAgICAgIGlmIChkeW5kaXNrX2hlYWRlci0+cGFyZW50 X25hbWVbMF0gfHwgZHluZGlza19oZWFkZXItPnBhcmVudF9uYW1lWzFdKSB7DQorICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IFBBUkVOVF9MT0NBVE9SX05VTTsgaSsrKSB7DQorICAg ICAgICAgICAgICAgIGRhdGFfb2Zmc2V0ID0NCisgICAgICAgICAgICAgICAgICAgIGJlNjRf dG9fY3B1KGR5bmRpc2tfaGVhZGVyLT5wYXJlbnRfbG9jYXRvcltpXS5kYXRhX29mZnNldCk7 DQorICAgICAgICAgICAgICAgIGRhdGFfbGVuZ3RoID0NCisgICAgICAgICAgICAgICAgICAg IGJlMzJfdG9fY3B1KGR5bmRpc2tfaGVhZGVyLT5wYXJlbnRfbG9jYXRvcltpXS5kYXRhX2xl bmd0aCk7DQorICAgICAgICAgICAgICAgIHBsYXRmb3JtID0gZHluZGlza19oZWFkZXItPnBh cmVudF9sb2NhdG9yW2ldLnBsYXRmb3JtOw0KKw0KKyAgICAgICAgICAgICAgICBpZiAoTUFD WCA9PSBwbGF0Zm9ybSkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFfb2Zmc2V0 ICsgUEFSRU5UX1BSRUZJWF9MRU4gPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPm1h eF90YWJsZV9lbnRyaWVzICogcy0+YmxvY2tfc2l6ZSkgew0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIGZhaWw7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKGRhdGFfbGVuZ3RoIC0gUEFSRU5UX1BSRUZJWF9MRU4g PiAxMDI0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCisg ICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHJldCA9IGJkcnZf cHJlYWQoYnMtPmZpbGUsIGRhdGFfb2Zmc2V0ICsgUEFSRU5UX1BSRUZJWF9MRU4sDQorICAg ICAgICAgICAgICAgICAgICAgICAgYnMtPmJhY2tpbmdfZmlsZSwgZGF0YV9sZW5ndGggLSBQ QVJFTlRfUFJFRklYX0xFTik7DQorICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkg ew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCisgICAgICAgICAgICAg ICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAgICAgIGJzLT5iYWNraW5nX2ZpbGVbZGF0 YV9sZW5ndGggLSBQQVJFTlRfUFJFRklYX0xFTl0gPSAnXDAnOw0KKyAgICAgICAgICAgICAg ICB9DQorDQorICAgICAgICAgICAgICAgIGlmIChkYXRhX29mZnNldCA+IHBhcmVudF9sb2Nh dG9yX29mZnNldCkgew0KKyAgICAgICAgICAgICAgICAgICAgcGFyZW50X2xvY2F0b3Jfb2Zm c2V0ID0gZGF0YV9vZmZzZXQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9 DQorICAgICAgICB9DQorDQorICAgICAgICBpZiAocGFyZW50X2xvY2F0b3Jfb2Zmc2V0ICsg NTEyID4gcy0+ZnJlZV9kYXRhX2Jsb2NrX29mZnNldCkgew0KKyAgICAgICAgICAgIHMtPmZy ZWVfZGF0YV9ibG9ja19vZmZzZXQgPSBwYXJlbnRfbG9jYXRvcl9vZmZzZXQgKyA1MTI7DQor ICAgICAgICB9DQorDQogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bWF4X3RhYmxlX2Vu dHJpZXM7IGkrKykgew0KICAgICAgICAgICAgIGJlMzJfdG9fY3B1cygmcy0+cGFnZXRhYmxl W2ldKTsNCiAgICAgICAgICAgICBpZiAocy0+cGFnZXRhYmxlW2ldICE9IDB4RkZGRkZGRkYp IHsNCkBAIC0zNjMsMTkgKzQzNSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50NjRfdCBnZXRfc2Vj dG9yX29mZnNldChCbG9ja0RyaXZlclN0YXRlICpicywNCiAgICAgYml0bWFwX29mZnNldCA9 IDUxMiAqICh1aW50NjRfdCkgcy0+cGFnZXRhYmxlW3BhZ2V0YWJsZV9pbmRleF07DQogICAg IGJsb2NrX29mZnNldCA9IGJpdG1hcF9vZmZzZXQgKyBzLT5iaXRtYXBfc2l6ZSArICg1MTIg KiBwYWdlZW50cnlfaW5kZXgpOw0KIA0KLSAgICAvLyBXZSBtdXN0IGVuc3VyZSB0aGF0IHdl IGRvbid0IHdyaXRlIHRvIGFueSBzZWN0b3JzIHdoaWNoIGFyZSBtYXJrZWQgYXMNCi0gICAg Ly8gdW51c2VkIGluIHRoZSBiaXRtYXAuIFdlIGdldCBhd2F5IHdpdGggc2V0dGluZyBhbGwg Yml0cyBpbiB0aGUgYmxvY2sNCi0gICAgLy8gYml0bWFwIGVhY2ggdGltZSB3ZSB3cml0ZSB0 byBhIG5ldyBibG9jay4gVGhpcyBtaWdodCBjYXVzZSBWaXJ0dWFsIFBDIHRvDQotICAgIC8v IG1pc3Mgc3BhcnNlIHJlYWQgb3B0aW1pemF0aW9uLCBidXQgaXQncyBub3QgYSBwcm9ibGVt IGluIHRlcm1zIG9mDQotICAgIC8vIGNvcnJlY3RuZXNzLg0KLSAgICBpZiAod3JpdGUgJiYg KHMtPmxhc3RfYml0bWFwX29mZnNldCAhPSBiaXRtYXBfb2Zmc2V0KSkgew0KLSAgICAgICAg dWludDhfdCBiaXRtYXBbcy0+Yml0bWFwX3NpemVdOw0KLQ0KLSAgICAgICAgcy0+bGFzdF9i aXRtYXBfb2Zmc2V0ID0gYml0bWFwX29mZnNldDsNCi0gICAgICAgIG1lbXNldChiaXRtYXAs IDB4ZmYsIHMtPmJpdG1hcF9zaXplKTsNCi0gICAgICAgIGJkcnZfcHdyaXRlX3N5bmMoYnMt PmZpbGUsIGJpdG1hcF9vZmZzZXQsIGJpdG1hcCwgcy0+Yml0bWFwX3NpemUpOw0KLSAgICB9 DQotDQogLy8gICAgcHJpbnRmKCJzZWN0b3I6ICUiIFBSSXg2NCAiLCBpbmRleDogJXgsIG9m ZnNldDogJXgsIGJpb2ZmOiAlIiBQUkl4NjQgIiwgYmxvZmY6ICUiIFBSSXg2NCAiXG4iLA0K IC8vCXNlY3Rvcl9udW0sIHBhZ2V0YWJsZV9pbmRleCwgcGFnZWVudHJ5X2luZGV4LA0KIC8v CWJpdG1hcF9vZmZzZXQsIGJsb2NrX29mZnNldCk7DQpAQCAtNDEyLDYgKzQ3MSw1MyBAQCBz dGF0aWMgaW5saW5lIGludDY0X3QgZ2V0X3NlY3Rvcl9vZmZzZXQoQmxvY2tEcml2ZXJTdGF0 ZSAqYnMsDQogfQ0KIA0KIC8qDQorICogUmV0dXJucyB0aGUgYWJzb2x1dGUgYnl0ZSBvZmZz ZXQgb2YgdGhlIGdpdmVuIHNlY3RvciBpbiB0aGUgZGlmZmVyZW5jaW5nDQorICogaW1hZ2Ug ZmlsZS4NCisgKg0KKyAqIElmIHRoZSBzZWN0b3IgaXMgbm90IGFsbG9jYXRlZCwgLTEgaXMg cmV0dXJuZWQgaW5zdGVhZC4gSWYgdGhlIHNlY3RvciBpcw0KKyAqIGFsbG9jYXRlZCBpbiB0 aGUgYmFja2luZyBmaWxlLCAtMiBpcyByZXR1cm5lZC4gSWYgdGhlIHNlY3RvciBpcyBhbGxv Y2F0ZWQNCisgKiBpbiBjdXJyZW50IGZpbGUsIHRoZSBibG9jayBvZmZzZXQgaXMgcmV0dXJu ZWQuDQorICovDQorc3RhdGljIGlubGluZSBpbnQ2NF90IGdldF9zZWN0b3Jfb2Zmc2V0X2Rp ZmYoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQorICAgIGludDY0X3Qgc2VjdG9yX251bSkNCit7 DQorICAgIEJEUlZWUENTdGF0ZSAqcyA9IGJzLT5vcGFxdWU7DQorICAgIHVpbnQ2NF90IG9m ZnNldCA9IHNlY3Rvcl9udW0gPDwgQkRSVl9TRUNUT1JfQklUUzsNCisgICAgdWludDY0X3Qg Yml0bWFwX29mZnNldDsNCisgICAgdWludDY0X3QgYmxvY2tfb2Zmc2V0Ow0KKyAgICB1aW50 MzJfdCBwYWdldGFibGVfaW5kZXgsIHBhZ2VlbnRyeV9pbmRleDsNCisgICAgdWludDMyX3Qg Yml0bWFwX2luZGV4LCBiaXRtYXBlbnRyeV9pbmRleDsNCisgICAgdWludDhfdCBiaXRtYXBb cy0+Yml0bWFwX3NpemVdOw0KKyAgICBpbnQgcmV0Ow0KKw0KKyAgICBwYWdldGFibGVfaW5k ZXggPSBvZmZzZXQgLyBzLT5ibG9ja19zaXplOw0KKyAgICBpZiAocGFnZXRhYmxlX2luZGV4 ID49IHMtPm1heF90YWJsZV9lbnRyaWVzKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAg IH0gZWxzZSBpZiAoMHhmZmZmZmZmZiA9PSBzLT5wYWdldGFibGVbcGFnZXRhYmxlX2luZGV4 XSkgew0KKyAgICAgICAgcmV0dXJuIC0yOw0KKyAgICB9DQorDQorICAgIGJpdG1hcF9vZmZz ZXQgPSA1MTIgKiAodWludDY0X3QpIHMtPnBhZ2V0YWJsZVtwYWdldGFibGVfaW5kZXhdOw0K KyAgICBpZiAoYml0bWFwX29mZnNldCA+IHMtPm1heF90YWJsZV9lbnRyaWVzICogcy0+Ymxv Y2tfc2l6ZSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIHJldCA9IGJk cnZfcHJlYWQoYnMtPmZpbGUsIGJpdG1hcF9vZmZzZXQsIGJpdG1hcCwgcy0+Yml0bWFwX3Np emUpOw0KKyAgICBpZiAocmV0IDwgMCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9 DQorDQorICAgIHBhZ2VlbnRyeV9pbmRleCA9IChvZmZzZXQgJSBzLT5ibG9ja19zaXplKSAv IDUxMjsNCisgICAgYml0bWFwX2luZGV4ID0gcGFnZWVudHJ5X2luZGV4IC8gODsNCisgICAg Yml0bWFwZW50cnlfaW5kZXggPSA3IC0gcGFnZWVudHJ5X2luZGV4ICUgODsNCisgICAgaWYg KGJpdG1hcFtiaXRtYXBfaW5kZXhdICYgMHgxIDw8IGJpdG1hcGVudHJ5X2luZGV4KSB7DQor ICAgICAgICBibG9ja19vZmZzZXQgPSBiaXRtYXBfb2Zmc2V0ICsgcy0+Yml0bWFwX3NpemUg KyAoNTEyICogcGFnZWVudHJ5X2luZGV4KTsNCisgICAgICAgIHJldHVybiBibG9ja19vZmZz ZXQ7DQorICAgIH0gZWxzZSB7DQorICAgICAgICAgcmV0dXJuIC0yOw0KKyAgICB9DQorfQ0K Kw0KKy8qDQogICogV3JpdGVzIHRoZSBmb290ZXIgdG8gdGhlIGVuZCBvZiB0aGUgaW1hZ2Ug ZmlsZS4gVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGUNCiAgKiBmaWxlIGdyb3dzIGFzIGl0IG92 ZXJ3cml0ZXMgdGhlIG9sZCBmb290ZXINCiAgKg0KQEAgLTQzNyw3ICs1NDMsOCBAQCBzdGF0 aWMgaW50IHJld3JpdGVfZm9vdGVyKEJsb2NrRHJpdmVyU3RhdGUqIGJzKQ0KICAqDQogICog UmV0dXJucyB0aGUgc2VjdG9ycycgb2Zmc2V0IGluIHRoZSBpbWFnZSBmaWxlIG9uIHN1Y2Nl c3MgYW5kIDwgMCBvbiBlcnJvcg0KICAqLw0KLXN0YXRpYyBpbnQ2NF90IGFsbG9jX2Jsb2Nr KEJsb2NrRHJpdmVyU3RhdGUqIGJzLCBpbnQ2NF90IHNlY3Rvcl9udW0pDQorc3RhdGljIGlu dDY0X3QgYWxsb2NfYmxvY2soQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9y X251bSwNCisgICAgYm9vbCBpc2RpZmYpDQogew0KICAgICBCRFJWVlBDU3RhdGUgKnMgPSBi cy0+b3BhcXVlOw0KICAgICBpbnQ2NF90IGJhdF9vZmZzZXQ7DQpAQCAtNDU3LDcgKzU2NCwx MSBAQCBzdGF0aWMgaW50NjRfdCBhbGxvY19ibG9jayhCbG9ja0RyaXZlclN0YXRlKiBicywg aW50NjRfdCBzZWN0b3JfbnVtKQ0KICAgICBzLT5wYWdldGFibGVbaW5kZXhdID0gcy0+ZnJl ZV9kYXRhX2Jsb2NrX29mZnNldCAvIDUxMjsNCiANCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUg YmxvY2sncyBiaXRtYXANCi0gICAgbWVtc2V0KGJpdG1hcCwgMHhmZiwgcy0+Yml0bWFwX3Np emUpOw0KKyAgICBpZiAoaXNkaWZmKSB7DQorICAgICAgICBtZW1zZXQoYml0bWFwLCAweDAs IHMtPmJpdG1hcF9zaXplKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1lbXNldChiaXRt YXAsIDB4ZmYsIHMtPmJpdG1hcF9zaXplKTsNCisgICAgfQ0KICAgICByZXQgPSBiZHJ2X3B3 cml0ZV9zeW5jKGJzLT5maWxlLCBzLT5mcmVlX2RhdGFfYmxvY2tfb2Zmc2V0LCBiaXRtYXAs DQogICAgICAgICBzLT5iaXRtYXBfc2l6ZSk7DQogICAgIGlmIChyZXQgPCAwKSB7DQpAQCAt NTAxLDM2ICs2MTIsNjIgQEAgc3RhdGljIGludCB2cGNfcmVhZChCbG9ja0RyaXZlclN0YXRl ICpicywgaW50NjRfdCBzZWN0b3JfbnVtLA0KICAgICAgICAgICAgICAgICAgICAgdWludDhf dCAqYnVmLCBpbnQgbmJfc2VjdG9ycykNCiB7DQogICAgIEJEUlZWUENTdGF0ZSAqcyA9IGJz LT5vcGFxdWU7DQotICAgIGludCByZXQ7DQotICAgIGludDY0X3Qgb2Zmc2V0Ow0KLSAgICBp bnQ2NF90IHNlY3RvcnMsIHNlY3RvcnNfcGVyX2Jsb2NrOw0KICAgICBWSERGb290ZXIgKmZv b3RlciA9IChWSERGb290ZXIgKikgcy0+Zm9vdGVyX2J1ZjsNCisgICAgaW50NjRfdCBzZWN0 b3JzX3Blcl9ibG9jayA9IHMtPmJsb2NrX3NpemUgPj4gQkRSVl9TRUNUT1JfQklUUzsNCisg ICAgaW50NjRfdCBvZmZzZXQsIHNlY3RvcnM7DQorICAgIGludCByZXQ7DQogDQotICAgIGlm IChiZTMyX3RvX2NwdShmb290ZXItPnR5cGUpID09IFZIRF9GSVhFRCkgew0KKyAgICBzd2l0 Y2ggKGJlMzJfdG9fY3B1KGZvb3Rlci0+dHlwZSkpIHsNCisgICAgY2FzZSBWSERfRklYRUQ6 DQogICAgICAgICByZXR1cm4gYmRydl9yZWFkKGJzLT5maWxlLCBzZWN0b3JfbnVtLCBidWYs IG5iX3NlY3RvcnMpOw0KLSAgICB9DQotICAgIHdoaWxlIChuYl9zZWN0b3JzID4gMCkgew0K LSAgICAgICAgb2Zmc2V0ID0gZ2V0X3NlY3Rvcl9vZmZzZXQoYnMsIHNlY3Rvcl9udW0sIDAp Ow0KLQ0KLSAgICAgICAgc2VjdG9yc19wZXJfYmxvY2sgPSBzLT5ibG9ja19zaXplID4+IEJE UlZfU0VDVE9SX0JJVFM7DQotICAgICAgICBzZWN0b3JzID0gc2VjdG9yc19wZXJfYmxvY2sg LSAoc2VjdG9yX251bSAlIHNlY3RvcnNfcGVyX2Jsb2NrKTsNCi0gICAgICAgIGlmIChzZWN0 b3JzID4gbmJfc2VjdG9ycykgew0KLSAgICAgICAgICAgIHNlY3RvcnMgPSBuYl9zZWN0b3Jz Ow0KLSAgICAgICAgfQ0KKyAgICBjYXNlIFZIRF9EWU5BTUlDOg0KKyAgICAgICAgd2hpbGUg KG5iX3NlY3RvcnMgPiAwKSB7DQorICAgICAgICAgICAgc2VjdG9ycyA9IHNlY3RvcnNfcGVy X2Jsb2NrIC0gKHNlY3Rvcl9udW0gJSBzZWN0b3JzX3Blcl9ibG9jayk7DQorICAgICAgICAg ICAgaWYgKHNlY3RvcnMgPiBuYl9zZWN0b3JzKSB7DQorICAgICAgICAgICAgICAgIHNlY3Rv cnMgPSBuYl9zZWN0b3JzOw0KKyAgICAgICAgICAgIH0NCiANCi0gICAgICAgIGlmIChvZmZz ZXQgPT0gLTEpIHsNCi0gICAgICAgICAgICBtZW1zZXQoYnVmLCAwLCBzZWN0b3JzICogQkRS Vl9TRUNUT1JfU0laRSk7DQotICAgICAgICB9IGVsc2Ugew0KLSAgICAgICAgICAgIHJldCA9 IGJkcnZfcHJlYWQoYnMtPmZpbGUsIG9mZnNldCwgYnVmLA0KLSAgICAgICAgICAgICAgICBz ZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRSk7DQotICAgICAgICAgICAgaWYgKHJldCAhPSBz ZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRSkgew0KLSAgICAgICAgICAgICAgICByZXR1cm4g LTE7DQorICAgICAgICAgICAgb2Zmc2V0ID0gZ2V0X3NlY3Rvcl9vZmZzZXQoYnMsIHNlY3Rv cl9udW0sIDApOw0KKyAgICAgICAgICAgIGlmICgtMSA9PSBvZmZzZXQpIHsNCisgICAgICAg ICAgICAgICAgbWVtc2V0KGJ1ZiwgMCwgc2VjdG9ycyAqIEJEUlZfU0VDVE9SX1NJWkUpOw0K KyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJldCA9IGJkcnZfcHJl YWQoYnMtPmZpbGUsIG9mZnNldCwgYnVmLA0KKyAgICAgICAgICAgICAgICAgICAgc2VjdG9y cyAqIEJEUlZfU0VDVE9SX1NJWkUpOw0KKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IHNl Y3RvcnMgKiBCRFJWX1NFQ1RPUl9TSVpFKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQorDQorICAgICAg ICAgICAgbmJfc2VjdG9ycyAtPSBzZWN0b3JzOw0KKyAgICAgICAgICAgIHNlY3Rvcl9udW0g Kz0gc2VjdG9yczsNCisgICAgICAgICAgICBidWYgKz0gc2VjdG9ycyAqIEJEUlZfU0VDVE9S X1NJWkU7DQogICAgICAgICB9DQorICAgICAgICBicmVhazsNCisgICAgY2FzZSBWSERfRElG RjoNCisgICAgICAgIHdoaWxlIChuYl9zZWN0b3JzID4gMCkgew0KKyAgICAgICAgICAgIG9m ZnNldCA9IGdldF9zZWN0b3Jfb2Zmc2V0X2RpZmYoYnMsIHNlY3Rvcl9udW0pOw0KKyAgICAg ICAgICAgIGlmICgtMSA9PSBvZmZzZXQpIHsNCisgICAgICAgICAgICAgICAgbWVtc2V0KGJ1 ZiwgMCwgQkRSVl9TRUNUT1JfU0laRSk7DQorICAgICAgICAgICAgfSBlbHNlIGlmICgtMiA9 PSBvZmZzZXQpIHsNCisgICAgICAgICAgICAgICAgcmV0ID0gYmRydl9wcmVhZChicy0+YmFj a2luZ19oZCwgc2VjdG9yX251bSA8PCBCRFJWX1NFQ1RPUl9CSVRTDQorICAgICAgICAgICAg ICAgICAgICAsIGJ1ZiwgQkRSVl9TRUNUT1JfU0laRSk7DQorICAgICAgICAgICAgICAgIGlm IChyZXQgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAg ICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBy ZXQgPSBiZHJ2X3ByZWFkKGJzLT5maWxlLCBvZmZzZXQsIGJ1ZiwgQkRSVl9TRUNUT1JfU0la RSk7DQorICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gQkRSVl9TRUNUT1JfU0laRSkgew0K KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQor ICAgICAgICAgICAgfQ0KIA0KLSAgICAgICAgbmJfc2VjdG9ycyAtPSBzZWN0b3JzOw0KLSAg ICAgICAgc2VjdG9yX251bSArPSBzZWN0b3JzOw0KLSAgICAgICAgYnVmICs9IHNlY3RvcnMg KiBCRFJWX1NFQ1RPUl9TSVpFOw0KKyAgICAgICAgICAgIG5iX3NlY3RvcnMtLTsNCisgICAg ICAgICAgICBzZWN0b3JfbnVtKys7DQorICAgICAgICAgICAgYnVmICs9IEJEUlZfU0VDVE9S X1NJWkU7DQorICAgICAgICB9DQorICAgICAgICBicmVhazsNCisgICAgZGVmYXVsdDoNCisg ICAgICAgIHJldHVybiAtMTsNCiAgICAgfQ0KICAgICByZXR1cm4gMDsNCiB9DQpAQCAtNTQ2 LDQzICs2ODMsOTggQEAgc3RhdGljIGNvcm91dGluZV9mbiBpbnQgdnBjX2NvX3JlYWQoQmxv Y2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9yX251bSwNCiAgICAgcmV0dXJuIHJl dDsNCiB9DQogDQorc3RhdGljIGlubGluZSBpbnQ2NF90IHdyaXRlX2JpdG1hcChCbG9ja0Ry aXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLA0KKyAgICBpbnQ2NF90IHNlY3Rv cnMpDQorew0KKyAgICBCRFJWVlBDU3RhdGUgKnMgPSBicy0+b3BhcXVlOw0KKyAgICB1aW50 NjRfdCBvZmZzZXQgPSBzZWN0b3JfbnVtIDw8IEJEUlZfU0VDVE9SX0JJVFM7DQorICAgIHVp bnQ2NF90IGJpdG1hcF9vZmZzZXQ7DQorICAgIHVpbnQzMl90IHBhZ2V0YWJsZV9pbmRleCwg cGFnZWVudHJ5X2luZGV4Ow0KKyAgICB1aW50OF90IGJpdG1hcFtzLT5iaXRtYXBfc2l6ZV07 DQorICAgIHVpbnQzMl90IGJpdG1hcF9pbmRleCwgYml0bWFwYml0X2luZGV4Ow0KKyAgICBp bnQgaTsNCisgICAgaW50IHJldDsNCisNCisgICAgcGFnZXRhYmxlX2luZGV4ID0gb2Zmc2V0 IC8gcy0+YmxvY2tfc2l6ZTsNCisgICAgcGFnZWVudHJ5X2luZGV4ID0gKG9mZnNldCAlIHMt PmJsb2NrX3NpemUpIC8gNTEyOw0KKyAgICBiaXRtYXBfb2Zmc2V0ID0gNTEyICogKHVpbnQ2 NF90KSBzLT5wYWdldGFibGVbcGFnZXRhYmxlX2luZGV4XTsNCisNCisgICAgaWYgKGJpdG1h cF9vZmZzZXQgPiBzLT5tYXhfdGFibGVfZW50cmllcyAqIHMtPmJsb2NrX3NpemUpIHsNCisg ICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICByZXQgPSBiZHJ2X3ByZWFkKGJzLT5m aWxlLCBiaXRtYXBfb2Zmc2V0LCBiaXRtYXAsIHMtPmJpdG1hcF9zaXplKTsNCisgICAgaWYg KHJldCA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKw0KKyAgICBmb3Ig KGkgPSAwOyBpIDwgc2VjdG9yczsgaSsrKSB7DQorICAgICAgICBiaXRtYXBfaW5kZXggPSBw YWdlZW50cnlfaW5kZXggLyA4Ow0KKyAgICAgICAgYml0bWFwYml0X2luZGV4ID0gNyAtIHBh Z2VlbnRyeV9pbmRleCAlIDg7DQorICAgICAgICBiaXRtYXBbYml0bWFwX2luZGV4XSB8PSAo MHgxIDw8IGJpdG1hcGJpdF9pbmRleCk7DQorICAgICAgICBwYWdlZW50cnlfaW5kZXgrKzsN CisgICAgfQ0KKyAgICByZXQgPSBiZHJ2X3B3cml0ZShicy0+ZmlsZSwgYml0bWFwX29mZnNl dCwgYml0bWFwLCBzLT5iaXRtYXBfc2l6ZSk7DQorICAgIGlmIChyZXQgPCAwKSB7DQorICAg ICAgICByZXR1cm4gLTE7DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KIHN0 YXRpYyBpbnQgdnBjX3dyaXRlKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rv cl9udW0sDQogICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IG5iX3NlY3RvcnMpDQogew0K ICAgICBCRFJWVlBDU3RhdGUgKnMgPSBicy0+b3BhcXVlOw0KLSAgICBpbnQ2NF90IG9mZnNl dDsNCi0gICAgaW50NjRfdCBzZWN0b3JzLCBzZWN0b3JzX3Blcl9ibG9jazsNCisgICAgVkhE Rm9vdGVyICpmb290ZXIgPSAoVkhERm9vdGVyICopIHMtPmZvb3Rlcl9idWY7DQorICAgIGlu dDY0X3Qgc2VjdG9yc19wZXJfYmxvY2sgPSBzLT5ibG9ja19zaXplID4+IEJEUlZfU0VDVE9S X0JJVFM7DQorICAgIGludDY0X3Qgb2Zmc2V0LCBzZWN0b3JzOw0KKyAgICBib29sIGlzZGlm ZiA9IHRydWU7DQogICAgIGludCByZXQ7DQotICAgIFZIREZvb3RlciAqZm9vdGVyID0gIChW SERGb290ZXIgKikgcy0+Zm9vdGVyX2J1ZjsNCiANCi0gICAgaWYgKGJlMzJfdG9fY3B1KGZv b3Rlci0+dHlwZSkgPT0gVkhEX0ZJWEVEKSB7DQorICAgIHN3aXRjaCAoYmUzMl90b19jcHUo Zm9vdGVyLT50eXBlKSkgew0KKyAgICBjYXNlIFZIRF9GSVhFRDoNCiAgICAgICAgIHJldHVy biBiZHJ2X3dyaXRlKGJzLT5maWxlLCBzZWN0b3JfbnVtLCBidWYsIG5iX3NlY3RvcnMpOw0K LSAgICB9DQotICAgIHdoaWxlIChuYl9zZWN0b3JzID4gMCkgew0KLSAgICAgICAgb2Zmc2V0 ID0gZ2V0X3NlY3Rvcl9vZmZzZXQoYnMsIHNlY3Rvcl9udW0sIDEpOw0KLQ0KLSAgICAgICAg c2VjdG9yc19wZXJfYmxvY2sgPSBzLT5ibG9ja19zaXplID4+IEJEUlZfU0VDVE9SX0JJVFM7 DQotICAgICAgICBzZWN0b3JzID0gc2VjdG9yc19wZXJfYmxvY2sgLSAoc2VjdG9yX251bSAl IHNlY3RvcnNfcGVyX2Jsb2NrKTsNCi0gICAgICAgIGlmIChzZWN0b3JzID4gbmJfc2VjdG9y cykgew0KLSAgICAgICAgICAgIHNlY3RvcnMgPSBuYl9zZWN0b3JzOw0KKyAgICBjYXNlIFZI RF9EWU5BTUlDOg0KKyAgICBjYXNlIFZIRF9ESUZGOg0KKyAgICAgICAgaWYgKFZIRF9EWU5B TUlDID09IGJlMzJfdG9fY3B1KGZvb3Rlci0+dHlwZSkpIHsNCisgICAgICAgICAgICBpc2Rp ZmYgPSBmYWxzZTsNCiAgICAgICAgIH0NCiANCi0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEp IHsNCi0gICAgICAgICAgICBvZmZzZXQgPSBhbGxvY19ibG9jayhicywgc2VjdG9yX251bSk7 DQotICAgICAgICAgICAgaWYgKG9mZnNldCA8IDApDQorICAgICAgICB3aGlsZSAobmJfc2Vj dG9ycyA+IDApIHsNCisgICAgICAgICAgICBzZWN0b3JzID0gc2VjdG9yc19wZXJfYmxvY2sg LSAoc2VjdG9yX251bSAlIHNlY3RvcnNfcGVyX2Jsb2NrKTsNCisgICAgICAgICAgICBpZiAo c2VjdG9ycyA+IG5iX3NlY3RvcnMpIHsNCisgICAgICAgICAgICAgICAgc2VjdG9ycyA9IG5i X3NlY3RvcnM7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIG9mZnNldCA9IGdl dF9zZWN0b3Jfb2Zmc2V0KGJzLCBzZWN0b3JfbnVtLCAxKTsNCisgICAgICAgICAgICBpZiAo b2Zmc2V0ID09IC0xKSB7DQorICAgICAgICAgICAgICAgIG9mZnNldCA9IGFsbG9jX2Jsb2Nr KGJzLCBzZWN0b3JfbnVtLCBpc2RpZmYpOw0KKyAgICAgICAgICAgICAgICBpZiAob2Zmc2V0 IDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAg ICAgICB9DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIHJldCA9IGJkcnZfcHdy aXRlKGJzLT5maWxlLCBvZmZzZXQsIGJ1ZiwNCisgICAgICAgICAgICAgICAgc2VjdG9ycyAq IEJEUlZfU0VDVE9SX1NJWkUpOw0KKyAgICAgICAgICAgIGlmIChyZXQgIT0gc2VjdG9ycyAq IEJEUlZfU0VDVE9SX1NJWkUpIHsNCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KLSAg ICAgICAgfQ0KKyAgICAgICAgICAgIH0NCiANCi0gICAgICAgIHJldCA9IGJkcnZfcHdyaXRl KGJzLT5maWxlLCBvZmZzZXQsIGJ1Ziwgc2VjdG9ycyAqIEJEUlZfU0VDVE9SX1NJWkUpOw0K LSAgICAgICAgaWYgKHJldCAhPSBzZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRSkgew0KLSAg ICAgICAgICAgIHJldHVybiAtMTsNCi0gICAgICAgIH0NCisgICAgICAgICAgICBpZiAodHJ1 ZSA9PSBpc2RpZmYpIHsNCisgICAgICAgICAgICAgICAgcmV0ID0gd3JpdGVfYml0bWFwKGJz LCBzZWN0b3JfbnVtLCBzZWN0b3JzKTsNCisgICAgICAgICAgICAgICAgaWYgKHJldCA8IDAp IHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAg fQ0KKyAgICAgICAgICAgIH0NCiANCi0gICAgICAgIG5iX3NlY3RvcnMgLT0gc2VjdG9yczsN Ci0gICAgICAgIHNlY3Rvcl9udW0gKz0gc2VjdG9yczsNCi0gICAgICAgIGJ1ZiArPSBzZWN0 b3JzICogQkRSVl9TRUNUT1JfU0laRTsNCisgICAgICAgICAgICBuYl9zZWN0b3JzIC09IHNl Y3RvcnM7DQorICAgICAgICAgICAgc2VjdG9yX251bSArPSBzZWN0b3JzOw0KKyAgICAgICAg ICAgIGJ1ZiArPSBzZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRTsNCisgICAgICAgIH0NCisg ICAgICAgIGJyZWFrOw0KKyAgICBkZWZhdWx0Og0KKyAgICAgICAgcmV0dXJuIC0xOw0KICAg ICB9DQotDQogICAgIHJldHVybiAwOw0KIH0NCiANCkBAIC05MTAsNiArMTEwMiw3IEBAIHN0 YXRpYyBCbG9ja0RyaXZlciBiZHJ2X3ZwYyA9IHsNCiAgICAgLmJkcnZfY2xvc2UgICAgICAg ICAgICAgPSB2cGNfY2xvc2UsDQogICAgIC5iZHJ2X3Jlb3Blbl9wcmVwYXJlICAgID0gdnBj X3Jlb3Blbl9wcmVwYXJlLA0KICAgICAuYmRydl9jcmVhdGUgICAgICAgICAgICA9IHZwY19j cmVhdGUsDQorICAgIC5zdXBwb3J0c19iYWNraW5nICAgICAgID0gdHJ1ZSwNCiANCiAgICAg LmJkcnZfcmVhZCAgICAgICAgICAgICAgPSB2cGNfY29fcmVhZCwNCiAgICAgLmJkcnZfd3Jp dGUgICAgICAgICAgICAgPSB2cGNfY29fd3JpdGUsDQotLSANCjEuOC4zLjENCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCjEuICAgICAgIGJkcnZf cHJlYWR2IGFuZCBiZHJ2X3B3cml0ZXYgYWZmZXIgZ2V0X3NlY3Rvcl9vZmZzZXRfKiBpcyBh bHJlYWR5IGNoZWNrZWQsIG90aGVycyBhcmUgY2hlY2tlZC4NCg0KMi4gICAgICAgTUFDWCBp cyBhIGJpZy1lbmRpYW4gbnVtYmVyLCBzbyB0aGVyZSBpcyBubyBuZWVkIGJlMzJfdG9fY3B1 LCBidXQgSSBhZGRlZCBhIGNvbW1lbnQgdG8gTUFDWC4NCg0KMy4gICAgICAgY2xlYW4gdGhl IGNvZGUgbm8gdXNlZCBhZnRlciBpbiB2cGNfb3Blbi4NCg0KNC4gICAgICAgbW92ZSBiZHJ2 X2NvX3JlYWR2KCkgdG8gYmRydl9wcmVhZHYgaW4gdnBjX3JlYWQuDQoNCjUuICAgICAgIEFk ZGVkIHNvbWUgY29kZSB0byBtYWtlIGl0IGVhc3kgdG8gdW5kZXJzdGFuZC4NCg0KNi4gICAg ICAgdGhlIHdyb25nIHVzZSBvZiBjcHVfdG9fYmUzMiBpcyBmaXhlZCB3aXRoIGFub3RoZXIg cGF0Y2guDQoNCg0KDQoNCkxhc3QsIGl0IGlzIGhhcmQgdG8gdXNlICJnaXQgc2VuZG1haWwi IHRvIHlvdXIgbWFpbGJveCB0aHJvdWdoIGdtYWlsLCBiZWNhdXNlIG9mIEdGVyBpbiBjaGlu YSwgc28gSSBvbmx5IGNvdWxkDQoNCnNlbmQgdG8gbXkgbWFpbC5xcS5jb20gYW5kIGZvcndh cmQgdG8gaXQuIEhvcGUgdGhhdCBjb3VsZCBydW4gISAnDQoNCkkgYW0gc28gc29ycnkgZm9y IHRoZSBsYXN0IG1haWwsIEkgbXVzdCBhZGQgYSBmaXhlZCBzdWJqZWN0IHByZWZpeCBpbiBt eSBlbWFpbCB0aGF0IG91dCBvZiBjb21wYW55LCBzbyBjb3B5IHRoZSANCg0KY29kZaOsIHNj cmV3ZWQgdXAu ------=_NextPart_540A072E_08B527B8_4B2F9251 Content-Type: text/html; charset="gb18030" Content-Transfer-Encoding: base64 Tm93IHFlbXUgb25seSBzdXBwb3J0cyB2aGQgdHlwZSBWSERfRklYRUQgYW5kIFZIRF9EWU5B TUlDLDxicj5zbyBxZW11IGNhbid0IHJlYWQgc25hcHNob3Qgdm9sdW1lIG9mIHZoZCwgYW5k IGNhbid0IHN1cHBvcnQ8YnI+b3RoZXIgc3RvcmFnZSBmZWF0dXJlcyBvZiB2aGQgZmlsZS48 YnI+PGJyPlRoaXMgcGF0Y2ggYWRkIHJlYWQgcGFyZW50IGluZm9ybWF0aW9uIGluIGZ1bmN0 aW9uICJ2cGNfb3BlbiIsPGJyPnJlYWQgYml0bWFwIGluICJ2cGNfcmVhZCIsIGFuZCBjaGFu Z2UgYml0bWFwIGluICJ2cGNfd3JpdGUiLjxicj48YnI+U2lnbmVkLW9mZi1ieTogWGlhb2Rv bmcgR29uZyAmbHQ7Z29yZG9uZ29uZzAzNTBAZ21haWwuY29tJmd0Ozxicj4tLS08YnI+Jm5i c3A7YmxvY2svdnBjLmMgfCAzMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tPGJyPiZuYnNwOzEgZmlsZSBjaGFuZ2VkLCAy NjEgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pPGJyPjxicj5kaWZmIC0tZ2l0IGEv YmxvY2svdnBjLmMgYi9ibG9jay92cGMuYzxicj5pbmRleCBjMDI0YjRjLi4zYmEwZDU3IDEw MDY0NDxicj4tLS0gYS9ibG9jay92cGMuYzxicj4rKysgYi9ibG9jay92cGMuYzxicj5AQCAt MzMsMTMgKzMzLDE4IEBAPGJyPiZuYnNwOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi88YnI+Jm5ic3A7PGJyPiZuYnNw OyNkZWZpbmUgSEVBREVSX1NJWkUgNTEyPGJyPisjZGVmaW5lIERZTkFNSUNfSEVBREVSX1NJ WkUgMTAyNDxicj4rI2RlZmluZSBQQVJFTlRfTE9DQVRPUl9OVU0gODxicj4rI2RlZmluZSBQ QVJFTlRfUFJFRklYX0xFTiA3IC8qIHN1Y2ggYXMgZmlsZTovLyAqLzxicj4rI2RlZmluZSBU QkJBVE1BUF9IRUFEX1NJWkUgMjg8YnI+KyNkZWZpbmUgTUFDWCAweDU4NjM2MTRkIC8qIGJp ZyBlbmRpYW4gKi88YnI+Jm5ic3A7PGJyPiZuYnNwOy8vI2RlZmluZSBDQUNIRTxicj4mbmJz cDs8YnI+Jm5ic3A7ZW51bSB2aGRfdHlwZSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyBWSERfRklYRUQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgPSAyLDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVkhE X0RZTkFNSUMmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgPSAzLDxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7IFZIRF9ESUZGRVJFTkNJTkcmbmJzcDsm bmJzcDsmbmJzcDsgPSA0LDxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IFZIRF9ESUZGJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7ID0gNCw8YnI+Jm5ic3A7fTs8YnI+Jm5ic3A7PGJyPiZuYnNwOy8vIFNlY29uZHMg c2luY2UgSmFuIDEsIDIwMDAgMDowMDowMCAoVVRDKTxicj5AQCAtMTM4LDYgKzE0MywxNSBA QCB0eXBlZGVmIHN0cnVjdCBCRFJWVlBDU3RhdGUgezxicj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgRXJyb3IgKm1pZ3JhdGlvbl9ibG9ja2VyOzxicj4mbmJzcDt9IEJEUlZWUENTdGF0 ZTs8YnI+Jm5ic3A7PGJyPit0eXBlZGVmIHN0cnVjdCB2aGRfdGRiYXRtYXBfaGVhZGVyIHs8 YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyBjaGFyIG1hZ2ljWzhdOyAvKiBhbHdheXMgInRkYmF0 bWFwIiAqLzxicj4rPGJyPismbmJzcDsmbmJzcDsmbmJzcDsgdWludDY0X3QgYmF0bWFwX29m ZnNldDs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyB1aW50MzJfdCBiYXRtYXBfc2l6ZTs8YnI+ KyZuYnNwOyZuYnNwOyZuYnNwOyB1aW50MzJfdCBiYXRtYXBfdmVyc2lvbjs8YnI+KyZuYnNw OyZuYnNwOyZuYnNwOyB1aW50MzJfdCBjaGVja3N1bTs8YnI+K30gUUVNVV9QQUNLRUQgVkhE VGRCYXRtYXBIZWFkZXI7PGJyPis8YnI+Jm5ic3A7c3RhdGljIHVpbnQzMl90IHZwY19jaGVj a3N1bSh1aW50OF90KiBidWYsIHNpemVfdCBzaXplKTxicj4mbmJzcDt7PGJyPiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyB1aW50MzJfdCByZXMgPSAwOzxicj5AQCAtMTUzLDcgKzE2Nyw3 IEBAIHN0YXRpYyB1aW50MzJfdCB2cGNfY2hlY2tzdW0odWludDhfdCogYnVmLCBzaXplX3Qg c2l6ZSk8YnI+Jm5ic3A7c3RhdGljIGludCB2cGNfcHJvYmUoY29uc3QgdWludDhfdCAqYnVm LCBpbnQgYnVmX3NpemUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTxicj4mbmJzcDt7PGJyPiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoYnVmX3NpemUgJmd0Oz0gOCAmYW1wOyZhbXA7 ICFzdHJuY21wKChjaGFyICopYnVmLCAiY29uZWN0aXgiLCA4KSk8YnI+LQlyZXR1cm4gMTAw Ozxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVy biAxMDA7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gMDs8YnI+Jm5ic3A7 fTxicj4mbmJzcDs8YnI+QEAgLTE2NCwxMSArMTc4LDE3IEBAIHN0YXRpYyBpbnQgdnBjX29w ZW4oQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIFFEaWN0ICpvcHRpb25zLCBpbnQgZmxhZ3MsPGJy PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpbnQgaTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IFZIREZvb3RlciAqZm9vdGVyOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg VkhERHluRGlza0hlYWRlciAqZHluZGlza19oZWFkZXI7PGJyPi0mbmJzcDsmbmJzcDsmbmJz cDsgdWludDhfdCBidWZbSEVBREVSX1NJWkVdOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IHVp bnQ4X3QgYnVmW0RZTkFNSUNfSEVBREVSX1NJWkVdOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7 IHVpbnQ4X3QgdGRiYXRtYXBfaGVhZGVyX2J1ZltUQkJBVE1BUF9IRUFEX1NJWkVdOzxicj4m bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdWludDMyX3QgY2hlY2tzdW07PGJyPiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyB1aW50NjRfdCBjb21wdXRlZF9zaXplOzxicj4tJm5ic3A7Jm5i c3A7Jm5ic3A7IGludCBkaXNrX3R5cGUgPSBWSERfRFlOQU1JQzs8YnI+KyZuYnNwOyZuYnNw OyZuYnNwOyB1aW50MzJfdCBkaXNrX3R5cGU7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyBpbnQgcmV0Ozxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IFZIRFRkQmF0bWFwSGVhZGVyICp0 ZGJhdG1hcF9oZWFkZXI7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgaW50IHBhcmVudF9sb2Nh dG9yX29mZnNldCA9IDA7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgaW50NjRfdCBkYXRhX29m ZnNldCA9IDA7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgaW50IGRhdGFfbGVuZ3RoID0gMDs8 YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyB1aW50MzJfdCBwbGF0Zm9ybTs8YnI+Jm5ic3A7PGJy PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXQgPSBiZHJ2X3ByZWFkKGJzLSZndDtmaWxl LCAwLCBzLSZndDtmb290ZXJfYnVmLCBIRUFERVJfU0laRSk7PGJyPiZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBpZiAocmV0ICZsdDsgMCkgezxicj5AQCAtMTc2LDYgKzE5Niw4IEBAIHN0 YXRpYyBpbnQgdnBjX29wZW4oQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIFFEaWN0ICpvcHRpb25z LCBpbnQgZmxhZ3MsPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPiZuYnNwOzxi cj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZm9vdGVyID0gKFZIREZvb3RlciAqKSBzLSZn dDtmb290ZXJfYnVmOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IGRpc2tfdHlwZSA9IGJlMzJf dG9fY3B1KGZvb3Rlci0mZ3Q7dHlwZSk7PGJyPis8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IGlmIChzdHJuY21wKGZvb3Rlci0mZ3Q7Y3JlYXRvciwgImNvbmVjdGl4IiwgOCkpIHs8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlu dDY0X3Qgb2Zmc2V0ID0gYmRydl9nZXRsZW5ndGgoYnMtJmd0O2ZpbGUpOzxicj4mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKG9mZnNldCAm bHQ7IDApIHs8YnI+QEAgLTIzMCw5ICsyNTIsOSBAQCBzdGF0aWMgaW50IHZwY19vcGVuKEJs b2NrRHJpdmVyU3RhdGUgKmJzLCBRRGljdCAqb3B0aW9ucywgaW50IGZsYWdzLDxicj4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZ290byBmYWls Ozxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4mbmJzcDs8YnI+LSZuYnNwOyZu YnNwOyZuYnNwOyBpZiAoZGlza190eXBlID09IFZIRF9EWU5BTUlDKSB7PGJyPismbmJzcDsm bmJzcDsmbmJzcDsgaWYgKGRpc2tfdHlwZSA9PSBWSERfRFlOQU1JQyB8fCBkaXNrX3R5cGUg PT0gVkhEX0RJRkYpIHs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IHJldCA9IGJkcnZfcHJlYWQoYnMtJmd0O2ZpbGUsIGJlNjRfdG9fY3B1 KGZvb3Rlci0mZ3Q7ZGF0YV9vZmZzZXQpLCBidWYsPGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgSEVBREVSX1NJWkUpOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IERZTkFNSUNfSEVBREVSX1NJWkUpOzxicj4mbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKHJldCAmbHQ7IDAp IHs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGdvdG8gZmFpbDs8YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+QEAgLTI4Niw2ICszMDgs NTYgQEAgc3RhdGljIGludCB2cGNfb3BlbihCbG9ja0RyaXZlclN0YXRlICpicywgUURpY3Qg Km9wdGlvbnMsIGludCBmbGFncyw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHMtJmd0O2ZyZWVfZGF0YV9ibG9ja19vZmZzZXQgPTxicj4m bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgKHMtJmd0O2JhdF9vZmZzZXQgKyAocy0mZ3Q7bWF4X3RhYmxl X2VudHJpZXMgKiA0KSArIDUxMSkgJmFtcDsgfjUxMTs8YnI+Jm5ic3A7PGJyPismbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLyogUmVhZCB0ZGJhdG1hcCBo ZWFkZXIgYnkgb2Zmc2V0ICovPGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgcmV0ID0gYmRydl9wcmVhZChicy0mZ3Q7ZmlsZSwgcy0mZ3Q7ZnJlZV9k YXRhX2Jsb2NrX29mZnNldCw8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0ZGJhdG1hcF9oZWFkZXJfYnVm LCBUQkJBVE1BUF9IRUFEX1NJWkUpOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IGlmIChyZXQgJmx0OyAwKSB7PGJyPismbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZ290 byBmYWlsOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IH08YnI+Kzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IHRkYmF0bWFwX2hlYWRlciA9IChWSERUZEJhdG1hcEhlYWRlciAqKSB0ZGJhdG1hcF9oZWFk ZXJfYnVmOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IGlmICghc3RybmNtcCh0ZGJhdG1hcF9oZWFkZXItJmd0O21hZ2ljLCAidGRiYXRtYXAiLCA4 KSkgezxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHMtJmd0O2ZyZWVfZGF0YV9ibG9ja19vZmZzZXQgPTxi cj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGJlMzJfdG9fY3B1KHRk YmF0bWFwX2hlYWRlci0mZ3Q7YmF0bWFwX3NpemUpICogNTEyPGJyPismbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKyBiZTY0X3RvX2NwdSh0ZGJhdG1hcF9oZWFkZXIt Jmd0O2JhdG1hcF9vZmZzZXQpOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IH08YnI+Kzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IC8qIFJlYWQgYmFja2luZyBmaWxlIGxvY2F0aW9uIGZyb20gZHluIGhl YWRlciB0YWJsZSAqLzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IGlmIChkeW5kaXNrX2hlYWRlci0mZ3Q7cGFyZW50X25hbWVbMF0gfHwgZHluZGlz a19oZWFkZXItJmd0O3BhcmVudF9uYW1lWzFdKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZm9yIChp ID0gMDsgaSAmbHQ7IFBBUkVOVF9MT0NBVE9SX05VTTsgaSsrKSB7PGJyPismbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZGF0YV9vZmZzZXQgPTxicj4rJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGJl NjRfdG9fY3B1KGR5bmRpc2tfaGVhZGVyLSZndDtwYXJlbnRfbG9jYXRvcltpXS5kYXRhX29m ZnNldCk7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZGF0YV9s ZW5ndGggPTxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IGJlMzJfdG9fY3B1KGR5bmRpc2tfaGVhZGVyLSZndDtwYXJl bnRfbG9jYXRvcltpXS5kYXRhX2xlbmd0aCk7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgcGxhdGZvcm0gPSBkeW5kaXNrX2hlYWRlci0mZ3Q7cGFyZW50X2xv Y2F0b3JbaV0ucGxhdGZvcm07PGJyPis8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBpZiAoTUFDWCA9PSBwbGF0Zm9ybSkgezxicj4rJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChkYXRh X29mZnNldCArIFBBUkVOVF9QUkVGSVhfTEVOICZndDs8YnI+KyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBzLSZndDttYXhfdGFibGVfZW50cmllcyAqIHMtJmd0O2Jsb2NrX3Np emUpIHs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBnb3RvIGZhaWw7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4rJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IGlmIChkYXRhX2xlbmd0aCAtIFBBUkVOVF9QUkVGSVhfTEVOICZn dDsgMTAyNCkgezxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IGdvdG8gZmFpbDs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPismbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0 ID0gYmRydl9wcmVhZChicy0mZ3Q7ZmlsZSwgZGF0YV9vZmZzZXQgKyBQQVJFTlRfUFJFRklY X0xFTiw8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBicy0mZ3Q7YmFja2lu Z19maWxlLCBkYXRhX2xlbmd0aCAtIFBBUkVOVF9QUkVGSVhfTEVOKTs8YnI+KyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBp ZiAocmV0ICZsdDsgMCkgezxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGdv dG8gZmFpbDs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPis8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBicy0mZ3Q7YmFja2luZ19m aWxlW2RhdGFfbGVuZ3RoIC0gUEFSRU5UX1BSRUZJWF9MRU5dID0gJ1wwJzs8YnI+KyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPis8YnI+KyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoZGF0YV9vZmZzZXQgJmd0OyBwYXJlbnRf bG9jYXRvcl9vZmZzZXQpIHs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwYXJlbnRfbG9jYXRvcl9vZmZzZXQgPSBk YXRhX29mZnNldDs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9 PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgfTxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IH08YnI+Kzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IGlmIChwYXJlbnRfbG9jYXRvcl9vZmZzZXQgKyA1MTIgJmd0OyBzLSZn dDtmcmVlX2RhdGFfYmxvY2tfb2Zmc2V0KSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcy0mZ3Q7ZnJl ZV9kYXRhX2Jsb2NrX29mZnNldCA9IHBhcmVudF9sb2NhdG9yX29mZnNldCArIDUxMjs8YnI+ KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPis8YnI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZvciAo aSA9IDA7IGkgJmx0OyBzLSZndDttYXhfdGFibGVfZW50cmllczsgaSsrKSB7PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBiZTMyX3RvX2NwdXMoJmFtcDtzLSZndDtwYWdldGFibGVbaV0pOzxi cj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKHMtJmd0O3BhZ2V0YWJsZVtpXSAhPSAweEZGRkZG RkZGKSB7PGJyPkBAIC0zNjMsMTkgKzQzNSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50NjRfdCBn ZXRfc2VjdG9yX29mZnNldChCbG9ja0RyaXZlclN0YXRlICpicyw8YnI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IGJpdG1hcF9vZmZzZXQgPSA1MTIgKiAodWludDY0X3QpIHMtJmd0O3Bh Z2V0YWJsZVtwYWdldGFibGVfaW5kZXhdOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg YmxvY2tfb2Zmc2V0ID0gYml0bWFwX29mZnNldCArIHMtJmd0O2JpdG1hcF9zaXplICsgKDUx MiAqIHBhZ2VlbnRyeV9pbmRleCk7PGJyPiZuYnNwOzxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7 IC8vIFdlIG11c3QgZW5zdXJlIHRoYXQgd2UgZG9uJ3Qgd3JpdGUgdG8gYW55IHNlY3RvcnMg d2hpY2ggYXJlIG1hcmtlZCBhczxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7IC8vIHVudXNlZCBp biB0aGUgYml0bWFwLiBXZSBnZXQgYXdheSB3aXRoIHNldHRpbmcgYWxsIGJpdHMgaW4gdGhl IGJsb2NrPGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsgLy8gYml0bWFwIGVhY2ggdGltZSB3ZSB3 cml0ZSB0byBhIG5ldyBibG9jay4gVGhpcyBtaWdodCBjYXVzZSBWaXJ0dWFsIFBDIHRvPGJy Pi0mbmJzcDsmbmJzcDsmbmJzcDsgLy8gbWlzcyBzcGFyc2UgcmVhZCBvcHRpbWl6YXRpb24s IGJ1dCBpdCdzIG5vdCBhIHByb2JsZW0gaW4gdGVybXMgb2Y8YnI+LSZuYnNwOyZuYnNwOyZu YnNwOyAvLyBjb3JyZWN0bmVzcy48YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyBpZiAod3JpdGUg JmFtcDsmYW1wOyAocy0mZ3Q7bGFzdF9iaXRtYXBfb2Zmc2V0ICE9IGJpdG1hcF9vZmZzZXQp KSB7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdWlu dDhfdCBiaXRtYXBbcy0mZ3Q7Yml0bWFwX3NpemVdOzxicj4tPGJyPi0mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcy0mZ3Q7bGFzdF9iaXRtYXBfb2Zmc2V0 ID0gYml0bWFwX29mZnNldDs8YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBtZW1zZXQoYml0bWFwLCAweGZmLCBzLSZndDtiaXRtYXBfc2l6ZSk7PGJy Pi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYmRydl9wd3Jp dGVfc3luYyhicy0mZ3Q7ZmlsZSwgYml0bWFwX29mZnNldCwgYml0bWFwLCBzLSZndDtiaXRt YXBfc2l6ZSk7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4tPGJyPiZuYnNwOy8vJm5i c3A7Jm5ic3A7Jm5ic3A7IHByaW50Zigic2VjdG9yOiAlIiBQUkl4NjQgIiwgaW5kZXg6ICV4 LCBvZmZzZXQ6ICV4LCBiaW9mZjogJSIgUFJJeDY0ICIsIGJsb2ZmOiAlIiBQUkl4NjQgIlxu Iiw8YnI+Jm5ic3A7Ly8Jc2VjdG9yX251bSwgcGFnZXRhYmxlX2luZGV4LCBwYWdlZW50cnlf aW5kZXgsPGJyPiZuYnNwOy8vCWJpdG1hcF9vZmZzZXQsIGJsb2NrX29mZnNldCk7PGJyPkBA IC00MTIsNiArNDcxLDUzIEBAIHN0YXRpYyBpbmxpbmUgaW50NjRfdCBnZXRfc2VjdG9yX29m ZnNldChCbG9ja0RyaXZlclN0YXRlICpicyw8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+Jm5i c3A7Lyo8YnI+KyAqIFJldHVybnMgdGhlIGFic29sdXRlIGJ5dGUgb2Zmc2V0IG9mIHRoZSBn aXZlbiBzZWN0b3IgaW4gdGhlIGRpZmZlcmVuY2luZzxicj4rICogaW1hZ2UgZmlsZS48YnI+ KyAqPGJyPisgKiBJZiB0aGUgc2VjdG9yIGlzIG5vdCBhbGxvY2F0ZWQsIC0xIGlzIHJldHVy bmVkIGluc3RlYWQuIElmIHRoZSBzZWN0b3IgaXM8YnI+KyAqIGFsbG9jYXRlZCBpbiB0aGUg YmFja2luZyBmaWxlLCAtMiBpcyByZXR1cm5lZC4gSWYgdGhlIHNlY3RvciBpcyBhbGxvY2F0 ZWQ8YnI+KyAqIGluIGN1cnJlbnQgZmlsZSwgdGhlIGJsb2NrIG9mZnNldCBpcyByZXR1cm5l ZC48YnI+KyAqLzxicj4rc3RhdGljIGlubGluZSBpbnQ2NF90IGdldF9zZWN0b3Jfb2Zmc2V0 X2RpZmYoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsPGJyPismbmJzcDsmbmJzcDsmbmJzcDsgaW50 NjRfdCBzZWN0b3JfbnVtKTxicj4rezxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IEJEUlZWUENT dGF0ZSAqcyA9IGJzLSZndDtvcGFxdWU7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgdWludDY0 X3Qgb2Zmc2V0ID0gc2VjdG9yX251bSAmbHQ7Jmx0OyBCRFJWX1NFQ1RPUl9CSVRTOzxicj4r Jm5ic3A7Jm5ic3A7Jm5ic3A7IHVpbnQ2NF90IGJpdG1hcF9vZmZzZXQ7PGJyPismbmJzcDsm bmJzcDsmbmJzcDsgdWludDY0X3QgYmxvY2tfb2Zmc2V0Ozxicj4rJm5ic3A7Jm5ic3A7Jm5i c3A7IHVpbnQzMl90IHBhZ2V0YWJsZV9pbmRleCwgcGFnZWVudHJ5X2luZGV4Ozxicj4rJm5i c3A7Jm5ic3A7Jm5ic3A7IHVpbnQzMl90IGJpdG1hcF9pbmRleCwgYml0bWFwZW50cnlfaW5k ZXg7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgdWludDhfdCBiaXRtYXBbcy0mZ3Q7Yml0bWFw X3NpemVdOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IGludCByZXQ7PGJyPis8YnI+KyZuYnNw OyZuYnNwOyZuYnNwOyBwYWdldGFibGVfaW5kZXggPSBvZmZzZXQgLyBzLSZndDtibG9ja19z aXplOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChwYWdldGFibGVfaW5kZXggJmd0Oz0g cy0mZ3Q7bWF4X3RhYmxlX2VudHJpZXMpIHs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gLTE7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsg fSBlbHNlIGlmICgweGZmZmZmZmZmID09IHMtJmd0O3BhZ2V0YWJsZVtwYWdldGFibGVfaW5k ZXhdKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg cmV0dXJuIC0yOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+Kzxicj4rJm5ic3A7Jm5i c3A7Jm5ic3A7IGJpdG1hcF9vZmZzZXQgPSA1MTIgKiAodWludDY0X3QpIHMtJmd0O3BhZ2V0 YWJsZVtwYWdldGFibGVfaW5kZXhdOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChiaXRt YXBfb2Zmc2V0ICZndDsgcy0mZ3Q7bWF4X3RhYmxlX2VudHJpZXMgKiBzLSZndDtibG9ja19z aXplKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg cmV0dXJuIC0xOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+KyZuYnNwOyZuYnNwOyZu YnNwOyByZXQgPSBiZHJ2X3ByZWFkKGJzLSZndDtmaWxlLCBiaXRtYXBfb2Zmc2V0LCBiaXRt YXAsIHMtJmd0O2JpdG1hcF9zaXplKTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAocmV0 ICZsdDsgMCkgezxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IHJldHVybiAtMTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPis8YnI+KyZuYnNw OyZuYnNwOyZuYnNwOyBwYWdlZW50cnlfaW5kZXggPSAob2Zmc2V0ICUgcy0mZ3Q7YmxvY2tf c2l6ZSkgLyA1MTI7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgYml0bWFwX2luZGV4ID0gcGFn ZWVudHJ5X2luZGV4IC8gODs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyBiaXRtYXBlbnRyeV9p bmRleCA9IDcgLSBwYWdlZW50cnlfaW5kZXggJSA4Ozxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7 IGlmIChiaXRtYXBbYml0bWFwX2luZGV4XSAmYW1wOyAweDEgJmx0OyZsdDsgYml0bWFwZW50 cnlfaW5kZXgpIHs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyBibG9ja19vZmZzZXQgPSBiaXRtYXBfb2Zmc2V0ICsgcy0mZ3Q7Yml0bWFwX3NpemUg KyAoNTEyICogcGFnZWVudHJ5X2luZGV4KTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gYmxvY2tfb2Zmc2V0Ozxicj4rJm5ic3A7Jm5i c3A7Jm5ic3A7IH0gZWxzZSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIC0yOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IH08 YnI+K308YnI+Kzxicj4rLyo8YnI+Jm5ic3A7ICogV3JpdGVzIHRoZSBmb290ZXIgdG8gdGhl IGVuZCBvZiB0aGUgaW1hZ2UgZmlsZS4gVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGU8YnI+Jm5i c3A7ICogZmlsZSBncm93cyBhcyBpdCBvdmVyd3JpdGVzIHRoZSBvbGQgZm9vdGVyPGJyPiZu YnNwOyAqPGJyPkBAIC00MzcsNyArNTQzLDggQEAgc3RhdGljIGludCByZXdyaXRlX2Zvb3Rl cihCbG9ja0RyaXZlclN0YXRlKiBicyk8YnI+Jm5ic3A7ICo8YnI+Jm5ic3A7ICogUmV0dXJu cyB0aGUgc2VjdG9ycycgb2Zmc2V0IGluIHRoZSBpbWFnZSBmaWxlIG9uIHN1Y2Nlc3MgYW5k ICZsdDsgMCBvbiBlcnJvcjxicj4mbmJzcDsgKi88YnI+LXN0YXRpYyBpbnQ2NF90IGFsbG9j X2Jsb2NrKEJsb2NrRHJpdmVyU3RhdGUqIGJzLCBpbnQ2NF90IHNlY3Rvcl9udW0pPGJyPitz dGF0aWMgaW50NjRfdCBhbGxvY19ibG9jayhCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRf dCBzZWN0b3JfbnVtLDxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IGJvb2wgaXNkaWZmKTxicj4m bmJzcDt7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBCRFJWVlBDU3RhdGUgKnMgPSBi cy0mZ3Q7b3BhcXVlOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50NjRfdCBiYXRf b2Zmc2V0Ozxicj5AQCAtNDU3LDcgKzU2NCwxMSBAQCBzdGF0aWMgaW50NjRfdCBhbGxvY19i bG9jayhCbG9ja0RyaXZlclN0YXRlKiBicywgaW50NjRfdCBzZWN0b3JfbnVtKTxicj4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgcy0mZ3Q7cGFnZXRhYmxlW2luZGV4XSA9IHMtJmd0O2Zy ZWVfZGF0YV9ibG9ja19vZmZzZXQgLyA1MTI7PGJyPiZuYnNwOzxicj4mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgLy8gSW5pdGlhbGl6ZSB0aGUgYmxvY2sncyBiaXRtYXA8YnI+LSZuYnNw OyZuYnNwOyZuYnNwOyBtZW1zZXQoYml0bWFwLCAweGZmLCBzLSZndDtiaXRtYXBfc2l6ZSk7 PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgaWYgKGlzZGlmZikgezxicj4rJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1lbXNldChiaXRtYXAsIDB4MCwgcy0m Z3Q7Yml0bWFwX3NpemUpOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IH0gZWxzZSB7PGJyPism bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbWVtc2V0KGJpdG1h cCwgMHhmZiwgcy0mZ3Q7Yml0bWFwX3NpemUpOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IH08 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldCA9IGJkcnZfcHdyaXRlX3N5bmMoYnMt Jmd0O2ZpbGUsIHMtJmd0O2ZyZWVfZGF0YV9ibG9ja19vZmZzZXQsIGJpdG1hcCw8YnI+Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHMtJmd0O2Jp dG1hcF9zaXplKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChyZXQgJmx0OyAw KSB7PGJyPkBAIC01MDEsMzYgKzYxMiw2MiBAQCBzdGF0aWMgaW50IHZwY19yZWFkKEJsb2Nr RHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rvcl9udW0sPGJyPiZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB1 aW50OF90ICpidWYsIGludCBuYl9zZWN0b3JzKTxicj4mbmJzcDt7PGJyPiZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBCRFJWVlBDU3RhdGUgKnMgPSBicy0mZ3Q7b3BhcXVlOzxicj4tJm5i c3A7Jm5ic3A7Jm5ic3A7IGludCByZXQ7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsgaW50NjRf dCBvZmZzZXQ7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsgaW50NjRfdCBzZWN0b3JzLCBzZWN0 b3JzX3Blcl9ibG9jazs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFZIREZvb3RlciAq Zm9vdGVyID0gKFZIREZvb3RlciAqKSBzLSZndDtmb290ZXJfYnVmOzxicj4rJm5ic3A7Jm5i c3A7Jm5ic3A7IGludDY0X3Qgc2VjdG9yc19wZXJfYmxvY2sgPSBzLSZndDtibG9ja19zaXpl ICZndDsmZ3Q7IEJEUlZfU0VDVE9SX0JJVFM7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgaW50 NjRfdCBvZmZzZXQsIHNlY3RvcnM7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgaW50IHJldDs8 YnI+Jm5ic3A7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsgaWYgKGJlMzJfdG9fY3B1KGZvb3Rl ci0mZ3Q7dHlwZSkgPT0gVkhEX0ZJWEVEKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgc3dp dGNoIChiZTMyX3RvX2NwdShmb290ZXItJmd0O3R5cGUpKSB7PGJyPismbmJzcDsmbmJzcDsm bmJzcDsgY2FzZSBWSERfRklYRUQ6PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gYmRydl9yZWFkKGJzLSZndDtmaWxlLCBzZWN0 b3JfbnVtLCBidWYsIG5iX3NlY3RvcnMpOzxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+ LSZuYnNwOyZuYnNwOyZuYnNwOyB3aGlsZSAobmJfc2VjdG9ycyAmZ3Q7IDApIHs8YnI+LSZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBvZmZzZXQgPSBnZXRf c2VjdG9yX29mZnNldChicywgc2VjdG9yX251bSwgMCk7PGJyPi08YnI+LSZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzZWN0b3JzX3Blcl9ibG9jayA9IHMt Jmd0O2Jsb2NrX3NpemUgJmd0OyZndDsgQkRSVl9TRUNUT1JfQklUUzs8YnI+LSZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzZWN0b3JzID0gc2VjdG9yc19w ZXJfYmxvY2sgLSAoc2VjdG9yX251bSAlIHNlY3RvcnNfcGVyX2Jsb2NrKTs8YnI+LSZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoc2VjdG9ycyAmZ3Q7 IG5iX3NlY3RvcnMpIHs8YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzZWN0b3JzID0gbmJfc2VjdG9yczs8 YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPism bmJzcDsmbmJzcDsmbmJzcDsgY2FzZSBWSERfRFlOQU1JQzo8YnI+KyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB3aGlsZSAobmJfc2VjdG9ycyAmZ3Q7IDAp IHs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBzZWN0b3JzID0gc2VjdG9yc19wZXJfYmxvY2sgLSAoc2Vj dG9yX251bSAlIHNlY3RvcnNfcGVyX2Jsb2NrKTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoc2Vj dG9ycyAmZ3Q7IG5iX3NlY3RvcnMpIHs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBzZWN0b3JzID0gbmJfc2VjdG9yczs8YnI+KyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJy PiZuYnNwOzxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IGlmIChvZmZzZXQgPT0gLTEpIHs8YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBtZW1zZXQoYnVmLCAwLCBz ZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRSk7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgfSBlbHNlIHs8YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXQgPSBi ZHJ2X3ByZWFkKGJzLSZndDtmaWxlLCBvZmZzZXQsIGJ1Ziw8YnI+LSZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRSk7PGJy Pi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgaWYgKHJldCAhPSBzZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRSkg ezxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiAtMTs8 YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyBvZmZzZXQgPSBnZXRfc2VjdG9yX29mZnNldChicywgc2VjdG9y X251bSwgMCk7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKC0xID09IG9mZnNldCkgezxicj4rJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1lbXNldChidWYsIDAsIHNlY3Rv cnMgKiBCRFJWX1NFQ1RPUl9TSVpFKTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9IGVsc2Ugezxicj4r Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldCA9IGJkcnZfcHJlYWQo YnMtJmd0O2ZpbGUsIG9mZnNldCwgYnVmLDxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNlY3RvcnMgKiBCRFJWX1NF Q1RPUl9TSVpFKTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBp ZiAocmV0ICE9IHNlY3RvcnMgKiBCRFJWX1NFQ1RPUl9TSVpFKSB7PGJyPismbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0 dXJuIC0xOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+Kzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG5iX3NlY3RvcnMg LT0gc2VjdG9yczs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzZWN0b3JfbnVtICs9IHNlY3RvcnM7PGJy PismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgYnVmICs9IHNlY3RvcnMgKiBCRFJWX1NFQ1RPUl9TSVpFOzxicj4m bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4r Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGJyZWFrOzxicj4r Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNhc2UgVkhEX0RJRkY6PGJyPismbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgd2hpbGUgKG5iX3NlY3RvcnMgJmd0OyAwKSB7 PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgb2Zmc2V0ID0gZ2V0X3NlY3Rvcl9vZmZzZXRfZGlmZihicywg c2VjdG9yX251bSk7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKC0xID09IG9mZnNldCkgezxicj4r Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1lbXNldChidWYsIDAsIEJE UlZfU0VDVE9SX1NJWkUpOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH0gZWxzZSBpZiAoLTIgPT0gb2Zm c2V0KSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0ID0g YmRydl9wcmVhZChicy0mZ3Q7YmFja2luZ19oZCwgc2VjdG9yX251bSAmbHQ7Jmx0OyBCRFJW X1NFQ1RPUl9CSVRTPGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLCBidWYsIEJEUlZfU0VDVE9SX1NJWkUpOzxicj4r Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChyZXQgJmx0OyAwKSB7 PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgcmV0dXJuIC0xOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IH08YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9IGVsc2Ugezxicj4rJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldCA9IGJkcnZfcHJlYWQoYnMtJmd0O2ZpbGUs IG9mZnNldCwgYnVmLCBCRFJWX1NFQ1RPUl9TSVpFKTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAocmV0ICE9IEJEUlZfU0VDVE9SX1NJWkUpIHs8YnI+ KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyByZXR1cm4gLTE7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgfTxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+Jm5ic3A7PGJyPi0mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbmJfc2VjdG9ycyAtPSBzZWN0b3JzOzxi cj4tJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNlY3Rvcl9u dW0gKz0gc2VjdG9yczs8YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyBidWYgKz0gc2VjdG9ycyAqIEJEUlZfU0VDVE9SX1NJWkU7PGJyPismbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgbmJfc2VjdG9ycy0tOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNlY3Rvcl9udW0rKzs8YnI+ KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBidWYgKz0gQkRSVl9TRUNUT1JfU0laRTs8YnI+KyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPismbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYnJlYWs7PGJyPismbmJzcDsmbmJzcDsmbmJz cDsgZGVmYXVsdDo8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyByZXR1cm4gLTE7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gMDs8YnI+Jm5ic3A7fTxicj5AQCAtNTQ2LDQz ICs2ODMsOTggQEAgc3RhdGljIGNvcm91dGluZV9mbiBpbnQgdnBjX2NvX3JlYWQoQmxvY2tE cml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9yX251bSw8YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IHJldHVybiByZXQ7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPitzdGF0aWMg aW5saW5lIGludDY0X3Qgd3JpdGVfYml0bWFwKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2 NF90IHNlY3Rvcl9udW0sPGJyPismbmJzcDsmbmJzcDsmbmJzcDsgaW50NjRfdCBzZWN0b3Jz KTxicj4rezxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IEJEUlZWUENTdGF0ZSAqcyA9IGJzLSZn dDtvcGFxdWU7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgdWludDY0X3Qgb2Zmc2V0ID0gc2Vj dG9yX251bSAmbHQ7Jmx0OyBCRFJWX1NFQ1RPUl9CSVRTOzxicj4rJm5ic3A7Jm5ic3A7Jm5i c3A7IHVpbnQ2NF90IGJpdG1hcF9vZmZzZXQ7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgdWlu dDMyX3QgcGFnZXRhYmxlX2luZGV4LCBwYWdlZW50cnlfaW5kZXg7PGJyPismbmJzcDsmbmJz cDsmbmJzcDsgdWludDhfdCBiaXRtYXBbcy0mZ3Q7Yml0bWFwX3NpemVdOzxicj4rJm5ic3A7 Jm5ic3A7Jm5ic3A7IHVpbnQzMl90IGJpdG1hcF9pbmRleCwgYml0bWFwYml0X2luZGV4Ozxi cj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IGludCBpOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IGlu dCByZXQ7PGJyPis8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyBwYWdldGFibGVfaW5kZXggPSBv ZmZzZXQgLyBzLSZndDtibG9ja19zaXplOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IHBhZ2Vl bnRyeV9pbmRleCA9IChvZmZzZXQgJSBzLSZndDtibG9ja19zaXplKSAvIDUxMjs8YnI+KyZu YnNwOyZuYnNwOyZuYnNwOyBiaXRtYXBfb2Zmc2V0ID0gNTEyICogKHVpbnQ2NF90KSBzLSZn dDtwYWdldGFibGVbcGFnZXRhYmxlX2luZGV4XTs8YnI+Kzxicj4rJm5ic3A7Jm5ic3A7Jm5i c3A7IGlmIChiaXRtYXBfb2Zmc2V0ICZndDsgcy0mZ3Q7bWF4X3RhYmxlX2VudHJpZXMgKiBz LSZndDtibG9ja19zaXplKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgcmV0dXJuIC0xOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+KyZu YnNwOyZuYnNwOyZuYnNwOyByZXQgPSBiZHJ2X3ByZWFkKGJzLSZndDtmaWxlLCBiaXRtYXBf b2Zmc2V0LCBiaXRtYXAsIHMtJmd0O2JpdG1hcF9zaXplKTs8YnI+KyZuYnNwOyZuYnNwOyZu YnNwOyBpZiAocmV0ICZsdDsgMCkgezxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IHJldHVybiAtMTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJy Pis8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyBmb3IgKGkgPSAwOyBpICZsdDsgc2VjdG9yczsg aSsrKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg Yml0bWFwX2luZGV4ID0gcGFnZWVudHJ5X2luZGV4IC8gODs8YnI+KyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBiaXRtYXBiaXRfaW5kZXggPSA3IC0gcGFn ZWVudHJ5X2luZGV4ICUgODs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBiaXRtYXBbYml0bWFwX2luZGV4XSB8PSAoMHgxICZsdDsmbHQ7IGJpdG1h cGJpdF9pbmRleCk7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgcGFnZWVudHJ5X2luZGV4Kys7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4r Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldCA9IGJkcnZfcHdyaXRlKGJzLSZndDtmaWxlLCBiaXRt YXBfb2Zmc2V0LCBiaXRtYXAsIHMtJmd0O2JpdG1hcF9zaXplKTs8YnI+KyZuYnNwOyZuYnNw OyZuYnNwOyBpZiAocmV0ICZsdDsgMCkgezxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiAtMTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyB9 PGJyPis8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gMDs8YnI+K308YnI+Kzxicj4m bmJzcDtzdGF0aWMgaW50IHZwY193cml0ZShCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRf dCBzZWN0b3JfbnVtLDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgY29uc3QgdWludDhf dCAqYnVmLCBpbnQgbmJfc2VjdG9ycyk8YnI+Jm5ic3A7ezxicj4mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgQkRSVlZQQ1N0YXRlICpzID0gYnMtJmd0O29wYXF1ZTs8YnI+LSZuYnNwOyZu YnNwOyZuYnNwOyBpbnQ2NF90IG9mZnNldDs8YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyBpbnQ2 NF90IHNlY3RvcnMsIHNlY3RvcnNfcGVyX2Jsb2NrOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7 IFZIREZvb3RlciAqZm9vdGVyID0gKFZIREZvb3RlciAqKSBzLSZndDtmb290ZXJfYnVmOzxi cj4rJm5ic3A7Jm5ic3A7Jm5ic3A7IGludDY0X3Qgc2VjdG9yc19wZXJfYmxvY2sgPSBzLSZn dDtibG9ja19zaXplICZndDsmZ3Q7IEJEUlZfU0VDVE9SX0JJVFM7PGJyPismbmJzcDsmbmJz cDsmbmJzcDsgaW50NjRfdCBvZmZzZXQsIHNlY3RvcnM7PGJyPismbmJzcDsmbmJzcDsmbmJz cDsgYm9vbCBpc2RpZmYgPSB0cnVlOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50 IHJldDs8YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyBWSERGb290ZXIgKmZvb3RlciA9Jm5ic3A7 IChWSERGb290ZXIgKikgcy0mZ3Q7Zm9vdGVyX2J1Zjs8YnI+Jm5ic3A7PGJyPi0mbmJzcDsm bmJzcDsmbmJzcDsgaWYgKGJlMzJfdG9fY3B1KGZvb3Rlci0mZ3Q7dHlwZSkgPT0gVkhEX0ZJ WEVEKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgc3dpdGNoIChiZTMyX3RvX2NwdShmb290 ZXItJmd0O3R5cGUpKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgY2FzZSBWSERfRklYRUQ6 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBy ZXR1cm4gYmRydl93cml0ZShicy0mZ3Q7ZmlsZSwgc2VjdG9yX251bSwgYnVmLCBuYl9zZWN0 b3JzKTs8YnI+LSZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsg d2hpbGUgKG5iX3NlY3RvcnMgJmd0OyAwKSB7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgb2Zmc2V0ID0gZ2V0X3NlY3Rvcl9vZmZzZXQoYnMsIHNl Y3Rvcl9udW0sIDEpOzxicj4tPGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgc2VjdG9yc19wZXJfYmxvY2sgPSBzLSZndDtibG9ja19zaXplICZndDsm Z3Q7IEJEUlZfU0VDVE9SX0JJVFM7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgc2VjdG9ycyA9IHNlY3RvcnNfcGVyX2Jsb2NrIC0gKHNlY3Rvcl9u dW0gJSBzZWN0b3JzX3Blcl9ibG9jayk7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgaWYgKHNlY3RvcnMgJmd0OyBuYl9zZWN0b3JzKSB7PGJyPi0m bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgc2VjdG9ycyA9IG5iX3NlY3RvcnM7PGJyPismbmJzcDsmbmJzcDsmbmJz cDsgY2FzZSBWSERfRFlOQU1JQzo8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyBjYXNlIFZIRF9E SUZGOjxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlm IChWSERfRFlOQU1JQyA9PSBiZTMyX3RvX2NwdShmb290ZXItJmd0O3R5cGUpKSB7PGJyPism bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgaXNkaWZmID0gZmFsc2U7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPiZuYnNwOzxicj4tJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChvZmZzZXQgPT0gLTEpIHs8YnI+ LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBvZmZzZXQgPSBhbGxvY19ibG9jayhicywgc2VjdG9yX251bSk7PGJy Pi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgaWYgKG9mZnNldCAmbHQ7IDApPGJyPismbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgd2hpbGUgKG5iX3NlY3RvcnMgJmd0OyAwKSB7 PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgc2VjdG9ycyA9IHNlY3RvcnNfcGVyX2Jsb2NrIC0gKHNlY3Rv cl9udW0gJSBzZWN0b3JzX3Blcl9ibG9jayk7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKHNlY3Rv cnMgJmd0OyBuYl9zZWN0b3JzKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgc2VjdG9ycyA9IG5iX3NlY3RvcnM7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4r PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgb2Zmc2V0ID0gZ2V0X3NlY3Rvcl9vZmZzZXQoYnMsIHNlY3Rv cl9udW0sIDEpOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChvZmZzZXQgPT0gLTEpIHs8YnI+KyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBvZmZzZXQgPSBhbGxvY19ibG9j ayhicywgc2VjdG9yX251bSwgaXNkaWZmKTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBpZiAob2Zmc2V0ICZsdDsgMCkgezxicj4rJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiAt MTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPismbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgfTxicj4rPGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0ID0gYmRydl9wd3JpdGUoYnMt Jmd0O2ZpbGUsIG9mZnNldCwgYnVmLDxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IHNlY3RvcnMgKiBCRFJWX1NFQ1RPUl9TSVpFKTs8YnI+KyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyBpZiAocmV0ICE9IHNlY3RvcnMgKiBCRFJWX1NFQ1RPUl9TSVpFKSB7PGJyPiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gLTE7PGJyPi0mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4rJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IH08YnI+Jm5ic3A7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgcmV0ID0gYmRydl9wd3JpdGUoYnMtJmd0O2ZpbGUsIG9mZnNldCwgYnVmLCBz ZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRSk7PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKHJldCAhPSBzZWN0b3JzICogQkRSVl9TRUNUT1Jf U0laRSkgezxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiAtMTs8YnI+LSZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPismbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKHRy dWUgPT0gaXNkaWZmKSB7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgcmV0ID0gd3JpdGVfYml0bWFwKGJzLCBzZWN0b3JfbnVtLCBzZWN0b3JzKTs8YnI+KyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAocmV0ICZsdDsgMCkgezxi cj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IHJldHVybiAtMTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyB9PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4mbmJzcDs8YnI+LSZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBuYl9zZWN0b3JzIC09IHNlY3RvcnM7 PGJyPi0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc2VjdG9y X251bSArPSBzZWN0b3JzOzxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IGJ1ZiArPSBzZWN0b3JzICogQkRSVl9TRUNUT1JfU0laRTs8YnI+KyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyBuYl9zZWN0b3JzIC09IHNlY3RvcnM7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc2VjdG9y X251bSArPSBzZWN0b3JzOzxicj4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGJ1ZiArPSBzZWN0b3JzICogQkRS Vl9TRUNUT1JfU0laRTs8YnI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyB9PGJyPismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgYnJlYWs7PGJyPismbmJzcDsmbmJzcDsmbmJzcDsgZGVmYXVsdDo8YnI+KyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gLTE7PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPi08YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IHJldHVybiAwOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj5AQCAtOTEwLDYgKzExMDIsNyBA QCBzdGF0aWMgQmxvY2tEcml2ZXIgYmRydl92cGMgPSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyAuYmRydl9jbG9zZSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA9IHZwY19jbG9zZSw8YnI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IC5iZHJ2X3Jlb3Blbl9wcmVwYXJlJm5ic3A7Jm5i c3A7Jm5ic3A7ID0gdnBjX3Jlb3Blbl9wcmVwYXJlLDxicj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgLmJkcnZfY3JlYXRlJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ID0gdnBjX2NyZWF0ZSw8YnI+KyZuYnNw OyZuYnNwOyZuYnNwOyAuc3VwcG9ydHNfYmFja2luZyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyA9IHRydWUsPGJyPiZuYnNwOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgLmJkcnZfcmVhZCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA9IHZwY19jb19yZWFk LDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLmJkcnZfd3JpdGUmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgPSB2cGNfY29fd3JpdGUsPGJyPi0tIDxicj4xLjguMy4xPGJyPjxicj48ZGl2Pjxi cj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48 ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48 L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2 PjxwIHN0eWxlPSJjb2xvcjogcmdiKDM0LCAzNCwgMzQpOyBmb250LWZhbWlseTogYXJpYWws IHNhbnMtc2VyaWY7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG1hcmdpbi1sZWZ0OiAxOHB0OyI+ PHNwYW4gbGFuZz0iRU4tVVMiPjEuPHNwYW4gc3R5bGU9ImZvbnQtc3RyZXRjaDogbm9ybWFs OyBmb250LXNpemU6IDdwdDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyI+Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvc3Bhbj48 dT48L3U+PHNwYW4gbGFuZz0iRU4tVVMiPmJkcnZfcHJlYWR2IGFuZCBiZHJ2X3B3cml0ZXYg YWZmZXIgZ2V0X3NlY3Rvcl9vZmZzZXRfKiBpcyBhbHJlYWR5IGNoZWNrZWQsIG90aGVycyBh cmUgY2hlY2tlZC48L3NwYW4+PC9wPjxwIHN0eWxlPSJjb2xvcjogcmdiKDM0LCAzNCwgMzQp OyBmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7IGxpbmUtaGVpZ2h0OiBub3JtYWw7 IG1hcmdpbi1sZWZ0OiAxOHB0OyI+PHU+PC91PjxzcGFuIGxhbmc9IkVOLVVTIj4yLjxzcGFu IHN0eWxlPSJmb250LXN0cmV0Y2g6IG5vcm1hbDsgZm9udC1zaXplOiA3cHQ7IGZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOzwvc3Bhbj48L3NwYW4+PHU+PC91PjxzcGFuIGxhbmc9IkVOLVVTIj5N QUNYIGlzIGEgYmlnLWVuZGlhbiBudW1iZXIsIHNvIHRoZXJlIGlzIG5vIG5lZWQgYmUzMl90 b19jcHUsIGJ1dCBJIGFkZGVkIGEgY29tbWVudCB0byBNQUNYLjx1PjwvdT48dT48L3U+PC9z cGFuPjwvcD48cCBzdHlsZT0iY29sb3I6IHJnYigzNCwgMzQsIDM0KTsgZm9udC1mYW1pbHk6 IGFyaWFsLCBzYW5zLXNlcmlmOyBsaW5lLWhlaWdodDogbm9ybWFsOyBtYXJnaW4tbGVmdDog MThwdDsiPjx1PjwvdT48c3BhbiBsYW5nPSJFTi1VUyI+My48c3BhbiBzdHlsZT0iZm9udC1z dHJldGNoOiBub3JtYWw7IGZvbnQtc2l6ZTogN3B0OyBmb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8 L3NwYW4+PC9zcGFuPjx1PjwvdT48c3BhbiBsYW5nPSJFTi1VUyI+Y2xlYW4gdGhlIGNvZGUg bm8gdXNlZCBhZnRlciBpbiB2cGNfb3Blbi48dT48L3U+PHU+PC91Pjwvc3Bhbj48L3A+PHAg c3R5bGU9ImNvbG9yOiByZ2IoMzQsIDM0LCAzNCk7IGZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fu cy1zZXJpZjsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgbWFyZ2luLWxlZnQ6IDE4cHQ7Ij48dT48 L3U+PHNwYW4gbGFuZz0iRU4tVVMiPjQuPHNwYW4gc3R5bGU9ImZvbnQtc3RyZXRjaDogbm9y bWFsOyBmb250LXNpemU6IDdwdDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvc3Bh bj48dT48L3U+PHNwYW4gbGFuZz0iRU4tVVMiPm1vdmUgYmRydl9jb19yZWFkdigpIHRvIGJk cnZfcHJlYWR2IGluIHZwY19yZWFkLjx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD48cCBzdHls ZT0iY29sb3I6IHJnYigzNCwgMzQsIDM0KTsgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNl cmlmOyBsaW5lLWhlaWdodDogbm9ybWFsOyBtYXJnaW4tbGVmdDogMThwdDsiPjx1PjwvdT48 c3BhbiBsYW5nPSJFTi1VUyI+NS48c3BhbiBzdHlsZT0iZm9udC1zdHJldGNoOiBub3JtYWw7 IGZvbnQtc2l6ZTogN3B0OyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7Ij4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+PC9zcGFuPjx1 PjwvdT48c3BhbiBsYW5nPSJFTi1VUyI+QWRkZWQgc29tZSBjb2RlIHRvIG1ha2UgaXQgZWFz eSB0byB1bmRlcnN0YW5kLjx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD48cCBzdHlsZT0iY29s b3I6IHJnYigzNCwgMzQsIDM0KTsgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBs aW5lLWhlaWdodDogbm9ybWFsOyBtYXJnaW4tbGVmdDogMThwdDsiPjx1PjwvdT48c3BhbiBs YW5nPSJFTi1VUyI+Ni48c3BhbiBzdHlsZT0iZm9udC1zdHJldGNoOiBub3JtYWw7IGZvbnQt c2l6ZTogN3B0OyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7Ij4mbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+PC9zcGFuPjx1PjwvdT48 c3BhbiBsYW5nPSJFTi1VUyI+dGhlIHdyb25nIHVzZSBvZiBjcHVfdG9fYmUzMiBpcyBmaXhl ZCB3aXRoIGFub3RoZXIgcGF0Y2guPC9zcGFuPjwvcD48cCBzdHlsZT0iY29sb3I6IHJnYigz NCwgMzQsIDM0KTsgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBsaW5lLWhlaWdo dDogbm9ybWFsOyBtYXJnaW4tbGVmdDogMThwdDsiPjxzcGFuIGxhbmc9IkVOLVVTIj48YnI+ PC9zcGFuPjwvcD48cCBzdHlsZT0iY29sb3I6IHJnYigzNCwgMzQsIDM0KTsgZm9udC1mYW1p bHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBsaW5lLWhlaWdodDogbm9ybWFsOyBtYXJnaW4tbGVm dDogMThwdDsiPjxzcGFuIGxhbmc9IkVOLVVTIj5MYXN0LCBpdCBpcyBoYXJkIHRvIHVzZSAi Z2l0IHNlbmRtYWlsIiB0byB5b3VyIG1haWxib3ggdGhyb3VnaCBnbWFpbCwgYmVjYXVzZSBv ZiBHRlcgaW4gY2hpbmEsIHNvIEkgb25seSBjb3VsZDwvc3Bhbj48L3A+PHAgc3R5bGU9ImNv bG9yOiByZ2IoMzQsIDM0LCAzNCk7IGZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsg bGluZS1oZWlnaHQ6IG5vcm1hbDsgbWFyZ2luLWxlZnQ6IDE4cHQ7Ij48c3BhbiBsYW5nPSJF Ti1VUyI+c2VuZCB0byBteSBtYWlsLnFxLmNvbSBhbmQgZm9yd2FyZCB0byBpdC4gSG9wZSB0 aGF0IGNvdWxkIHJ1biAhICc8L3NwYW4+PC9wPjxwIHN0eWxlPSJjb2xvcjogcmdiKDM0LCAz NCwgMzQpOyBmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7IGxpbmUtaGVpZ2h0OiBu b3JtYWw7IG1hcmdpbi1sZWZ0OiAxOHB0OyI+PHNwYW4gbGFuZz0iRU4tVVMiPkkgYW0gc28g c29ycnkgZm9yIHRoZSBsYXN0IG1haWwsIEkgbXVzdCBhZGQgYSBmaXhlZCBzdWJqZWN0IHBy ZWZpeCBpbiBteSBlbWFpbCB0aGF0IG91dCBvZiBjb21wYW55LCBzbyBjb3B5IHRoZSZuYnNw Ozwvc3Bhbj48L3A+PHAgc3R5bGU9ImNvbG9yOiByZ2IoMzQsIDM0LCAzNCk7IGZvbnQtZmFt aWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgbWFyZ2luLWxl ZnQ6IDE4cHQ7Ij48c3BhbiBsYW5nPSJFTi1VUyI+Y29kZaOsIHNjcmV3ZWQgdXAuJm5ic3A7 PC9zcGFuPjwvcD48cCBzdHlsZT0iY29sb3I6IHJnYigzNCwgMzQsIDM0KTsgZm9udC1mYW1p bHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBsaW5lLWhlaWdodDogbm9ybWFsOyBtYXJnaW4tbGVm dDogMThwdDsiPjxzcGFuIGxhbmc9IkVOLVVTIj4mbmJzcDs8L3NwYW4+PC9wPjwvZGl2Pg== ------=_NextPart_540A072E_08B527B8_4B2F9251--