From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 481123772 for ; Wed, 13 Mar 2019 03:52:11 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Mar 2019 19:52:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,472,1544515200"; d="scan'208";a="328088444" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga005.fm.intel.com with ESMTP; 12 Mar 2019 19:52:09 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 12 Mar 2019 19:52:09 -0700 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 12 Mar 2019 19:52:09 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.74]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.10]) with mapi id 14.03.0415.000; Wed, 13 Mar 2019 10:52:07 +0800 From: "Wang, Yinan" To: "Ma, LihongX" , "dts@dpdk.org" CC: "Ma, LihongX" Thread-Topic: [dts] [PATCH V1] Add testsuite of loopback multi path port restart Thread-Index: AQHU2JUb/8S0+qmVUUaScYf5wqb4QqYI2IFw Date: Wed, 13 Mar 2019 02:52:06 +0000 Message-ID: References: <1552342469-10572-1-git-send-email-lihongx.ma@intel.com> In-Reply-To: <1552342469-10572-1-git-send-email-lihongx.ma@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMGJiNzA1ZGYtMDViNC00NzMyLTliN2ItZWIzMWE3ZmZiZDJkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiam9GQ0dDOE1rSUhMak54eGt6cmdwSlZYNlwvWnVyWElhNnRUZ1BZQmJkY0tOMEFGWFBURFExQzJ1Q0FLZjdYMjcifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dts] [PATCH V1] Add testsuite of loopback multi path port restart X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Mar 2019 02:52:12 -0000 DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGR0cyBbbWFpbHRvOmR0cy1i b3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgbGlob25nDQo+IFNlbnQ6IDIwMTnlubQz5pyI MTLml6UgNjoxNA0KPiBUbzogZHRzQGRwZGsub3JnDQo+IENjOiBNYSwgTGlob25nWCA8bGlob25n eC5tYUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtkdHNdIFtQQVRDSCBWMV0gQWRkIHRlc3RzdWl0 ZSBvZiBsb29wYmFjayBtdWx0aSBwYXRoIHBvcnQgcmVzdGFydA0KPiANCj4gU2lnbmVkLW9mZi1i eTogbGlob25nIDxsaWhvbmd4Lm1hQGludGVsLmNvbT4NCj4gLS0tDQo+ICAuLi4vVGVzdFN1aXRl X2xvb3BiYWNrX211bHRpX3BhdGhzX3BvcnRfcmVzdGFydC5weSB8IDMwNQ0KPiArKysrKysrKysr KysrKysrKysrKysNCj4gIDEgZmlsZSBjaGFuZ2VkLCAzMDUgaW5zZXJ0aW9ucygrKQ0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHRlc3RzL1Rlc3RTdWl0ZV9sb29wYmFja19tdWx0aV9wYXRoc19wb3J0 X3Jlc3RhcnQucHkNCj4gDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9UZXN0U3VpdGVfbG9vcGJhY2tf bXVsdGlfcGF0aHNfcG9ydF9yZXN0YXJ0LnB5DQo+IGIvdGVzdHMvVGVzdFN1aXRlX2xvb3BiYWNr X211bHRpX3BhdGhzX3BvcnRfcmVzdGFydC5weQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwLi45Mjk5NWZiDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVzdHMvVGVz dFN1aXRlX2xvb3BiYWNrX211bHRpX3BhdGhzX3BvcnRfcmVzdGFydC5weQ0KPiBAQCAtMCwwICsx LDMwNSBAQA0KPiArIw0KPiArIyBCU0QgTElDRU5TRQ0KPiArIw0KPiArIyBDb3B5cmlnaHQoYykg MjAxMC0yMDE5IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIyBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgIw0KPiArbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z ICMNCj4gK2FyZSBtZXQ6DQo+ICsjDQo+ICsjICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArIyAgICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAr IyAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCj4gKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiArIyAgICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiArIyAgICAgZGlz dHJpYnV0aW9uLg0KPiArIyAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlv biBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiArIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICsjICAgICBmcm9tIHRo aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ ICsjDQo+ICsjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE RVJTIEFORA0KPiBDT05UUklCVVRPUlMgIw0KPiArIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgIw0KPiArTElNSVRFRCBUTywg VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MNCj4g Rk9SICMNCj4gK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO VCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUICMNCj4gK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFMLCAjDQo+ICtTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg Tk9UDQo+ICMNCj4gK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg T1IgU0VSVklDRVM7IExPU1MgT0YNCj4gVVNFLCAjDQo+ICtEQVRBLCBPUiBQUk9GSVRTOyBPUiBC VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORA0KPiBPTiBBTlkgIw0KPiAr VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU WSwgT1IgVE9SVCAjDQo+ICsoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0KPiBVU0UgIw0KPiArT0YgVEhJUyBTT0ZUV0FSRSwg RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCj4gKw0K PiArDQo+ICsiIiINCj4gK0RQREsgVGVzdCBzdWl0ZS4NCj4gK0JlbmNobWFyayBWaG9zdCBsb29w YmFjayBmb3IgNyBSWC9UWCBQQVRIcy4NCj4gK0luY2x1ZGVzIE1lcmdlYWJsZSwgTm9ybWFsLCBW ZWN0b3JfUlgsSW5vcmRlcl9tZXJnZWFibGUsDQo+ICtJbm9yZGVyX25vX21lcmdlYWJsZSwgVklS VElPMS4xX21lcmdlYWJsZSwgVklSVElPMS4xX25vcm1hbCBQYXRoLg0KPiArIiIiDQo+ICtpbXBv cnQgdXRpbHMNCj4gK2ltcG9ydCB0aW1lDQo+ICtpbXBvcnQgcmUNCj4gK2Zyb20gdGVzdF9jYXNl IGltcG9ydCBUZXN0Q2FzZQ0KPiArDQo+ICsNCj4gK2NsYXNzIFRlc3RMb29wYmFja1BvcnRSZXN0 YXJ0KFRlc3RDYXNlKToNCj4gKw0KPiArICAgIGRlZiBzZXRfdXBfYWxsKHNlbGYpOg0KPiArICAg ICAgICAiIiINCj4gKyAgICAgICAgUnVuIGF0IHRoZSBzdGFydCBvZiBlYWNoIHRlc3Qgc3VpdGUu DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLmZyYW1lX3NpemVzID0gWzY0LCAxMjgs IDI1NiwgNTEyLCAxMDI0LCAxNTE4XQ0KPiArICAgICAgICBzZWxmLmNvcmVfY29uZmlnID0gIjFT LzVDLzFUIg0KPiArICAgICAgICBzZWxmLm51bWJlcl9vZl9wb3J0cyA9IDENCj4gKyAgICAgICAg c2VsZi5kdXRfcG9ydHMgPSBzZWxmLmR1dC5nZXRfcG9ydHMoKQ0KPiArICAgICAgICBzZWxmLnBv cnRzX3NvY2tldCA9IHNlbGYuZHV0LmdldF9udW1hX2lkKHNlbGYuZHV0X3BvcnRzWzBdKQ0KPiAr ICAgICAgICBwb3J0cyA9IFtdDQo+ICsgICAgICAgIGZvciBwb3J0IGluIHhyYW5nZShzZWxmLm51 bWJlcl9vZl9wb3J0cyk6DQo+ICsgICAgICAgICAgICBwb3J0cy5hcHBlbmQoc2VsZi5kdXRfcG9y dHNbcG9ydF0pDQo+ICsgICAgICAgIHNlbGYuY29yZV9saXN0ID0gc2VsZi5kdXQuZ2V0X2NvcmVf bGlzdCgNCj4gKyAgICAgICAgICAgIHNlbGYuY29yZV9jb25maWcsIHNvY2tldD1zZWxmLnBvcnRz X3NvY2tldCkNCj4gKyAgICAgICAgc2VsZi5jb3JlX2xpc3RfdXNlciA9IHNlbGYuY29yZV9saXN0 WzA6Ml0NCj4gKyAgICAgICAgc2VsZi5jb3JlX2xpc3RfaG9zdCA9IHNlbGYuY29yZV9saXN0WzI6 NV0NCj4gKyAgICAgICAgc2VsZi5wb3J0X21hc2sgPSB1dGlscy5jcmVhdGVfbWFzayhwb3J0cykN Cj4gKyAgICAgICAgc2VsZi5jb3JlX21hc2tfdXNlciA9IHV0aWxzLmNyZWF0ZV9tYXNrKHNlbGYu Y29yZV9saXN0X3VzZXIpDQo+ICsgICAgICAgIHNlbGYuY29yZV9tYXNrX2hvc3QgPSB1dGlscy5j cmVhdGVfbWFzayhzZWxmLmNvcmVfbGlzdF9ob3N0KQ0KPiArDQo+ICsgICAgZGVmIHNldF91cChz ZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBiZWZvcmUgZWFjaCB0ZXN0IGNh c2UuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICAjIENsZWFuIHRoZSBleGVjdXRpb24gRU5W DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJybSAtcmYgLi92aG9zdC5vdXQiLCAi IyIpDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJraWxsYWxsIC1zIElOVCB0ZXN0 cG1kIiwgIiMiKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgia2lsbGFsbCAtcyBJ TlQgcWVtdS1zeXN0ZW0teDg2XzY0IiwgIiMiKQ0KPiArICAgICAgICAjIFByZXBhcmUgdGhlIHJl c3VsdCB0YWJsZQ0KPiArICAgICAgICBzZWxmLnRhYmxlX2hlYWRlciA9IFsiRnJhbWVTaXplKEIp IiwgIk1vZGUiLCAiVGhyb3VnaHB1dChNcHBzKSIsDQo+ICJDeWNsZSJdDQo+ICsgICAgICAgIHNl bGYucmVzdWx0X3RhYmxlX2NyZWF0ZShzZWxmLnRhYmxlX2hlYWRlcikNCj4gKw0KPiArICAgICAg ICBzZWxmLnZob3N0ID0gc2VsZi5kdXQubmV3X3Nlc3Npb24oc3VpdGU9InZob3N0IikNCj4gKyAg ICAgICAgc2VsZi52aXJ0aW9fdXNlciA9IHNlbGYuZHV0Lm5ld19zZXNzaW9uKHN1aXRlPSJ2aXJ0 aW8tdXNlciIpDQo+ICsNCj4gKyAgICBkZWYgc3RhcnRfdmhvc3RfdGVzdHBtZChzZWxmKToNCj4g KyAgICAgICAgIiIiDQo+ICsgICAgICAgIHN0YXJ0IHRlc3RwbWQgb24gdmhvc3QNCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJraWxsYWxsIC1zIElOVCB0 ZXN0cG1kIiwgIiMiKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicm0gLXJmIC4v dmhvc3QtbmV0KiIsICIjIikNCj4gKyAgICAgICAgY29tbWFuZF9jbGllbnQgPSBzZWxmLmR1dC50 YXJnZXQgKyAiL2FwcC90ZXN0cG1kICIgKyBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IiAtbiAlZCAtYyAlcyAtLXNvY2tldC1tZW0gMTAyNCwxMDI0ICIgKyBcDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIiAtLWxlZ2FjeS1tZW0gLS1uby1wY2kgLS1maWxlLXByZWZpeD12aG9z dCAiICsgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICIgLS12ZGV2DQo+ICduZXRfdmhv c3QwLGlmYWNlPXZob3N0LW5ldCxxdWV1ZXM9MSxjbGllbnQ9MCcgIiArIFwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAiIC0tIC1pIC0tbmItY29yZXM9MSAtLXR4ZD0xMDI0IC0tcnhkPTEw MjQiDQo+ICsgICAgICAgIGNvbW1hbmRfbGluZV9jbGllbnQgPSBjb21tYW5kX2NsaWVudCAlICgN Cj4gKyAgICAgICAgICAgIHNlbGYuZHV0LmdldF9tZW1vcnlfY2hhbm5lbHMoKSwgc2VsZi5jb3Jl X21hc2tfaG9zdCkNCj4gKyAgICAgICAgc2VsZi52aG9zdC5zZW5kX2V4cGVjdChjb21tYW5kX2xp bmVfY2xpZW50LCAidGVzdHBtZD4gIiwgMTIwKQ0KPiArICAgICAgICBzZWxmLnZob3N0LnNlbmRf ZXhwZWN0KCJzZXQgZndkIG1hYyIsICJ0ZXN0cG1kPiAiLCAxMjApDQo+ICsNCj4gKyAgICBkZWYg c3RhcnRfdmlydGlvX3VzZXJfdGVzdHBtZChzZWxmLCBwbWRfYXJnKToNCj4gKyAgICAgICAgIiIi DQo+ICsgICAgICAgIHN0YXJ0IHRlc3RwbWQgb2Ygdmhvc3QgdXNlcg0KPiArICAgICAgICAiIiIN Cj4gKyAgICAgICAgY29tbWFuZF9saW5lX3VzZXIgPSBzZWxmLmR1dC50YXJnZXQgKyAiL2FwcC90 ZXN0cG1kIC1uICVkIC1jICVzDQo+IC0tc29ja2V0LW1lbSAxMDI0LDEwMjQgIiArIFwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1sZWdhY3ktbWVtIC0tbm8tcGNpIC0tZmlsZS1w cmVmaXg9dmlydGlvICINCj4gKyBcDQo+ICsNCj4gIi0tdmRldj1uZXRfdmlydGlvX3VzZXIwLG1h Yz0wMDowMTowMjowMzowNDowNSxwYXRoPS4vdmhvc3QtbmV0LCVzICIgKyBcDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAtLSAtaSAlcyAtLXJzcy1pcCAtLW5iLWNvcmVzPTEgLS10 eGQ9MTAyNA0KPiAtLXJ4ZD0xMDI0Ig0KPiArICAgICAgICBjb21tYW5kX2xpbmVfdXNlciA9IGNv bW1hbmRfbGluZV91c2VyICUNCj4gKHNlbGYuZHV0LmdldF9tZW1vcnlfY2hhbm5lbHMoKSwNCj4g Kw0KPiBzZWxmLmNvcmVfbWFza191c2VyLA0KPiArDQo+IHBtZF9hcmdbInZlcnNpb24iXSwgcG1k X2FyZ1sicGF0aCJdKQ0KPiArICAgICAgICBzZWxmLnZpcnRpb191c2VyLnNlbmRfZXhwZWN0KGNv bW1hbmRfbGluZV91c2VyLCAidGVzdHBtZD4gIiwgMTIwKQ0KPiArICAgICAgICBzZWxmLnZpcnRp b191c2VyLnNlbmRfZXhwZWN0KCJzZXQgZndkIG1hYyIsICJ0ZXN0cG1kPiAiLCAxMjApDQo+ICsg ICAgICAgIHNlbGYudmlydGlvX3VzZXIuc2VuZF9leHBlY3QoInN0YXJ0IiwgInRlc3RwbWQ+ICIs IDEyMCkNCj4gKw0KPiArICAgIGRlZiBjaGVja19wb3J0X3Rocm91Z2hwdXQoc2VsZik6DQo+ICsg ICAgICAgICIiIg0KPiArICAgICAgICBjaGVjayB0aGUgdGhyb3VnaHB1dCBhZnRlciBwb3J0IHN0 b3ANCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIGxvb3AgPSAxDQo+ICsgICAgICAgIHdoaWxl KGxvb3AgPD0gNSk6DQo+ICsgICAgICAgICAgICBvdXQgPSBzZWxmLnZob3N0LnNlbmRfZXhwZWN0 KCJzaG93IHBvcnQgc3RhdHMgMCIsICJ0ZXN0cG1kPiIsDQo+IDYwKQ0KPiArICAgICAgICAgICAg bGluZXMgPSByZS5zZWFyY2goIlJ4LXBwczpccyooXGQqKSIsIG91dCkNCj4gKyAgICAgICAgICAg IHJlc3VsdCA9IGxpbmVzLmdyb3VwKDEpDQo+ICsgICAgICAgICAgICBpZiByZXN1bHQgPT0gIjAi Og0KPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+ICsgICAgICAgICAgICB0aW1lLnNsZWVwKDMp DQo+ICsgICAgICAgICAgICBsb29wID0gbG9vcCArIDENCj4gKyAgICAgICAgc2VsZi52ZXJpZnko cmVzdWx0ID09ICIwIiwgInBvcnQgc3RvcCBmYWlsZWQsIGl0IGFsc2UgY2FuDQo+ICsgcmVjZXZp ZSBkYXRhIGFmdGVyIHN0b3AuIikNCj4gKw0KSXQncyBiZXR0ZXIgdG8gY2hlY2sgdGhlIGxpbmsg c3RhdHVzIGFmdGVyIHBvcnQgc3RvcA0KDQo+ICsgICAgZGVmIGNoZWNrX3BvcnRfbGlua19zdGF0 dXMoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBjaGVjayB0aGUgbGluayBzdGF0 dXMgYWZ0ZXIgcG9ydCByZXN0YXJ0DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBsb29wID0g MQ0KPiArICAgICAgICB3aGlsZShsb29wIDw9IDUpOg0KPiArICAgICAgICAgICAgb3V0ID0gc2Vs Zi52aG9zdC5zZW5kX2V4cGVjdCgic2hvdyBwb3J0IGluZm8gYWxsIiwgInRlc3RwbWQ+ICIsDQo+ IDEyMCkNCj4gKyAgICAgICAgICAgIHBvcnRfc3RhdHVzID0gcmUuZmluZGFsbCgiTGlua1xzKnN0 YXR1czpccyooW2Etel0qKSIsIG91dCkNCj4gKyAgICAgICAgICAgIGlmKCJkb3duIiBub3QgaW4g cG9ydF9zdGF0dXMpOg0KPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+ICsgICAgICAgICAgICB0 aW1lLnNsZWVwKDMpDQo+ICsgICAgICAgICAgICBsb29wID0gbG9vcCArIDENCj4gKw0KSXQncyBi ZXR0ZXIgdG8gY2hlY2sgdGhlIHRocm91Z2hwdXQgYWZ0ZXIgcG9yIHJlc3RhcnQNCg0KPiArICAg ICAgICBzZWxmLnZlcmlmeSgiZG93biIgbm90IGluIHBvcnRfc3RhdHVzLCAicG9ydCBjYW4gbm90 IHVwIGFmdGVyDQo+ICsgcmVzdGFydCIpDQo+ICsNCj4gKyAgICBkZWYgcG9ydF9yZXN0YXJ0KHNl bGYpOg0KPiArICAgICAgICBzZWxmLnZob3N0LnNlbmRfZXhwZWN0KCJzdG9wIiwgInRlc3RwbWQ+ ICIsIDEyMCkNCj4gKyAgICAgICAgc2VsZi52aG9zdC5zZW5kX2V4cGVjdCgicG9ydCBzdG9wIDAi LCAidGVzdHBtZD4gIiwgMTIwKQ0KPiArICAgICAgICBzZWxmLmNoZWNrX3BvcnRfdGhyb3VnaHB1 dCgpDQo+ICsgICAgICAgIHNlbGYudmhvc3Quc2VuZF9leHBlY3QoImNsZWFyIHBvcnQgc3RhdHMg YWxsIiwgInRlc3RwbWQ+ICIsIDEyMCkNCj4gKyAgICAgICAgc2VsZi52aG9zdC5zZW5kX2V4cGVj dCgicG9ydCBzdGFydCBhbGwiLCAidGVzdHBtZD4gIiwgMTIwKQ0KPiArICAgICAgICBzZWxmLmNo ZWNrX3BvcnRfbGlua19zdGF0dXMoKQ0KPiArICAgICAgICBzZWxmLnZob3N0LnNlbmRfZXhwZWN0 KCJzdGFydCB0eF9maXJzdCAzMiIsICJ0ZXN0cG1kPiAiLCAxMjApDQo+ICsNCj4gKyAgICBkZWYg dXBkYXRlX3RhYmxlX2luZm8oc2VsZiwgY2FzZV9pbmZvLCBmcmFtZV9zaXplLCBNcHBzLCBDeWNs ZSk6DQo+ICsgICAgICAgIHJlc3VsdHNfcm93ID0gW2ZyYW1lX3NpemVdDQo+ICsgICAgICAgIHJl c3VsdHNfcm93LmFwcGVuZChjYXNlX2luZm8pDQo+ICsgICAgICAgIHJlc3VsdHNfcm93LmFwcGVu ZChNcHBzKQ0KPiArICAgICAgICByZXN1bHRzX3Jvdy5hcHBlbmQoQ3ljbGUpDQo+ICsgICAgICAg IHNlbGYucmVzdWx0X3RhYmxlX2FkZChyZXN1bHRzX3JvdykNCj4gKw0KPiArICAgIGRlZiBjYWxj dWxhdGVfYXZnX3Rocm91Z2hwdXQoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBj YWxjdWxhdGUgdGhlIGF2ZXJhZ2UgdGhyb3VnaHB1dA0KPiArICAgICAgICAiIiINCj4gKyAgICAg ICAgcmVzdWx0cyA9IDAuMA0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6DQo+ICsgICAg ICAgICAgICBvdXQgPSBzZWxmLnZob3N0LnNlbmRfZXhwZWN0KCJzaG93IHBvcnQgc3RhdHMgYWxs IiwgInRlc3RwbWQ+IiwNCj4gNjApDQo+ICsgICAgICAgICAgICB0aW1lLnNsZWVwKDUpDQo+ICsg ICAgICAgICAgICBsaW5lcyA9IHJlLnNlYXJjaCgiUngtcHBzOlxzKihcZCopIiwgb3V0KQ0KPiAr ICAgICAgICAgICAgcmVzdWx0ID0gbGluZXMuZ3JvdXAoMSkNCj4gKyAgICAgICAgICAgIHJlc3Vs dHMgKz0gZmxvYXQocmVzdWx0KQ0KPiArICAgICAgICBNcHBzID0gcmVzdWx0cyAvICgxMDAwMDAw ICogMTApDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KE1wcHMgPiAwLCAiJXMgY2FuIG5vdCByZWNl aXZlIHBhY2tldHMiICUNCj4gc2VsZi5ydW5uaW5nX2Nhc2UpDQo+ICsgICAgICAgIHJldHVybiBN cHBzDQo+ICsNCj4gKyAgICBkZWYgc2VuZF9hbmRfdmVyaWZ5KHNlbGYsIGNhc2VfaW5mbywgZnJh bWVfc2l6ZSk6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzdGFydCB0byBzZW5kIHBhY2tl dHMgYW5kIGNhbGN1bGF0ZSB0aGUgYXZlcmFnZSB0aHJvdWdocHV0DQo+ICsgICAgICAgICIiIg0K PiArICAgICAgICAjIHN0YXJ0IHRvIHNlbmQgcGFja2V0cw0KPiArICAgICAgICBzZWxmLnZob3N0 LnNlbmRfZXhwZWN0KCJzZXQgdHhwa3RzICVzIiAlIGZyYW1lX3NpemUsICJ0ZXN0cG1kPiIsDQo+ IDYwKQ0KPiArICAgICAgICBzZWxmLnZob3N0LnNlbmRfZXhwZWN0KCJzdGFydCB0eF9maXJzdCAz MiIsICJ0ZXN0cG1kPiIsIDYwKQ0KPiArICAgICAgICBNcHBzID0gc2VsZi5jYWxjdWxhdGVfYXZn X3Rocm91Z2hwdXQoKQ0KPiArICAgICAgICBzZWxmLnVwZGF0ZV90YWJsZV9pbmZvKGNhc2VfaW5m bywgZnJhbWVfc2l6ZSwgTXBwcywgIkJlZm9yZQ0KPiArIFJlc3RhcnQiKQ0KPiArDQo+ICsgICAg ICAgIHNlbGYucG9ydF9yZXN0YXJ0KCkNCj4gKyAgICAgICAgTXBwcyA9IHNlbGYuY2FsY3VsYXRl X2F2Z190aHJvdWdocHV0KCkNCj4gKyAgICAgICAgc2VsZi51cGRhdGVfdGFibGVfaW5mbyhjYXNl X2luZm8sIGZyYW1lX3NpemUsIE1wcHMsICJBZnRlcg0KPiArIFJlc3RhcnQiKQ0KPiArDQo+ICsg ICAgZGVmIGNsb3NlX2FsbF90ZXN0cG1kKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAg ICAgY2xvc2UgdGVzdHBtZCBhYm91dCB2aG9zdC11c2VyIGFuZCB2aXJ0aW8tdXNlcg0KPiArICAg ICAgICAiIiINCj4gKyAgICAgICAgc2VsZi52aG9zdC5zZW5kX2V4cGVjdCgicXVpdCIsICIjIiwg NjApDQo+ICsgICAgICAgIHNlbGYudmlydGlvX3VzZXIuc2VuZF9leHBlY3QoInF1aXQiLCAiIyIs IDYwKQ0KPiArDQo+ICsgICAgZGVmIGNsb3NlX2FsbF9zZXNzaW9uKHNlbGYpOg0KPiArICAgICAg ICAiIiINCj4gKyAgICAgICAgY2xvc2Ugc2Vzc2lvbiBvZiB2aG9zdC11c2VyIGFuZCB2aXJ0aW8t dXNlcg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2VsZi5kdXQuY2xvc2Vfc2Vzc2lvbihz ZWxmLnZob3N0KQ0KPiArICAgICAgICBzZWxmLmR1dC5jbG9zZV9zZXNzaW9uKHNlbGYudmlydGlv X3VzZXIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9wZXJmX3Zob3N0X2xvb3BiYWNrX3ZpcnRpbzEx X21lcmdlYWJsZV9tYWMoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBwZXJmb3Jt YW5jZSBmb3IgW2ZyYW1lX3NpemVzXSBhbmQgcmVzdGFydCBwb3J0IG9uIHZpcnRpbzEuMQ0KPiBt ZXJnZWFibGUgcGF0aA0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcG1kX2FyZyA9IHsidmVy c2lvbiI6ICJwYWNrZWRfdnE9MSxtcmdfcnhidWY9MSAiLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAicGF0aCI6ICItLXR4LW9mZmxvYWRzPTB4MA0KPiAtLWVuYWJsZS1ody12bGFuLXN0 cmlwICJ9DQo+ICsgICAgICAgIGZvciBmcmFtZV9zaXplIGluIHNlbGYuZnJhbWVfc2l6ZXM6DQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXJ0X3Zob3N0X3Rlc3RwbWQoKQ0KPiArICAgICAgICAgICAg c2VsZi5zdGFydF92aXJ0aW9fdXNlcl90ZXN0cG1kKHBtZF9hcmcpDQo+ICsgICAgICAgICAgICBz ZWxmLnNlbmRfYW5kX3ZlcmlmeSgidmlydGlvMS4xIG1lcmdlYWJsZSIsIGZyYW1lX3NpemUpDQo+ ICsgICAgICAgICAgICBzZWxmLmNsb3NlX2FsbF90ZXN0cG1kKCkNCj4gKyAgICAgICAgc2VsZi5y ZXN1bHRfdGFibGVfcHJpbnQoKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfcGVyZl92aG9zdF9sb29w YmFja192aXJ0aW8xMV9ub3JtYWxfbWFjKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAg ICAgcGVyZm9ybWFuY2UgZm9yIFtmcmFtZV9zaXplc10gYW5kIHJlc3RhcnQgcG9ydCBvYiB2aXJ0 aW8xLjEgbm9ybWFsDQo+IHBhdGgNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBtZF9hcmcg PSB7InZlcnNpb24iOiAicGFja2VkX3ZxPTEsbXJnX3J4YnVmPTAgIiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgInBhdGgiOiAiLS10eC1vZmZsb2Fkcz0weDANCj4gLS1lbmFibGUtaHct dmxhbi1zdHJpcCAifQ0KPiArICAgICAgICBmb3IgZnJhbWVfc2l6ZSBpbiBzZWxmLmZyYW1lX3Np emVzOg0KPiArICAgICAgICAgICAgc2VsZi5zdGFydF92aG9zdF90ZXN0cG1kKCkNCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhcnRfdmlydGlvX3VzZXJfdGVzdHBtZChwbWRfYXJnKQ0KPiArICAgICAg ICAgICAgc2VsZi5zZW5kX2FuZF92ZXJpZnkoInZpcnRpbzEuMSBub3JtYWwiLCBmcmFtZV9zaXpl KQ0KPiArICAgICAgICAgICAgc2VsZi5jbG9zZV9hbGxfdGVzdHBtZCgpDQo+ICsgICAgICAgIHNl bGYucmVzdWx0X3RhYmxlX3ByaW50KCkNCj4gKw0KQmV0dGVyIHRvIGFkZCB0ZXN0X3BlcmZfdmhv c3RfbG9vcGJhY2tfdmlydGlvMTFfaW5fb3JkZXJfbWFjIGNhc2Ugd2l0aCAicGFja2VkX3ZxPTEs IGluX29yZGVyPTEiIHdoaWNoIGZ1bmN0aW9uIHdpbGwgZW5hYmxlZCBpbiBuZXh0IHJlbGVhc2Ug ZHBkayAxOS4wNS4NCg0KPiArICAgIGRlZiB0ZXN0X3BlcmZfdmhvc3RfbG9vcGJhY2tfdmlydGlv dXNlcl9pbm9yZGVyX21lcmdlYWJsZV9tYWMoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAg ICAgICBwZXJmb3JtYW5jZSBmb3IgW2ZyYW1lX3NpemVzXSBhbmQgcmVzdGFydCBwb3J0IG9uIGlu b3JkZXINCj4gbWVyZ2VhYmxlIHBhdGgNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBtZF9h cmcgPSB7InZlcnNpb24iOiAiaW5fb3JkZXI9MSxtcmdfcnhidWY9MSAiLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAicGF0aCI6ICItLXR4LW9mZmxvYWRzPTB4MA0KPiAtLWVuYWJsZS1o dy12bGFuLXN0cmlwICJ9DQo+ICsgICAgICAgIGZvciBmcmFtZV9zaXplIGluIHNlbGYuZnJhbWVf c2l6ZXM6DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXJ0X3Zob3N0X3Rlc3RwbWQoKQ0KPiArICAg ICAgICAgICAgc2VsZi5zdGFydF92aXJ0aW9fdXNlcl90ZXN0cG1kKHBtZF9hcmcpDQo+ICsgICAg ICAgICAgICBzZWxmLnNlbmRfYW5kX3ZlcmlmeSgiaW5vcmRlciBtZXJnZWFibGUiLCBmcmFtZV9z aXplKQ0KPiArICAgICAgICAgICAgc2VsZi5jbG9zZV9hbGxfdGVzdHBtZCgpDQo+ICsgICAgICAg IHNlbGYucmVzdWx0X3RhYmxlX3ByaW50KCkNCj4gKw0KPiArICAgIGRlZg0KPiB0ZXN0X3BlcmZf dmhvc3RfbG9vcGJhY2tfdmlydGlvdXNlcl9pbm9yZGVyX21lcmdlYWJsZV9vZmZfbWFjKHNlbGYp Og0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcGVyZm9ybWFuY2UgZm9yIFtmcmFtZV9zaXpl c10gYW5kIHJlc3RhcnQgcG9ydCBvbiBpbm9yZGVyIG5vcm1hbA0KPiBwYXRoDQo+ICsgICAgICAg ICIiIg0KPiArICAgICAgICBwbWRfYXJnID0geyJ2ZXJzaW9uIjogImluX29yZGVyPTEsbXJnX3J4 YnVmPTAgIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiLS10eC1vZmZs b2Fkcz0weDANCj4gLS1lbmFibGUtaHctdmxhbi1zdHJpcCAifQ0KPiArICAgICAgICBmb3IgZnJh bWVfc2l6ZSBpbiBzZWxmLmZyYW1lX3NpemVzOg0KPiArICAgICAgICAgICAgc2VsZi5zdGFydF92 aG9zdF90ZXN0cG1kKCkNCj4gKyAgICAgICAgICAgIHNlbGYuc3RhcnRfdmlydGlvX3VzZXJfdGVz dHBtZChwbWRfYXJnKQ0KPiArICAgICAgICAgICAgc2VsZi5zZW5kX2FuZF92ZXJpZnkoImlub3Jk ZXIgbm9ybWFsIiwgZnJhbWVfc2l6ZSkNCj4gKyAgICAgICAgICAgIHNlbGYuY2xvc2VfYWxsX3Rl c3RwbWQoKQ0KPiArICAgICAgICBzZWxmLnJlc3VsdF90YWJsZV9wcmludCgpDQo+ICsNCj4gKyAg ICBkZWYgdGVzdF9wZXJmX3Zob3N0X2xvb3BiYWNrX3ZpcnRpb3VzZXJfbWVyZ2VhYmxlX21hYyhz ZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBlcmZvcm1hbmNlIGZvciBbZnJhbWVf c2l6ZXNdIGFuZCByZXN0YXJ0IHBvcnQgb24gdmlydGlvIG1lcmdlYWJsZQ0KPiBwYXRoDQo+ICsg ICAgICAgICIiIg0KPiArICAgICAgICBwbWRfYXJnID0geyJ2ZXJzaW9uIjogImluX29yZGVyPTAs bXJnX3J4YnVmPTEgIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiLS10 eC1vZmZsb2Fkcz0weDANCj4gLS1lbmFibGUtaHctdmxhbi1zdHJpcCAifQ0KPiArICAgICAgICBm b3IgZnJhbWVfc2l6ZSBpbiBzZWxmLmZyYW1lX3NpemVzOg0KPiArICAgICAgICAgICAgc2VsZi5z dGFydF92aG9zdF90ZXN0cG1kKCkNCj4gKyAgICAgICAgICAgIHNlbGYuc3RhcnRfdmlydGlvX3Vz ZXJfdGVzdHBtZChwbWRfYXJnKQ0KPiArICAgICAgICAgICAgc2VsZi5zZW5kX2FuZF92ZXJpZnko InZpcnRpb3VzZXIgbWVyZ2VhYmxlIiwgZnJhbWVfc2l6ZSkNCj4gKyAgICAgICAgICAgIHNlbGYu Y2xvc2VfYWxsX3Rlc3RwbWQoKQ0KPiArICAgICAgICBzZWxmLnJlc3VsdF90YWJsZV9wcmludCgp DQo+ICsNCj4gKyAgICBkZWYgdGVzdF9wZXJmX3Zob3N0X2xvb3BiYWNrX3ZpcnRpb3VzZXJfbm9y bWFsX21hYyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBlcmZvcm1hbmNlIGZv ciBbZnJhbWVfc2l6ZXNdIGFuZCByZXN0YXJ0IHBvcnQgb24gdmlydGlvIG5vcm1hbA0KPiBwYXRo DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBwbWRfYXJnID0geyJ2ZXJzaW9uIjogImluX29y ZGVyPTAsbXJnX3J4YnVmPTAgIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgi OiAiLS10eC1vZmZsb2Fkcz0weDANCj4gLS1lbmFibGUtaHctdmxhbi1zdHJpcCAifQ0KPiArICAg ICAgICBmb3IgZnJhbWVfc2l6ZSBpbiBzZWxmLmZyYW1lX3NpemVzOg0KPiArICAgICAgICAgICAg c2VsZi5zdGFydF92aG9zdF90ZXN0cG1kKCkNCj4gKyAgICAgICAgICAgIHNlbGYuc3RhcnRfdmly dGlvX3VzZXJfdGVzdHBtZChwbWRfYXJnKQ0KPiArICAgICAgICAgICAgc2VsZi5zZW5kX2FuZF92 ZXJpZnkoInZpcnRpb3VzZXIgbm9ybWFsIiwgZnJhbWVfc2l6ZSkNCj4gKyAgICAgICAgICAgIHNl bGYuY2xvc2VfYWxsX3Rlc3RwbWQoKQ0KPiArICAgICAgICBzZWxmLnJlc3VsdF90YWJsZV9wcmlu dCgpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9wZXJmX3Zob3N0X2xvb3BiYWNrX3ZpcnRpb3VzZXJf dmVjdG9yX3J4X21hYyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBlcmZvcm1h bmNlIGZvciBmcmFtZV9zaXplcyBhbmQgcmVzdGFydCBwb3J0IG9uIHZpcnRpbyB2ZWN0b3IgcngN Cj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBtZF9hcmcgPSB7InZlcnNpb24iOiAiaW5fb3Jk ZXI9MCxtcmdfcnhidWY9MCAiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCI6 ICItLXR4LW9mZmxvYWRzPTB4MCAifQ0KPiArICAgICAgICBmb3IgZnJhbWVfc2l6ZSBpbiBzZWxm LmZyYW1lX3NpemVzOg0KPiArICAgICAgICAgICAgc2VsZi5zdGFydF92aG9zdF90ZXN0cG1kKCkN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhcnRfdmlydGlvX3VzZXJfdGVzdHBtZChwbWRfYXJnKQ0K PiArICAgICAgICAgICAgc2VsZi5zZW5kX2FuZF92ZXJpZnkoInZpcnRpb3VzZXIgdmVjdG9yX3J4 IiwgZnJhbWVfc2l6ZSkNCj4gKyAgICAgICAgICAgIHNlbGYuY2xvc2VfYWxsX3Rlc3RwbWQoKQ0K PiArICAgICAgICBzZWxmLnJlc3VsdF90YWJsZV9wcmludCgpDQo+ICsNCj4gKyAgICBkZWYgdGVh cl9kb3duKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFmdGVyIGVhY2gg dGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBl Y3QoImtpbGxhbGwgLXMgSU5UIHRlc3RwbWQiLCAiIyIpDQo+ICsgICAgICAgIHNlbGYuY2xvc2Vf YWxsX3Nlc3Npb24oKQ0KPiArICAgICAgICB0aW1lLnNsZWVwKDIpDQo+ICsNCj4gKyAgICBkZWYg dGVhcl9kb3duX2FsbChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBhZnRl ciBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAgICIiIg0KPiAtLQ0KPiAyLjcuNA0KDQo=