From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754809AbcDDJBu (ORCPT ); Mon, 4 Apr 2016 05:01:50 -0400 Received: from foss.arm.com ([217.140.101.70]:43820 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751310AbcDDJBs (ORCPT ); Mon, 4 Apr 2016 05:01:48 -0400 Date: Mon, 4 Apr 2016 10:01:46 +0100 From: Liviu Dudau To: Rob Herring Cc: Dave Airlie , Daniel Stone , David Brown , Brian Starkey , DRI devel , devicetree@vger.kernel.org, LKML , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala Subject: Re: [RFC][PATCH 1/2] dt/bindings: display: Add DT bindings for Mali Display Processors. Message-ID: <20160404090146.GE27137@e106497-lin.cambridge.arm.com> References: <1459527712-9488-1-git-send-email-Liviu.Dudau@arm.com> <1459527712-9488-2-git-send-email-Liviu.Dudau@arm.com> <20160404051602.GJ17806@rob-hp-laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160404051602.GJ17806@rob-hp-laptop> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Apr 04, 2016 at 12:16:02AM -0500, Rob Herring wrote: > On Fri, Apr 01, 2016 at 05:21:51PM +0100, Liviu Dudau wrote: > > Add DT bindings documentation for the Mali Display Processor. The bindings > > describe the Mali DP500, DP550 and DP650 processors from ARM Ltd. > > > > Cc: Rob Herring > > Cc: Pawel Moll > > Cc: Mark Rutland > > Cc: Ian Campbell > > Cc: Kumar Gala > > > > Signed-off-by: Liviu Dudau > > --- > > .../devicetree/bindings/display/arm,malidp.txt | 65 ++++++++++++++++++++++ > > 1 file changed, 65 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/display/arm,malidp.txt > > > > diff --git a/Documentation/devicetree/bindings/display/arm,malidp.txt b/Documentation/devicetree/bindings/display/arm,malidp.txt > > new file mode 100644 > > index 0000000..ed70de3 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/display/arm,malidp.txt > > @@ -0,0 +1,65 @@ > > +ARM Mali-DP > > + > > +The following bindings apply to a family of Display Processors sold as > > +licensable IP by ARM Ltd. The bindings describe the Mali DP500, DP550 and > > +DP650 processors that offer multiple composition layers, support for > > +rotation and scaling output. > > + > > +Required properties: > > + - compatible: should be one of > > + "arm,mali-dp500" > > + "arm,mali-dp550" > > + "arm,mali-dp650" > > + depending on the particular implementation present in the hardware > > I assume these have revisions and configuration options. These will need > SoC specific properties as well. No need to add one now if you don't > have an SoC to list, but just note something to this effect. There are revisions, indeed, but contrained at the moment to ARM's internal builds. As for the configuration options, those are being detected in the driver by querying a config_id register. Not all the features there correspond to a revision number though, so I'll take a "wait and see" approach to adding additional information in the DT bindings. > > > + - reg: Physical base address and size of the block of registers used by > > + the processor. > > + - interrupts: Interrupt list, as defined in ../interrupt-controller/interrupts.txt, > > + interrupt client nodes. > > + - interrupt-names: name of the engine inside the processor that will > > + use the corresponding interrupt. Should be one of "DE" or "SE". > > This is worded like it is either one, but the example shows both. You (and MarkR) are right, the intent was to say that for each interrupt in the interrupts list you use a name in the interrupt-name and that name can be either "DE" or "SE". I will rephrase it to make it more clear. > > > + - clocks: A list of phandle + clock-specifier pairs, one for each entry > > + in 'clock-names' > > + - clock-names: A list of clock names. It should contain: > > + - "pclk": for the APB interface clock > > + - "aclk": for the AXI interface clock > > + - "mclk": for the main processor clock > > + - "pxlclk": for the pixel clock feeding the output PLL of the processor. > > + - arm,malidp-output-port-lines: Array of u8 values describing the number > > + of output lines per channel (R, G and B). > > This should be a function of the type of panel you connect and > shouldn't be needed. Hmm, not sure I understand you here. Mali DP can export a number of parallel lines per color component, but that doesn't automatically translate into how many of those are being used as input to the encoder, and there are no standard bindings in the encoders either to query the configuration. So I need a way somewhere to describe how hardware has been wired. I thought DTs are one such place. Do you have a better idea or example? > > > + > > +Required sub-nodes: > > + - port: The Mali DP connection to an encoder input port. The connection > > + is modelled using the OF graph bindings specified in > > + Documentation/devicetree/bindings/graph.txt > > + > > +Optional properties: > > + - memory-region: phandle to a node describing memory (see > > + Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt) > > + to be used for the framebuffer; if not present, the framebuffer may > > + be located anywhere in memory. > > + > > + > > +Example: > > + > > +/ { > > + ... > > + > > + dp0: malidp@6f200000 { > > display-controller@ Will change! Thanks for the review! Liviu > > > + compatible = "arm,mali-dp650"; > > + reg = <0 0x6f200000 0 0x20000>; > > + memory-region = <&display_reserved>; > > + interrupts = <0 168 IRQ_TYPE_LEVEL_HIGH>, > > + <0 168 IRQ_TYPE_LEVEL_HIGH>; > > + interrupt-names = "DE", "SE"; > > + clocks = <&oscclk2>, <&fpgaosc0>, <&fpgaosc1>, <&fpgaosc1>; > > + clock-names = "pxlclk", "mclk", "aclk", "pclk"; > > + arm,malidp-output-port-lines = /bits/ 8 <8 8 8>; > > + port { > > + dp0_output: endpoint { > > + remote-endpoint = <&tda998x_2_input>; > > + }; > > + }; > > + }; > > + > > + ... > > +}; > > -- > > 2.7.1 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe devicetree" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- ==================== | I would like to | | fix the world, | | but they're not | | giving me the | \ source code! / --------------- ¯\_(ツ)_/¯ From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: Re: [RFC][PATCH 1/2] dt/bindings: display: Add DT bindings for Mali Display Processors. Date: Mon, 4 Apr 2016 10:01:46 +0100 Message-ID: <20160404090146.GE27137@e106497-lin.cambridge.arm.com> References: <1459527712-9488-1-git-send-email-Liviu.Dudau@arm.com> <1459527712-9488-2-git-send-email-Liviu.Dudau@arm.com> <20160404051602.GJ17806@rob-hp-laptop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160404051602.GJ17806@rob-hp-laptop> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring Cc: Mark Rutland , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , LKML , DRI devel , Kumar Gala List-Id: devicetree@vger.kernel.org T24gTW9uLCBBcHIgMDQsIDIwMTYgYXQgMTI6MTY6MDJBTSAtMDUwMCwgUm9iIEhlcnJpbmcgd3Jv dGU6Cj4gT24gRnJpLCBBcHIgMDEsIDIwMTYgYXQgMDU6MjE6NTFQTSArMDEwMCwgTGl2aXUgRHVk YXUgd3JvdGU6Cj4gPiBBZGQgRFQgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIE1hbGkg RGlzcGxheSBQcm9jZXNzb3IuIFRoZSBiaW5kaW5ncwo+ID4gZGVzY3JpYmUgdGhlIE1hbGkgRFA1 MDAsIERQNTUwIGFuZCBEUDY1MCBwcm9jZXNzb3JzIGZyb20gQVJNIEx0ZC4KPiA+IAo+ID4gQ2M6 IFJvYiBIZXJyaW5nIDxyb2JoK2R0QGtlcm5lbC5vcmc+Cj4gPiBDYzogUGF3ZWwgTW9sbCA8cGF3 ZWwubW9sbEBhcm0uY29tPgo+ID4gQ2M6IE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5j b20+Cj4gPiBDYzogSWFuIENhbXBiZWxsIDxpamMrZGV2aWNldHJlZUBoZWxsaW9uLm9yZy51az4K PiA+IENjOiBLdW1hciBHYWxhIDxnYWxha0Bjb2RlYXVyb3JhLm9yZz4KPiA+IAo+ID4gU2lnbmVk LW9mZi1ieTogTGl2aXUgRHVkYXUgPExpdml1LkR1ZGF1QGFybS5jb20+Cj4gPiAtLS0KPiA+ICAu Li4vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2FybSxtYWxpZHAudHh0ICAgICB8IDY1ICsr KysrKysrKysrKysrKysrKysrKysKPiA+ICAxIGZpbGUgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygr KQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvZGlzcGxheS9hcm0sbWFsaWRwLnR4dAo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYXJtLG1hbGlkcC50eHQgYi9Eb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hcm0sbWFsaWRwLnR4dAo+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAuLmVkNzBkZTMKPiA+IC0tLSAvZGV2 L251bGwKPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5 L2FybSxtYWxpZHAudHh0Cj4gPiBAQCAtMCwwICsxLDY1IEBACj4gPiArQVJNIE1hbGktRFAKPiA+ ICsKPiA+ICtUaGUgZm9sbG93aW5nIGJpbmRpbmdzIGFwcGx5IHRvIGEgZmFtaWx5IG9mIERpc3Bs YXkgUHJvY2Vzc29ycyBzb2xkIGFzCj4gPiArbGljZW5zYWJsZSBJUCBieSBBUk0gTHRkLiBUaGUg YmluZGluZ3MgZGVzY3JpYmUgdGhlIE1hbGkgRFA1MDAsIERQNTUwIGFuZAo+ID4gK0RQNjUwIHBy b2Nlc3NvcnMgdGhhdCBvZmZlciBtdWx0aXBsZSBjb21wb3NpdGlvbiBsYXllcnMsIHN1cHBvcnQg Zm9yCj4gPiArcm90YXRpb24gYW5kIHNjYWxpbmcgb3V0cHV0Lgo+ID4gKwo+ID4gK1JlcXVpcmVk IHByb3BlcnRpZXM6Cj4gPiArICAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YKPiA+ICsJ ImFybSxtYWxpLWRwNTAwIgo+ID4gKwkiYXJtLG1hbGktZHA1NTAiCj4gPiArCSJhcm0sbWFsaS1k cDY1MCIKPiA+ICsgICAgZGVwZW5kaW5nIG9uIHRoZSBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9u IHByZXNlbnQgaW4gdGhlIGhhcmR3YXJlCj4gCj4gSSBhc3N1bWUgdGhlc2UgaGF2ZSByZXZpc2lv bnMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlc2Ugd2lsbCBuZWVkIAo+IFNvQyBzcGVj aWZpYyBwcm9wZXJ0aWVzIGFzIHdlbGwuIE5vIG5lZWQgdG8gYWRkIG9uZSBub3cgaWYgeW91IGRv bid0IAo+IGhhdmUgYW4gU29DIHRvIGxpc3QsIGJ1dCBqdXN0IG5vdGUgc29tZXRoaW5nIHRvIHRo aXMgZWZmZWN0LgoKVGhlcmUgYXJlIHJldmlzaW9ucywgaW5kZWVkLCBidXQgY29udHJhaW5lZCBh dCB0aGUgbW9tZW50IHRvIEFSTSdzIGludGVybmFsCmJ1aWxkcy4gQXMgZm9yIHRoZSBjb25maWd1 cmF0aW9uIG9wdGlvbnMsIHRob3NlIGFyZSBiZWluZyBkZXRlY3RlZCBpbiB0aGUKZHJpdmVyIGJ5 IHF1ZXJ5aW5nIGEgY29uZmlnX2lkIHJlZ2lzdGVyLiBOb3QgYWxsIHRoZSBmZWF0dXJlcyB0aGVy ZSBjb3JyZXNwb25kCnRvIGEgcmV2aXNpb24gbnVtYmVyIHRob3VnaCwgc28gSSdsbCB0YWtlIGEg IndhaXQgYW5kIHNlZSIgYXBwcm9hY2ggdG8gYWRkaW5nCmFkZGl0aW9uYWwgaW5mb3JtYXRpb24g aW4gdGhlIERUIGJpbmRpbmdzLgoKPiAKPiA+ICsgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJl c3MgYW5kIHNpemUgb2YgdGhlIGJsb2NrIG9mIHJlZ2lzdGVycyB1c2VkIGJ5Cj4gPiArICAgIHRo ZSBwcm9jZXNzb3IuCj4gPiArICAtIGludGVycnVwdHM6IEludGVycnVwdCBsaXN0LCBhcyBkZWZp bmVkIGluIC4uL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0LAo+ID4gKyAgICBp bnRlcnJ1cHQgY2xpZW50IG5vZGVzLgo+ID4gKyAgLSBpbnRlcnJ1cHQtbmFtZXM6IG5hbWUgb2Yg dGhlIGVuZ2luZSBpbnNpZGUgdGhlIHByb2Nlc3NvciB0aGF0IHdpbGwKPiA+ICsgICAgdXNlIHRo ZSBjb3JyZXNwb25kaW5nIGludGVycnVwdC4gU2hvdWxkIGJlIG9uZSBvZiAiREUiIG9yICJTRSIu Cj4gCj4gVGhpcyBpcyB3b3JkZWQgbGlrZSBpdCBpcyBlaXRoZXIgb25lLCBidXQgdGhlIGV4YW1w bGUgc2hvd3MgYm90aC4KCllvdSAoYW5kIE1hcmtSKSBhcmUgcmlnaHQsIHRoZSBpbnRlbnQgd2Fz IHRvIHNheSB0aGF0IGZvciBlYWNoIGludGVycnVwdCBpbiB0aGUKaW50ZXJydXB0cyBsaXN0IHlv dSB1c2UgYSBuYW1lIGluIHRoZSBpbnRlcnJ1cHQtbmFtZSBhbmQgdGhhdCBuYW1lIGNhbiBiZSBl aXRoZXIKIkRFIiBvciAiU0UiLiBJIHdpbGwgcmVwaHJhc2UgaXQgdG8gbWFrZSBpdCBtb3JlIGNs ZWFyLgoKPiAKPiA+ICsgIC0gY2xvY2tzOiBBIGxpc3Qgb2YgcGhhbmRsZSArIGNsb2NrLXNwZWNp ZmllciBwYWlycywgb25lIGZvciBlYWNoIGVudHJ5Cj4gPiArICAgIGluICdjbG9jay1uYW1lcycK PiA+ICsgIC0gY2xvY2stbmFtZXM6IEEgbGlzdCBvZiBjbG9jayBuYW1lcy4gSXQgc2hvdWxkIGNv bnRhaW46Cj4gPiArICAgICAgLSAicGNsayI6IGZvciB0aGUgQVBCIGludGVyZmFjZSBjbG9jawo+ ID4gKyAgICAgIC0gImFjbGsiOiBmb3IgdGhlIEFYSSBpbnRlcmZhY2UgY2xvY2sKPiA+ICsgICAg ICAtICJtY2xrIjogZm9yIHRoZSBtYWluIHByb2Nlc3NvciBjbG9jawo+ID4gKyAgICAgIC0gInB4 bGNsayI6IGZvciB0aGUgcGl4ZWwgY2xvY2sgZmVlZGluZyB0aGUgb3V0cHV0IFBMTCBvZiB0aGUg cHJvY2Vzc29yLgo+ID4gKyAgLSBhcm0sbWFsaWRwLW91dHB1dC1wb3J0LWxpbmVzOiBBcnJheSBv ZiB1OCB2YWx1ZXMgZGVzY3JpYmluZyB0aGUgbnVtYmVyCj4gPiArICAgIG9mIG91dHB1dCBsaW5l cyBwZXIgY2hhbm5lbCAoUiwgRyBhbmQgQikuCj4gCj4gVGhpcyBzaG91bGQgYmUgYSBmdW5jdGlv biBvZiB0aGUgdHlwZSBvZiBwYW5lbCB5b3UgY29ubmVjdCBhbmQgCj4gc2hvdWxkbid0IGJlIG5l ZWRlZC4KCkhtbSwgbm90IHN1cmUgSSB1bmRlcnN0YW5kIHlvdSBoZXJlLiBNYWxpIERQIGNhbiBl eHBvcnQgYSBudW1iZXIgb2YgcGFyYWxsZWwgbGluZXMKcGVyIGNvbG9yIGNvbXBvbmVudCwgYnV0 IHRoYXQgZG9lc24ndCBhdXRvbWF0aWNhbGx5IHRyYW5zbGF0ZSBpbnRvIGhvdyBtYW55IG9mIHRo b3NlCmFyZSBiZWluZyB1c2VkIGFzIGlucHV0IHRvIHRoZSBlbmNvZGVyLCBhbmQgdGhlcmUgYXJl IG5vIHN0YW5kYXJkIGJpbmRpbmdzIGluIHRoZQplbmNvZGVycyBlaXRoZXIgdG8gcXVlcnkgdGhl IGNvbmZpZ3VyYXRpb24uIFNvIEkgbmVlZCBhIHdheSBzb21ld2hlcmUgdG8gZGVzY3JpYmUKaG93 IGhhcmR3YXJlIGhhcyBiZWVuIHdpcmVkLiBJIHRob3VnaHQgRFRzIGFyZSBvbmUgc3VjaCBwbGFj ZS4gRG8geW91IGhhdmUgYSBiZXR0ZXIKaWRlYSBvciBleGFtcGxlPwoKPiAKPiA+ICsKPiA+ICtS ZXF1aXJlZCBzdWItbm9kZXM6Cj4gPiArICAtIHBvcnQ6IFRoZSBNYWxpIERQIGNvbm5lY3Rpb24g dG8gYW4gZW5jb2RlciBpbnB1dCBwb3J0LiBUaGUgY29ubmVjdGlvbgo+ID4gKyAgICBpcyBtb2Rl bGxlZCB1c2luZyB0aGUgT0YgZ3JhcGggYmluZGluZ3Mgc3BlY2lmaWVkIGluCj4gPiArICAgIERv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncmFwaC50eHQKPiA+ICsKPiA+ICtPcHRp b25hbCBwcm9wZXJ0aWVzOgo+ID4gKyAgLSBtZW1vcnktcmVnaW9uOiBwaGFuZGxlIHRvIGEgbm9k ZSBkZXNjcmliaW5nIG1lbW9yeSAoc2VlCj4gPiArICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9yZXNlcnZlZC1tZW1vcnkvcmVzZXJ2ZWQtbWVtb3J5LnR4dCkKPiA+ICsgICAg dG8gYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyOyBpZiBub3QgcHJlc2VudCwgdGhlIGZyYW1l YnVmZmVyIG1heQo+ID4gKyAgICBiZSBsb2NhdGVkIGFueXdoZXJlIGluIG1lbW9yeS4KPiA+ICsK PiA+ICsKPiA+ICtFeGFtcGxlOgo+ID4gKwo+ID4gKy8gewo+ID4gKwkuLi4KPiA+ICsKPiA+ICsJ ZHAwOiBtYWxpZHBANmYyMDAwMDAgewo+IAo+IGRpc3BsYXktY29udHJvbGxlckAKCldpbGwgY2hh bmdlIQoKVGhhbmtzIGZvciB0aGUgcmV2aWV3IQpMaXZpdQoKPiAKPiA+ICsJCWNvbXBhdGlibGUg PSAiYXJtLG1hbGktZHA2NTAiOwo+ID4gKwkJcmVnID0gPDAgMHg2ZjIwMDAwMCAwIDB4MjAwMDA+ Owo+ID4gKwkJbWVtb3J5LXJlZ2lvbiA9IDwmZGlzcGxheV9yZXNlcnZlZD47Cj4gPiArCQlpbnRl cnJ1cHRzID0gPDAgMTY4IElSUV9UWVBFX0xFVkVMX0hJR0g+LAo+ID4gKwkJCSAgICAgPDAgMTY4 IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ID4gKwkJaW50ZXJydXB0LW5hbWVzID0gIkRFIiwgIlNF IjsKPiA+ICsJCWNsb2NrcyA9IDwmb3NjY2xrMj4sIDwmZnBnYW9zYzA+LCA8JmZwZ2Fvc2MxPiwg PCZmcGdhb3NjMT47Cj4gPiArCQljbG9jay1uYW1lcyA9ICJweGxjbGsiLCAibWNsayIsICJhY2xr IiwgInBjbGsiOwo+ID4gKwkJYXJtLG1hbGlkcC1vdXRwdXQtcG9ydC1saW5lcyA9IC9iaXRzLyA4 IDw4IDggOD47Cj4gPiArCQlwb3J0IHsKPiA+ICsJCQlkcDBfb3V0cHV0OiBlbmRwb2ludCB7Cj4g PiArCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmdGRhOTk4eF8yX2lucHV0PjsKPiA+ICsJCQl9Owo+ ID4gKwkJfTsKPiA+ICsJfTsKPiA+ICsKPiA+ICsJLi4uCj4gPiArfTsKPiA+IC0tIAo+ID4gMi43 LjEKPiA+IAo+ID4gLS0KPiA+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRo ZSBsaW5lICJ1bnN1YnNjcmliZSBkZXZpY2V0cmVlIiBpbgo+ID4gdGhlIGJvZHkgb2YgYSBtZXNz YWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKPiA+IE1vcmUgbWFqb3Jkb21vIGluZm8g YXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAo+IAoKLS0gCj09 PT09PT09PT09PT09PT09PT09CnwgSSB3b3VsZCBsaWtlIHRvIHwKfCBmaXggdGhlIHdvcmxkLCAg fAp8IGJ1dCB0aGV5J3JlIG5vdCB8CnwgZ2l2aW5nIG1lIHRoZSAgIHwKIFwgc291cmNlIGNvZGUh ICAvCiAgLS0tLS0tLS0tLS0tLS0tCiAgICDCr1xfKOODhClfL8KvCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=