From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10049.outbound.protection.outlook.com [40.107.1.49]) by dpdk.org (Postfix) with ESMTP id 7AF5D160; Mon, 8 Oct 2018 12:33:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5hp2mWEat/+CyTRjFlkqaN+J164ffxzN7phCgKnmCZs=; b=YP/g8M2cbNOZVTHyfinwkhFrXwwh2wUzO+wid7P5qAFRULc5KeEmL9TPVPrrKViId+Uvh3DQZ4wLKvRsa4VBv5rcmZC/3z93t7EZ3+Ivy3O2kT0w7AHzH7KdlBiu4PpFg1n6qIuij875+jwK7SpIeeY2IOFU1JNVApY5i8xxWdM= Received: from DB7PR08MB3163.eurprd08.prod.outlook.com (52.134.110.149) by DB7PR08MB3434.eurprd08.prod.outlook.com (20.176.238.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.28; Mon, 8 Oct 2018 10:33:43 +0000 Received: from DB7PR08MB3163.eurprd08.prod.outlook.com ([fe80::e535:27:f833:3258]) by DB7PR08MB3163.eurprd08.prod.outlook.com ([fe80::e535:27:f833:3258%2]) with mapi id 15.20.1207.024; Mon, 8 Oct 2018 10:33:43 +0000 From: "Gavin Hu (Arm Technology China)" To: Ola Liljedahl , Jerin Jacob CC: "dev@dpdk.org" , Honnappa Nagarahalli , "Ananyev, Konstantin" , Steve Capper , nd , "stable@dpdk.org" Thread-Topic: [PATCH v3 1/3] ring: read tail using atomic load Thread-Index: AQHUTl7oRf7ShYPLWECgB4oSebTnGqUHJ0+AgAij3fCAAKEOgIAAMIcAgAAF34CAACPDgIAAGFMAgAAgVICAABBDgIAAIdaAgAADEgCAAANNgIAAAVCAgAC6c4CAAMoBgIAAizEAgAEX/gCAAJzqgIAANqSAgAAKnoCAAAcsgIAAAZNA Date: Mon, 8 Oct 2018 10:33:43 +0000 Message-ID: References: <1555626C-F2B8-44EB-98A3-79B1F7002587@arm.com> <60055965-A7C8-4E9F-8668-0AE1DCE57515@arm.com> <20181006074126.GA16715@jerin> <20181007040243.GA1850@jerin> <7A156041-23EC-4CCB-B129-3607AF34A992@arm.com> <20181008060629.GA5228@jerin> <063A95EC-CFC1-42F7-B864-DFB9C6718AC8@arm.com> <20181008100004.GB11081@jerin> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Gavin.Hu@arm.com; x-originating-ip: [113.29.88.7] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB7PR08MB3434; 6:Ow6JGSgY/ezwjXmKdSkqJk8KrdjFnxXL7BuX8qKygJyMD+LJXCV6GOwEDe1/7ykJZzTlLy9XD1bXQTOq8irfMOPm8sNmX1nAYxCzpDM3ej3iULdV0QF5rrHiXXhs6dMsvCYbYECHSVkvJpF22mA6e8ii76vQY/jjzXuCKTLk++5OCN8l6KGjj9rm3NNwUARJvVdXZc10bKsfOFhRzfQW6ezL06v3sQKuEsbTbltPX0opzT4/5wBP02gX5Oc8LUY7g7epYQR29HjI+0WYOk/q0wTX4hTqOMPoWoIhdG4bBCy0glfzZl3iiI/9zsm4UwFl1CHT+uk8QAXN6C0ma+aHSsJVfYLj/8rPLDx3ge0FMSXQQp7Z1qU73S+DWRDscFu+JlN+dh1f7qL0Ovxth0Raq7c5Vej9b65WagXQfd47CvMkPk2jtgPGUgafXudsO6NEpTbUu3klo+/4fenLobgqnQ==; 5:ox4c+joHWTFtVg/PKCRpmvix7OxuYAdcYlTph5+EyEEUKMjpDbZ/6BjLdedhia8ZvIvlR37M1gy2fGSocRu663VxM2vlZEGQjwGZgthN7xh6wMXQdR74wI6++NR6vV2by0xabZyZBDZkfgtYZVJ1YuJWKAm0nUW6fdqNKP1Yjxo=; 7:jevx1icIxtDViy8ttZfO7p45k1Jhz2TsktmTc+O7LnJBY2gJwbhXYm3JodhjYjD0/pzzJoyAQkqS3j9MXWcNDYQouJs3Jts5c7mEvyiNitPBe3wfEvu8pW3WtVIHw0Z8VLwQuafFMTObOhgabLryTJRZ9Ao5722etJNQGgd/rXNBjsVg2WfrfWSCX/IkBzL3hcFoHRth0M4GW7qP43u8mwv1EA7kfL1L0fnvUTr+nvZwgpErqsJRlPqJF+befpDM x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 60aa9343-ac81-49c7-6f01-08d62d09858e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR08MB3434; x-ms-traffictypediagnostic: DB7PR08MB3434: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(166708455590820)(180628864354917)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991055); SRVR:DB7PR08MB3434; BCL:0; PCL:0; RULEID:; SRVR:DB7PR08MB3434; x-forefront-prvs: 081904387B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(396003)(366004)(346002)(376002)(136003)(199004)(51234002)(189003)(13464003)(71200400001)(71190400001)(476003)(99286004)(74316002)(446003)(305945005)(6436002)(2906002)(33656002)(6246003)(110136005)(229853002)(5250100002)(54906003)(4744004)(93886005)(97736004)(7736002)(11346002)(102836004)(316002)(486006)(478600001)(72206003)(3846002)(68736007)(106356001)(53546011)(55236004)(6506007)(25786009)(66066001)(53936002)(186003)(14454004)(5660300001)(19627235002)(966005)(6116002)(256004)(14444005)(81166006)(81156014)(55016002)(8676002)(76176011)(7696005)(6306002)(4326008)(53946003)(2900100001)(26005)(9686003)(86362001)(45080400002)(105586002)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3434; H:DB7PR08MB3163.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: xS8RC8/IT+BVhHGl7P1Utav9OzgvUheFFfscQ87Ih5wWYMpOEUEFoDHWVA9Ewu1hkjdMtpJ9bgddM4L3VJTAjAdYBno7f96EpsB6PI24dhsZdT92/n1ZJV/k3M1rV5EJ/kTONE/YUGgvMZupVIBo5dsBDGt7pNs7w9/pB3CztIrOAqgaiDm4oDuvqhSijWvDM1QuNjLNcpm4uVYY6nQzxa5+I+lH8SAN6wIHn3WEceFpwW62cgX20tqh81lE2h1CG9TiLc1PUay1wfbXndSUYeCqj8Twc0Qh4gFr1o2jAwBxhl/gBlACZMuTAFzRuqGVqTQbwTQAxFAtUt7JYHU3Uge0go+81MVEE+oNj/m/U9A= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60aa9343-ac81-49c7-6f01-08d62d09858e X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2018 10:33:43.7069 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3434 Subject: Re: [dpdk-stable] [PATCH v3 1/3] ring: read tail using atomic load X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Oct 2018 10:33:45 -0000 SSBkaWQgYmVuY2htYXJraW5nIHcvbyBhbmQgdy8gdGhlIHBhdGNoLCBpdCBkaWQgbm90IHNob3cg YW55IG5vdGljZWFibGUgZGlmZmVyZW5jZXMgaW4gdGVybXMgb2YgbGF0ZW5jeS4NCkhlcmUgaXMg dGhlIGZ1bGwgbG9nKCAzIHJ1bnMgdy9vIHRoZSBwYXRjaCBhbmQgMiBydW5zIHcvIHRoZSBwYXRj aCkuDQoNCnN1ZG8gLi90ZXN0L3Rlc3QvdGVzdCAtbCAxNi0xOSw0NC00Nyw3Mi03NSwxMDAtMTAz IC1uIDQgLS1zb2NrZXQtbWVtPTEwMjQgIC0tIC1pDQoNClJURT4+cmluZ19wZXJmX2F1dG90ZXN0 ICgjMSBydW4gb2YgdGVzdCB3aXRob3V0IHRoZSBwYXRjaCkNCiMjIyBUZXN0aW5nIHNpbmdsZSBl bGVtZW50IGFuZCBidXJzdCBlbnEvZGVxICMjIw0KU1AvU0Mgc2luZ2xlIGVucS9kZXF1ZXVlOiA4 DQpNUC9NQyBzaW5nbGUgZW5xL2RlcXVldWU6IDEwDQpTUC9TQyBidXJzdCBlbnEvZGVxdWV1ZSAo c2l6ZTogOCk6IDENCk1QL01DIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMQ0KU1AvU0Mg YnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMA0KTVAvTUMgYnVyc3QgZW5xL2RlcXVldWUg KHNpemU6IDMyKTogMA0KDQojIyMgVGVzdGluZyBlbXB0eSBkZXF1ZXVlICMjIw0KU0MgZW1wdHkg ZGVxdWV1ZTogMC4yNA0KTUMgZW1wdHkgZGVxdWV1ZTogMC4yNA0KDQojIyMgVGVzdGluZyB1c2lu ZyBhIHNpbmdsZSBsY29yZSAjIyMNClNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAx LjQwDQpNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS43NA0KU1AvU0MgYnVsayBl bnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwLjU5DQpNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXpl OiAzMik6IDAuNjgNCg0KIyMjIFRlc3RpbmcgdXNpbmcgdHdvIGh5cGVydGhyZWFkcyAjIyMNClNQ L1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAyLjQ5DQpNUC9NQyBidWxrIGVucS9kZXF1 ZXVlIChzaXplOiA4KTogMy4wOQ0KU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAx LjA3DQpNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDEuMTMNCg0KIyMjIFRlc3Rp bmcgdXNpbmcgdHdvIHBoeXNpY2FsIGNvcmVzICMjIw0KU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAo c2l6ZTogOCk6IDYuNTUNCk1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxMi45OQ0K U1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjk3DQpNUC9NQyBidWxrIGVucS9k ZXF1ZXVlIChzaXplOiAzMik6IDMuNDENCg0KUlRFPj5yaW5nX3BlcmZfYXV0b3Rlc3QoIzIgcnVu IG9mIHRlc3Qgd2l0aG91dCB0aGUgcGF0Y2gpDQojIyMgVGVzdGluZyBzaW5nbGUgZWxlbWVudCBh bmQgYnVyc3QgZW5xL2RlcSAjIyMNClNQL1NDIHNpbmdsZSBlbnEvZGVxdWV1ZTogOA0KTVAvTUMg c2luZ2xlIGVucS9kZXF1ZXVlOiAxMA0KU1AvU0MgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgp OiAxDQpNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDENClNQL1NDIGJ1cnN0IGVu cS9kZXF1ZXVlIChzaXplOiAzMik6IDANCk1QL01DIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiAz Mik6IDANCg0KIyMjIFRlc3RpbmcgZW1wdHkgZGVxdWV1ZSAjIyMNClNDIGVtcHR5IGRlcXVldWU6 IDAuMjQNCk1DIGVtcHR5IGRlcXVldWU6IDAuMjQNCg0KIyMjIFRlc3RpbmcgdXNpbmcgYSBzaW5n bGUgbGNvcmUgIyMjDQpTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS40MA0KTVAv TUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEuNzQNClNQL1NDIGJ1bGsgZW5xL2RlcXVl dWUgKHNpemU6IDMyKTogMC41OQ0KTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAw LjY4DQoNCiMjIyBUZXN0aW5nIHVzaW5nIHR3byBoeXBlcnRocmVhZHMgIyMjDQpTUC9TQyBidWxr IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMi41MA0KTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6 ZTogOCk6IDMuMDgNClNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS4wNw0KTVAv TUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjEzDQoNCiMjIyBUZXN0aW5nIHVzaW5n IHR3byBwaHlzaWNhbCBjb3JlcyAjIyMNClNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgp OiA2LjU3DQpNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMTMuMDANClNQL1NDIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS45OA0KTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAo c2l6ZTogMzIpOiAzLjQxDQpUZXN0IE9LDQoNClJURT4+cmluZ19wZXJmX2F1dG90ZXN0KCMzIHJ1 biBvZiB0ZXN0IHdpdGhvdXQgdGhlIHBhdGNoKQ0KIyMjIFRlc3Rpbmcgc2luZ2xlIGVsZW1lbnQg YW5kIGJ1cnN0IGVucS9kZXEgIyMjDQpTUC9TQyBzaW5nbGUgZW5xL2RlcXVldWU6IDgNCk1QL01D IHNpbmdsZSBlbnEvZGVxdWV1ZTogMTANClNQL1NDIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiA4 KTogMQ0KTVAvTUMgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxDQpTUC9TQyBidXJzdCBl bnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwDQpNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTog MzIpOiAwDQoNCiMjIyBUZXN0aW5nIGVtcHR5IGRlcXVldWUgIyMjDQpTQyBlbXB0eSBkZXF1ZXVl OiAwLjI0DQpNQyBlbXB0eSBkZXF1ZXVlOiAwLjI0DQoNCiMjIyBUZXN0aW5nIHVzaW5nIGEgc2lu Z2xlIGxjb3JlICMjIw0KU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEuNDANCk1Q L01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxLjc0DQpTUC9TQyBidWxrIGVucS9kZXF1 ZXVlIChzaXplOiAzMik6IDAuNTkNCk1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTog MC42OA0KDQojIyMgVGVzdGluZyB1c2luZyB0d28gaHlwZXJ0aHJlYWRzICMjIw0KU1AvU0MgYnVs ayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDIuNDkNCk1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNp emU6IDgpOiAzLjA4DQpTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDEuMDcNCk1Q L01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS4xMw0KDQojIyMgVGVzdGluZyB1c2lu ZyB0d28gcGh5c2ljYWwgY29yZXMgIyMjDQpTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4 KTogNi41NQ0KTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEyLjk2DQpTUC9TQyBi dWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDEuOTkNCk1QL01DIGJ1bGsgZW5xL2RlcXVldWUg KHNpemU6IDMyKTogMy4zNw0KDQoNClJURT4+cmluZ19wZXJmX2F1dG90ZXN0KCMxIHJ1biBvZiB0 aGUgdGVzdCB3aXRoIHRoZSBwYXRjaCkNCiMjIyBUZXN0aW5nIHNpbmdsZSBlbGVtZW50IGFuZCBi dXJzdCBlbnEvZGVxICMjIw0KU1AvU0Mgc2luZ2xlIGVucS9kZXF1ZXVlOiA4DQpNUC9NQyBzaW5n bGUgZW5xL2RlcXVldWU6IDEwDQpTUC9TQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEN Ck1QL01DIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMQ0KU1AvU0MgYnVyc3QgZW5xL2Rl cXVldWUgKHNpemU6IDMyKTogMA0KTVAvTUMgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDMyKTog MA0KDQojIyMgVGVzdGluZyBlbXB0eSBkZXF1ZXVlICMjIw0KU0MgZW1wdHkgZGVxdWV1ZTogMC4y NA0KTUMgZW1wdHkgZGVxdWV1ZTogMC4zMg0KDQojIyMgVGVzdGluZyB1c2luZyBhIHNpbmdsZSBs Y29yZSAjIyMNClNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxLjQzDQpNUC9NQyBi dWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS43NA0KU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAo c2l6ZTogMzIpOiAwLjYwDQpNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDAuNjgN Cg0KIyMjIFRlc3RpbmcgdXNpbmcgdHdvIGh5cGVydGhyZWFkcyAjIyMNClNQL1NDIGJ1bGsgZW5x L2RlcXVldWUgKHNpemU6IDgpOiAyLjUzDQpNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4 KTogMy4wOQ0KU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjA2DQpNUC9NQyBi dWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDEuMTgNCg0KIyMjIFRlc3RpbmcgdXNpbmcgdHdv IHBoeXNpY2FsIGNvcmVzICMjIw0KU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDYu NTcNCk1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxMi45Mw0KU1AvU0MgYnVsayBl bnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjk4DQpNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXpl OiAzMik6IDMuNDQNClRlc3QgT0sNClJURT4+cmluZ19wZXJmX2F1dG90ZXN0ICgjMSBydW4gb2Yg dGhlIHRlc3Qgd2l0aCB0aGUgcGF0Y2gpDQojIyMgVGVzdGluZyBzaW5nbGUgZWxlbWVudCBhbmQg YnVyc3QgZW5xL2RlcSAjIyMNClNQL1NDIHNpbmdsZSBlbnEvZGVxdWV1ZTogOA0KTVAvTUMgc2lu Z2xlIGVucS9kZXF1ZXVlOiAxMA0KU1AvU0MgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAx DQpNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDENClNQL1NDIGJ1cnN0IGVucS9k ZXF1ZXVlIChzaXplOiAzMik6IDANCk1QL01DIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiAzMik6 IDANCg0KIyMjIFRlc3RpbmcgZW1wdHkgZGVxdWV1ZSAjIyMNClNDIGVtcHR5IGRlcXVldWU6IDAu MjQNCk1DIGVtcHR5IGRlcXVldWU6IDAuMzINCg0KIyMjIFRlc3RpbmcgdXNpbmcgYSBzaW5nbGUg bGNvcmUgIyMjDQpTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS40Mw0KTVAvTUMg YnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEuNzQNClNQL1NDIGJ1bGsgZW5xL2RlcXVldWUg KHNpemU6IDMyKTogMC42MA0KTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwLjY4 DQoNCiMjIyBUZXN0aW5nIHVzaW5nIHR3byBoeXBlcnRocmVhZHMgIyMjDQpTUC9TQyBidWxrIGVu cS9kZXF1ZXVlIChzaXplOiA4KTogMi41Mw0KTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTog OCk6IDMuMDkNClNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS4wNg0KTVAvTUMg YnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjE4DQoNCiMjIyBUZXN0aW5nIHVzaW5nIHR3 byBwaHlzaWNhbCBjb3JlcyAjIyMNClNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiA2 LjU3DQpNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMTIuOTMNClNQL1NDIGJ1bGsg ZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS45OA0KTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6 ZTogMzIpOiAzLjQ2DQpUZXN0IE9LDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogT2xhIExpbGplZGFobA0KPiBTZW50OiBNb25kYXksIE9jdG9iZXIgOCwgMjAxOCA2OjI2 IFBNDQo+IFRvOiBKZXJpbiBKYWNvYiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tPg0K PiBDYzogZGV2QGRwZGsub3JnOyBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA8SG9ubmFwcGEuTmFn YXJhaGFsbGlAYXJtLmNvbT47IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPGtvbnN0YW50aW4uYW5h bnlldkBpbnRlbC5jb20+OyBHYXZpbiBIdSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpDQo+IDxHYXZp bi5IdUBhcm0uY29tPjsgU3RldmUgQ2FwcGVyIDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT47IG5kDQo+ IDxuZEBhcm0uY29tPjsgc3RhYmxlQGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMg MS8zXSByaW5nOiByZWFkIHRhaWwgdXNpbmcgYXRvbWljIGxvYWQNCj4gDQo+IA0KPiANCj4g77u/ T24gMDgvMTAvMjAxOCwgMTI6MDAsICJKZXJpbiBKYWNvYiIgPGplcmluLmphY29iQGNhdml1bW5l dHdvcmtzLmNvbT4NCj4gd3JvdGU6DQo+IA0KPiAgICAgLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gICAgID4gRGF0ZTogTW9uLCA4IE9jdCAyMDE4IDA5OjIyOjA1ICswMDAwDQo+ICAgICA+ IEZyb206IE9sYSBMaWxqZWRhaGwgPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT4NCj4gICAgID4gVG86 IEplcmluIEphY29iIDxqZXJpbi5qYWNvYkBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+ICAgICA+IEND OiAiZGV2QGRwZGsub3JnIiA8ZGV2QGRwZGsub3JnPiwgSG9ubmFwcGEgTmFnYXJhaGFsbGkNCj4g ICAgID4gIDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPiwgIkFuYW55ZXYsIEtvbnN0YW50 aW4iDQo+ICAgICA+ICA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4sICJHYXZpbiBIdSAo QXJtIFRlY2hub2xvZ3kgQ2hpbmEpIg0KPiAgICAgPiAgPEdhdmluLkh1QGFybS5jb20+LCBTdGV2 ZSBDYXBwZXIgPFN0ZXZlLkNhcHBlckBhcm0uY29tPiwgbmQNCj4gPG5kQGFybS5jb20+LA0KPiAg ICAgPiAgInN0YWJsZUBkcGRrLm9yZyIgPHN0YWJsZUBkcGRrLm9yZz4NCj4gICAgID4gU3ViamVj dDogUmU6IFtQQVRDSCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9hZA0K PiAgICAgPiB1c2VyLWFnZW50OiBNaWNyb3NvZnQtTWFjT3V0bG9vay8xMC4xMS4wLjE4MDkwOQ0K PiAgICAgPg0KPiAgICAgPiBFeHRlcm5hbCBFbWFpbA0KPiAgICAgPg0KPiAgICAgPiBPbiAwOC8x MC8yMDE4LCAwODowNiwgIkplcmluIEphY29iIiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3Mu Y29tPg0KPiB3cm90ZToNCj4gICAgID4NCj4gICAgID4gICAgIC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ICAgICA+ICAgICA+IERhdGU6IFN1biwgNyBPY3QgMjAxOCAyMDo0NDo1NCArMDAw MA0KPiAgICAgPiAgICAgPiBGcm9tOiBPbGEgTGlsamVkYWhsIDxPbGEuTGlsamVkYWhsQGFybS5j b20+DQo+ICAgICA+ICAgICA+IFRvOiBKZXJpbiBKYWNvYiA8amVyaW4uamFjb2JAY2F2aXVtbmV0 d29ya3MuY29tPg0KPiAgICAgPiAgICAgPiBDQzogImRldkBkcGRrLm9yZyIgPGRldkBkcGRrLm9y Zz4sIEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+ICAgICA+ICAgICA+ICA8SG9ubmFwcGEuTmFnYXJh aGFsbGlAYXJtLmNvbT4sICJBbmFueWV2LCBLb25zdGFudGluIg0KPiAgICAgPiAgICAgPiAgPGtv bnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+LCAiR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5DQo+ IENoaW5hKSINCj4gICAgID4gICAgID4gIDxHYXZpbi5IdUBhcm0uY29tPiwgU3RldmUgQ2FwcGVy IDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT4sIG5kDQo+IDxuZEBhcm0uY29tPiwNCj4gICAgID4gICAg ID4gICJzdGFibGVAZHBkay5vcmciIDxzdGFibGVAZHBkay5vcmc+DQo+ICAgICA+ICAgICA+IFN1 YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS8zXSByaW5nOiByZWFkIHRhaWwgdXNpbmcgYXRvbWljIGxv YWQNCj4gICAgID4gICAgID4gdXNlci1hZ2VudDogTWljcm9zb2Z0LU1hY091dGxvb2svMTAuMTEu MC4xODA5MDkNCj4gICAgID4gICAgID4NCj4gICAgID4NCj4gICAgID4NCj4gICAgID4gICAgIENv dWxkIHlvdSBwbGVhc2UgZml4IHRoZSBlbWFpbCBjbGllbnQgZm9yIGlubGluZSByZXBseS4NCj4g ICAgID4gU29ycnkgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgcG9zc2libGUgd2l0aCBPdXRsb29r IGZvciBNYWMgMTYgb3INCj4gT2ZmaWNlMzY1LiBUaGUgb2ZmaWNpYWwgT2ZmaWNlMzY1L091dGxv b2sNCj4gICAgID4gZG9jdW1lbnRhdGlvbiBkb2Vzbid0IG1hdGNoIHRoZSBhY3R1YWwgdXNlciBp bnRlcmZhY2UuLi4NCj4gICAgID4NCj4gICAgID4NCj4gICAgID4NCj4gICAgID4gICAgIGh0dHBz Oi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvdjQuMTktcmM3L3Byb2Nlc3MvZW1haWwtDQo+IGNs aWVudHMuaHRtbA0KPiAgICAgPg0KPiAgICAgPg0KPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAg PiBPbiAwNy8xMC8yMDE4LCAwNjowMywgIkplcmluIEphY29iIg0KPiA8amVyaW4uamFjb2JAY2F2 aXVtbmV0d29ya3MuY29tPiB3cm90ZToNCj4gICAgID4gICAgID4NCj4gICAgID4gICAgID4gICAg IEluIGFybTY0IGNhc2UsIGl0IHdpbGwgaGF2ZSBBVE9NSUNfUkVMQVhFRCBmb2xsb3dlZCBieSBh c20NCj4gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpIG9mIHJ0ZV9wYXVzZSgpLg0KPiAgICAgPiAg ICAgPiAgICAgSSB3b3VsZCBuJ3QgaGF2ZSBhbnkgaXNzdWUsIGlmIHRoZSBnZW5lcmF0ZWQgY29k ZSBjb2RlIGlzIHNhbWUgb3INCj4gYmV0dGVyIHRoYW4gdGhlIGV4aXRpbmcgY2FzZS4gYnV0IGl0 IG5vdCB0aGUgY2FzZSwgUmlnaHQ/DQo+ICAgICA+ICAgICA+IFRoZSBleGlzdGluZyBjYXNlIGlz IGFjdHVhbGx5IG5vdCBpbnRlcmVzdGluZyAoSU1PKSBhcyBpdCBleHBvc2VzDQo+IHVuZGVmaW5l ZCBiZWhhdmlvdXIgd2hpY2ggYWxsb3dzIHRoZSBjb21waWxlciB0byBkbyBhbnl0aGluZy4gQnV0 IHlvdQ0KPiBzZWVtIHRvIGJlIHNhdGlzZmllZCB3aXRoICJ3b3JrcyBmb3IgbWUsIHJpZ2h0IGhl cmUgcmlnaHQgbm93Ii4gSSB0aGluayB0aGUNCj4gY29zdCBvZiBhdm9pZGluZyB1bmRlZmluZWQg YmVoYXZpb3VyIGlzIGFjY2VwdGFibGUgKGFjdHVhbGx5IEkgZG9uJ3QgdGhpbmsgaXQNCj4gZXZl biB3aWxsIGJlIG5vdGljZWFibGUpLg0KPiAgICAgPg0KPiAgICAgPiAgICAgSSBhbSBub3QgY29u dmluY2VkIGJlY2F1c2Ugb2YgdXNlIG9mIHZvbGF0aWxlIGluIGhlYWQgYW5kIHRhaWwgaW5kZXhl cy4NCj4gICAgID4gICAgIEZvciBtZSB0aGF0IGJyaW5ncyB0aGUgZGVmaW5lZCBiZWhhdmlvci4N Cj4gICAgID4gQXMgbG9uZyBhcyB5b3UgZG9uJ3QgbWl4IGluIEMxMSBhdG9taWMgYWNjZXNzZXMg KGp1c3QgdXNlICJwbGFpbiIgYWNjZXNzZXMNCj4gdG8gdm9sYXRpbGUgb2JqZWN0cyksDQo+ICAg ICA+IGl0IGlzIEFGQUlLIGRlZmluZWQgYmVoYXZpb3VyIChidXQgbm90IG5lY2Vzc2FyaWx5IHVz aW5nIGF0b21pYyBsb2FkcyBhbmQNCj4gc3RvcmVzKS4gQnV0IEkgcXVvdGVkDQo+ICAgICA+IHRo ZSBDMTEgc3BlYyB3aGVyZSBpdCBleHBsaWNpdGx5IG1lbnRpb25zIHRoYXQgbWl4aW5nIGF0b21p YyBhbmQgbm9uLQ0KPiBhdG9taWMgYWNjZXNzZXMgdG8gdGhlIHNhbWUNCj4gICAgID4gb2JqZWN0 IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIuIERvbid0IGFyZ3VlIHdpdGggbWUsIGFyZ3VlIHdpdGgg dGhlIEMxMQ0KPiBzcGVjLg0KPiAgICAgPiBJZiB5b3Ugd2FudCB0byBkaXNvYmV5IHRoZSBzcGVj LCB0aGlzIHNob3VsZCBhdCBsZWFzdCBiZSBjYWxsZWQgb3V0IGZvciBpbg0KPiB0aGUgY29kZSB3 aXRoIGEgY29tbWVudC4NCj4gDQo+ICAgICBUaGF0J3MgYm9pbHMgZG93biBvbmx5IG9uZSBxdWVz dGlvbiwgc2hvdWxkIHdlIGZvbGxvdyBDMTEgc3BlYz8gV2h5IG5vdA0KPiBvbmx5IHRha2UgbG9h ZA0KPiAgICAgYWNxdWlyZSBhbmQgc3RvcmUgcmVsZWFzZSBzZW1hbnRpY3Mgb25seSBqdXN0IGxp a2UgTGludXgga2VybmVsIGFuZCBGcmVlQlNELg0KPiBBbmQgaW50cm9kdWNlIGV2ZW4gbW9yZSB1 bmRlZmluZWQgYmVoYXZpb3VyPw0KPiANCj4gICAgIERvZXMgbm90IGxvb2sgbGlrZSBDMTEgbWVt b3J5IG1vZGVsIGlzIHN1cGVyIGVmZmljaWVudCBpbiB0ZXJtIG9mIGdjYw0KPiAgICAgaW1wbGVt ZW50YXRpb24uDQo+IFlvdSBhcmUgbWFraW5nIGEgY2hpY2tlbiBvdXQgb2YgYSBmZWF0aGVyLg0K PiANCj4gSSB0aGluayB0aGlzICJwcm9ibGVtIiB3aXRoIG9uZSBhZGRpdGlvbmFsIEFERCBpbnN0 cnVjdGlvbiB3aWxsIG9ubHkgY29uY2Vybg0KPiBfX2F0b21pY19sb2FkX24oX19BVE9NSUNfUkVM QVhFRCkgYW5kDQo+IF9fYXRvbWljX3N0b3JlX24oX19BVE9NSUNfUkVMQVhFRCkgYmVjYXVzZSB0 aGUgY29tcGlsZXIgc2VwYXJhdGVzDQo+IHRoZSBhZGRyZXNzIGdlbmVyYXRpb24gKGFkZCBvZmZz ZXQgb2Ygc3RydWN0IG1lbWJlcikgZnJvbSB0aGUgbG9hZCBvciBzdG9yZQ0KPiBpdHNlbGYuIEZv ciBvdGhlciBhdG9taWMgb3BlcmF0aW9ucyBhbmQgbWVtb3J5IG9yZGVyaW5ncyAoZS5nLg0KPiBf X2F0b21pY19sb2FkX24oX19BVE9NSUNfQUNRVUlSRSksIHRoZSBleHRyYSBBREQgaW5zdHJ1Y3Rp b24gd2lsbCBiZQ0KPiBpbmNsdWRlZCBhbnl3YXkgKGFzIGxvbmcgYXMgd2UgYWNjZXNzIGEgbm9u LWZpcnN0IHN0cnVjdCBtZW1iZXIpIGJlY2F1c2UNCj4gZS5nLiBMREFSIG9ubHkgYWNjZXB0cyBh IGJhc2UgcmVnaXN0ZXIgd2l0aCBubyBvZmZzZXQuDQo+IA0KPiBJIHN1Z2dlc3QgbWluaW1pc2lu ZyB0aGUgaW1wb3NlZCBtZW1vcnkgb3JkZXJpbmdzIGNhbiBoYXZlIGEgbXVjaCBsYXJnZXINCj4g KHBvc2l0aXZlKSBlZmZlY3Qgb24gcGVyZm9ybWFuY2UgY29tcGFyZWQgdG8gYXZvaWRpbmcgb25l IEFERCBpbnN0cnVjdGlvbg0KPiAobWVtb3J5IGFjY2Vzc2VzIGFyZSBtdWNoIHNsb3dlciB0aGFu IENQVSBBTFUgaW5zdHJ1Y3Rpb25zKS4NCj4gVXNpbmcgQzExIG1lbW9yeSBtb2RlbCBhbmQgaWRl bnRpZnlpbmcgZXhhY3RseSB3aGljaCBvYmplY3RzIGFyZSB1c2VkIGZvcg0KPiBzeW5jaHJvbmlz YXRpb24gYW5kIHdoZXRoZXIgKGFueSkgdXBkYXRlcyB0byBzaGFyZWQgbWVtb3J5IGFyZSBhY3F1 aXJlZA0KPiBvciByZWxlYXNlZCAobm8gdXBkYXRlcyB0byBzaGFyZWQgbWVtb3J5IG1lYW5zIHJl bGF4ZWQgb3JkZXIgY2FuIGJlIHVzZWQpDQo+IHdpbGwgcHJvdmlkZSBtYXhpbXVtIGZyZWVkb20g dG8gdGhlIGNvbXBpbGVyIGFuZCBoYXJkd2FyZSB0byBnZXQgdGhlIGJlc3QNCj4gcmVzdWx0Lg0K PiANCj4gVGhlIEZyZWVCU0QgYW5kIERQREsgcmluZyBidWZmZXJzIHNob3cgc29tZSBmdW5kYW1l bnRhbA0KPiBtaXN1bmRlcnN0YW5kaW5ncyBoZXJlLiBJbnN0ZWFkIGV4Y2Vzc2l2ZSBvcmRlcmlu Z3MgYW5kIGV4cGxpY2l0IGJhcnJpZXJzDQo+IGhhdmUgYmVlbiB1c2VkIGFzIGJhbmQtYWlkcywg d2l0aCB1bmtub3duIGVmZmVjdHMgb24gcGVyZm9ybWFuY2UuDQo+IA0KPiANCj4gICAgID4NCj4g ICAgID4NCj4gICAgID4gICAgIFRoYXQgdGhlIHJlYXNvbiB3aHkgSSBzaGFyZWQNCj4gICAgID4g ICAgIHRoZSBnZW5lcmF0ZWQgYXNzZW1ibHkgY29kZS4gSWYgeW91IHRoaW5rIG90aGVyIHdheSwg UGljayBhbnkgY29tcGlsZXINCj4gICAgID4gICAgIGFuZCBzZWUgZ2VuZXJhdGVkIG91dHB1dC4N Cj4gICAgID4gVGhpcyBpcyB3aGF0IG9uZSBjb21waWxlciBmb3Igb25lIGFyY2hpdGVjdHVyZSBn ZW5lcmF0ZXMgdG9kYXkuIFRoZXNlDQo+IHRoaW5ncyBjaGFuZ2UuIE90aGVyIHRoaW5ncw0KPiAg ICAgPiB0aGF0IHVzZWQgdG8gd29yayBvciB3b3JrZWQgZm9yIHNvbWUgc3BlY2lmaWMgYXJjaGl0 ZWN0dXJlIGhhcyBzdG9wcGVkDQo+IHdvcmtpbmcgaW4gbmV3ZXIgdmVyc2lvbnMgb2YNCj4gICAg ID4gdGhlIGNvbXBpbGVyLg0KPiAgICAgPg0KPiAgICAgPg0KPiAgICAgPiAgICAgQW5kDQo+ICAg ICA+DQo+ICAgICA+ICAgICBGcmVlYnNkIGltcGxlbWVudGF0aW9uIG9mIHJpbmcgYnVmZmVyKFdo aWNoIERQREsgZGVyaXZlZCBmcm9tKSwNCj4gRG9uJ3QgaGF2ZQ0KPiAgICAgPiAgICAgc3VjaCBs b2dpYywgU2VlDQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVlYnNkL2ZyZWVic2QvYmxvYi9tYXN0 ZXIvc3lzL3N5cy9idWZfcmluZy5oI0wxMDgNCj4gICAgID4gSXQgbG9va3MgbGlrZSBGcmVlQlNE IHVzZXMgc29tZSBraW5kIG9mIEMxMSBhdG9taWMgbWVtb3J5IG1vZGVsLQ0KPiBpbnNwaXJlZCBB UEkgYWx0aG91Z2ggSSBkb24ndCBzZWUNCj4gICAgID4gZXhhY3RseSBob3cgZS5nLiBhdG9taWNf c3RvcmVfcmVsX2ludCgpIGlzIGltcGxlbWVudGVkLiBUaGUgY29kZSBhbHNvDQo+IG1peGVzIGlu IGV4cGxpY2l0IGJhcnJpZXJzDQo+ICAgICA+IHNvIGRlZmluaXRpdmVseSBub3QgcHVyZSBDMTEg bWVtb3J5IG1vZGVsIHVzYWdlLiBBbmQgZmluYWxseSwgaXQgZG9lc24ndA0KPiBlc3RhYmxpc2gg dGhlIHByb3Blcg0KPiAgICAgPiBsb2FkLWFjcXVpcmUvc3RvcmUtcmVsZWFzZSByZWxhdGlvbnNo aXBzIChlLmcuIHN0b3JlLXJlbGVhc2UgY29uc190YWlsDQo+IHJlcXVpcmVzIGEgbG9hZC1hY3F1 aXJlIGNvbnNfdGFpbCwNCj4gICAgID4gc2FtZSBmb3IgcHJvZF90YWlsKS4NCj4gICAgID4NCj4g ICAgID4gIiogbXVsdGktcHJvZHVjZXIgc2FmZSBsb2NrLWZyZWUgcmluZyBidWZmZXIgZW5xdWV1 ZSINCj4gICAgID4gVGhlIGNvbW1lbnQgaXMgYWxzbyB3cm9uZy4gVGhpcyBkZXNpZ24gaXMgbm90 IGxvY2stZnJlZSwgaG93IGNvdWxkIGl0IGJlDQo+IHdoZW4gdGhlcmUgaXMgc3Bpbm5pbmcNCj4g ICAgID4gKHdhaXRpbmcpIGZvciBvdGhlciB0aHJlYWRzIGluIHRoZSBjb2RlPyBJZiBhIHRocmVh ZCBtdXN0IHdhaXQgZm9yIG90aGVyDQo+IHRocmVhZHMsIHRoZW4gYnkgZGVmaW5pdGlvbg0KPiAg ICAgPiB0aGUgZGVzaWduIGlzIGJsb2NraW5nLg0KPiAgICAgPg0KPiAgICAgPiBTbyB5b3UgYXJl IHNheWluZyB0aGF0IGJlY2F1c2UgRnJlZUJTRCBpcyBkb2luZyBpdCB3cm9uZywgRFBESyBjYW4g YWxzbw0KPiBkbyBpdCB3cm9uZz8NCj4gICAgID4NCj4gICAgID4NCj4gICAgID4gICAgIFNlZSBi ZWxvdyB0b28uDQo+ICAgICA+DQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+IFNraXBwaW5n IHRoZSBjb21waWxlciBtZW1vcnkgYmFycmllciBpbiBydGVfcGF1c2UoKSBwb3RlbnRpYWxseQ0K PiBhbGxvd3MgZm9yIG9wdGltaXNhdGlvbnMgdGhhdCBwcm92aWRlIG11Y2ggbW9yZSBiZW5lZml0 LCBlLmcuIGhpZGluZyBzb21lDQo+IGNhY2hlIG1pc3MgbGF0ZW5jeSBmb3IgbGF0ZXIgbG9hZHMu IFRoZSBEUERLIHJpbmcgYnVmZmVyIGltcGxlbWVudGF0aW9uIGlzDQo+IGRlZmluZWQgc28gdG8g ZW5hYmxlIGlubGluaW5nIG9mIGVucXVldWUvZGVxdWV1ZSBmdW5jdGlvbnMgaW50byB0aGUgY2Fs bGVyLA0KPiBhbnkgY29kZSBjb3VsZCBpbW1lZGlhdGVseSBmb2xsb3cgdGhlc2UgY2FsbHMuDQo+ ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+IEZyb20gSU5URVJOQVRJT05BTCBTVEFOREFSRCDC qUlTTy9JRUMgSVNPL0lFQyA5ODk5OjIwMXgNCj4gICAgID4gICAgID4gUHJvZ3JhbW1pbmcgbGFu Z3VhZ2VzIOKAlCBDDQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+IDUuMS4yLjQNCj4gICAg ID4gICAgID4gNCBUd28gZXhwcmVzc2lvbiBldmFsdWF0aW9ucyBjb25mbGljdCBpZiBvbmUgb2Yg dGhlbSBtb2RpZmllcyBhDQo+IG1lbW9yeSBsb2NhdGlvbiBhbmQgdGhlIG90aGVyIG9uZSByZWFk cyBvciBtb2RpZmllcyB0aGUgc2FtZSBtZW1vcnkNCj4gbG9jYXRpb24uDQo+ICAgICA+ICAgICA+ DQo+ICAgICA+ICAgICA+IDI1IFRoZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtIGNvbnRhaW5zIGEg ZGF0YSByYWNlIGlmIGl0IGNvbnRhaW5zIHR3bw0KPiBjb25mbGljdGluZyBhY3Rpb25zIGluIGRp ZmZlcmVudCB0aHJlYWRzLCBhdCBsZWFzdCBvbmUgb2Ygd2hpY2ggaXMgbm90IGF0b21pYywNCj4g YW5kIG5laXRoZXIgaGFwcGVucyBiZWZvcmUgdGhlIG90aGVyLiBBbnkgc3VjaCBkYXRhIHJhY2Ug cmVzdWx0cyBpbg0KPiB1bmRlZmluZWQgYmVoYXZpb3IuDQo+ICAgICA+DQo+ICAgICA+ICAgICBJ TU8sIEJvdGggY29uZGl0aW9uIHdpbGwgc2F0aXNmeSBpZiB0aGUgdmFyaWFibGUgaXMgdm9sYXRp bGUgYW5kIDMyYml0IHJlYWQNCj4gd2lsbCBhdG9taWMNCj4gICAgID4gICAgIGZvciAzMmIgYW5k IDY0YiBtYWNoaW5lcy4gSWYgbm90LCB0aGUgcHJvYmxlbSBwZXJzaXN0IGZvciBnZW5lcmljIGNh c2UNCj4gICAgID4gICAgIGFzIHdlbGwobGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nX2dlbmVyaWMu aCkNCj4gICAgID4gVGhlIHJlYWQgZnJvbSBhIHZvbGF0aWxlIG9iamVjdCBpcyBub3QgYW4gYXRv bWljIGFjY2VzcyBwZXIgdGhlIEMxMSBzcGVjLiBJdA0KPiBqdXN0IGhhcHBlbnMgdG8NCj4gICAg ID4gYmUgdHJhbnNsYXRlZCB0byBhbiBpbnN0cnVjdGlvbiAob24geDg2LTY0IGFuZCBBQXJjaDY0 L0E2NCkgdGhhdA0KPiBpbXBsZW1lbnRzIGFuIGF0b21pYyBsb2FkLg0KPiAgICAgPiBJIGRvbid0 IHRoaW5rIGFueSBjb21waWxlciB3b3VsZCBjaGFuZ2UgdGhpcyBjb2RlIGdlbmVyYXRpb24gYW5k DQo+IHN1ZGRlbmx5IGdlbmVyYXRlIHNvbWUNCj4gICAgID4gbm9uLWF0b21pYyBsb2FkIGluc3Ry dWN0aW9uIGZvciBhIHByb2dyYW0gdGhhdCAqb25seSogdXNlcyB2b2xhdGlsZSB0byBkbw0KPiAi YXRvbWljIiBhY2Nlc3Nlcy4NCj4gICAgID4gQnV0IGEgZnV0dXJlIGNvbXBpbGVyIGNvdWxkIGRl dGVjdCB0aGUgbWl4IG9mIGF0b21pYyBhbmQgbm9uLWF0b21pYw0KPiBhY2Nlc3NlcyBhbmQgbWFy ayB0aGlzDQo+ICAgICA+IGV4cHJlc3Npb24gYXMgY2F1c2luZyB1bmRlZmluZWQgYmVoYXZpb3Vy IGFuZCB0aGF0IHdvdWxkIGhhdmUNCj4gY29uc2VxdWVuY2VzIGZvciBjb2RlIGdlbmVyYXRpb24u DQo+ICAgICA+DQo+ICAgICA+DQo+ICAgICA+ICAgICBJIGFncmVlIHdpdGggeW91IG9uIEMxMSBt ZW1vcnkgbW9kZWwgc2VtYW50aWNzIHVzYWdlLiBUaGUgcmVhc29uDQo+IHdoeSBJDQo+ICAgICA+ ICAgICBwcm9wb3NlIG5hbWUgZm9yIHRoZSBmaWxlIGFzIHJ0ZV9yaW5nX2MxMV9tZW0uaCBhcyBE UERLIGl0IHNlbGYgZGlkDQo+IG5vdA0KPiAgICAgPiAgICAgaGFkIGRlZmluaXRpb25zIGZvciBs b2FkIGFjcXVpcmUgYW5kIHN0b3JlIHJlbGVhc2Ugc2VtYW50aWNzLg0KPiAgICAgPiAgICAgSSB3 YXMgbG9va2luZyBmb3IgdGFraW5nIGxvYWQgYWNxdWlyZSBhbmQgc3RvcmUgcmVsZWFzZSBzZW1h bnRpY3MNCj4gICAgID4gICAgIGZyb20gQzExIGluc3RlYWQgb2YgY3JlYXRpbmcgbmV3IEFQSSBs aWtlIExpbnV4IGtlcm5lbCBmb3IgRnJlZUJTRChBUElzDQo+ICAgICA+ICAgICBsaWtlICBhdG9t aWNfbG9hZF9hY3FfMzIoKSwgYXRvbWljX3N0b3JlX3JlbF8zMigpKS4gSWYgdGhlIGZpbGUgbmFt ZSBpcw0KPiB5b3VyDQo+ICAgICA+ICAgICBjb25jZXJuIHRoZW4gd2UgY291bGQgY3JlYXRlIG5l dyBhYnN0cmFjdGlvbnMgYXMgd2VsbC4gVGhhdCB3b3VsZA0KPiBoZWxwDQo+ICAgICA+ICAgICBl eGl0aW5nIEtOSSBwcm9ibGVtIGFzIHdlbGwuDQo+ICAgICA+IEkgYXBwcmVjaWF0ZSB5b3VyIGVt YnJhY2Ugb2YgdGhlIEMxMSBtZW1vcnkgbW9kZWwuIEkgdGhpbmsgaXQgaXMgYmV0dGVyDQo+IGZv ciBkZXNjcmliaW5nDQo+ICAgICA+IChib3RoIHRvIHRoZSBjb21waWxlciBhbmQgdG8gaHVtYW5z KSB3aGljaCBhbmQgaG93IG9iamVjdHMgYXJlIHVzZWQNCj4gZm9yIHN5bmNocm9uaXNhdGlvbi4N Cj4gICAgID4NCj4gICAgID4gSG93ZXZlciwgSSBkb24ndCB0aGluayBhbiBBUEkgYXMgeW91IHN1 Z2dlc3QgKGFuZCBvdGhlcnMgaGF2ZSBzdWdnZXN0ZWQNCj4gYmVmb3JlLCBlLmcuIGFzDQo+ICAg ICA+IGRvbmUgaW4gT0RQKSBpcyBhIGdvb2QgaWRlYS4gVGhlcmUgaXMgYW4gaW5maW5pdGUgYW1v dW50IG9mIHBvc3NpYmxlIGJhc2UNCj4gdHlwZXMsIGFuDQo+ICAgICA+IGluY3JlYXNpbmcgbnVt YmVyIG9mIG9wZXJhdGlvbnMgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50IG1lbW9yeQ0KPiBvcmRl cmluZ3MsIGEgImNvbXBsZXRlIg0KPiAgICAgPiBBUEkgd291bGQgYmUgdmVyeSBsYXJnZSBhbmQg ZGlmZmljdWx0IHRvIHRlc3QsIGFuZCBtb3N0IG1lbWJlcnMgb2YgdGhlDQo+IEFQSSB3b3VsZCBu ZXZlciBiZSB1c2VkLg0KPiAgICAgPiBHQ0MgYW5kIENsYW5nIGJvdGggc3VwcG9ydCB0aGUgX19h dG9taWMgaW50cmluc2ljcy4gVGhpcyBBUEkgYXZvaWRzIHRoZQ0KPiBwcm9ibGVtcyBJDQo+ICAg ICA+IGRlc2NyaWJlZCBhYm92ZS4gT3Igd2UgY291bGQgdXNlIHRoZSBvZmZpY2lhbCBDMTEgc3lu dGF4IChzdGRhdG9taWMuaCkuDQo+IEJ1dCB0aGVuIHdlDQo+ICAgICA+IGhhdmUgdGhlIHByb2Js ZW0gd2l0aCB1c2luZyBwcmUtQzExIGNvbXBpbGVycy4uLg0KPiANCj4gICAgIEkgaGF2ZSBubyBv YmplY3Rpb24sIGlmIGV2ZXJ5b25lIGFncmVlcyB0byBtb3ZlIEMxMSBtZW1vcnkgbW9kZWwNCj4g ICAgIHdpdGggX19hdG9taWMgaW50cmluc2ljcy4gQnV0IGlmIHdlIG5lZWQgdG8ga2VlcCBib3Ro IGhhdmUgdGhlbg0KPiAgICAgYXRvbWljX2xvYWRfYWNxXzMyKCkga2luZCBvZiBBUEkgbWFrZSBz ZW5zZS4NCj4gDQo+IA0KPiAgICAgPg0KPiAgICAgPg0KPiAgICAgPg0KPiAgICAgPg0KPiAgICAg PiAgICAgSSB0aGluaywgY3VycmVudGx5IGl0IG1peGVkIHVzYWdlIGJlY2F1c2UsIHRoZSBzYW1l IHZhcmlhYmxlIGRlY2xhcmF0aW9uDQo+ICAgICA+ICAgICB1c2VkIGZvciBDMTEgdnMgbm9uIEMx MSB1c2FnZS5JZGVhbGx5IHdlIHdvbnQgbmVlZCAidm9sYXRpbGUiIGZvciBDMTENCj4gICAgID4g ICAgIGNhc2UuIEVpdGhlciB3ZSBuZWVkIHRvIGNoYW5nZSBvbmx5IHRvIEMxMSBtb2RlIE9SIGhh dmUgQVBJcyBmb3INCj4gICAgID4gICAgIGF0b21pY19sb2FkX2FjcV8oKSBhbmQgYXRvbWljX3N0 b3JlX3JlbF8oKSB0byBhbGxvdyBib3RoIG1vZGVscyBsaWtlDQo+ICAgICA+ICAgICBMaW51eCBr ZXJuZWwgYW5kIEZyZWVCU0QuDQo+ICAgICA+DQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ IC0tIE9sYQ0KPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPg0KPiAg ICAgPg0KPiAgICAgPg0KPiANCg0K