From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Subject: HVMlite ABI specification DRAFT C + implementation outline Date: Thu, 11 Feb 2016 12:10:18 +0100 Message-ID: <56BC6C1A.1030906@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta4.messagelabs.com ([85.158.143.247]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aTp8y-00042P-GB for xen-devel@lists.xenproject.org; Thu, 11 Feb 2016 11:10:40 +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 cm9tIERSQUZUIEIuIEkgc3RpbGwKaGF2ZW4ndCBkb25lIGEgcy9IVk1saXRlL1BWSC8sIGJ1dCBJ IHBsYW4gdG8gZG8gc28gb25jZSB0aGUgZG9jdW1lbnQgaXMKZmluaXNoZWQgYW5kIHJlYWR5IHRv IGdvIGluc2lkZSBvZiB0aGUgWGVuIHRyZWUuCgpSb2dlci4KCi0tLQpYZW4gSFZNbGl0ZSBBQkkK PT09PT09PT09PT09PT09CgpCb290IEFCSQotLS0tLS0tLQoKU2luY2UgdGhlIFhlbiBlbnRyeSBw b2ludCBpbnRvIHRoZSBrZXJuZWwgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZQpuYXRpdmUgZW50 cnkgcG9pbnQsIGEgYEVMRk5PVEVgIGlzIHVzZWQgaW4gb3JkZXIgdG8gdGVsbCB0aGUgZG9tYWlu CmJ1aWxkZXIgaG93IHRvIGxvYWQgYW5kIGp1bXAgaW50byB0aGUga2VybmVsIGVudHJ5IHBvaW50 OgoKICAgIEVMRk5PVEUoWGVuLCBYRU5fRUxGTk9URV9QSFlTMzJfRU5UUlksICAgICAgICAgIC5s b25nLCAgeGVuX3N0YXJ0MzIpCgpUaGUgcHJlc2VuY2Ugb2YgdGhlIGBYRU5fRUxGTk9URV9QSFlT MzJfRU5UUllgIG5vdGUgaW5kaWNhdGVzIHRoYXQgdGhlCmtlcm5lbCBzdXBwb3J0cyB0aGUgYm9v dCBBQkkgZGVzY3JpYmVkIGluIHRoaXMgZG9jdW1lbnQuCgpUaGUgZG9tYWluIGJ1aWxkZXIgc2hh bGwgbG9hZCB0aGUga2VybmVsIGludG8gdGhlIGd1ZXN0IG1lbW9yeSBzcGFjZSBhbmQKanVtcCBp bnRvIHRoZSBlbnRyeSBwb2ludCBkZWZpbmVkIGF0IGBYRU5fRUxGTk9URV9QSFlTMzJfRU5UUllg IHdpdGggdGhlCmZvbGxvd2luZyBtYWNoaW5lIHN0YXRlOgoKICogYGVieGA6IGNvbnRhaW5zIHRo ZSBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzcyB3aGVyZSB0aGUgbG9hZGVyIGhhcyBwbGFjZWQKICAg dGhlIGJvb3Qgc3RhcnQgaW5mbyBzdHJ1Y3R1cmUuCgogKiBgY3IwYDogYml0IDAgKFBFKSBtdXN0 IGJlIHNldC4gQWxsIHRoZSBvdGhlciB3cml0ZWFibGUgYml0cyBhcmUgY2xlYXJlZC4KCiAqIGBj cjRgOiBhbGwgYml0cyBhcmUgY2xlYXJlZC4KCiAqIGBjc2A6IG11c3QgYmUgYSAzMi1iaXQgcmVh ZC9leGVjdXRlIGNvZGUgc2VnbWVudCB3aXRoIGEgYmFzZSBvZiDigJgw4oCZCiAgIGFuZCBhIGxp bWl0IG9mIOKAmDB4RkZGRkZGRkbigJkuIFRoZSBzZWxlY3RvciB2YWx1ZSBpcyB1bnNwZWNpZmll ZC4KCiAqIGBkc2AsIGBlc2A6IG11c3QgYmUgYSAzMi1iaXQgcmVhZC93cml0ZSBkYXRhIHNlZ21l bnQgd2l0aCBhIGJhc2Ugb2YKICAg4oCYMOKAmSBhbmQgYSBsaW1pdCBvZiDigJgweEZGRkZGRkZG 4oCZLiBUaGUgc2VsZWN0b3IgdmFsdWVzIGFyZSBhbGwgdW5zcGVjaWZpZWQuCgogKiBgdHJgOiBt dXN0IGJlIGEgMzItYml0IFRTUyAoYWN0aXZlKSB3aXRoIGEgYmFzZSBvZiAnMCcgYW5kIGEgbGlt aXQgb2YgJzB4NjcnLgoKICogYGVmbGFnc2A6IGFsbCBtb2RpZmlhYmxlIGJpdHMgYXJlIGNsZWFy LgoKQWxsIG90aGVyIHByb2Nlc3NvciByZWdpc3RlcnMgYXJlIHVuc3BlY2lmaWVkLiBUaGUgT1Mg aXMgaW4gY2hhcmdlIG9mIHNldHRpbmcKdXAgaXQncyBvd24gc3RhY2ssIEdEVCBhbmQgSURULgoK VGhlIGxheW91dCBvZiB0aGUgYm9vdCBzdGFydCBpbmZvIGRhdGEgaXMgdGhlIGZvbGxvd2luZyAo cG9pbnRlZCB0byBieSAlZWJ4KToKCk5PVEU6IG5vdGhpbmcgd2lsbCBiZSBsb2FkZWQgYXQgcGh5 c2ljYWwgYWRkcmVzcyAwLCBzbyBhIDAgdmFsdWUgaW4gYW55IG9mIHRoZQphZGRyZXNzIGZpZWxk cyBzaG91bGQgYmUgdHJlYXRlZCBhcyBub3QgcHJlc2VudC4KCiAwICstLS0tLS0tLS0tLS0tLS0t KwogICB8IG1hZ2ljICAgICAgICAgIHwgQ29udGFpbnMgdGhlIG1hZ2ljIHZhbHVlIDB4MzM2ZWM1 NzgKICAgfCAgICAgICAgICAgICAgICB8ICgieEVuMyIgd2l0aCB0aGUgMHg4MCBiaXQgb2YgdGhl ICJFIiBzZXQpLgogNCArLS0tLS0tLS0tLS0tLS0tLSsKICAgfCB2ZXJzaW9uICAgICAgICB8IFZl cnNpb24gb2YgdGhpcyBzdHJ1Y3R1cmUuIEN1cnJlbnQgdmVyc2lvbiBpcyAwLgogICB8ICAgICAg ICAgICAgICAgIHwgTmV3IHZlcnNpb25zIGFyZSBndWFyYW50ZWVkIHRvIGJlIGJhY2t3YXJkcy1j b21wYXRpYmxlLgogOCArLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBmbGFncyAgICAgICAgICB8IFNJ Rl94eHggZmxhZ3MuCjEyICstLS0tLS0tLS0tLS0tLS0tKwogICB8IGNtZGxpbmVfcGFkZHIgIHwg UGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgY29tbWFuZCBsaW5lLAogICB8ICAgICAgICAgICAgICAg IHwgYSB6ZXJvLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLgoxNiArLS0tLS0tLS0tLS0tLS0tLSsK ICAgfCBucl9tb2R1bGVzICAgICB8IE51bWJlciBvZiBtb2R1bGVzIHBhc3NlZCB0byB0aGUga2Vy bmVsLgoyMCArLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBtb2RsaXN0X3BhZGRyICB8IFBoeXNpY2Fs IGFkZHJlc3Mgb2YgYW4gYXJyYXkgb2YgbW9kdWxlcwogICB8ICAgICAgICAgICAgICAgIHwgKGxh eW91dCBvZiB0aGUgc3RydWN0dXJlIGJlbG93KS4KMjQgKy0tLS0tLS0tLS0tLS0tLS0rCiAgIHwg cnNkcF9wYWRkciAgICAgfCBQaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBSU0RQIEFDUEkgZGF0YSBz dHJ1Y3R1cmUuCjI4ICstLS0tLS0tLS0tLS0tLS0tKwoKVGhlIGxheW91dCBvZiBlYWNoIGVudHJ5 IGluIHRoZSBtb2R1bGUgc3RydWN0dXJlIGlzIHRoZSBmb2xsb3dpbmc6CgogMCArLS0tLS0tLS0t LS0tLS0tLSsKICAgfCBwYWRkciAgICAgICAgICB8IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIG1v ZHVsZS4KIDggKy0tLS0tLS0tLS0tLS0tLS0rCiAgIHwgc2l6ZSAgICAgICAgICAgfCBTaXplIG9m IHRoZSBtb2R1bGUgaW4gYnl0ZXMuCjE2ICstLS0tLS0tLS0tLS0tLS0tKwogICB8IGNtZGxpbmVf cGFkZHIgIHwgUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgY29tbWFuZCBsaW5lLAogICB8ICAgICAg ICAgICAgICAgIHwgYSB6ZXJvLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLgoyNCArLS0tLS0tLS0t LS0tLS0tLSsKICAgfCByZXNlcnZlZCAgICAgICB8CjMyICstLS0tLS0tLS0tLS0tLS0tKwoKTm90 ZSB0aGF0IHRoZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBtb2R1bGVzIGlzIGEgNjRiaXQgdW5z aWduZWQgaW50ZWdlci4KSG93ZXZlciBYZW4gd2lsbCBhbHdheXMgdHJ5IHRvIHBsYWNlIGFsbCBt b2R1bGVzIGJlbG93IHRoZSA0R2lCIGJvdW5kYXJ5LgoKT3RoZXIgcmVsZXZhbnQgaW5mb3JtYXRp b24gbmVlZGVkIGluIG9yZGVyIHRvIGJvb3QgYSBndWVzdCBrZXJuZWwKKGNvbnNvbGUgcGFnZSBh ZGRyZXNzLCB4ZW5zdG9yZSBldmVudCBjaGFubmVsLi4uKSBjYW4gYmUgb2J0YWluZWQKdXNpbmcg SFZNUEFSQU1TLCBqdXN0IGxpa2UgaXQncyBkb25lIG9uIEhWTSBndWVzdHMuCgpUaGUgc2V0dXAg b2YgdGhlIGh5cGVyY2FsbCBwYWdlIGlzIGFsc28gcGVyZm9ybWVkIGluIHRoZSBzYW1lIHdheQph cyBIVk0gZ3Vlc3RzLCB1c2luZyB0aGUgaHlwZXJ2aXNvciBjcHVpZCBsZWF2ZXMgYW5kIG1zciBy YW5nZXMuCgpIYXJkd2FyZSBkZXNjcmlwdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLQoKSGFyZHdh cmUgZGVzY3JpcHRpb24gY2FuIGNvbWUgZnJvbSB0d28gZGlmZmVyZW50IHNvdXJjZXMsIGp1c3Qg bGlrZSBvbiAoUFYpSFZNCmd1ZXN0cy4KCkRlc2NyaXB0aW9uIG9mIFBWIGRldmljZXMgd2lsbCBh bHdheXMgY29tZSBmcm9tIHhlbmJ1cywgYW5kIGluIGZhY3QKeGVuYnVzIGlzIHRoZSBvbmx5IGhh cmR3YXJlIGRlc2NyaXB0aW9uIHRoYXQgaXMgZ3VhcmFudGVlZCB0byBhbHdheXMgYmUKcHJvdmlk ZWQgdG8gSFZNbGl0ZSBndWVzdHMuCgpEZXNjcmlwdGlvbiBvZiBwaHlzaWNhbCBoYXJkd2FyZSBk ZXZpY2VzIHdpbGwgYWx3YXlzIGNvbWUgZnJvbSBBQ1BJLCBpbiB0aGUKYWJzZW5jZSBvZiBhbnkg cGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlIEFDUEkgdGFibGVzIG1heSBub3QgYmUgcHJvdmlkZWQu IFRoZQpwcmVzZW5jZSBvZiBBQ1BJIHRhYmxlcyBjYW4gYmUgZGV0ZWN0ZWQgYnkgZmluZGluZyB0 aGUgUlNEUCwganVzdCBsaWtlIG9uCmJhcmUgbWV0YWwuCgpOb24tUFYgZGV2aWNlcyBleHBvc2Vk IHRvIHRoZSBndWVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlIGlu aXRpYWwgaWRlYSB3YXMgdG8gc2ltcGx5IGRvbid0IHByb3ZpZGUgYW55IGVtdWxhdGVkIGRldmlj ZXMgdG8gYSBIVk1saXRlCmd1ZXN0IGFzIHRoZSBkZWZhdWx0IG9wdGlvbi4gV2UgaGF2ZSBob3dl dmVyIGlkZW50aWZpZWQgY2VydGFpbiBzaXR1YXRpb25zCndoZXJlIGVtdWxhdGVkIGRldmljZXMg Y291bGQgYmUgaW50ZXJlc3RpbmcsIGJvdGggZnJvbSBhIHBlcmZvcm1hbmNlIGFuZAplYXNlIG9m IGltcGxlbWVudGF0aW9uIHBvaW50IG9mIHZpZXcuIFRoZSBmb2xsb3dpbmcgbGlzdCB0cmllcyB0 byBlbmNvbXBhc3MKdGhlIGRpZmZlcmVudCBpZGVudGlmaWVkIHNjZW5hcmlvczoKCiAqIDEuIEhW TWxpdGUgd2l0aCBubyBlbXVsYXRlZCBkZXZpY2VzIGF0IGFsbAogICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVGhpcyBpcyB0aGUgY3VycmVudCBpbXBsZW1l bnRhdGlvbiBpbnNpZGUgb2YgWGVuLCBldmVyeXRoaW5nIGlzIGRpc2FibGVkCiAgIGJ5IGRlZmF1 bHQgYW5kIHRoZSBndWVzdCBoYXMgYWNjZXNzIHRvIHRoZSBQViBkZXZpY2VzIG9ubHkuIFRoaXMg aXMgb2YKICAgY291cnNlIHRoZSBtb3N0IHNlY3VyZSBkZXNpZ24gYmVjYXVzZSBpdCBoYXMgdGhl IHNtYWxsZXN0IHN1cmZhY2Ugb2YgYXR0YWNrLgoKICogMi4gSFZNbGl0ZSB3aXRoIGEgbG9jYWwg QVBJQwogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFRoaXMgaXMgdGhlIGRlZmF1 bHQgbW9kZSB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZS4gSXQgYWRkcyBhbiBlbXVsYXRlZAog ICBsb2NhbCBBUElDIGluIG9yZGVyIHRvIGVhc2UgdGhlIGltcGxlbWVudGF0aW9uLCBzaW5jZSB0 aGUgbG9jYWwgQVBJQyBpcwogICBtb3N0bHkgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBDUFUgcGFj a2FnZSB0aGlzIGRheXMuIEEgbWluaW1hbCBzZXQgb2YgQUNQSQogICB0YWJsZXMgKFJTRFQsIEZB RFQgYW5kIE1BRFQpIGFyZSBtYW5kYXRvcnkgaW4gb3JkZXIgdG8gcGVyZm9ybSBoYXJkd2FyZQog ICBkZXRlY3Rpb24uCgogKiAyLiBIVk1saXRlIHdpdGggKG9yIGNhcGFibGUgdG8pIFBDSS1wYXNz dGhyb3VnaAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICBUaGUgY3VycmVudCBtb2RlbCBvZiBQQ0ktcGFzc3Rocm91Z2h0IGluIFBWIGd1ZXN0cyBp cyBjb21wbGV4IGFuZCByZXF1aXJlcwogICBoZWF2eSBtb2RpZmljYXRpb25zIHRvIHRoZSBndWVz dCBPUy4gR29pbmcgZm9yd2FyZCB3ZSB3b3VsZCBsaWtlIHRvIHJlbW92ZQogICB0aGlzIGxpbWl0 YXRpb24sIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZhY2UgdGhhdCdzIHRoZSBzYW1lIGFzIGZvdW5k IG9uIGJhcmUKICAgbWV0YWwuIEluIG9yZGVyIHRvIGRvIHRoaXMsIGF0IGxlYXN0IGFuIGVtdWxh dGVkIGxvY2FsIEFQSUMgc2hvdWxkIGJlCiAgIHByb3ZpZGVkIHRvIGd1ZXN0cywgdG9nZXRoZXIg d2l0aCB0aGUgYWNjZXNzIHRvIGEgUENJLVJvb3QgY29tcGxleC4KICAgQXMgc2FpZCBpbiB0aGUg J0hhcmR3YXJlIGRlc2NyaXB0aW9uJyBzZWN0aW9uIGFib3ZlLCB0aGlzIHdpbGwgYWxzbyByZXF1 aXJlCiAgIEFDUEkuIFNvIHRoaXMgcHJvcG9zZWQgc2NlbmFyaW8gd2lsbCByZXF1aXJlIHRoZSBm b2xsb3dpbmcgZWxlbWVudHMgdGhhdCBhcmUKICAgbm90IHByZXNlbnQgaW4gdGhlIG1pbmltYWwg KG9yIGRlZmF1bHQpIEhWTWxpdGUgaW1wbGVtZW50YXRpb246IEFDUEksIGxvY2FsCiAgIEFQSUMs IElPIEFQSUMgKG9wdGlvbmFsKSBhbmQgUENJLVJvb3QgY29tcGxleC4KCiAqIDMuIEhWTWxpdGUg aGFyZHdhcmUgZG9tYWluCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFRoZSBhaW0g aXMgdGhhdCBhIEhWTWxpdGUgaGFyZHdhcmUgZG9tYWluIGlzIGdvaW5nIHRvIHdvcmsgZXhhY3Rs eSBsaWtlIGEKICAgSFZNbGl0ZSBkb21haW4gd2l0aCBwYXNzZWQtdGhyb3VnaCBkZXZpY2VzLiBU aGlzIG1lYW5zIHRoYXQgdGhlIGRvbWFpbiB3aWxsCiAgIG5lZWQgYWNjZXNzIHRvIHRoZSBzYW1l IHNldCBvZiBlbXVsYXRlZCBkZXZpY2VzLCBhbmQgdGhhdCBzb21lIEFDUEkgdGFibGVzCiAgIG11 c3QgYmUgZml4ZWQgaW4gb3JkZXIgdG8gcmVmbGVjdCB0aGUgcmVhbGl0eSBvZiB0aGUgY29udGFp bmVyIHRoZSBoYXJkd2FyZQogICBkb21haW4gaXMgcnVubmluZyBvbi4gVGhlIEFDUEkgc2VjdGlv biBjb250YWlucyBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uCiAgIGFib3V0IHdoaWNoL2hvdyB0 aGVzZSB0YWJsZXMgYXJlIGdvaW5nIHRvIGJlIGZpeGVkLgoKICAgTm90ZSB0aGF0IGluIHRoaXMg c2NlbmFyaW8gdGhlIGhhcmR3YXJlIGRvbWFpbiB3aWxsIGFsd2F5cyBoYXZlIGEgbG9jYWwgQVBJ QwogICBhbmQgcG9zc2libHkgYW4gSU8gQVBJQyAocHJvdmlkZWQgdGhhdCB0aGUgcGh5c2ljYWwg aG9zdCBhbHNvIGhhcyBvbmUpLCBhbmQKICAgdGhhdCB0aGUgdXNhZ2Ugb2YgbWFueSBQSFlTREVW IG9wZXJhdGlvbnMgYW5kIFBJUlEgZXZlbnQgY2hhbm5lbHMgaXMgZ29pbmcKICAgdG8gYmUgcmVt b3ZlZCBpbiBmYXZvdXIgb2YgdGhlIGJhcmUgbWV0YWwgbWVjaGFuaXNtcy4KCkFuIGFkbWluaXN0 cmF0b3Igc2hvdWxkIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0IHNldHRpbmcgdXNpbmcg dGhlCmZvbGxvd2luZyB0dW5hYmxlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSB4bCB0b29sc3RhY2s6 CgogKiBsYXBpYzogZGVmYXVsdCB0byB0cnVlLiBJbmRpY2F0ZXMgd2hldGhlciBhIGxvY2FsIEFQ SUMgaXMgcHJvdmlkZWQuCiAqIGlvYXBpYzogZGVmYXVsdCB0byBmYWxzZS4gSW5kaWNhdGVzIHdo ZXRoZXIgYW4gSU8gQVBJQyBpcyBwcm92aWRlZAogICAocmVxdWlyZXMgbGFwaWMgYW5kIGFjcGkg c2V0IHRvIHRydWUpLgogKiBhY3BpOiBkZWZhdWx0IHRvIHRydWUuIEluZGljYXRlcyB3aGV0aGVy IEFDUEkgdGFibGVzIGFyZSBwcm92aWRlZC4KCkl0IGlzIGltcG9ydGFudCB0byBub3RpY2UgdGhh dCBIVk1saXRlIGd1ZXN0cyBhcmUgKm5ldmVyKiBnb2luZyB0byBoYXZlCmFjY2VzcyB0byB0aGUg Zm9sbG93aW5nIGRldmljZXM6IDgyNTkgUElDIG9yIDgyNTQgUElULiBUaGVyZSdzIG5vIHdheSB0 bwpzaWduYWwgdGhlIGFic2VuY2Ugb2YgdGhlc2UgZGV2aWNlcyB1c2luZyBBQ1BJLCBzbyBpdCBt dXN0IGJlIGFzc3VtZWQgdGhhdAp0aGV5IGFyZSBuZXZlciBwcmVzZW50LCBhbmQgYXJlIG5ldmVy IGdvaW5nIHRvIGJlLCBzaW5jZSBpdCdzIGNvbnNpZGVyZWQKbGVnYWN5IGhhcmR3YXJlLgoKQUNQ SQotLS0tCgpBQ1BJIHRhYmxlcyB3aWxsIGJlIHByb3ZpZGVkIHRvIHRoZSBoYXJkd2FyZSBkb21h aW4gb3IgdG8gdW5wcml2aWxlZ2VkCmRvbWFpbnMuIEluIHRoZSBjYXNlIG9mIHVucHJpdmlsZWdl ZCBndWVzdHMgQUNQSSB0YWJsZXMgYXJlIGdvaW5nIHRvIGJlCmNyZWF0ZWQgYnkgdGhlIHRvb2xz dGFjayBhbmQgd2lsbCBvbmx5IGNvbnRhaW4gdGhlIHNldCBvZiBkZXZpY2VzIGF2YWlsYWJsZQp0 byB0aGUgZ3Vlc3QsIHdoaWNoIHdpbGwgYXQgbGVhc3QgYmUgdGhlIGZvbGxvd2luZzogbG9jYWwg QVBJQyBhbmQKb3B0aW9uYWxseSBhbiBJTyBBUElDIGFuZCBwYXNzZWQtdGhyb3VnaCBkZXZpY2Uo cykuIEluIG9yZGVyIHRvIHByb3ZpZGUgdGhpcwppbmZvcm1hdGlvbiBmcm9tIEFDUEkgdGhlIGZv bGxvd2luZyB0YWJsZXMgYXJlIG5lZWRlZCBhcyBhIG1pbmltdW06IFJTRFQsCkZBRFQsIE1BRFQg YW5kIERTRFQuIElmIGFuIGFkbWluaXN0cmF0b3IgZGVjaWRlcyB0byBub3QgcHJvdmlkZSBhIGxv Y2FsIEFQSUMsCnRoZSBNQURUIHRhYmxlIGlzIG5vdCBnb2luZyB0byBiZSBwcm92aWRlZCB0byB0 aGUgZ3Vlc3QgT1MuCgpUaGUgQUNQSV9GQURUX05PX0NNT1NfUlRDIGZsYWcgaW4gdGhlIEZBRFQg Ym9vdF9mbGFncyBmaWVsZCBpcyBnb2luZyB0byBiZSB1c2VkCnRvIHNpZ25hbCBndWVzdHMgdGhh dCB0aGVyZSdzIG5vIFJUQyBkZXZpY2UgKHRoZSBYZW4gUFYgd2FsbCBjbG9jayBzaG91bGQgYmUK dXNlZCBpbnN0ZWFkKS4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBmbGFnIGlzIG5vdCBnb2luZyB0 byBiZSBzZXQgZm9yIHRoZQpoYXJkd2FyZSBkb21haW4sIHNpbmNlIGl0IHNob3VsZCBoYXZlIGFj Y2VzcyB0byB0aGUgUlRDIHByZXNlbnQgaW4gdGhlIGhvc3QKKGlmIHRoZXJlJ3Mgb25lKS4gVGhl IEFDUElfRkFEVF9OT19WR0EgaXMgYWxzbyB2ZXJ5IGxpa2VseSB0byBiZSBzZXQgaW4gdGhlCnNh bWUgYm9vdF9mbGFncyBGQURUIGZpZWxkIGZvciBEb21VcyBpbiBvcmRlciB0byBzaWduYWwgdGhh dCB0aGVyZSdzIG5vIFZHQQphZGFwdGVyIHByZXNlbnQuCgpJbiB0aGUgY2FzZSBvZiB0aGUgaGFy ZHdhcmUgZG9tYWluLCBYZW4gaGFzIHRyYWRpdGlvbmFsbHkgcGFzc2VkLXRocm91Z2ggdGhlCm5h dGl2ZSBBQ1BJIHRhYmxlcyB0byB0aGUgZ3Vlc3QuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgb2Yg Y291cnNlIHdlIHN0aWxsCndhbnQgdG8gZG8sIGJ1dCBpbiB0aGUgY2FzZSBvZiBIVk1saXRlIFhl biB3aWxsIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQKdGhlIGRhdGEgcGFzc2VkIGluIHRoZSBBQ1BJ IHRhYmxlcyB0byB0aGUgaGFyZHdhcmUgZG9tYWluIGNvbnRhaW4gdGhlIGFjY3VyYXRlCmhhcmR3 YXJlIGRlc2NyaXB0aW9uLiBUaGlzIG1lYW5zIHRoYXQgYXQgbGVhc3QgY2VydGFpbiB0YWJsZXMg d2lsbCBoYXZlIHRvCmJlIG1vZGlmaWVkL21hbmdsZWQgYmVmb3JlIGJlaW5nIHByZXNlbnRlZCB0 byB0aGUgZ3Vlc3Q6CgogKiBNQURUOiB0aGUgbnVtYmVyIG9mIGxvY2FsIEFQSUMgZW50cmllcyBu ZWVkIHRvIGJlIGZpeGVkIHRvIG1hdGNoIHRoZSBudW1iZXIKICAgICAgICAgb2YgdkNQVXMgYXZh aWxhYmxlIHRvIHRoZSBndWVzdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIElPIEFQSUMocykgYWxzbwog ICAgICAgICBuZWVkIHRvIGJlIGZpeGVkIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBlbXVsYXRlZCBv bmVzIHRoYXQgd2UgYXJlIGdvaW5nCiAgICAgICAgIHRvIHByb3ZpZGUuCgogKiBEU0RUOiBjZXJ0 YWluIGRldmljZXMgcmVwb3J0ZWQgaW4gdGhlIERTRFQgbWF5IG5vdCBiZSBhdmFpbGFibGUgdG8g dGhlIGd1ZXN0LAogICAgICAgICBidXQgc2luY2UgdGhlIERTRFQgaXMgYSBydW4tdGltZSBnZW5l cmF0ZWQgdGFibGUgd2UgY2Fubm90IGZpeCBpdC4gSW4KICAgICAgICAgb3JkZXIgdG8gY29wZSB3 aXRoIHRoaXMsIGEgU1RBTyB0YWJsZSB3aWxsIGJlIHByb3ZpZGVkIHRoYXQgc2hvdWxkCiAgICAg ICAgIGJlIGFibGUgdG8gc2lnbmFsIHdoaWNoIGRldmljZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8g dGhlIGhhcmR3YXJlCiAgICAgICAgIGRvbWFpbi4gVGhpcyBpcyBpbiBsaW5lIHdpdGggdGhlIFhl bi9BQ1BJIGltcGxlbWVudGF0aW9uIGZvciBBUk0uCgogKiBNUFNULCBQTVRULCBTQlRULCBTUkFU IGFuZCBTTElUOiB3b24ndCBiZSBpbml0aWFsbHkgcHJlc2VudGVkIHRvIHRoZSBndWVzdCwKICAg dW50aWwgd2UgZ2V0IG91ciBhY3QgdG9nZXRoZXIgb24gdGhlIHZOVU1BIHN0dWZmLgoKTkI6IHRo ZXJlIGFyZSBjb3JuZXIgY2FzZXMgdGhhdCBJJ20gbm90IHN1cmUgaG93IHRvIHNvbHZlIHByb3Bl cmx5LiBDdXJyZW50bHkKdGhlIGhhcmR3YXJlIGRvbWFpbiBoYXMgc29tZSAnaGFja3MnIHJlZ2Fy ZGluZyBBQ1BJIGFuZCBYZW4uIEF0IGxlYXN0IEknbSBhd2FyZQpvZiB0aGUgZm9sbG93aW5nOgoK ICogMS4gUmVwb3J0aW5nIENQVSBQTSBpbmZvIGJhY2sgdG8gWGVuOiB0aGlzIGNvbWVzIGZyb20g dGhlIERTRFQvU1NEVCB0YWJsZSwKICAgYW5kIHNpbmNlIHRoaXMgdGFibGUgaXMgb25seSBhdmFp bGFibGUgdG8gdGhlIGhhcmR3YXJlIGRvbWFpbiBpdCBoYXMgdG8KICAgcmVwb3J0IHRoZSBQTSBp bmZvIGJhY2sgdG8gWGVuIHNvIHRoYXQgWGVuIGNhbiBwZXJmb3JtIHByb3BlciBQTS4KICogMi4g RG9pbmcgcHJvcGVyIHNodXRkb3duIChTNSkgcmVxdWlyZXMgdGhlIHVzYWdlIG9mIGEgaHlwZXJj YWxsLCB3aGljaCBpcwogICBtaXhlZCB3aXRoIG5hdGl2ZSBBQ1BJQ0EgY29kZSBpbiBtb3N0IE9T ZXMuIFRoaXMgaXMgYXdrd2FyZCBhbmQgcmVxdWlyZXMKICAgdGhlIHVzYWdlIG9mIGhvb2tzIGlu dG8gQUNQSUNBIHdoaWNoIHdlIGhhdmUgbm90IHlldCBtYW5hZ2VkIHRvIHVwc3RyZWFtLgoKQVAg c3RhcnR1cAotLS0tLS0tLS0tCgpBUCBzdGFydHVwIGlzIHBlcmZvcm1lZCB1c2luZyBoeXBlcmNh bGxzLiBUaGUgZm9sbG93aW5nIFZDUFUgb3BlcmF0aW9ucwphcmUgdXNlZCBpbiBvcmRlciB0byBi cmluZyB1cCBzZWNvbmRhcnkgdkNQVXM6CgogKiBWQ1BVT1BfaW5pdGlhbGlzZSBpcyB1c2VkIHRv IHNldCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgdkNQVS4gVGhlCiAgIGFyZ3VtZW50IHBhc3Nl ZCB0byB0aGUgaHlwZXJjYWxsIG11c3QgYmUgb2YgdGhlIHR5cGUgdmNwdV9odm1fY29udGV4dC4K ICAgU2VlIHB1YmxpYy9odm0vaHZtX3ZjcHUuaCBmb3IgdGhlIGxheW91dCBvZiB0aGUgc3RydWN0 dXJlLiBOb3RlIHRoYXQKICAgdGhpcyBoeXBlcmNhbGwgYWxsb3dzIHN0YXJ0aW5nIHRoZSB2Q1BV IGluIHNldmVyYWwgbW9kZXMgKDE2LzMyLzY0Yml0cyksCiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIG1v ZGUgdGhlIEJTUCBpcyBjdXJyZW50bHkgcnVubmluZyBvbi4KCiAqIFZDUFVPUF91cCBpcyB1c2Vk IHRvIGxhdW5jaCB0aGUgdkNQVSBvbmNlIHRoZSBpbml0aWFsIHN0YXRlIGhhcyBiZWVuCiAgIHNl dCB1c2luZyBWQ1BVT1BfaW5pdGlhbGlzZS4KCiAqIFZDUFVPUF9kb3duIGlzIHVzZWQgdG8gYnJp bmcgZG93biBhIHZDUFUuCgogKiBWQ1BVT1BfaXNfdXAgaXMgdXNlZCB0byBzY2FuIHRoZSBudW1i ZXIgb2YgYXZhaWxhYmxlIHZDUFVzLgoKQWRkaXRpb25hbGx5LCBpZiBhIGxvY2FsIEFQSUMgaXMg YXZhaWxhYmxlIENQVSBicmluZ3VwIGNhbiBhbHNvIGJlIHBlcmZvcm1lZAp1c2luZyB0aGUgaGFy ZHdhcmUgbmF0aXZlIEFQIHN0YXJ0dXAgc2VxdWVuY2UgKElQSXMpLiBJbiB0aGlzIGNhc2UgdGhl Cmh5cGVyY2FsbCBpbnRlcmZhY2Ugd2lsbCBzdGlsbCBiZSBwcm92aWRlZCwgYXMgYSBmYXN0ZXIg YW5kIG1vcmUgY29udmVuaWVudAp3YXkgb2Ygc3RhcnRpbmcgQVBzLgoKTU1JTyBtYXBwaW5nCi0t LS0tLS0tLS0tLQoKRm9yIERvbVVzIHdpdGhvdXQgYW55IGRldmljZSBwYXNzZWQtdGhyb3VnaCBu byBkaXJlY3QgTU1JTyBtYXBwaW5ncyB3aWxsIGJlCnByZXNlbnQgaW4gdGhlIHBoeXNpY2FsIG1l bW9yeSBtYXAgcHJlc2VudGVkIHRvIHRoZSBndWVzdC4gRm9yIERvbVVzIHdpdGgKZGV2aWNlcyBw YXNzZWQtdGhvdWdoIHRoZSB0b29sc3RhY2sgd2lsbCBjcmVhdGUgZGlyZWN0IE1NSU8gbWFwcGlu Z3MgYXMKcGFydCBvZiB0aGUgZG9tYWluIGJ1aWxkIHByb2Nlc3MsIGFuZCB0aHVzIG5vIGFjdGlv biB3aWxsIGJlIHJlcXVpcmVkCmZyb20gdGhlIERvbVUuCgpGb3IgdGhlIGhhcmR3YXJlIGRvbWFp biBpbml0aWFsIGRpcmVjdCBNTUlPIG1hcHBpbmdzIHdpbGwgYmUgc2V0IGZvciB0aGUKZm9sbG93 aW5nIHJlZ2lvbnMgd2hlcmUgYXBwbGljYWJsZToKCk5PVEU6IHJhbmdlcyBhcmUgZGVmaW5lZCB1 c2luZyBtZW1vcnkgYWRkcmVzc2VzLCBub3QgcGFnZXMuCgogKiBbMHgwLCAweEZGRkZGXTogdGhl IGxvdyAxTWlCIHdpbGwgYmUgbWFwcGVkIGludG8gdGhlIHBoeXNpY2FsIGd1ZXN0CiAgIG1lbW9y eSBtYXAgYXQgdGhlIHNhbWUgcG9zaXRpb24uIE5vbi1sZWdhY3kgYm9vdHMgYXJlIHVubGlrZWx5 IHRvIGhhdmUKICAgdGhlIGxvdyAxTWlCIG1hcHBlZCAxOjEsIHNpbmNlIHRoZXJlJ3Mgbm90aGlu ZyByZWxldmFudCB0aGVyZS4KCiAqIEFDUEkgbWVtb3J5IGFyZWFzOiByZWdpb25zIHdpdGggdHlw ZSBFODIwX0FDUEkgb3IgRTgyMF9OVlMgd2lsbCBiZSBtYXBwZWQKICAgMToxIHRvIHRoZSBndWVz dCBwaHlzaWNhbCBtZW1vcnkgbWFwLiBUaGVyZSBhcmUgZ29pbmcgdG8gYmUgZXhjZXB0aW9ucyBp ZgogICBYZW4gaGFzIHRvIG1vZGlmeSB0aGUgdGFibGVzIGJlZm9yZSBwcmVzZW50aW5nIHRoZW0g dG8gdGhlIGd1ZXN0LgoKICogQW55IFJNUlIgcmVnaW9ucyBmb3VuZCBieSBYZW4gd2lsbCBhbHNv IGJlIG1hcHBlZCAxOjEgaW50byB0aGUgaGFyZHdhcmUKICAgZG9tYWluIHBoeXNpY2FsIG1lbW9y eSBtYXAuIFN1Y2ggbWFwcGluZ3Mgd2lsbCBiZSByZW1vdmVkIGlmIHRoZSBkZXZpY2UgaXMKICAg cGFzc2VkLXRocm91Z2ggdG8gYW5vdGhlciBndWVzdC4KCiAqIFBDSSBFeHByZXNzIE1NQ0ZHOiBu byBNTUNGRyBhcmVhcyB3aWxsIGJlIG1hcHBlZCBieSBkZWZhdWx0IGludG8gdGhlIGd1ZXN0CiAg IG1lbW9yeSBtYXAuIEluIG9yZGVyIHRvIGhhdmUgdGhlc2UgYXJlYXMgbWFwcGVkIHRoZSBoYXJk d2FyZSBkb21haW4KICAgbXVzdCB1c2UgdGhlIFBIWVNERVZPUF9wY2lfbW1jZmdfcmVzZXJ2ZWQg aHlwZXJjYWxsLiBPbiBzdWNjZXNzZnVsIHJldHVybgogICBmcm9tIHRoaXMgaHlwZXJjYWxsIHRo ZSByZXF1ZXN0ZWQgTU1DRkcgYXJlYXMgd2lsbCBiZSBtYXBwZWQgMToxIGludG8gdGhlCiAgIGd1 ZXN0IG1lbW9yeSBzcGFjZS4KCiAqIFBDSSBCQVJzOiBubyBCQVJzIHdpbGwgYmUgbWFwcGVkIGJ5 IGRlZmF1bHQgdG8gdGhlIGhhcmR3YXJlIGRvbWFpbi4gSW4KICAgb3JkZXIgdG8gaGF2ZSBCQVJz IG1hcHBlZCB0aGUgaGFyZHdhcmUgZG9tYWluIG11c3QgaXNzdWUgdGhlCiAgIFBIWVNERVZPUF9w Y2lfZGV2aWNlX2FkZCBoeXBlcmNhbGwgYWdhaW5zdCBlYWNoIFBDSSBkZXZpY2UgaXQgZm91bmRz LiBPbgogICByZXR1cm4gZnJvbSB0aGlzIGh5cGVyY2FsbCBpdCBpcyBndWFyYW50ZWVkIHRvIGhh dmUgdGhlIEJBUnMgcmVwb3J0ZWQKICAgaW4gdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIG1h cHBlZCAxOjEgaW50byB0aGUgZ3Vlc3QgcGh5c2ljYWwgbWVtb3J5CiAgIG1hcC4gRnVydGhlciBj aGFuZ2VzIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgQkFScyB3aWxsIGJlIGludGVyY2VwdGVkIGJ5 CiAgIFhlbiBhbmQgdGhlIHJlbWFwcGluZyBpcyBnb2luZyB0byBiZSB0cmFuc3BhcmVudCBmcm9t IGEgZ3Vlc3QgcG9pbnQgb2YKICAgdmlldyAoaWU6IHRoZXJlIHdpbGwgYmUgbm8gbmVlZCB0byBy ZS1pc3N1ZSB0aGUgaHlwZXJjYWxsIGFnYWluKS4KClhlbiBIVk1saXRlIGltcGxlbWVudGF0aW9u IHBsYW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyBpcyBvZiBjb3Vyc2Ug bm90IHBhcnQgb2YgdGhlIEFCSSwgYnV0IEkgZ3Vlc3MgaXQgbWFrZXMgc2Vuc2UgdG8gYWRkIGl0 CmhlcmUgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBtb3JlIGVhc2lseSBzcGxpdCB0aGUgdGFza3Mg cmVxdWlyZWQgaW4gb3JkZXIgdG8KbWFrZSB0aGUgcHJvcG9zZWQgaW1wbGVtZW50YXRpb24gYWJv dmUgYSByZWFsaXR5LiBJJ3ZlIHRyaWVkIHRvIHNwbGl0CnRoZSB0YXNrcyBpbnRvIHNtYWxsZXIg c3ViLXRhc2tzIHdoZW4gcG9zc2libGUuCgpEb21VCi0tLS0KCiAxLiBJbml0aWFsIEhWTWxpdGUg aW1wbGVtZW50YXRpb24gYmFzZWQgb24gYSBIVk0gZ3Vlc3Q6IG5vIGVtdWxhdGVkIGRldmljZXMK ICAgIHdpbGwgYmUgcHJvdmlkZWQsIGludGVyZmFjZSBleGFjdGx5IHRoZSBzYW1lIGFzIGEgUFZI IGd1ZXN0IGV4Y2VwdCBmb3IgdGhlCiAgICBib290IEFCSS4KCiAyLiBQcm92aWRlIEFDUEkgdGFi bGVzIHRvIEhWTWxpdGUgZ3Vlc3RzOiB0aGUgaW5pdGlhbCBzZXQgb2YgcHJvdmlkZWQgdGFibGVz CiAgICB3aWxsIGJlOiBSU0RULCBGQURULCBNQURUIChpZmYgbG9jYWwgQVBJQyBpcyBlbmFibGVk KS4KCiAzLiBFbmFibGUgdGhlIGxvY2FsIEFQSUMgYnkgZGVmYXVsdCBmb3IgSFZNbGl0ZSBndWVz dHMuCgogNC4gUHJvdmlkZSBvcHRpb25zIHRvIHhsL2xpYnhsIGluIG9yZGVyIHRvIGFsbG93IGFk bWlucyB0byBzZWxlY3QgdGhlCiAgICBwcmVzZW5jZSBvZiBhIGxvY2FsIEFQSUMgYW5kIElPIEFQ SUMgdG8gSFZNbGl0ZSBndWVzdHMuCgogNS4gSW1wbGVtZW50IGFuIGVtdWxhdGVkIFBDSSBSb290 IENvbXBsZXggaW5zaWRlIG9mIFhlbi4KCiA2LiBQcm92aWRlIGEgRFNEVCB0YWJsZSB0byBIVk1s aXRlIGd1ZXN0cyBpbiBvcmRlciB0byBzaWduYWwgdGhlIHByZXNlbmNlCiAgICBvZiBQQ0ktcGFz c3Rocm91Z2ggZGV2aWNlcy4KCklNSE8sIHdlIHNob3VsZCBmb2N1cyBvbiAoMikgYW5kICgzKSBh dCB0aGUgbW9tZW50LCBhbmQgKDQpIGlzIHF1aXRlIHRyaXZpYWwKb25jZSB0aG9zZSB0d28gYXJl IGluIHBsYWNlLiAoNSkgYW5kICg2KSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb25jZSBIVk1saXRl CmhhcmR3YXJlIGRvbWFpbnMgYXJlIGZ1bmN0aW9uYWwuCgpXaGVuIGltcGxlbWVudGluZyAoMikg aXQgd291bGQgYmUgZ29vZCB0byBwbGFjZSB0aGUgQUNQSSByZWxhdGVkIGNvZGUgaW4gYQpwbGFj ZSB0aGF0J3MgYWNjZXNzaWJsZSBmcm9tIGxpYnhsLCBodm1sb2FkZXIgYW5kIFhlbiBpdHNlbGYs IGluIG9yZGVyCnRvIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uLiBodm1sb2FkZXIgYWxyZWFkeSBo YXMgbW9zdCBpZiBub3QgYWxsIHRoZSByZXF1aXJlZApjb2RlIGluIG9yZGVyIHRvIGJ1aWxkIHRo ZSB0YWJsZXMgdGhhdCBhcmUgbmVlZGVkIGZvciBIVk1saXRlIERvbVUuCgpEb20wCi0tLS0KCiAx LiBBZGQgYSBuZXcgRG9tMCBidWlsZGVyIHNwZWNpZmljIGZvciBIVk0tbGlrZSBkb21haW5zLiBQ ViBkb21haW5zIGhhdmUKICAgIGRpZmZlcmVudCByZXF1aXJlbWVudHMgYW5kIHNoYXJpbmcgdGhl IHNhbWUgRG9tMCBkb21haW4gYnVpbGRlciBvbmx5IG1ha2VzCiAgICB0aGUgY29kZSBmb3IgYm90 aCBjYXNlcyBtdWNoIGhhcmRlciB0byByZWFkIGFuZCBkaXNlbnRhbmdsZS4KCiAyLiBJbXBsZW1l bnQgdGhlIGNvZGUgcmVxdWlyZWQgaW4gb3JkZXIgdG8gbWFuZ2xlL21vZGlmeSB0aGUgQUNQSSB0 YWJsZXMKICAgIHByb3ZpZGVkIHRvIERvbTAsIHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgcmVhbGl0 eSBvZiB0aGUgY29udGFpbmVyIHByb3ZpZGVkCiAgICB0byBEb20wLgoKIDMuIEFsbG93IEhWTSBE b20wIHRvIHVzZSBQSFlTREVWT1BfcGNpX21tY2ZnX3Jlc2VydmVkIGFuZAogICAgUEhZU0RFVk9Q X3BjaV9kZXZpY2VfYWRkIGFuZCBtYWtlIHN1cmUgdGhlc2UgaHlwZXJjYWxscyBhZGQgdGhlIHBy b3BlcgogICAgTU1JTyBtYXBwaW5ncy4KCiA0LiBEbyB0aGUgbmVjZXNzYXJ5IHdpcmluZyBzbyB0 aGF0IGludGVycnVwdHMgZnJvbSBwaHlzaWNhbCBkZXZpY2VzIGFyZQogICAgcmVjZWl2ZWQgYnkg RG9tMCB1c2luZyB0aGUgZW11bGF0ZWQgaW50ZXJydXB0IGNvbnRyb2xsZXJzIChsb2NhbCBhbmQg SU8KICAgIEFQSUNzKS4KClRoaXMgcGxhbiBpcyBub3QgYXMgZGV0YWlsZWQgYXMgdGhlIERvbVUg b25lLCBzaW5jZSB0aGUgRG9tMCB3b3JrIGlzIG5vdCBhcwphZHZhbmNlZCBhcyB0aGUgRG9tVSB3 b3JrLCBhbmQgaXMgYWxzbyB0aWVkIHRvIHRoZSBEb21VIGltcGxlbWVudGF0aW9uLgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK