From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Subject: HVMlite ABI specification DRAFT B + implementation outline Date: Mon, 8 Feb 2016 20:03:08 +0100 Message-ID: <56B8E66C.6060605@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aSr5h-0006jv-3q for xen-devel@lists.xenproject.org; Mon, 08 Feb 2016 19:03:17 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel Cc: Wei Liu , Stefano Stabellini , Andrew Cooper , Tim Deegan , Paul Durrant , David Vrabel , Jan Beulich , Samuel Thibault , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org SGVsbG8sCgpJJ3ZlIENjZWQgYSBidW5jaCBvZiBwZW9wbGUgd2hvIGhhdmUgZXhwcmVzc2VkIGlu dGVyZXN0IGluIHRoZSBIVk1saXRlIApkZXNpZ24vaW1wbGVtZW50YXRpb24sIGJvdGggZnJvbSBh IFhlbiBvciBPUyBwb2ludCBvZiB2aWV3LiBJZiB5b3UgCndvdWxkIGxpa2UgdG8gYmUgcmVtb3Zl ZCwgcGxlYXNlIHNheSBzbyBhbmQgSSB3aWxsIHJlbW92ZSB5b3UgaW4gCmZ1cnRoZXIgaXRlcmF0 aW9ucy4gVGhlIHNhbWUgYXBwbGllcyBpZiB5b3Ugd2FudCB0byBiZSBhZGRlZCB0byB0aGUgQ2Mu CgpUaGlzIGlzIGFuIGluaXRpYWwgZHJhZnQgb24gdGhlIEhWTWxpdGUgZGVzaWduIGFuZCBpbXBs ZW1lbnRhdGlvbi4gSSd2ZSAKbWl4ZWQgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBkZXNpZ24gd2l0 aCB0aGUgaW1wbGVtZW50YXRpb24sIGJlY2F1c2UgSSAKdGhpbmsgd2UgYXJlIHF1aXRlIHRpZWQg YnkgdGhlIGltcGxlbWVudGF0aW9uIHBvc3NpYmlsaXRpZXMgaW4gY2VydGFpbiAKYXNwZWN0cywg c28gbm90IHNwZWFraW5nIGFib3V0IGl0IHdvdWxkIG1ha2UgdGhlIGRvY3VtZW50IGluY29tcGxl dGUuIEkgCm1pZ2h0IGJlIHdyb25nIG9uIHRoYXQsIHNvIGZlZWwgZnJlZSB0byBjb21tZW50IG90 aGVyd2lzZSBpZiB5b3Ugd291bGQgCnByZWZlciBhIGRpZmZlcmVudCBhcHByb2FjaC4KClRoZSBk b2N1bWVudCBpcyBzdGlsbCBub3QgY29tcGxldGUuIEknbSBvZiBjb3Vyc2Ugbm90IGFzIGtub3ds ZWRnZWFibGUgCmFzIHNvbWUgcGVvcGxlIG9uIHRoZSBDYywgc28gcGxlYXNlIGNvcnJlY3QgbWUg aWYgeW91IHRoaW5rIHRoZXJlIGFyZSAKbWlzdGFrZXMgb3Igc2ltcGx5IGltcG9zc2libGUgZ29h bHMuCgpJIHRoaW5rIEkndmUgbWFuYWdlZCB0byBpbnRlZ3JhdGUgYWxsIHRoZSBjb21tZW50cyBm cm9tIERSQUZUIEEuIEkgc3RpbGwKaGF2ZW4ndCBkb25lIGEgcy9IVk1saXRlL1BWSC8sIGJ1dCBJ IHBsYW4gdG8gZG8gc28gb25jZSB0aGUgZG9jdW1lbnQgaXMKZmluaXNoZWQgYW5kIHJlYWR5IHRv IGdvIGluc2lkZSBvZiB0aGUgWGVuIHRyZWUuCgpSb2dlci4KCi0tLQpYZW4gSFZNbGl0ZSBBQkkK PT09PT09PT09PT09PT09CgpCb290IEFCSQotLS0tLS0tLQoKU2luY2UgdGhlIFhlbiBlbnRyeSBw b2ludCBpbnRvIHRoZSBrZXJuZWwgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZQpuYXRpdmUgZW50 cnkgcG9pbnQsIGEgYEVMRk5PVEVgIGlzIHVzZWQgaW4gb3JkZXIgdG8gdGVsbCB0aGUgZG9tYWlu CmJ1aWxkZXIgaG93IHRvIGxvYWQgYW5kIGp1bXAgaW50byB0aGUga2VybmVsIGVudHJ5IHBvaW50 OgoKICAgIEVMRk5PVEUoWGVuLCBYRU5fRUxGTk9URV9QSFlTMzJfRU5UUlksICAgICAgICAgIC5s b25nLCAgeGVuX3N0YXJ0MzIpCgpUaGUgcHJlc2VuY2Ugb2YgdGhlIGBYRU5fRUxGTk9URV9QSFlT MzJfRU5UUllgIG5vdGUgaW5kaWNhdGVzIHRoYXQgdGhlCmtlcm5lbCBzdXBwb3J0cyB0aGUgYm9v dCBBQkkgZGVzY3JpYmVkIGluIHRoaXMgZG9jdW1lbnQuCgpUaGUgZG9tYWluIGJ1aWxkZXIgc2hh bGwgbG9hZCB0aGUga2VybmVsIGludG8gdGhlIGd1ZXN0IG1lbW9yeSBzcGFjZSBhbmQKanVtcCBp bnRvIHRoZSBlbnRyeSBwb2ludCBkZWZpbmVkIGF0IGBYRU5fRUxGTk9URV9QSFlTMzJfRU5UUllg IHdpdGggdGhlCmZvbGxvd2luZyBtYWNoaW5lIHN0YXRlOgoKICogYGVieGA6IGNvbnRhaW5zIHRo ZSBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzcyB3aGVyZSB0aGUgbG9hZGVyIGhhcyBwbGFjZWQKICAg dGhlIGJvb3Qgc3RhcnQgaW5mbyBzdHJ1Y3R1cmUuCgogKiBgY3IwYDogYml0IDAgKFBFKSBtdXN0 IGJlIHNldC4gQWxsIHRoZSBvdGhlciB3cml0ZWFibGUgYml0cyBhcmUgY2xlYXJlZC4KCiAqIGBj cjRgOiBhbGwgYml0cyBhcmUgY2xlYXJlZC4KCiAqIGBjc2A6IG11c3QgYmUgYSAzMi1iaXQgcmVh ZC9leGVjdXRlIGNvZGUgc2VnbWVudCB3aXRoIGEgYmFzZSBvZiDigJgw4oCZCiAgIGFuZCBhIGxp bWl0IG9mIOKAmDB4RkZGRkZGRkbigJkuIFRoZSBzZWxlY3RvciB2YWx1ZSBpcyB1bnNwZWNpZmll ZC4KCiAqIGBkc2AsIGBlc2A6IG11c3QgYmUgYSAzMi1iaXQgcmVhZC93cml0ZSBkYXRhIHNlZ21l bnQgd2l0aCBhIGJhc2Ugb2YKICAg4oCYMOKAmSBhbmQgYSBsaW1pdCBvZiDigJgweEZGRkZGRkZG 4oCZLiBUaGUgc2VsZWN0b3IgdmFsdWVzIGFyZSBhbGwgdW5zcGVjaWZpZWQuCgogKiBgdHJgOiBt dXN0IGJlIGEgMzItYml0IFRTUyAoYWN0aXZlKSB3aXRoIGEgYmFzZSBvZiAnMCcgYW5kIGEgbGlt aXQgb2YgJzB4NjcnLgoKICogYGVmbGFnc2A6IGFsbCB1c2VyIHNldHRhYmxlIGJpdHMgYXJlIGNs ZWFyLgoKQWxsIG90aGVyIHByb2Nlc3NvciByZWdpc3RlcnMgYW5kIGZsYWcgYml0cyBhcmUgdW5z cGVjaWZpZWQuIFRoZSBPUyBpcyBpbgpjaGFyZ2Ugb2Ygc2V0dGluZyB1cCBpdCdzIG93biBzdGFj aywgR0RUIGFuZCBJRFQuCgpUaGUgZm9ybWF0IG9mIHRoZSBib290IHN0YXJ0IGluZm8gc3RydWN0 dXJlIGlzIHRoZSBmb2xsb3dpbmcgKHBvaW50ZWQgdG8KYmUgJWVieCk6CgpOT1RFOiBub3RoaW5n IHdpbGwgYmUgbG9hZGVkIGF0IHBoeXNpY2FsIGFkZHJlc3MgMCwgc28gYSAwIHZhbHVlIGluIGFu eSBvZiB0aGUKYWRkcmVzcyBmaWVsZHMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgbm90IHByZXNlbnQu CgogMCArLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBtYWdpYyAgICAgICAgICB8IENvbnRhaW5zIHRo ZSBtYWdpYyB2YWx1ZSAweDMzNmVjNTc4CiAgIHwgICAgICAgICAgICAgICAgfCAoInhFbjMiIHdp dGggdGhlIDB4ODAgYml0IG9mIHRoZSAiRSIgc2V0KS4KIDQgKy0tLS0tLS0tLS0tLS0tLS0rCiAg IHwgZmxhZ3MgICAgICAgICAgfCBTSUZfeHh4IGZsYWdzLgogOCArLS0tLS0tLS0tLS0tLS0tLSsK ICAgfCBjbWRsaW5lX3BhZGRyICB8IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGNvbW1hbmQgbGlu ZSwKICAgfCAgICAgICAgICAgICAgICB8IGEgemVyby10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4K MTIgKy0tLS0tLS0tLS0tLS0tLS0rCiAgIHwgbnJfbW9kdWxlcyAgICAgfCBOdW1iZXIgb2YgbW9k dWxlcyBwYXNzZWQgdG8gdGhlIGtlcm5lbC4KMTYgKy0tLS0tLS0tLS0tLS0tLS0rCiAgIHwgbW9k bGlzdF9wYWRkciAgfCBQaHlzaWNhbCBhZGRyZXNzIG9mIGFuIGFycmF5IG9mIG1vZHVsZXMKICAg fCAgICAgICAgICAgICAgICB8IChsYXlvdXQgb2YgdGhlIHN0cnVjdHVyZSBiZWxvdykuCjIwICst LS0tLS0tLS0tLS0tLS0tKwoKVGhlIGxheW91dCBvZiBlYWNoIGVudHJ5IGluIHRoZSBtb2R1bGUg c3RydWN0dXJlIGlzIHRoZSBmb2xsb3dpbmc6CgogMCArLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBw YWRkciAgICAgICAgICB8IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIG1vZHVsZS4KIDQgKy0tLS0t LS0tLS0tLS0tLS0rCiAgIHwgc2l6ZSAgICAgICAgICAgfCBTaXplIG9mIHRoZSBtb2R1bGUgaW4g Ynl0ZXMuCiA4ICstLS0tLS0tLS0tLS0tLS0tKwogICB8IGNtZGxpbmVfcGFkZHIgIHwgUGh5c2lj YWwgYWRkcmVzcyBvZiB0aGUgY29tbWFuZCBsaW5lLAogICB8ICAgICAgICAgICAgICAgIHwgYSB6 ZXJvLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLgoxMiArLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBy ZXNlcnZlZCAgICAgICB8CjE2ICstLS0tLS0tLS0tLS0tLS0tKwoKT3RoZXIgcmVsZXZhbnQgaW5m b3JtYXRpb24gbmVlZGVkIGluIG9yZGVyIHRvIGJvb3QgYSBndWVzdCBrZXJuZWwKKGNvbnNvbGUg cGFnZSBhZGRyZXNzLCB4ZW5zdG9yZSBldmVudCBjaGFubmVsLi4uKSBjYW4gYmUgb2J0YWluZWQK dXNpbmcgSFZNUEFSQU1TLCBqdXN0IGxpa2UgaXQncyBkb25lIG9uIEhWTSBndWVzdHMuCgpUaGUg c2V0dXAgb2YgdGhlIGh5cGVyY2FsbCBwYWdlIGlzIGFsc28gcGVyZm9ybWVkIGluIHRoZSBzYW1l IHdheQphcyBIVk0gZ3Vlc3RzLCB1c2luZyB0aGUgaHlwZXJ2aXNvciBjcHVpZCBsZWF2ZXMgYW5k IG1zciByYW5nZXMuCgpIYXJkd2FyZSBkZXNjcmlwdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLQoK SGFyZHdhcmUgZGVzY3JpcHRpb24gY2FuIGNvbWUgZnJvbSB0d28gZGlmZmVyZW50IHNvdXJjZXMs IGp1c3QgbGlrZSBvbiAoUFYpSFZNCmd1ZXN0cy4KCkRlc2NyaXB0aW9uIG9mIFBWIGRldmljZXMg d2lsbCBhbHdheXMgY29tZSBmcm9tIHhlbmJ1cywgYW5kIGluIGZhY3QKeGVuYnVzIGlzIHRoZSBv bmx5IGhhcmR3YXJlIGRlc2NyaXB0aW9uIHRoYXQgaXMgZ3VhcmFudGVlZCB0byBhbHdheXMgYmUK cHJvdmlkZWQgdG8gSFZNbGl0ZSBndWVzdHMuCgpEZXNjcmlwdGlvbiBvZiBwaHlzaWNhbCBoYXJk d2FyZSBkZXZpY2VzIHdpbGwgYWx3YXlzIGNvbWUgZnJvbSBBQ1BJLCBpbiB0aGUKYWJzZW5jZSBv ZiBhbnkgcGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlIG5vIEFDUEkgdGFibGVzIHdpbGwgYmUgcHJv dmlkZWQuIFRoZQpwcmVzZW5jZSBvZiBBQ1BJIHRhYmxlcyBjYW4gYmUgZGV0ZWN0ZWQgYnkgZmlu ZGluZyB0aGUgUlNEUCwganVzdCBsaWtlIG9uCmJhcmUgbWV0YWwuCgpOb24tUFYgZGV2aWNlcyBl eHBvc2VkIHRvIHRoZSBndWVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK VGhlIGluaXRpYWwgaWRlYSB3YXMgdG8gc2ltcGx5IGRvbid0IHByb3ZpZGUgYW55IGVtdWxhdGVk IGRldmljZXMgdG8gYSBIVk1saXRlCmd1ZXN0IGFzIHRoZSBkZWZhdWx0IG9wdGlvbi4gV2UgaGF2 ZSBob3dldmVyIGlkZW50aWZpZWQgY2VydGFpbiBzaXR1YXRpb25zCndoZXJlIGVtdWxhdGVkIGRl dmljZXMgY291bGQgYmUgaW50ZXJlc3RpbmcsIGJvdGggZnJvbSBhIHBlcmZvcm1hbmNlIGFuZApl YXNlIG9mIGltcGxlbWVudGF0aW9uIHBvaW50IG9mIHZpZXcuIFRoZSBmb2xsb3dpbmcgbGlzdCB0 cmllcyB0byBlbmNvbXBhc3MKdGhlIGRpZmZlcmVudCBpZGVudGlmaWVkIHNjZW5hcmlvczoKCiAq IDEuIEhWTWxpdGUgd2l0aCBubyBlbXVsYXRlZCBkZXZpY2VzIGF0IGFsbAogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVGhpcyBpcyB0aGUgY3VycmVudCBp bXBsZW1lbnRhdGlvbiBpbnNpZGUgb2YgWGVuLCBldmVyeXRoaW5nIGlzIGRpc2FibGVkCiAgIGJ5 IGRlZmF1bHQgYW5kIHRoZSBndWVzdCBoYXMgYWNjZXNzIHRvIHRoZSBQViBkZXZpY2VzIG9ubHku IFRoaXMgaXMgb2YKICAgY291cnNlIHRoZSBtb3N0IHNlY3VyZSBkZXNpZ24gYmVjYXVzZSBpdCBo YXMgdGhlIHNtYWxsZXIgc3VyZmFjZSBvZiBhdHRhY2suCgogKiAyLiBIVk1saXRlIHdpdGggKG9y IGNhcGFibGUgdG8pIFBDSS1wYXNzdGhyb3VnaAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBUaGUgY3VycmVudCBtb2RlbCBvZiBQQ0ktcGFzc3Ro cm91Z2h0IGluIFBWIGd1ZXN0cyBpcyBjb21wbGV4IGFuZCByZXF1aXJlcwogICBoZWF2eSBtb2Rp ZmljYXRpb25zIHRvIHRoZSBndWVzdCBPUy4gR29pbmcgZm9yd2FyZCB3ZSB3b3VsZCBsaWtlIHRv IHJlbW92ZQogICB0aGlzIGxpbWl0YXRpb24sIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZhY2UgdGhh dCdzIHRoZSBzYW1lIGFzIGZvdW5kIG9uIGJhcmUKICAgbWV0YWwuIEluIG9yZGVyIHRvIGRvIHRo aXMsIGF0IGxlYXN0IGFuIGVtdWxhdGVkIGxvY2FsIEFQSUMgc2hvdWxkIGJlCiAgIHByb3ZpZGVk IHRvIGd1ZXN0cywgdG9nZXRoZXIgd2l0aCB0aGUgYWNjZXNzIHRvIGEgUENJLVJvb3QgY29tcGxl eC4KICAgQXMgc2FpZCBpbiB0aGUgJ0hhcmR3YXJlIGRlc2NyaXB0aW9uJyBzZWN0aW9uIGFib3Zl LCB0aGlzIHdpbGwgYWxzbyByZXF1aXJlCiAgIEFDUEkuIFNvIHRoaXMgcHJvcG9zZWQgc2NlbmFy aW8gd2lsbCByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgdGhhdCBhcmUKICAgbm90IHBy ZXNlbnQgaW4gdGhlIG1pbmltYWwgKG9yIGRlZmF1bHQpIEhWTWxpdGUgaW1wbGVtZW50YXRpb246 IEFDUEksIGxvY2FsCiAgIEFQSUMsIElPIEFQSUMgKG9wdGlvbmFsKSBhbmQgUENJLVJvb3QgY29t cGxleC4KCiAqIDMuIEhWTWxpdGUgaGFyZHdhcmUgZG9tYWluCiAgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgIFRoZSBhaW0gaXMgdGhhdCBhIEhWTWxpdGUgaGFyZHdhcmUgZG9tYWluIGlz IGdvaW5nIHRvIHdvcmsgZXhhY3RseSBsaWtlIGEKICAgSFZNbGl0ZSBkb21haW4gd2l0aCBwYXNz ZWQtdGhyb3VnaCBkZXZpY2VzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGRvbWFpbiB3aWxsCiAgIG5l ZWQgYWNjZXNzIHRvIHRoZSBzYW1lIHNldCBvZiBlbXVsYXRlZCBkZXZpY2VzLCBhbmQgdGhhdCBz b21lIEFDUEkgdGFibGVzCiAgIG11c3QgYmUgZml4ZWQgaW4gb3JkZXIgdG8gcmVmbGVjdCB0aGUg cmVhbGl0eSBvZiB0aGUgY29udGFpbmVyIHRoZSBoYXJkd2FyZQogICBkb21haW4gaXMgcnVubmlu ZyBvbi4gVGhlIEFDUEkgc2VjdGlvbiBjb250YWlucyBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9u CiAgIGFib3V0IHdoaWNoL2hvdyB0aGVzZSB0YWJsZXMgYXJlIGdvaW5nIHRvIGJlIGZpeGVkLgoK ICAgTm90ZSB0aGF0IGluIHRoaXMgc2NlbmFyaW8gdGhlIGhhcmR3YXJlIGRvbWFpbiB3aWxsICph bHdheXMqIGhhdmUgYSBsb2NhbAogICBBUElDIGFuZCBJTyBBUElDLCBhbmQgdGhhdCB0aGUgdXNh Z2Ugb2YgUEhZU0RFViBvcGVyYXRpb25zIGFuZCBQSVJRIGV2ZW50CiAgIGNoYW5uZWxzIGlzIGdv aW5nIHRvIGJlIHJlbW92ZWQgaW4gZmF2b3VyIG9mIHRoZSBiYXJlIG1ldGFsIG1lY2hhbmlzbXMu CgpUaGUgZGVmYXVsdCBtb2RlbCBmb3IgSFZNbGl0ZSBndWVzdHMgaXMgZ29pbmcgdG8gYmUgdG8g cHJvdmlkZSBhIGxvY2FsIEFQSUMKdG9nZXRoZXIgd2l0aCBhIG1pbmltYWwgc2V0IG9mIEFDUEkg dGFibGVzIHRoYXQgYWNjdXJhdGVseSBtYXRjaCB0aGUgcmVhbGl0eSBvZgp0aGUgY29udGFpbmVy IGlzIGd1ZXN0IGlzIHJ1bm5pbmcgb24uIEFuIGFkbWluaXN0cmF0b3Igc2hvdWxkIGJlIGFibGUg dG8gY2hhbmdlCnRoZSBkZWZhdWx0IHNldHRpbmcgdXNpbmcgdGhlIGZvbGxvd2luZyB0dW5hYmxl cyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSB4bAp0b29sc3RhY2s6CgogKiBsYXBpYzogZGVmYXVsdCB0 byB0cnVlLiBJbmRpY2F0ZXMgd2hldGhlciBhIGxvY2FsIEFQSUMgaXMgcHJvdmlkZWQuCiAqIGlv YXBpYzogZGVmYXVsdCB0byBmYWxzZS4gSW5kaWNhdGVzIHdoZXRoZXIgYW4gSU8gQVBJQyBpcyBw cm92aWRlZAogICAocmVxdWlyZXMgbGFwaWMgc2V0IHRvIHRydWUpLgogKiBhY3BpOiBkZWZhdWx0 IHRvIHRydWUuIEluZGljYXRlcyB3aGV0aGVyIEFDUEkgdGFibGVzIGFyZSBwcm92aWRlZC4KCkFD UEkKLS0tLQoKQUNQSSB0YWJsZXMgd2lsbCBiZSBwcm92aWRlZCB0byB0aGUgaGFyZHdhcmUgZG9t YWluIG9yIHRvIHVucHJpdmlsZWdlZApkb21haW5zLiBJbiB0aGUgY2FzZSBvZiB1bnByaXZpbGVn ZWQgZ3Vlc3RzIEFDUEkgdGFibGVzIGFyZSBnb2luZyB0byBiZQpjcmVhdGVkIGJ5IHRoZSB0b29s c3RhY2sgYW5kIHdpbGwgb25seSBjb250YWluIHRoZSBzZXQgb2YgZGV2aWNlcyBhdmFpbGFibGUK dG8gdGhlIGd1ZXN0LCB3aGljaCB3aWxsIGF0IGxlYXN0IGJlIHRoZSBmb2xsb3dpbmc6IGxvY2Fs IEFQSUMgYW5kCm9wdGlvbmFsbHkgYW4gSU8gQVBJQyBhbmQgcGFzc2VkLXRocm91Z2ggZGV2aWNl KHMpLiBJbiBvcmRlciB0byBwcm92aWRlIHRoaXMKaW5mb3JtYXRpb24gZnJvbSBBQ1BJIHRoZSBm b2xsb3dpbmcgdGFibGVzIGFyZSBuZWVkZWQgYXMgYSBtaW5pbXVtOiBSU0RULApGQURULCBNQURU IGFuZCBEU0RULiBJZiBhbiBhZG1pbmlzdHJhdG9yIGRlY2lkZXMgdG8gbm90IHByb3ZpZGUgYSBs b2NhbCBBUElDLAp0aGUgTUFEVCB0YWJsZSBpcyBub3QgZ29pbmcgdG8gYmUgcHJvdmlkZWQgdG8g dGhlIGd1ZXN0IE9TLgoKVGhlIEFDUElfRkFEVF9OT19DTU9TX1JUQyBmbGFnIGluIHRoZSBGQURU IGJvb3RfZmxhZ3MgZmllbGQgaXMgZ29pbmcgdG8gYmUgdXNlZAp0byBzaWduYWwgZ3Vlc3RzIHRo YXQgdGhlcmUncyBubyBSVEMgZGV2aWNlICh0aGUgWGVuIFBWIHdhbGwgY2xvY2sgc2hvdWxkIGJl CnVzZWQgaW5zdGVhZCkuIEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgZmxhZyBpcyBub3QgZ29pbmcg dG8gYmUgc2V0IGZvciB0aGUKaGFyZHdhcmUgZG9tYWluLCBzaW5jZSBpdCBzaG91bGQgaGF2ZSBh Y2Nlc3MgdG8gdGhlIFJUQyBwcmVzZW50IGluIHRoZSBob3N0CihpZiB0aGVyZSdzIG9uZSkuIFRo ZSBBQ1BJX0ZBRFRfTk9fVkdBIGlzIGFsc28gdmVyeSBsaWtlbHkgdG8gYmUgc2V0IGluIHRoZQpz YW1lIGJvb3RfZmxhZ3MgRkFEVCBmaWVsZCBmb3IgRG9tVXMgaW4gb3JkZXIgdG8gc2lnbmFsIHRo YXQgdGhlcmUncyBubyBWR0EKYWRhcHRlciBwcmVzZW50LgoKRmluYWxseSB0aGUgQUNQSV9GQURU X0hXX1JFRFVDRUQgaXMgZ29pbmcgdG8gYmUgc2V0IGluIHRoZSBGQURUIGZsYWdzIGZpZWxkCmlu IG9yZGVyIHRvIHNpZ25hbCB0aGF0IHRoZXJlIGFyZSBubyBsZWdhY3kgZGV2aWNlczogaTgyNTkg UElDIG9yIGk4MjU0IFBJVC4KVGhlcmUncyBubyBpbnRlbnRpb24gdG8gZW5hYmxlIHRoZXNlIGRl dmljZXMsIHNvIGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlCmhhcmR3YXJlLXJlZHVjZWQgRkFEVCBm bGFnIGlzIGFsd2F5cyBnb2luZyB0byBiZSBzZXQuCgpJbiB0aGUgY2FzZSBvZiB0aGUgaGFyZHdh cmUgZG9tYWluLCBYZW4gaGFzIHRyYWRpdGlvbmFsbHkgcGFzc2VkLXRocm91Z2ggdGhlCm5hdGl2 ZSBBQ1BJIHRhYmxlcyB0byB0aGUgZ3Vlc3QuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgb2YgY291 cnNlIHdlIHN0aWxsCndhbnQgdG8gZG8sIGJ1dCBpbiB0aGUgY2FzZSBvZiBIVk1saXRlIFhlbiB3 aWxsIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQKdGhlIGRhdGEgcGFzc2VkIGluIHRoZSBBQ1BJIHRh YmxlcyB0byB0aGUgaGFyZHdhcmUgZG9tYWluIGNvbnRhaW4gdGhlIGFjY3VyYXRlCmhhcmR3YXJl IGRlc2NyaXB0aW9uLiBUaGlzIG1lYW5zIHRoYXQgYXQgbGVhc3QgY2VydGFpbiB0YWJsZXMgd2ls bCBoYXZlIHRvCmJlIG1vZGlmaWVkL21hbmdsZWQgYmVmb3JlIGJlaW5nIHByZXNlbnRlZCB0byB0 aGUgZ3Vlc3Q6CgogKiBNQURUOiB0aGUgbnVtYmVyIG9mIGxvY2FsIEFQSUMgZW50cmllcyBuZWVk IHRvIGJlIGZpeGVkIHRvIG1hdGNoIHRoZSBudW1iZXIKICAgICAgICAgb2YgdkNQVXMgYXZhaWxh YmxlIHRvIHRoZSBndWVzdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIElPIEFQSUMocykgYWxzbwogICAg ICAgICBuZWVkIHRvIGJlIGZpeGVkIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBlbXVsYXRlZCBvbmVz IHRoYXQgd2UgYXJlIGdvaW5nCiAgICAgICAgIHRvIHByb3ZpZGUuCgogKiBEU0RUOiBjZXJ0YWlu IGRldmljZXMgcmVwb3J0ZWQgaW4gdGhlIERTRFQgbWF5IG5vdCBiZSBhdmFpbGFibGUgdG8gdGhl IGd1ZXN0LAogICAgICAgICBidXQgc2luY2UgdGhlIERTRFQgaXMgYSBydW4tdGltZSBnZW5lcmF0 ZWQgdGFibGUgd2UgY2Fubm90IGZpeCBpdC4gSW4KICAgICAgICAgb3JkZXIgdG8gY29wZSB3aXRo IHRoaXMsIGEgU1RBTyB0YWJsZSB3aWxsIGJlIHByb3ZpZGVkIHRoYXQgc2hvdWxkCiAgICAgICAg IGJlIGFibGUgdG8gc2lnbmFsIHdoaWNoIGRldmljZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8gdGhl IGhhcmR3YXJlCiAgICAgICAgIGRvbWFpbi4gVGhpcyBpcyBpbiBsaW5lIHdpdGggdGhlIFhlbi9B Q1BJIGltcGxlbWVudGF0aW9uIGZvciBBUk0uCgogKiBNUFNULCBQTVRULCBTQlRULCBTUkFUIGFu ZCBTTElUOiB3b24ndCBiZSBpbml0aWFsbHkgcHJlc2VudGVkIHRvIHRoZSBndWVzdCwKICAgdW50 aWwgd2UgZ2V0IG91ciBhY3QgdG9nZXRoZXIgb24gdGhlIHZOVU1BIHN0dWZmLgoKTkI6IHRoZXJl IGFyZSBjb3JuZXIgY2FzZXMgdGhhdCBJJ20gbm90IHN1cmUgaG93IHRvIHNvbHZlIHByb3Blcmx5 LiBDdXJyZW50bHkKdGhlIGhhcmR3YXJlIGRvbWFpbiBoYXMgc29tZSAnaGFja3MnIHJlZ2FyZGlu ZyBBQ1BJIGFuZCBYZW4uIEF0IGxlYXN0IEknbSBhd2FyZQpvZiB0aGUgZm9sbG93aW5nOgoKICog MS4gUmVwb3J0aW5nIENQVSBQTSBpbmZvIGJhY2sgdG8gWGVuOiB0aGlzIGNvbWVzIGZyb20gdGhl IERTRFQgdGFibGUsIGFuZAogICBzaW5jZSB0aGlzIHRhYmxlIGlzIG9ubHkgYXZhaWxhYmxlIHRv IHRoZSBoYXJkd2FyZSBkb21haW4gaXQgaGFzIHRvIHJlcG9ydAogICB0aGUgUE0gaW5mbyBiYWNr IHRvIFhlbiBzbyB0aGF0IFhlbiBjYW4gcGVyZm9ybSBwcm9wZXIgUE0uCiAqIDIuIERvaW5nIHBy b3BlciBzaHV0ZG93biAoUzUpIHJlcXVpcmVzIHRoZSB1c2FnZSBvZiBhIGh5cGVyY2FsbCwgd2hp Y2ggaXMKICAgbWl4ZWQgd2l0aCBuYXRpdmUgQUNQSUNBIGNvZGUgaW4gbW9zdCBPU2VzLiBUaGlz IGlzIGF3a3dhcmQgYW5kIHJlcXVpcmVzCiAgIHRoZSB1c2FnZSBvZiBob29rcyBpbnRvIEFDUElD QSB3aGljaCB3ZSBoYXZlIG5vdCB5ZXQgbWFuYWdlZCB0byB1cHN0cmVhbS4KICogMy4gUmVwb3J0 aW5nIHRoZSBQQ0kgZGV2aWNlcyBpdCBmaW5kcyB0byB0aGUgaHlwZXJ2aXNvcjogdGhpcyBpcyBu b3QgdmVyeQogICBpbnRydXNpdmUgaW4gZ2VuZXJhbCwgc28gSSdtIG5vdCB0aGF0IHB1c2hlZCB0 byByZW1vdmUgaXQuIEl0J3MgZ2VuZXJhbGx5CiAgIGVhc3kgaW4gYW55IE9TIHRvIGFkZCBzb21l IGtpbmQgb2YgaG9vayB0aGF0J3MgZXhlY3V0ZWQgZXZlcnkgdGltZSBhIFBDSQogICBkZXZpY2Ug aXMgZGlzY292ZXJlZC4KICogNC4gUmVwb3J0IFBDSSBtZW1vcnktbWFwcGVkIGNvbmZpZ3VyYXRp b24gYXJlYXMgdG8gWGVuOiBteSBvcGluaW9uIHJlZ2FyZGluZwogICB0aGlzIG9uZSBpcyB0aGUg c2FtZSBhcyAoMyksIGl0J3Mgbm90IHJlYWxseSBpbnRydXNpdmUgc28gSSdtIG5vdCB2ZXJ5CiAg IHB1c2hlZCB0byByZW1vdmUgaXQuCgpJIHdvdWxkIGlkZWFsbHkgbGlrZSB0byBnZXQgcmlkIG9m ICgyKSBpbiB0aGUgbGlzdCBhYm92ZSwgc2luY2UgSSdtIHF1aXRlIHN1cmUKd2UgYXJlIG5ldmVy IGdvaW5nIHRvIGJlIGFibGUgdG8gbWVyZ2UgdGhlIG5lZWRlZCBob29rcyBpbnRvIEFDUElDQS4g QUZBSUNUIFhlbgpzaG91bGQgYmUgYWJsZSB0byBwYXJzZSB0aGUgRkFEVCB0YWJsZSBhbmQgZmlu ZCB0aGUgYWRkcmVzcyBvZiB0aGUgUE0xYSBhbmQKUE0xYiBjb250cm9sIHJlZ2lzdGVycyBhbmQg dHJhcCBvbiBhY2Nlc3MuCgooMSkgaXMgYWxzbyBxdWl0ZSBuYXN0eSwgYnV0IEkgZG9uJ3Qgc2Vl IGFueSBwb3NzaWJsZSB3YXkgdG8gZ2V0IHJpZCBvZiBpdC4KCkFQIHN0YXJ0dXAKLS0tLS0tLS0t LQoKQVAgc3RhcnR1cCBpcyBwZXJmb3JtZWQgdXNpbmcgaHlwZXJjYWxscy4gVGhlIGZvbGxvd2lu ZyBWQ1BVIG9wZXJhdGlvbnMKYXJlIHVzZWQgaW4gb3JkZXIgdG8gYnJpbmcgdXAgc2Vjb25kYXJ5 IHZDUFVzOgoKICogVkNQVU9QX2luaXRpYWxpc2UgaXMgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwg c3RhdGUgb2YgdGhlIHZDUFUuIFRoZQogICBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGh5cGVyY2Fs bCBtdXN0IGJlIG9mIHRoZSB0eXBlIHZjcHVfaHZtX2NvbnRleHQuCiAgIFNlZSBwdWJsaWMvaHZt L2h2bV92Y3B1LmggZm9yIHRoZSBsYXlvdXQgb2YgdGhlIHN0cnVjdHVyZS4gTm90ZSB0aGF0CiAg IHRoaXMgaHlwZXJjYWxsIGFsbG93cyBzdGFydGluZyB0aGUgdkNQVSBpbiBzZXZlcmFsIG1vZGVz ICgxNi8zMi82NGJpdHMpLAogICByZWdhcmRsZXNzIG9mIHRoZSBtb2RlIHRoZSBCU1AgaXMgY3Vy cmVudGx5IHJ1bm5pbmcgb24uCgogKiBWQ1BVT1BfdXAgaXMgdXNlZCB0byBsYXVuY2ggdGhlIHZD UFUgb25jZSB0aGUgaW5pdGlhbCBzdGF0ZSBoYXMgYmVlbgogICBzZXQgdXNpbmcgVkNQVU9QX2lu aXRpYWxpc2UuCgogKiBWQ1BVT1BfZG93biBpcyB1c2VkIHRvIGJyaW5nIGRvd24gYSB2Q1BVLgoK ICogVkNQVU9QX2lzX3VwIGlzIHVzZWQgdG8gc2NhbiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSB2 Q1BVcy4KCkFkZGl0aW9uYWxseSwgaWYgYSBsb2NhbCBBUElDIGlzIGF2YWlsYWJsZSBDUFUgYnJp bmd1cCBjYW4gYWxzbyBiZSBwZXJmb3JtZWQKdXNpbmcgdGhlIGhhcmR3YXJlIG5hdGl2ZSBBUCBz dGFydHVwIHNlcXVlbmNlIChJUElzKS4gSW4gdGhpcyBjYXNlIHRoZQpoeXBlcmNhbGwgaW50ZXJm YWNlIHdpbGwgc3RpbGwgYmUgcHJvdmlkZWQsIGFzIGEgZmFzdGVyIGFuZCBtb3JlIGNvbnZlbmll bnQKd2F5IG9mIHN0YXJ0aW5nIEFQcy4KCk1NSU8gbWFwcGluZwotLS0tLS0tLS0tLS0KCkZvciBE b21VcyB3aXRob3V0IGFueSBkZXZpY2UgcGFzc2VkLXRocm91Z2ggbm8gZGlyZWN0IE1NSU8gbWFw cGluZ3Mgd2lsbCBiZQpwcmVzZW50IGluIHRoZSBwaHlzaWNhbCBtZW1vcnkgbWFwIHByZXNlbnRl ZCB0byB0aGUgZ3Vlc3QuIEZvciBEb21VcyB3aXRoCmRldmljZXMgcGFzc2VkLXRob3VnaCB0aGUg dG9vbHN0YWNrIHdpbGwgY3JlYXRlIGRpcmVjdCBNTUlPIG1hcHBpbmdzIGFzCnBhcnQgb2YgdGhl IGRvbWFpbiBidWlsZCBwcm9jZXNzLCBhbmQgdGh1cyBubyBhY3Rpb24gd2lsbCBiZSByZXF1aXJl ZApmcm9tIHRoZSBEb21VLgoKRm9yIHRoZSBoYXJkd2FyZSBkb21haW4gaW5pdGlhbCBkaXJlY3Qg TU1JTyBtYXBwaW5ncyB3aWxsIGJlIHNldCBmb3IgdGhlCmZvbGxvd2luZyByZWdpb25zOgoKTk9U RTogcmFuZ2VzIGFyZSBkZWZpbmVkIHVzaW5nIG1lbW9yeSBhZGRyZXNzZXMsIG5vdCBwYWdlcy4K CiAqIFsweDAsIDB4RkZGRkZdOiB0aGUgbG93IDFNaUIgd2lsbCBiZSBtYXBwZWQgaW50byB0aGUg cGh5c2ljYWwgZ3Vlc3QKICAgbWVtb3J5IG1hcCBhdCB0aGUgc2FtZSBwb3NpdGlvbi4KCiAqIFsw eEYwMDAwMCwgMHhGRkZGRkZdOiB0aGUgSVNBIG1lbW9yeSBob2xlIHdpbGwgYmUgbWFwcGVkIDE6 MSBpbnRvIHRoZQogICBndWVzdCBwaHlzaWNhbCBtZW1vcnkuCgogKiBBQ1BJIG1lbW9yeSBhcmVh czogcmVnaW9ucyB3aXRoIHR5cGUgRTgyMF9BQ1BJIG9yIEU4MjBfTlZTIHdpbGwgYmUgbWFwcGVk CiAgIDE6MSB0byB0aGUgZ3Vlc3QgcGh5c2ljYWwgbWVtb3J5IG1hcC4gVGhlcmUgYXJlIGdvaW5n IHRvIGJlIGV4Y2VwdGlvbnMgaWYKICAgWGVuIGhhcyB0byBtb2RpZnkgdGhlIHRhYmxlcyBiZWZv cmUgcHJlc2VudGluZyB0aGVtIHRvIHRoZSBndWVzdC4KCiAqIFBDSSBFeHByZXNzIE1NQ0ZHOiBp ZiBYZW4gaXMgYWJsZSB0byBpZGVudGlmeSBhbnkgb2YgdGhlc2UgcmVnaW9ucyBhdCBib290CiAg IHRpbWUgdGhleSB3aWxsIGFsc28gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGd1ZXN0IGF0IHRo ZSBzYW1lIHBvc2l0aW9uCiAgIGluIGl0J3MgcGh5c2ljYWwgbWVtb3J5IG1hcC4gSXQgaXMgcG9z c2libGUgdGhhdCBYZW4gd2lsbCB0cmFwIGFjY2Vzc2VzIHRvCiAgIHRob3NlIHJlZ2lvbnMsIGJ1 dCBhIGd1ZXN0IHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0aGUgbmF0aXZlIGNvbmZpZ3VyYXRpb24K ICAgbWVjaGFuaXNtIGluIG9yZGVyIHRvIGludGVyYWN0IHdpdGggdGhpcyBjb25maWd1cmF0aW9u IHNwYWNlLiBJZiB0aGUKICAgaGFyZHdhcmUgZG9tYWluIHJlcG9ydHMgdGhlIHByZXNlbmNlIG9m IGFueSBvZiB0aG9zZSByZWdpb25zIHVzaW5nIHRoZQogICBQSFlTREVWT1BfcGNpX21tY2ZnX3Jl c2VydmVkIGh5cGVyY2FsbCBYZW4gd2lsbCBhbHNvIGFsbCBndWVzdCBhY2Nlc3MgdG8KICAgdGhl bS4KCiAqIFBDSSBCQVJzOiBpdCdzIG5vdCBwb3NzaWJsZSBmb3IgWGVuIHRvIGtub3cgdGhlIHBv c2l0aW9uIG9mIHRoZSBCQVJzIG9mCiAgIHRoZSBQQ0kgZGV2aWNlcyB3aXRob3V0IGhhcmR3YXJl IGRvbWFpbiBpbnRlcmFjdGlvbi4gSW4gb3JkZXIgdG8gaGF2ZQogICB0aGUgQkFScyBvZiBQQ0kg ZGV2aWNlcyBwcm9wZXJseSBtYXBwZWQgdGhlIGhhcmR3YXJlIGRvbWFpbiBuZWVkcyB0bwogICBj YWxsIHRoZSBQSFlTREVWT1BfcGNpX2RldmljZV9hZGQgaHlwZXJjYWxsLCB0aGF0IHdpbGwgdGFr ZSBjYXJlIG9mIHNldHRpbmcKICAgdXAgdGhlIEJBUnMgaW4gdGhlIGd1ZXN0IHBoeXNpY2FsIG1l bW9yeSBtYXAgdXNpbmcgMToxIE1NSU8gbWFwcGluZ3MuIFRoaXMKICAgcHJvY2VkdXJlIHdpbGwg YmUgdHJhbnNwYXJlbnQgZnJvbSBndWVzdCBwb2ludCBvZiB2aWV3LCBhbmQgdXBvbiByZXR1cm5p bmcKICAgZnJvbSB0aGUgaHlwZXJjYWxsIG1hcHBpbmdzIG11c3QgYmUgYWxyZWFkeSBlc3RhYmxp c2hlZC4KClhlbiBIVk1saXRlIGltcGxlbWVudGF0aW9uIHBsYW4KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQoKVGhpcyBpcyBvZiBjb3Vyc2Ugbm90IHBhcnQgb2YgdGhlIEFCSSwgYnV0 IEkgZ3Vlc3MgaXQgbWFrZXMgc2Vuc2UgdG8gYWRkIGl0CmhlcmUgaW4gb3JkZXIgdG8gYmUgYWJs ZSB0byBtb3JlIGVhc2lseSBzcGxpdCB0aGUgdGFza3MgcmVxdWlyZWQgaW4gb3JkZXIgdG8KbWFr ZSB0aGUgcHJvcG9zZWQgaW1wbGVtZW50YXRpb24gYWJvdmUgYSByZWFsaXR5LiBJJ3ZlIHRyaWVk IHRvIHNwbGl0CnRoZSB0YXNrcyBpbnRvIHNtYWxsZXIgc3ViLXRhc2tzIHdoZW4gcG9zc2libGUu CgpEb21VCi0tLS0KCiAxLiBJbml0aWFsIEhWTWxpdGUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24g YSBIVk0gZ3Vlc3Q6IG5vIGVtdWxhdGVkIGRldmljZXMKICAgIHdpbGwgYmUgcHJvdmlkZWQsIGlu dGVyZmFjZSBleGFjdGx5IHRoZSBzYW1lIGFzIGEgUFZIIGd1ZXN0IGV4Y2VwdCBmb3IgdGhlCiAg ICBib290IEFCSS4KCiAyLiBQcm92aWRlIEFDUEkgdGFibGVzIHRvIEhWTWxpdGUgZ3Vlc3RzOiB0 aGUgaW5pdGlhbCBzZXQgb2YgcHJvdmlkZWQgdGFibGVzCiAgICB3aWxsIGJlOiBSU0RULCBGQURU LCBNQURUIChpZmYgbG9jYWwgQVBJQyBpcyBlbmFibGVkKS4KCiAzLiBFbmFibGUgdGhlIGxvY2Fs IEFQSUMgYnkgZGVmYXVsdCBmb3IgSFZNbGl0ZSBndWVzdHMuCgogNC4gUHJvdmlkZSBvcHRpb25z IHRvIHhsL2xpYnhsIGluIG9yZGVyIHRvIGFsbG93IGFkbWlucyB0byBzZWxlY3QgdGhlCiAgICBw cmVzZW5jZSBvZiBhIGxvY2FsIEFQSUMgYW5kIElPIEFQSUMgdG8gSFZNbGl0ZSBndWVzdHMuCgog NS4gSW1wbGVtZW50IGFuIGVtdWxhdGVkIFBDSSBSb290IENvbXBsZXggaW5zaWRlIG9mIFhlbi4K CiA2LiBQcm92aWRlIGEgRFNEVCB0YWJsZSB0byBIVk1saXRlIGd1ZXN0cyBpbiBvcmRlciB0byBz aWduYWwgdGhlIHByZXNlbmNlCiAgICBvZiBQQ0ktcGFzc3Rocm91Z2ggZGV2aWNlcy4KCklNSE8s IHdlIHNob3VsZCBmb2N1cyBvbiAoMikgYW5kICgzKSBhdCB0aGUgbW9tZW50LCBhbmQgKDQpIGlz IHF1aXRlIHRyaXZpYWwKb25jZSB0aG9zZSB0d28gYXJlIGluIHBsYWNlLiAoNSkgYW5kICg2KSBz aG91bGQgYmUgaW1wbGVtZW50ZWQgb25jZSBIVk1saXRlCmhhcmR3YXJlIGRvbWFpbnMgYXJlIGZ1 bmN0aW9uYWwuCgpXaGVuIGltcGxlbWVudGluZyAoMikgaXQgd291bGQgYmUgZ29vZCB0byBwbGFj ZSB0aGUgQUNQSSByZWxhdGVkIGNvZGUgaW4gYQpwbGFjZSB0aGF0J3MgYWNjZXNzaWJsZSBmcm9t IGxpYnhsLCBodm1sb2FkZXIgYW5kIFhlbiBpdHNlbGYsIGluIG9yZGVyCnRvIHJlZHVjZSBjb2Rl IGR1cGxpY2F0aW9uLiBodm1sb2FkZXIgYWxyZWFkeSBoYXMgbW9zdCBpZiBub3QgYWxsIHRoZSBy ZXF1aXJlZApjb2RlIGluIG9yZGVyIHRvIGJ1aWxkIHRoZSB0YWJsZXMgdGhhdCBhcmUgbmVlZGVk IGZvciBIVk1saXRlIERvbVUuCgpEb20wCi0tLS0KCiAxLiBBZGQgYSBuZXcgRG9tMCBidWlsZGVy IHNwZWNpZmljIGZvciBIVk0tbGlrZSBkb21haW5zLiBQViBkb21haW5zIGhhdmUKICAgIGRpZmZl cmVudCByZXF1aXJlbWVudHMgYW5kIHNoYXJpbmcgdGhlIHNhbWUgRG9tMCBkb21haW4gYnVpbGRl ciBvbmx5IG1ha2VzCiAgICB0aGUgY29kZSBmb3IgYm90aCBjYXNlcyBtdWNoIGhhcmRlciB0byBy ZWFkIGFuZCBkaXNlbnRhbmdsZS4KCiAyLiBJbXBsZW1lbnQgdGhlIGNvZGUgcmVxdWlyZWQgaW4g b3JkZXIgdG8gbWFuZ2xlL21vZGlmeSB0aGUgQUNQSSB0YWJsZXMKICAgIHByb3ZpZGVkIHRvIERv bTAsIHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgcmVhbGl0eSBvZiB0aGUgY29udGFpbmVyIHByb3Zp ZGVkCiAgICB0byBEb20wLgoKIDMuIEFsbG93IEhWTSBEb20wIHRvIHVzZSBQSFlTREVWT1BfcGNp X21tY2ZnX3Jlc2VydmVkIGFuZAogICAgUEhZU0RFVk9QX3BjaV9kZXZpY2VfYWRkIGFuZCBtYWtl IHN1cmUgdGhlc2UgaHlwZXJjYWxscyBhZGQgdGhlIHByb3BlcgogICAgTU1JTyBtYXBwaW5ncy4K CiA0LiBEbyB0aGUgbmVjZXNzYXJ5IHdpcmluZyBzbyB0aGF0IGludGVycnVwdHMgZnJvbSBwaHlz aWNhbCBkZXZpY2VzIGFyZQogICAgcmVjZWl2ZWQgYnkgRG9tMCB1c2luZyB0aGUgZW11bGF0ZWQg aW50ZXJydXB0IGNvbnRyb2xsZXJzIChsb2NhbCBhbmQgSU8KICAgIEFQSUNzKS4KClRoaXMgcGxh biBpcyBub3QgYXMgZGV0YWlsZWQgYXMgdGhlIERvbVUgb25lLCBzaW5jZSB0aGUgRG9tMCB3b3Jr IGlzIG5vdCBhcwphZHZhbmNlZCBhcyB0aGUgRG9tVSB3b3JrLCBhbmQgaXMgYWxzbyB0aWVkIHRv IHRoZSBEb21VIGltcGxlbWVudGF0aW9uLiBJCmhhdmUgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlv biBmb3IgKDEpLCBhbmQgd2lsbCBjb250aW51ZSB3b3JraW5nIG9uIGl0LgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK