From mboxrd@z Thu Jan 1 00:00:00 1970 From: Henrik Austad Subject: [RFC] AVB - network-based soundcards in ALSA Date: Mon, 26 May 2014 15:03:52 +0200 Message-ID: <20140526130352.GA17414@austad.us> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lb0-f170.google.com (mail-lb0-f170.google.com [209.85.217.170]) by alsa0.perex.cz (Postfix) with ESMTP id 3B6DF26519B for ; Mon, 26 May 2014 15:08:19 +0200 (CEST) Received: by mail-lb0-f170.google.com with SMTP id w7so4264201lbi.1 for ; Mon, 26 May 2014 06:08:18 -0700 (PDT) Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: alsa-devel@alsa-project.org Cc: Takashi Iwai , hansverk@cisco.com, haustad@cisco.com List-Id: alsa-devel@alsa-project.org SGkgYWxsIQoKVGhpcyBpcyBhbiBSRkMgZm9yIGEgbmV3IGNsYXNzIG9mIHNvdW5kY2FyZHMuIEkg YW0gbm90IHZlcnkgZmFtaWxpYXIKd2l0aCBob3cgQUxTQSBpcyB0aWVkIHRvZ2V0aGVyIHVuZGVy bmVhdGggdGhlIGhvb2QsIHNvIHdoYXQgeW91IHNlZQpoZXJlLCBpcyBiYXNlZCBvbiBteSBuYWl2 ZSB1bmRlcnN0YW5kaW5nIG9mIEFMU0EuIEkgd2VhciBhc2Jlc3Rvcwp1bmRlcndlYXIgb24gYSBy ZWd1bGFyIGJhc2lzLCBzbyBJIHByZWZlciBob25lc3R5IG92ZXIgc3VnYXJjb2F0aW5nIDopCgpJ IHVzZSAiSSIgYW5kICJ3ZSIgaW50ZXJjaGFuZ2VhYmx5LiBCeSAnd2UnIEkgbWVhbiBhIHNtYWxs IFImRCBncm91cCBhdApDaXNjbyBOb3J3YXksIGJ5ICJJIiwgSSBtZWFuLi4gd2VsbCwgbWUuIFNv LCB3ZSBwbGFuIGZvciBBVkIsIEkgZG8gdGhlCmtlcm5lbCBzaWRlIHdvcmsuIFdlIHBsYW4gdG8g dXBzdHJlYW0gdGhpcywgZ2l2ZW4gdGhhdCB0aGUgY29tbXVuaXR5CmFjY2VwdHMgaXQuCgpBbHNv LCBJJ3ZlIHVzZWQgbXkgcHJpdmF0ZSBhZGRyZXNzIGFzIHRoYXQgaXMgc2V0IHVwIHRvIHRyYWNr IAprZXJuZWwtcmVsYXRlZCBsaXN0cywgYnV0IGFkZGVkIG15IENpc2NvLWFkZHJlc3Mgc28gcGxl YXNlIGtlZXAgdGhhdCBvbiB0aGUgCkNDIGlmIHlvdSByZXBseS4KCldlIGhhdmUgcmVjZW50bHkg YmVndW4gd29ya2luZyBvbiBBdWRpbyBWaWRlbyBCcmlkZ2luZyAoQVZCLCBbMV0pIGFuZCBpcwps b29raW5nIGludG8gaG93IHRoaXMgY2FuIGJlIGFkZGVkIHRvIHRoZSBMaW51eCBLZXJuZWwgdmlh IEFMU0EgYW5kCnZpZGVvNGxpbnV4LgoKQnV0IGZpcnN0OyBmb3IgdGhvc2Ugb2YgeW91IHdobyBh cmUgbm90IGZhbWlsaWFyIHdpdGggQVZCOgoKSW4gc2hvcnQsIEFWQiBpcyBqdXN0IGEgc2V0IG9m IG9wZW4gc3RhbmRhcmRzIGdvdmVybmluZyBuZXR3b3JrIGFuZAp0aW1pbmcgY29uZmlndXJhdGlv biBzbyB0aGF0IHlvdSBjYW4gc3RyZWFtIGF1ZGlvIGFuZCB2aWRlbyByZWxpYWJseSBhbmQKd2l0 aCBsb3cgbGF0ZW5jeS4gTm90ZSB0aGF0IHRoaXMgaXMgbm90IHRoZSBraW5kIG9mIHN0cmVhbWlu ZyBzZXJ2aWNlcwpjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoIHN0cmVhbWluZyAoYSBmZXcgY29t cGFuaWVzIGRpc3RyaWJ1dGluZyBtb3ZpZXMKYW5kIFRWLXNob3dzIGNvbWVzIHRvIG1pbmQ7IG9u ZSByaHltaW5nIHdpdGggbGlnaHRzdGlja3MpLiBJdCBpcyB0aGUKa2luZCBvZiBzdHJlYW1pbmcg eW91IHVzZSB3aGVuIGNvbm5lY3RpbmcgYSBwYWlyIG9mIHNwZWFrZXJzIHRvIHlvdXIKY29tcHV0 ZXIgLSB2aWEgZXRoZXJuZXQuIE9yIGEgd2ViY2FtIHZpYSB0aGUgd2lyZWxlc3MgbmV0d29yay4g KEknbQphd2FyZSBvZiB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIGhlcmUsIGJ1dCBiZWFyIHdp dGggbWUpLgoKRm9yIHRoZSBlYWdlciByZWFkZXIsIEFWQiBpcyBiZWluZyBwcm9tb3RlZCBieSBB Vm51IEFsbGlhbmNlIFsyXSwgdGhleQpoYXZlIGEgbG90IG9mIGluZm9ybWF0aW9uIGF2YWlsYWJs ZS4gSSBhbHNvIGFkZGVkIGEgbGluayB0byBhIHZlcnkgc2hvcnQKaW50cm8gdG8gQVZCIHRoYXQg SGFucyBoZWxkIGEgZmV3IHdlZWtzIGJhY2sgKGZvY3VzIG9uIHRoZSBuZXR3b3JrCnRob3VnaCkg aW4gWzNdLiBUaGVuIHRoZSBJRUVFIDgwMi4xIHdvcmtpbmcgZ3JvdXAgWzRdIGhhcyBhIGZldyBz dGFuZGFyZHMsCmJ1dCB0aGVzZSBhcmUgcHJvYmFibHkgbm90IHRoYXQgcmVsZXZhbnQgbm8gdGhp cyBsaXN0LCBhdCBsZWFzdCBub3QKcmlnaHQgbm93LgoKRm9yIEFWQiB0byB3b3JrLCB5b3UgbmVl ZCBzdXBwb3J0IGluIHRoZSBuZXR3b3JraW5nIGluZnJhc3RydWN0dXJlLiBUaGlzCmlzIG5vdCBw cmV2YWxlbnQgYnV0IGl0IGlzIGNvbWluZy4gVGhlcmUgYXJlIGEgZmV3IG1hbnVmYWN0dXJlcnMg dGhhdApwcm92aWRlIEFWQiByZWFkeSBlcXVpcG1lbnQgYW5kIHNvbWUgbmV0d29ya2luZyBnZWFy LgoKV2hhdCB5b3UgbmVlZCBvZiBzdGFuZGFyZHMgZm9yIEFWQjoKCiogZ1BUUCBzdXBwb3J0IChJ RUVFIDgwMi4xQVMpLCB0aGlzIGlzIGFuIElFRUUgMTU4OCAoUFRQKSBwcm9maWxlIGZvcgogIEFW Qi4gVGhpcyBpcyBuZWVkZWQgZm9yIGFjY3VyYXRlIHRpbWVzdGFtcGluZyBvZiBzYW1wbGVzLCBh bmQgYWxsCiAgbm9kZXMgaW4gYW4gQVZCIGRvbWFpbiBtdXN0IGFncmVlIHRvIHRoZSBfc2FtZV8g dGltZSAobm90IHRoYXQgdGhlCiAgX2NvcnJlY3RfIHRpbWUgaXMgbm90IHRoYXQgaW1wb3J0YW50 IGluIHRoaXMgc2V0dGluZykuIC4xQVMgc2hvdWxkCiAgZ2l2ZSB5b3UgYSA8MXVzIGVycm9yIGJl dHdlZW4gdGhlIGNsb2NrcyBmb3IgdGhlIHN5c3RlbXMgaW52b2x2ZWQuCgoqIFN0cmVhbSBSZXNl cnZhdGlvbiAoSUVFRSA4MDIuMVFhdCwgb3IgODAyLjFROjIwMTEgU2VjLiAjMzUpIHRvIG1ha2UK ICBzdXJlIHdlIGhhdmUgZ3VhcmFudGVlZCBiYW5kd2lkdGguIFRoaXMgd2lsbCBhdm9pZCBkcm9w cGVkIGV0aGVyZnJhbWVzCiAgZHVlIHRvIGNvbmdlc3RlZCBuZXR3b3JrLiBJdCBhbHNvIGNhcHMg dGhlIGFtb3VudCB5b3UgY2FuIHJlc2VydmUgdG8KICA3NSUgb2YgdG90YWwgQlcsIG1ha2luZyBz dXJlIEFWQiBjYW4gY29leGlzdCB3aXRoIG5vcm1hbCB0cmFmZmljLgoKKiBUcmFmZmljIFNoYXBp bmcgYW5kIGFkbWluc3Npb24gY29udHJvbCAoSUVFRSA4MDIuMVFhdiwgb3IgODAyLjFROjIwMTEK ICBTZWMuICMzNCkgdG8gaW1wcm92ZSB1dGlsaXphdGlvbiBidXQgYWxzbyBhdm9pZC9taW5pbWl6 ZSBqaXR0ZXIgZHVlIHRvCiAgcXVldWVzIGluc2lkZSBzd2l0Y2hlcy9yb3V0ZXJzL2JyaWRnZXMu CgoqIElFRUUgODAyLjFCQSwgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciBBVkIgZGV2aWNlcyBh bmQgd2hhdCB0aGUKICBuZXR3b3JrIGxvb2tzIGxpa2UuCgoqIElFRUUgMTcyMiAoYW5kIDE3MzMg Zm9yIGxheWVyLTMpIExheWVyIDIgVHJhbnNwb3J0IGZvcgogIGF1ZGlvL3ZpZGVvLiBUaGUgcGFj a2luZyBpcyBzaW1pbGFyIHRvIHdoYXQgaXMgZG9uZSBpbiBGaXJld2lyZS4gWW91CiAgaGF2ZSA4 a0h6IGZyYW1lIGludGVydmFscyBmb3IgY2xhc3MgQSwgNGtIeiBmb3IgY2xhc3MgQi4gVGhpcyBn aXZlcwogIHJlbGF0aXZlbHkgZmV3IHNhbXBsZXMgcHIuIGZyYW1lLiBDdXJyZW50bHkgd2Ugb25s eSBsb29rIGF0IExheWVyIDIgYXMKICBzbWFsbCBwZXJpcGhlcmFscyAobWljcm9waG9uZXMsIHNw ZWFrZXJzKSB3aWxsIG9ubHkgaGF2ZSB0byBpbXBsZW1lbnQKICBMMiBpbnN0ZWFkIG9mIHRoZSBl bnRpcmUgSVAtc3RhY2suCgoqIElFRUUgMTcyMi4xIERldmljZSBkaXNjb3ZlcnkgcHJvdG9jb2wg KEFWREVDQykgZGVmaW5lcyBob3cgVGFsa2VycyBhbmQKICBMaXN0ZW5lcnMgZmluZCBlYWNoIG90 aGVyIGFuZCBjb25uZWN0LiBBbnkgdGFsa2VyIHdpbGwgcmVndWxhcmx5CiAgYW5ub3VuY2UgaXRz IHByZXNlbmNlLCBhbmQgMTcyMi4xIGRlZmluZXMgaG93IHRvIGFubm91bmNlIC0gYW5kIGhvdyB0 bwogIHJlc3BvbmQuCgpPZiBhbGwgdGhlc2Ugc3RhbmRhcmRzLCB0aGUgODAyLjFCQSBhbmQgMTcy MiBhcmUgcHJvYmFibHkgdGhlIG1vc3QKaW50ZXJlc3Rpbmcgb25lcy4gQVZudSBhbHNvIGhhcyBh ICdiZXN0IHByYWN0aWNlJyBbNV0gZG9jdW1lbnQgdGhhdApnaXZlcyBhIG91dGxpbmUgdGhhdCBz ZXJ2ZXMgYXMgYSBuaWNlIHN0YXJ0aW5nIHBvaW50LgoKVGVybWlub2xvZ3kgKGJyaWVmKQotIEJy aWRnZTogTm9kZSBpbiB0aGUgbmV0d29yayB3aXRoIG1vcmUgdGhhbiAxIHBvcnQgKHRoaW5rIHN3 aXRjaGVzKQotIEVuZC1zdGF0aW9uOiBOb2RlIGluIHRoZSBuZXR3b3JrIHdpdGggMSBwb3J0Lgot IFRhbGtlcnM6IEVuZC1zdGF0aW9uIHRoYXQgcHJvZHVjZSBtZWRpYSAobWljLCBjYW1lcmEpCi0g TGlzdGVuZXJzOiBFbmQtc3RhdGlvbiB0aGF0IHJlY2VpdmVzIGZyb20gVGFsa2VycwotIFN0cmVh bXMgJiBDaGFubmVsczogQSB0YWxrZXIgY3JlYXRlcyBhIHN0cmVhbSB0aHJvdWdoIHRoZSBuZXR3 b3JrIHRvIGEKICBMaXN0ZW5lci4gRWFjaCBzdHJlYW0gaXMgY29tcG9zZWQgb2YgMS4uTiBjaGFu bmVscyB3aGVyZSBlYWNoIHNhbXBsZQogIGlzIGludGVybGVhdmVkLgotIEFuIGVuZC1zdGF0aW9u IGNhbiBhY3QgYXMgYm90aCBUYWxrZXIgYW5kIExpc3RlbmVyLgotIGdQVFAgZG9tYWluOiBzZXQg b2YgUFRQLWNhcGFibGUgbm9kZXMgY29ubmVjdGVkIChnUFRQIHdpbGwgbm90IGFsbG93CiAgbm9u LXRpbWVhd2FyZSBub2RlcyBpbiB0aGUgZG9tYWluKS4KLSBTUlAgZG9tYWluOiBub2RlcyBpbiBh IG5ldHdvcmsgdGhhdCBzdXBwb3J0cyBzdHJlYW0gcmVzZXJ2YXRpb24uCi0gQVZCIERvbWFpbjog aW50ZXJzZWN0aW9uIG9mIFNSUCBkb21haW4gYW5kIGdQVFAgZG9tYWluLgoKVG8gcHV0IGl0IHRv IGVhc2llciB0ZXJtcywgQVZCIGdpdmVzIHlvdSBhIHdheSB0byBhZGQgJ3N0dWZmJyB0byB5b3Vy CmNvbXB1dGVyIGFuZCBwbGF5IG11c2ljIHRvIHRoZW0gdmlhIHRoZSBuZXR3b3JrLgoKTW92aW5n IG91dCBpbnRvIEFMU0EtbGFuZCBhbmQgaW50cm9kdWNpbmcgIlRoZSBwbGFuIjoKCiogQSBjZW50 cmFsIGRyaXZlciwgYW4gImF2Yl9jb3JlIiBpZiB5b3UgbGlrZS4gT25jZSBsb2FkZWQgaXQgd2ls bAogIGNyZWF0ZSBhIGNvbmZpZ2ZzIGRpcmVjdG9yeSBhbmQgc3RhcnQgbG9va2luZyBhdCBldGhl cmZyYW1lcyB0byBzZWUgaWYKICBhbnl0aGluZyBvZiBpbnRlcmVzdCBjb21lcyBhbG9uZy4gVGhp cyB3aWxsIGJlIHByZXNlbnQgZnJvbSB0aGUgc3RhcnQKICBhbmQgaXMgcmVxdWlyZWQgZm9yIGFs bCB0aGUgcmVzdCB0byB3b3JrLgoKKiBBbiAiYXZiX21lZGlhX2RyaXZlciIgdG8gc3BsaXQgZGF0 YSBnb2luZyB0byBBTFNBIGFuZCB2NGwgYXMgd2VsbCBhcwogIGNvbWJpbmluZyBzdHJlYW1zIGNv bWluZyBiYWNrLiBUaGUgZWFzaWVzdCB3YXkgaXMgcHJvYmFibHkgdG8gY29tYmluZQogIHNuZF9h dmIgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHY0bCBkcml2ZXIgaW50byBhIHNpbmdsZSBkcml2ZXIs IGJ1dAogIGV4cG9zZSBpdCBhcyAic25kX2F2YiIgdG8gQUxTQSAoYW5kIGRpdHRvIGZvciB2NGwy KS4KCiogQSB1c2Vyc3BhY2UgdG9vbCBmb3IgdGFwcGluZyBpbnRvIHRoZSBBVkRFQ0MgZGF0YSAo Zm9yIGF1dG9kaXNjb3Zlcnkgb2YKICBub2RlcykuIExldCdzIGNhbGwgdGhpcyBhdmRlY2NsaWIg Zm9yIG5vdyAodGhlcmUgYXJlIGEgZmV3IHVzZXJzcGFjZQogIGxpYnJhcmllcyBhdmFpbGFibGUg b24gZ2l0aHViKS4KCiogQ29uZmlnRlMgWzZdIGlzIHRoZW4gdXNlZCBieSB1c2Vyc3BhY2UgdG8g c3Bhd24gYW4gbmV3CiAgYXZiX21lZGlhX2RyaXZlciBmb3IgZWFjaCBzdHJlYW0gd2Ugd2FudCB0 byBjb25uZWN0IHRvLgoKICBUcmVlLXN0cnVjdHVyZSB3aWxsIGxvb2sgc29tZXRoaW5nIGxpa2Ug dGhpcwogIG1rZGlyIC9jb25maWcvYXZiL25vZGUwOwogIGNvbmZpZy8KICDilJTilIDilIAgYXZi CiAgICAgIOKUlOKUgOKUgCBub2RlMAogICAgICAgICAg4pSc4pSA4pSAIGNoYW5uZWxzX2luCiAg ICAgICAgICDilJzilIDilIAgY2hhbm5lbHNfb3V0CiAgICAgICAgICDilJzilIDilIAgZW5hYmxl CiAgICAgICAgICDilJTilIDilIAgbWFjCgogICh0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgd2ls bCBoYXZlIHRvIGJlIGFkanVzdGVkIGFzIEkgZmlndXJlIG91dAogIHdoYXQgbWFrZXMgc2Vuc2Ug dG8gaGF2ZSBpbiB0aGUgY29uZmlnZnMgaXRlbS4KCiAgV3JpdGluZyAxIHRvIGVuYWJsZSB3aWxs IHRoZW4gdHJpZ2dlciB0aGUgbmVnb3RpYXRpbmcgcGhhc2UgYW5kIHdhaXQKICBmb3IgdGhlIGRy aXZlciB0byBjb21lIG9ubGluZS4gQSBuZXcgQUxTQSBzb3VuZGNhcmQgd2lsbCB0aGVuIHBvcCBp bnRvCiAgZXhpc3RlbmNlLCB3aGljaCBjYW4gdGhlbiBiZSB1c2VkIGFzIGFueSByZWd1bGFyIHNv dW5kY2FyZCBhdHRhY2hlZCB0bwogIHRoZSBjb21wdXRlci4KClNvLCBhbiBhdHRlbXB0IHRvIGJy aW5nIHRoaXMgdG8gbGlmZSB1c2luZyBzdGF0ZSBvZiB0aGUgYXJ0IEFTQ0lJIHNraWxscwoKICAg ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgIG1lZGlhIGFwcGxpY2F0aW9uICAgICAgICAgICAgICAgICAgIHwKICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKICAg ICAgICAgICAgICAgICAgICArLS0tLS0tLSstLS0tLSsgICAgKy0tLS0tLSstLS0tLS0rICAgICAr LS0tLS0tLSstLS0tLSsKICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgfCAg ICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICB8ICBh bHNhbGliICAgIHwgICAgfCAgIHY0bDJsaWIgICB8ICAgICB8ICBhdmRlY2NsaWIgIHwKICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgfCAgICAgICAgICAgICB8ICAgICB8ICAg ICAgICAgICAgIHwKdXNlcnNwYWNlICAgICAgICAgICArLS0tLS0tLSstLS0gLSsgICAgKy0tLS0t LSstLS0tLS0rICAgICArLS0tLS0tLSstLS0tLSsKLi4uLi4uLi4uLi4uLi4uLiAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKa2VybmVsc3BhY2UgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKICAg ICAgICAgICAgICAgICAgICArLS0tLS0tLSstLS0tLSsgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgIHwKICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICB8ICBhbHNhIGNvcmUgIHwg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAg ICAgICAgICArLS0tLS0tLSstLS0tLSsgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0rICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLSstLS0tLSsKICAgICAgICAgICAgICAg ICAgICB8ICAgIHNuZF9hdmIgICAgICAgICAgdjRsMl9hdmIgICB8ICAgICB8ICAgICAgICAgICAg IHwKICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICB8ICBDb25maWdGUyAgIHwKICAgICAgICAgICAgICAgICAgICB8ICAgICAgIGF2Yl9tZWRp YV9kcml2ZXIgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLSstLS0tLSsK ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0rICAg ICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAgICAgICArLS0tLS0tLSstLS0tLSsKKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAg Ky0tLS0tLSstLS0tLS0rICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAgIHwKfCAgICAgICAg ICAgICAgICstLS0tLS0tLS0tKyAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS18ICBhdmJf Y29uZmlnIHwKfCAgICB0aW1lICAgICAgIHwgICAgICAgICAgfCAgIGF2Yl9jb3JlICB8ICAgICB8 ICAgICAgICAgICB8ICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICstLS0tLSsgICAgfCAg ICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICArLS0tLS0tLS0tLS0tLSsKKy0tLS0tLS0rLS0t LS0tLSsgICAgIHwgICAgKy0tLS0tLSstLS0tLS0rICAgICB8CiAgICAgICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICB8ICAgICAgICAgICAgfAogICAgICAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgfCAgICAgICAgICAgIHwKKy0tLS0tLS0rLS0tLS0tLSsgICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgICB8CnwgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICB8ICAgICAgICAg ICAgfAp8ICBtZWRpYV9jbG9jayAgfCAgICAgfCAgICArLS0tLS0tKy0tLS0tLSsgICAgIHwKfCAg ICAgICAgICAgICAgIHwgICAgIHwgICAgfCAgICAgICAgICAgICB8ICAgICB8CistLS0tLS0tLS0t LS0tLS0rICAgICArLS0tLSsgICAgIG5ldCAgICAgKy0tLS0tKwogICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0t LS0tLS0tLS0rCgoKCgpTbywgd2h5IGluIHRoZSBrZXJuZWwgYW5kIG5vdCBjb21wbGV0ZWx5IGlu IHVzZXJzcGFjZT8KClByaW1hcmlseSBiZWNhdXNlIHdlIHdvdWxkIGxpa2UgdG8gbWFrZSBpdCBh cyBlYXN5IGFzIHBvc3NpYmxlIHRvIGNyZWF0ZQphIFRhbGtlciBvciBhIExpc3RlbmVyIGluIGFu IEFWQiBkb21haW4uIFN1cmUsIHlvdSB3b3VsZCBuZWVkIHNvbWUga2luZApvZiB0b29sIHRvIG1h bmFnZSB0aGUgQ29uZmlnRlMgaW50ZXJmYWNlIGFuZCBzZXQgdXAgdGhlIGRldGFpbGVkCmNvbmZp Z3VyYXRpb24sIGJ1dCBvbmNlIHRoYXQgaXMgZG9uZSwgX2FueV8gcHJvZ3JhbSBvbiBhIHN0YW5k YXJkCkdOVS9MaW51eCBib3ggY2FuIHVzZSBBVkIgYXMgaWYgaXQgd2FzIGEgcmVndWxhciBzb3Vu ZGNhcmQuIFRoYXQgaXMgYQpyZWFsIGJlbmVmaXQsIGFuZCB3aGF0IG1ha2VzIGl0IHJlYWxseSBl eGNpdGluZy4KCkl0IGlzIGFsc28gYSBiaXQgZGlmZmljdWx0IHRvIGFzc29jaWF0ZSBhIHBoeXNp Y2FsIGxvY2F0aW9uIHRvIGEKTUFDLWFkZHJlc3MuIEEgdXNlcnNwYWNlIHRvb2wgY2FuIGJlIGNv bmZpZ3VyZWQgdG8gcmVtZW1iZXIgdGhpcywgYnV0CnRoaXMgaXMgbm90IGluZm9ybWF0aW9uIHRo YXQgYmVsb25ncyBpbiB0aGUga2VybmVsLiBUaGlzIG5lZWRzIHRvIGJlCnBlcnNpc3RlbnQgYW55 d2F5LCBzbyBzZXR0aW5nIDAwOjAwOkE0Li4gdG8gYmUgIkwmUiBTcGVha2VyIGluIEhlbnJpaydz CkRlbiIgZG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSB0byBjb21waWxlIGludG8gdGhlIGtlcm5l bC4KClRoZW4gdGhlcmUgaXMgdGhlIG5vdGlvbiBvZiBzZWN1cml0eS4gSWYgdGhlIGtlcm5lbCB0 cmlnZ2VycyBvbiBldmVyeQpuZXdseSBkaXNjb3ZlcmVkIGRldmljZSwgaXQgaXMgcHJldHR5IHNp bXBsZSB0byB3cml0ZSBhIG1ldGFzcGxvaXQKcGx1Z2luIHRoYXQgd2lsbCBicmluZyBhbnkgQVZC IGVuYWJsZWQgTGludXggYm94IHRvIGl0cyBrbmVlcyBieSBqdXN0CmZsb29kaW5nIHRoZSBuZXR3 b3JrIHdpdGggQW5ub3VuY2UtbWVzc2FnZXMuIEFsc28sIEkgZG9uJ3QgbmVjZXNzYXJpbHkKd2Fu dCB0aGUgc3RyZWFtIGZyb20gbXkgY29tcHV0ZXIgdG8gbXkgc3BlYWtlcnMgdG8gYmUgYWNjZXNz ZWQgYnkKc29tZW9uZSAodG0pIG9uIG15IG5ldHdvcmsuCgpJJ2QgZ3JlYXRseSBhcHByZWNpYXRl IGZlZWRiYWNrIGFuZCBjb21tZW50cywgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZHMgdG8KdGhlIHJv dWdoIG91dGxpbmUgYW5kIHRoZSB1c2FnZSBvZiBDb25maWdGUyBhbmQgaW9jdGxzLgoKU3RheSB0 dW5lZCEgT25jZSB3ZSBoYXZlIHNvbWV0aGluZyB0aGF0IGRvZXNuJ3QgY3Jhc2ggYW5kIGJ1cm4g aW4gdGhlCm1vc3QgaG9ycmlibGUgc2Vuc2UsIEknbGwgc3VibWl0IGEgZmV3IHBhdGNoZXMgZm9y IHBlb3BsZSB0byBsb29rIGF0LiBJZgp0aGUgaW50ZXJlc3QgaXMgaGlnaCwgSSdsbCBwcm9iYWJs eSBjcmVhdGUgYSBwdWJsaWMgcmVwbyB0aGF0IEknbGwKdXBkYXRlIG1vcmUgZnJlcXVlbnRseSwg YnV0IHdpdGggbW9yZSBvZiB0aGUgYmxlZWRpbmctcGFydCBvZiB0aGUgZWRnZS4KClRoYW5rcyEK CgoxKSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1ZGlvX1ZpZGVvX0JyaWRnaW5nCjIp IGh0dHA6Ly93d3cuYXZudS5vcmcvCjMpIGh0dHA6Ly93d3cuc2xpZGVzaGFyZS5uZXQvaGVucmlr YXUvYXZiLXY0bDJzdW1taXQKNCkgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JRUVFXzgw Mi4xCjUpIGh0dHA6Ly93d3cuYXZudS5vcmcva25vd2xlZGdlX2NlbnRlcgo2KSBodHRwOi8vZXZl bnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcvc2l0ZXMvZXZlbnRzL2ZpbGVzL3NsaWRlcy9VU0IlMjBH YWRnZXQlMjBDb25maWdmcyUyMEFQSV8wLnBkZgogCgotLSAKSGVucmlrIEF1c3RhZApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBbHNhLWRldmVsIG1haWxp bmcgbGlzdApBbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmcKaHR0cDovL21haWxtYW4uYWxzYS1w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Fsc2EtZGV2ZWwK