From dev-return-1549-archive-asf-public=cust-asf.ponee.io@openwhisk.apache.org Wed Feb 28 21:57:43 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 1B272180657 for ; Wed, 28 Feb 2018 21:57:41 +0100 (CET) Received: (qmail 10266 invoked by uid 500); 28 Feb 2018 20:57:41 -0000 Mailing-List: contact dev-help@openwhisk.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openwhisk.apache.org Delivered-To: mailing list dev@openwhisk.apache.org Received: (qmail 10233 invoked by uid 99); 28 Feb 2018 20:57:40 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 28 Feb 2018 20:57:40 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id F1A371A089D for ; Wed, 28 Feb 2018 20:57:39 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.103 X-Spam-Level: X-Spam-Status: No, score=-0.103 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=adobe.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id UUDv5Fpnh1rR for ; Wed, 28 Feb 2018 20:57:37 +0000 (UTC) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0057.outbound.protection.outlook.com [104.47.40.57]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 87B605F2A8 for ; Wed, 28 Feb 2018 20:57:36 +0000 (UTC) Received: from CY4PR02MB2391.namprd02.prod.outlook.com (10.169.182.17) by CY4PR02MB2279.namprd02.prod.outlook.com (10.169.181.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 20:57:28 +0000 Received: from CY4PR02MB2391.namprd02.prod.outlook.com ([fe80::75ce:2cee:65a7:8c9]) by CY4PR02MB2391.namprd02.prod.outlook.com ([fe80::75ce:2cee:65a7:8c9%17]) with mapi id 15.20.0548.013; Wed, 28 Feb 2018 20:57:28 +0000 From: Tyson Norris To: "dev@openwhisk.apache.org" Subject: Re: Introducing sharding as an alternative for state sharing Thread-Topic: Introducing sharding as an alternative for state sharing Thread-Index: AQHTm2h6cXLHAV+y60CFePGIL6pWyaOPov8AgAAEMwCAAAF2gIAqzgAA Date: Wed, 28 Feb 2018 20:57:27 +0000 Message-ID: References: <28C7DD5B-8D67-41DD-9584-204045C1DE32@gmail.com> <1388FA58-D999-4C9C-BD9E-22554DB22C1D@gmail.com> In-Reply-To: <1388FA58-D999-4C9C-BD9E-22554DB22C1D@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3445.5.20) x-originating-ip: [192.150.10.200] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CY4PR02MB2279;7:z1T0Ku1uJr77lwmgg4UoLsdt+H/A9nqajuAfT3rCRTuiymSNro5V+cvNh1Kd0E1w/jMOLTaZ6oOu2BNGktWkwtZ9zzbDwIQ8vMRx3AUn1Aku/M8j4BCW9K3YQLPvrUx/5jMXOxzfLWoaIXnK8MCAfkkDqieYFqjU4PUi5s8XTr11HUMLdJ88785OTfcY5bVlCygYwMlT28hIJK52z5niCyNU2aHTOk0KM+Y3ncHMhO7X4xPDQ3qgZq/xBmlnRhnn x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 38b3aeb2-eab0-4d73-8181-08d57eede06d x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020);SRVR:CY4PR02MB2279; x-ms-traffictypediagnostic: CY4PR02MB2279: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(158342451672863)(85827821059158)(190383065149520)(104084551191319); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(61425038)(6040501)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231220)(944501219)(52105095)(10201501046)(3002001)(6055026)(61426038)(61427038)(6041288)(20161123558120)(20161123560045)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:CY4PR02MB2279;BCL:0;PCL:0;RULEID:;SRVR:CY4PR02MB2279; x-forefront-prvs: 0597911EE1 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(366004)(396003)(39860400002)(39380400002)(54094003)(189003)(199004)(478600001)(2501003)(8936002)(50226002)(2351001)(6436002)(5640700003)(33656002)(76176011)(6486002)(6246003)(106356001)(6116002)(3846002)(105586002)(6512007)(5250100002)(93886005)(5660300001)(81166006)(14454004)(26005)(229853002)(6346003)(83716003)(99286004)(81156014)(1730700003)(53936002)(6916009)(186003)(316002)(68736007)(25786009)(36756003)(82746002)(3280700002)(97736004)(57306001)(8676002)(2950100002)(10090500001)(6506007)(66066001)(59450400001)(3660700001)(86362001)(305945005)(2900100001)(7736002)(53546011)(102836004)(2906002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR02MB2279;H:CY4PR02MB2391.namprd02.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; received-spf: None (protection.outlook.com: adobe.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=tnorris@adobe.com; x-microsoft-antispam-message-info: MZa9Tvtcsbu1u0eq6lkeqsjZYLL7FnfuSFIHNtQZYr5prDmBry/b5lQiIzWuNU6jZA0jM8bXbmdGMYi8XfR1ji+Wi49OAOjWSLuNP1Mfy4j6j6LI2lteHuXRAa89g6vySsgNTviqRlW28HyU9JELSsOsuEYxtWo2xj/OvB83/N4= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <112D1B28BB4F4F488B020291A9D4EE3F@namprd02.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: adobe.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38b3aeb2-eab0-4d73-8181-08d57eede06d X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Feb 2018 20:57:27.8540 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fa7b1b5a-7b34-4387-94ae-d2c178decee1 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR02MB2279 T25lIHJlbGF0ZWQgcXVlc3Rpb24gb24gdGhpcyBpczogaG93IGlzIHRocm90dGxpbmcgaGFuZGxl ZD8gDQoNCkxvb2tpbmcgYXQgdGhlIGNvZGUgaXQgbG9va3MgbGlrZSBlYWNoIGNvbnRyb2xsZXIg aW5zdGFuY2Ugd2lsbCBtYWludGFpbiBpdHMgb3duIHN0YXRzICh0b3RhbEFjdGl2YXRpb25zLCBh Y3RpdmF0aW9uc1Blck5hbWVzcGFjZSkgaW5kZXBlbmRlbnRseS4gDQpBbSBJIG1pc3NpbmcgaXQ/ DQoNClRoYW5rcw0KVHlzb24NCg0KPiBPbiBGZWIgMSwgMjAxOCwgYXQgNzoxNyBBTSwgU3RlcGhl biBGaW5rIDxmaW5rLnN0ZXBoZW5AZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IFBlcmZlY3QuICBU aGFua3MuDQo+IA0KPiBTSkYNCj4gDQo+PiBPbiBGZWIgMSwgMjAxOCwgYXQgMTA6MTIgQU0sIE1h cmt1cyBUaG9lbW1lcyA8bWFya3VzLnRob2VtbWVzQGRlLmlibS5jb20+IHdyb3RlOg0KPj4gDQo+ PiBIaSBTdGV2ZSwNCj4+IA0KPj4gZmFpciBwb2ludCBhbmQgdGhhdCdzIGV4YWN0bHkgd2hhdCB3 ZSdyZSB0cnlpbmcgdG8gZXhwbG9pdCBoZXJlOiBXaGlsZSB0aGUgbG9hZGJhbGFuY2VyIG9ubHkg c2VlcyA4IHNsb3RzIGZvciBleGFtcGxlIG9uIHRoYXQgaW52b2tlciwgdGhlIGludm9rZXIncyBs b2dpYyByZW1haW5zIHVuY2hhbmdlZC4gSXQgYWx3YXlzIHNlZXMgdGhlIGZ1bGwtcGljdHVyZSBv ZiBpdHMgc3RhdGUgYW5kIGRvZXNuJ3QgY2FyZSB3aGVyZSB0aGUgbG9hZCBpcyBjb21pbmcgZnJv bS4gU28gT3BlbldoaXNrIHdvdWxkIChnaXZlbiB0aGUgbG9hZCBpcyBzbG93IGVub3VnaCkgb25s eSBwcm92aXNpb24gb25lIGNvbnRhaW5lciBmb3IgdGhpcyBhY3Rpb24uIEJvdGggbG9hZGJhbGFu Y2VycyB3b3VsZCBvcGVyYXRlIHVzaW5nIHRoZSBzYW1lIGhhc2hlcyBhbmQgYW5kIHN0ZXBTaXpl cyBhbmQgdGh1cyBjaG9vc2UgdGhlIHZlcnkgc2FtZSBpbnZva2VyIChnaXZlbiBubyBvdGhlciBs b2FkIGluIHRoZSBzeXN0ZW0pLg0KPj4gDQo+PiBDaGVlcnMuCSAJICAgICAgICAgDQo+PiANCj4+ IC0tLS0tU3RlcGhlbiBGaW5rIDxmaW5rLnN0ZXBoZW5AZ21haWwuY29tPiB3cm90ZTogLS0tLS0N Cj4+IFRvOiBkZXZAb3BlbndoaXNrLmFwYWNoZS5vcmcNCj4+IEZyb206IFN0ZXBoZW4gRmluayA8 Zmluay5zdGVwaGVuQGdtYWlsLmNvbT4NCj4+IERhdGU6IDAyLzAxLzIwMTggMDM6NTdQTQ0KPj4g U3ViamVjdDogUmU6IEludHJvZHVjaW5nIHNoYXJkaW5nIGFzIGFuIGFsdGVybmF0aXZlIGZvciBz dGF0ZSBzaGFyaW5nDQo+PiANCj4+IEhpIE1hcmt1cywNCj4+IA0KPj4gU3VwcG9zZSBJIGhhdmUg YSBjbGllbnQgd2hpY2ggZmlyZXMgb25lIGFjdGlvbiByZXBlYXRlZGx5IGluIGEgbG9vcC4gICBT byB0aGUgc2VydmVyIGhhbmRsZXMgb25lIGludm9jYXRpb24gb2YgdGhpcyBhY3Rpb24gYXQgYSB0 aW1lLg0KPj4gDQo+PiBVbmRlciB0aGUgY3VycmVudCBzeXN0ZW0sICBPVyB3aWxsIHByb3Zpc2lv biBvbmUgY29udGFpbmVyIGZvciB0aGlzIGFjdGlvbiwgYW5kIGl0IHdpbGwgZ2V0IHJldXNlZCBm b3IgZXZlcnkgaW52b2NhdGlvbi4NCj4+IA0KPj4gVW5kZXIgaG9yaXpvbnRhbCBzaGFyZGluZyB3 aXRoIGZhY3RvciBOLCAgaXQgc2VlbXMgT1cgd2lsbCBwcm92aXNpb24gTiBjb250YWluZXJzIOKA lCB3aGljaCBpcyBzdWItb3B0aW1hbCBmb3Igc2V2ZXJhbCByZWFzb25zIChjb2xkIHN0YXJ0cywg bWVtb3J5IGZvb3RwcmludCwgY29uc3VtcHRpb24gb2Ygc3RlbSBjZWxscykuDQo+PiANCj4+IERv IHlvdSBhZ3JlZT8NCj4+IA0KPj4gSWYgc28g4oCUIEkgd29uZGVyIGlmIHRoZXJl4oCZcyBhIGh5 YnJpZCBzdHJhdGVneSDigJQgc3VwcG9zZSB0aGUgbG9hZCBiYWxhbmNlciBvcGVyYXRlcyB2aWEg aG9yaXpvbnRhbCBzaGFyZGluZywgYnV0IHRoZSBpbnZva2Utc2lkZSBsb2dpYyByZW1haW5zIHVu Y2hhbmdlZC4gICBUaGVuIGFuIGludm9rZXIgY2FuIGNvbnRpbnVlIHRvIHVzZSBhbGwgc2xvdHMg YXZhaWxhYmxlIHRvIG1heGltaXplIGNvbnRhaW5lciByZXVzZSwgd2hpbGUgdGhlIGxvYWQgYmFs YW5jZXIgYXZvaWRzIHNoYXJlZCBzdGF0ZS4NCj4+IA0KPj4gTWFrZSBzZW5zZT8NCj4+IA0KPj4g U0pGDQo+PiANCj4+IA0KPj4+IE9uIEZlYiAxLCAyMDE4LCBhdCA5OjI1IEFNLCBNYXJrdXMgVGhv ZW1tZXMgPG1hcmt1cy50aG9lbW1lc0BkZS5pYm0uY29tPiB3cm90ZToNCj4+PiANCj4+PiBIaSBm b2xrcywNCj4+PiANCj4+PiB3ZSAoQ2hyaXN0aWFuIEJpY2tlbCBhbmQgSSkganVzdCBvcGVuZWQg YSBwdWxsLXJlcXVlc3QgZm9yIGNvbW1lbnRzIG9uIGludHJvZHVjaW5nIGEgbm90aW9uIG9mIHNo YXJkaW5nIGluc3RlYWQgb2Ygc2hhcmluZyB0aGUgc3RhdGUgYmV0d2VlbiBvdXIgY29udHJvbGxl cnMgKGxvYWRiYWxhbmNlcnMpLiBJdCBhbHNvIGFkZHJlc3NlcyBhIGZldyBkZWZpY2llbmNpZXMg b2YgdGhlIG9sZCBsb2FkYmFsYW5jZXIgdG8gcmVtb3ZlIGFueSBraW5kcyBvZiBib3R0bGVuZWNr cyB0aGVyZSBhbmQgbWFrZSBpdCBhcyBmYXN0IGFzIHBvc3NpYmxlLg0KPj4+IA0KPj4+IENvbW1p dCBtZXNzYWdlIGZvciBwb3N0ZXJpdHk6DQo+Pj4gDQo+Pj4gVGhlIGN1cnJlbnQgQ29udGFpbmVy UG9vbEJhbGFuY2VyIHN1ZmZlcnMgYSBjb3VwbGUgb2YgcHJvYmxlbXMgYW5kIGJvdHRsZW5lY2tz Og0KPj4+IA0KPj4+IDEuIEluY29uc2lzdGVudCBzdGF0ZTogVGhlIGRhdGEtc3RydWN0dXJlcyBr ZWVwaW5nIHRoZSBzdGF0ZSBmb3IgdGhhdCBsb2FkYmFsYW5jZXIgYXJlIG5vdCB0aHJlYWQtc2Fm ZWx5IGhhbmRsZWQsIG1lYW5pbmcgdGhlcmUgY2FuIGJlIHF1ZXVpbmcgdG8gc29tZSBpbnZva2Vy cyBldmVuIHRob3VnaCB0aGVyZSBpcyBmcmVlIGNhcGFjaXR5IG9uIG90aGVyIGludm9rZXJzLg0K Pj4+IDIuIEFzeW5jaHJvbm91c2x5IHNoYXJlZCBzdGF0ZTogU2hhcmluZyB0aGUgc3RhdGUgaXMg bmVlZGVkIGZvciBhIGhpZ2gtYXZhaWxhYmxlIGRlcGxveW1lbnQgb2YgbXVsdGlwbGUgY29udHJv bGxlcnMgYW5kIGZvciBob3Jpem9udGFsIHNjYWxlIGluIHRob3NlLiBTYWlkIHN0YXRlLXNoYXJp bmcgbWFrZXMgcG9pbnQgMSBldmVuIHdvcnNlIGFuZCBpc24ndCBhbnl3aGVyZSBmYXN0IGVub3Vn aCB0byBiZSBhYmxlIHRvIGVmZmljaWVudGx5IHNjaGVkdWxlIHF1aWNrIGJ1cnN0cy4NCj4+PiAz LiBCb3R0bGVuZWNrczogR2V0dGluZyB0aGUgc3RhdGUgZnJvbSB0aGUgb3V0c2lkZSAobGlrZSBm b3IgdGhlIEFjdGl2YXRpb25UaHJvdHRsZSkgaXMgYSB2ZXJ5IGNvc3RseSBvcGVyYXRpb24gKGF0 IGxlYXN0IGluIHRoZSBzaGFyZWQgc3RhdGUgY2FzZSkgYW5kIGFjdHVhbGx5IGJvdHRsZW5lY2tz IHRoZSB3aG9sZSBpbnZvY2F0aW9uIHBhdGguIEdldHRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2Yg dGhlIGludm9rZXJzIGlzIGEgc2Vjb25kIGJvdHRsZW5lY2ssIHdoZXJlIG9uZSByZXF1ZXN0IGlz IG1hZGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYWN0b3IgZm9yIGVhY2ggaW52b2NhdGlvbi4NCj4+ PiBUaGlzIG5ldyBpbXBsZW1lbnRhdGlvbiBhaW1zIHRvIHNvbHZlIHRoZSBwcm9ibGVtcyBtZW50 aW9uZWQgYWJvdmUgYXMgZm9sbG93czoNCj4+PiANCj4+PiAxLiBBbGwgc3RhdGUgaXMgbG9jYWw6 IFRoZXJlIGlzIG5vIHNoYXJlZCBzdGF0ZS4gUmVzb3VyY2VzIGFyZSBtYW5hZ2VkIHRocm91Z2gg aG9yaXpvbnRhbCBzaGFyZGluZy4gSG9yaXpvbnRhbCBzaGFyZGluZyBtZWFuczogVGhlIGludm9r ZXJzJyBzbG90cyBhcmUgZXZlbmx5IGRpdmlkZWQgYmV0d2VlbiB0aGUgbG9hZGJhbGFuY2VycyBp biBleGlzdGVuY2UuIElmIHdlIGRlcGxveSAyIGxvYWRiYWxhbmNlcnMgYW5kIGVhY2ggaW52b2tl ciBoYXMgMTYgc2xvdHMsIGVhY2ggb2YgdGhlIGxvYWRiYWxhbmNlcnMgd2lsbCBoYXZlIGFjY2Vz cyB0byA4IHNsb3RzIG9uIGVhY2ggaW52b2tlci4NCj4+PiAyLiBTbG90cyBhcmUgZ2l2ZW4gYXdh eSBhdG9taWNhbGx5OiBXaGVuIHNjaGVkdWxpbmcgYW4gYWN0aXZhdGlvbiwgdGhlIHNsb3QgaXMg aW1tZWRpYXRlbHkgYXNzaWduZWQgdG8gdGhhdCBhY3RpdmF0aW9uIChpbXBsZW1lbnRlZCB0aHJv dWdoIFNlbWFwaG9yZXMpLiBUaGF0IG1lYW5zOiBFdmVuIGluIGNvbmN1cnJlbnQgc2NoZWR1bGVz LCB0aGVyZSB3aWxsIG5vdCBiZSBhbiBvdmVybG9hZCBvbiBhbiBpbnZva2VyIGFzIGxvbmcgYXMg dGhlcmUgaXMgY2FwYWNpdHkgbGVmdCBvbiB0aGF0IGludm9rZXIuDQo+Pj4gMy4gQXN5bmNocm9u b3VzIHVwZGF0ZXMgb2Ygc2xvdyBkYXRhOiBTbG93bHkgY2hhbmdpbmcgZGF0YSwgbGlrZSBhIGNo YW5nZSBpbiB0aGUgaW52b2tlcidzIHN0YXRlLCBpcyBhc3luY2hyb25vdXNseSBoYW5kbGVkIGFu ZCB1cGRhdGVkIHRvIGEgbG9jYWwgdmVyc2lvbiBvZiB0aGUgc3RhdGUuIFF1ZXJ5aW5nIHRoZSBz dGF0ZSBpcyBhcyBjaGVhcCBhcyBpdCBjYW4gYmUuDQo+Pj4gDQo+Pj4gQSBmZXcgd29yZHMgb24g dGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHM6DQo+Pj4gDQo+Pj4gV2UgY2hvc2UgdG8gdXNlIGhv cml6b250YWwgc2hhcmRpbmcgKGV2ZW5seSBkaXZpZGluZyB0aGUgY2FwYWNpdHkgb2YgZWFjaCBp bnZva2VyKSB2cy4gdmVydGljYWwgc2hhcmRpbmcgKGV2ZW5seSBkaXZpZGluZyB0aGUgaW52b2tl cnMgYXMgYSB3aG9sZSkgZm9yIHRoZSBzYWtlIG9mIHN0YWdpbmcgdGhlc2UgY2hhbmdlcyBtYWlu bHkuIE9uY2Ugd2UgZGl2aWRlIHZlcnRpY2FsbHksIHdlJ2xsIG5lZWQgYSBnb29kIGxvYWRiYWxh bmNpbmcgc3RyYXRlZ3kgaW4gZnJvbnQgb2Ygb3VyIGNvbnRyb2xsZXJzIHRoZW1zZWx2ZXMsIHRv IGtlZXAgdW5uZWNlc3NhcnkgY29sZC1zdGFydHMgdG8gYSBtaW5pbXVtIGFuZCBtYXhpbWl6ZSBj b250YWluZXIgcmV1c2UuIEJ5IGRpdmlkaW5nIGhvcml6b250YWxseSwgd2UgbWFpbnRhaW4gdGhl IHNhbWUgcmV1c2UgcG9saWNpZXMgYXMgdG9kYXkgYW5kIGNhbiBldmVuIGtlZXAgdGhlIHNhbWUg bG9hZGJhbGFuY2luZyBzdHJhdGVnaWVzIGludGFjdC4gSG9yaXpvbnRhbCBzaGFyZGluZyBvZiBj b3Vyc2Ugb25seSBzY2FsZXMgc28gZmFyIChtYXliZSB0byA0IGNvbnRyb2xsZXJzLCBhc3N1bWlu ZyAxNiBzbG90cyBvbiBlYWNoIGludm9rZXIpIGJ1dCBpdCB3aWxsIGdpdmUgdXMgdGltZSB0byBm aWd1cmUgb3V0IGdvb2Qgc3RyYXRlZ2llcyBmb3IgdmVydGljYWwgc2hhcmRpbmcgYW5kIGxlYXJu IGFsb25nIHRoZSB3YXkuIEZvciB2ZXJ0aWNhbCBzaGFyZGluZyB0byB3b3JrLCBpdCB3aWxsIGFs c28gYmUgY3J1Y2lhbCB0byBoYXZlIHRoZSBjZW50cmFsaXplZCBvdmVyZmxvdyBxdWV1ZSB0byBi ZSBhYmxlIHRvIG9mZmxvYWQgd29yayBiZXR3ZWVuIHNoYXJkcyB0aHJvdWdoIHdvcmtzdGVhbGlu Zy4gQWxsIGluIGFsbDogVmVydGljYWwgc2hhcmRpbmcgaXMgYSBtdWNoIGJpZ2dlciBjaGFuZ2Ug dGhhbiBob3Jpem9udGFsIHNoYXJkaW5nLg0KPj4+IA0KPj4+IFdlIHRyaWVkIHRvIGltcGxlbWVu dCBldmVyeXRoaW5nIGluIGEgc2luZ2xlIGFjdG9yIGZpcnN0LCBidXQgdGhhdCBzZWVtZWQgdG8g aW1wb3NlIGEgYm90dGxlbmVjayBhZ2Fpbi4gTm90ZSB0aGF0IHRoaXMgaXMgdmVyeSBmcmVxdWVu dGVkIGNvZGUsIGl0IG5lZWRzIHRvIGJlIHZlcnkgdGlnaHQuIFRoYXQgbWlnaHQgbm90IG1hdGNo IHRoZSBhY3RvciBtb2RlbCB0b28gd2VsbC4NCj4+PiANCj4+PiBTdWJzdW1pbmcgZXZlcnl0aGlu ZzogVGhpcyBrZWVwcyBhbGwgcHJvcG9zZWQgY2hhbmdlcyBpbnRhY3QgKG1vc3Qgbm90YWJseSBU eXNvbidzIHBhcmFsbGVsIGV4ZWN1dGlvbnMgYW5kIG92ZXJsb2FkaW5nIHF1ZXVlKS4NCj4+PiAN Cj4+PiBBIG5vdGUgb24gdGhlIGdhaW5zIG1hZGUgYnkgdGhpczogT3VyIG5vbi1ibG9ja2luZyBp bnZva2UgcGVyZm9ybWFuY2UgaXMgbm93IHF1aXRlIGNsb3NlIHRvIHRoZSByYXcgS2Fma2EgcHJv ZHVjZSBwZXJmb3JtYW5jZSB0aGF0IHdlIGhhdmUgaW4gdGhlIHN5c3RlbSAobm90IHRoYXQgaXQn cyBnb29kIGluIGl0c2VsZiwgYnV0IHRoYXQncyB0aGUgbmV4dCB0aGVvcmV0aWNhbCBib3R0bGVu ZWNrKS4gQmVmb3JlIHRoZSBjaGFuZ2VzLCB0aGlzIHdhcyByb3VnaGx5IGJvdHRsZW5lY2tlZCB0 byA0ayByZXF1ZXN0cyBwZXIgc2Vjb25kIG9uIGEgc3VmZmljaWVudGx5IHBvd2VyZnVsIG1hY2hp bmUuIEJsb2NraW5nIGludm9rZSBwZXJmb3JtYW5jZSB3YXMgcm91Z2hseSBkb3VibGVkLg0KPj4+ IA0KPj4+IEFueSBjb21tZW50cywgdGhvdWdodHM/DQo+Pj4gDQo+Pj4gQ2hlZXJzLA0KPj4+IE1h cmt1cw0KPj4+IA0KPj4gDQo+PiANCj4gDQoNCg==