X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=aU1KkcJ/FxkBfu2AK/R2g9/XHxkdzZlStOfnWHXjFrY=; b=mYW8MVnjPQdTU4GFf6oQTsOnjDCEGHOnpEMcjm9I0tBcjV7PgMak6Wkj2hcV65n2W0 gHM2Kx8Kx5i4TgBoioZ33/wcsGW31TAu8x3RfmXNfdDZTJr2WlWq4sI121ANL/RYNy1k MyqFn37bW41/ISsLh6MijpciiWj3Ed97g5Ywp/xO3allP8YMDZ5Iq/1jh4IYB4pJANj2 1DfZcMe3rnV1YY5KO5/DDzIcALkcibTg44DiPmwmTZOO2l+KuAB0JOLYbdpM2K8u+PZ/ JrfnUw3B2UXgJRhwluoPm2w5LShj36I+GdVOBvxpFbEWj12D0FwC0dCeL7gjShem0tUA shWg== MIME-Version: 1.0 X-Received: by 10.182.117.195 with SMTP id kg3mr14547509obb.17.1391142223143; Thu, 30 Jan 2014 20:23:43 -0800 (PST) In-Reply-To: References: Date: Fri, 31 Jan 2014 08:23:42 +0400 Message-ID: Subject: Re: [geda-user] Re: refdes renumber From: =?KOI8-R?B?4czFy9PFyiDowdLYy8/X08vJyg==?= To: geda-user AT delorie DOT com Content-Type: multipart/mixed; boundary=089e0149c5060b3ee304f13c8af8 Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --089e0149c5060b3ee304f13c8af8 Content-Type: multipart/alternative; boundary=089e0149c5060b3edf04f13c8af6 --089e0149c5060b3edf04f13c8af6 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: quoted-printable 2013-06-09 Kai-Martin Knaak > =E1=CC=C5=CB=D3=C5=CA =E8=C1=D2=D8=CB=CF=D7=D3=CB=C9=CA wrote: > > >>> My most pressing wish with regard to renumber scripts: > >>>Play nice with multi part symbols. > >>> > >>>It is good practice to split power pins or function blocks of > >>>integrated components into separate symbols. Thy all share the same > >>>value of the refdes attribute. This sameness of refdes values lets > >>>gedalib know that two symbols are meant to refer to the same > >>>component. The same applies to slotted symbols. > > Attach Example please. I do not using separate symbols, but I have > > interesting. > > I attached my symbols for a dual operational amplifier. The symbol > opamp_dual.sym contains the triangle with input and output pins. It > features two slots for the two opamps the device contains. > > Then there is opamp_dual_pwr.sym . This is a rectangle with just the > two supply pins of the component. I usually put all the power symbol > somewhere on the bottom of the schematic, connect them to power nets > and attach the necessary 100 nF capacitors. That way, power connection > is explicitely visible in the schematic. But it does not clutter the > functional part of the schematic. See the attached PDF of my favorite > photo diode amplifier for an example. > > ---<)kaimartin(>--- > -- > Kai-Martin Knaak > This is added. Read help more. --089e0149c5060b3edf04f13c8af6 Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: quoted-printable



2013-06-09 Kai-Martin Knaak <kmk AT familieknaak DOT de><= br>
=E1=CC=C5=CB=D3=C5=CA =E8=C1=D2=D8=CB=CF=D7=D3=CB=C9=CA w= rote:

>>> My most pressing wish with regard to renumber scripts:
>>>Play nice with multi part symbols.
>>>
>>>It is good practice to split power pins or function blocks of >>>integrated components into separate symbols. Thy all share the = same
>>>value of the refdes attribute. This sameness of refdes values l= ets
>>>gedalib know that two symbols are meant to refer to the same >>>component. The same applies to slotted symbols.
> Attach Example please. I do not using separate symbols, but I have
> interesting.

I attached my symbols for a dual operational amplifier. The symbol opamp_dual.sym contains the triangle with input and output pins. It
features two slots for the two opamps the device contains.

Then there is opamp_dual_pwr.sym . This is a rectangle with just the
two supply pins of the component. I usually put all the power symbol
somewhere on the bottom of the schematic, connect them to power nets
and attach the necessary 100 nF capacitors. That way, power connection
is explicitely visible in the schematic. But it does not clutter the
functional part of the schematic. See the attached PDF of my favorite
photo diode amplifier for an example.

---<)kaimartin(>---
--
Kai-Martin Knaak


This is added.
Read help m= ore.
--089e0149c5060b3edf04f13c8af6-- --089e0149c5060b3ee304f13c8af8 Content-Type: text/x-python; charset=US-ASCII; name="refdes_renum.py" Content-Disposition: attachment; filename="refdes_renum.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hr2y70se3 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMgoKaGVscCA9ICIiIgpVc2FnZToKCglyZWZkZXNfcmVudW0u cHkgWy0tbm9jb3B5XSBbLS1wZ3NraXAgW251bWJlcl0gXSBmaWxlMS5zY2ggW2ZpbGUyLnNjaCBm aWxlLnBjYiBbIHBhdGh0by9wcm9qZWN0ZmlsZSBdIF0KCXJlZmRlc19yZW51bS5weSAtLWhlbHAK CXJlZmRlc19yZW51bS5weSAtLXZlcnNpb24KCnJlZmRlc19yZW51bS5weSByZWFkcyBhIGdzY2hl bSBzY2hlbWF0aWMgZmlsZSBvciBmaWxlcyBhbmQgcmVudW1iZXJzIGFsbCByZWZlcmVuY2UKZGVz aWduYXRvcnMuICBUaGUgcmVmZXJlbmNlIGRlc2lnbmF0b3JzIGFyZSBudW1iZXJlZCBzdGFydGlu ZyB3aXRoIDEgYW5kIHRoZQpvbGQgc2NoZW1hdGljIGZpbGUgaXMgcmVwbGFjZWQgYnkgdGhlIG1v ZGlmaWVkIHNjaGVtYXRpYyBmaWxlLiBBbHNvIHJlcGxhY2VkIFJFRkRFU3MgaW4gcGNiIGZpbGUo cykgYWNjb3JkaW5nbHkgdG8gc2NoZW1hdGljIGZpbGUocykuCnJlZmRlc19yZW51bS5weSBjYW4g cmVhZCB0aGUgcHJvamVjdCBmaWxlKGZpbGVzKSBhbmQgcmVudW1iZXIgYWxsIFJFRkRFU3MgaW4g cHJvamVjdC4KCldhcm5pbmc6IEZvciBwcm9wZXJseSByZW51bWJlciBvZiBzbG90dGVkIGFuZCBj b21wbGV4KG1hbnkgc3ltYm9scykgY29tcG9uZW50cyBZb3UgbXVzdCBwbGFjZSBpZGVudGljYWwg UkVGREVTIHRvIGhpbS4gCkV4YW1wbGU6IFUxLCBVMSBvciBVMTAxLCBVMTAxLCBVMTAxCgpyZWZk ZXNfcmVudW0ucHkgYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CgogICAgLS1oZWxwICAg ICAgRGlzcGxheXMgdGhpcyBoZWxwIG1lc3NhZ2UuCgogICAgLS1ub2NvcHkgICAgSWYgZ2l2ZW4s IHRoaXMgZmxhZyBsZWF2ZXMgdGhlIG1vZGlmaWVkIGZpbGVzIGluIG5ldyBmaWxlcwogICAgICAg ICAgICAgICAgd2hvc2UgbmFtZXMgYXJlIGdlbmVyYXRlZCBieSBhcHBlbmRpbmcgYSAiLnJlbnVt IiB0byB0aGUKICAgICAgICAgICAgICAgIG9yaWdpbmFsIGZpbGUgbmFtZXMuICBUaGUgZGVmYXVs dCBpcyB0byBvdmVyd3JpdGUgdGhlIG9yaWdpbmFsLgoKICAgIC0tcGdza2lwIE4gIFdoZW4gdGhp cyBmbGFnIGlzIHVzZWQsIGNvbXBvbmVudHMgb24gdGhlIGZpcnN0IHNjaGVtYXRpYyBzaGVldAog ICAgICAgICAgICAgICAgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIHdpdGggMTAxLiAgT24gdGhlIHNl Y29uZCBzaGVldCwgdGhleSBzdGFydAogICAgICAgICAgICAgICAgd2l0aCAyMDEsIGV0YyAgU3Bl Y2lmeWluZyBhIHZhbHVlIChOKSBnaXZlcyB0aGUgc3RlcCBiZXR3ZWVuIHBhZ2VzLgogICAgICAg ICAgICAgICAgRm9yIGV4YW1wbGUgLS1wZ3NraXAgMTAgd2lsbCBzdGFydCB3aXRoIDExLCAyMSwg MzEsIGV0Yy4KCiAgICAtLWdlbnRsZSAgICBUaGlzIGZsYWcgdGVsbHMgcmVmZGVzX3JlbnVtLnB5 IHRvIGxlYXZlIGFueSByZWZkZXNlcwogICAgICAgICAgICAgICAgYWxvbmUgaWYgdGhleSBhbHJl YWR5IGhhdmUgbnVtYmVycy4gIFVzZSB0aGlzIG9wdGlvbiB0byBudW1iZXIKICAgICAgICAgICAg ICAgIG5ldyBjb21wb25lbnRzIGluIGEgc2NoZW1hdGljIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4g bnVtYmVyZWQuCiAgICAgICAgICAgICAgICBOb3RlIHRoYXQgLS1nZW50bGUgaXMgc2V0IGJ5IGRl ZmF1bHQhCgogICAgLS1mb3JjZSAgICAgU2V0IHRoaXMgZmxhZyB0byByZW51bWJlciBhbGwgcmVm ZGVzZXMsIHdoZXRoZXIgdGhleSBhcmUgYWxyZWFkeQogICAgICAgICAgICAgICAgbnVtYmVyZWQg b3Igbm90LgoKCS0tc29ydCBBTEcJU2V0IHRoZSBzb3J0ZWQgYWxnb3JpdGhtLgoJCQkJUGVybWlz c2libGUgdmFsdWUgZm9yIC0tc29ydCBvcHRpb24gKEFMRykgaXM6CgkJZGlhZwkJLSBEaWFnb25h bCByZW51bWJlciAoYXMgZ3NjaGVtIHByb2dyYW0pCgkJdG9wdG9ib3QJLSBSZW51bWJlciByZWZk ZXMgYmVnYW4gd2l0aCB0b3AgYW5kIGVuZHMgYXQgYm90dG9tLgoJCWJvdHRvdG9wCS0gUmVudW1i ZXIgcmVmZGVzIGNvbnRyYXJpd2lzZSBhcyB0b3B0b2JvdAoJCWxlZnR0b3JpZ2h0CS0gUmVudW1i ZXIgcmVmZGVzIGJlZ2FuIHdpdGggbGVmdCBhbmQgdG8gcmlnaHQKCQlyaWdodHRvbGVmdCAtIFJl bnVtYmVyIHJlZmRlcyBjb250cmFyaXdpc2UgYXMgbGVmdHRvcmlnaHQKCQlmaWxlCQktIFJlbnVt YmVyIHJlZmRlcyBhcyB0ZXh0IGZpbGUgb3JkZXIKCgktLWxvZwkJUHJpbnQgcmVudW1iZXIgaW5m b3JtYXRoaW9uIHRvIHN0ZG91dAoKCS0tY29tcG9uZW50IFJlbnVtYmVyIHJlZmRlcyB3aXRoIGNv bXBvbmVudCBjb29yZGluYXRlcwoJCQkJQnkgZGVmYXVsdCByZWZkZXNfcmVudW0ucHkgcHJvZ3Jh bSB1c2luZyBjb29yZGluYXRlcyBvZiAicmVmZGVzIiBhdHRyaWJ1dGVzCgoJLS1hdHRyIE5hbWUJ U2V0IGF0dHJpYnV0ZSBuYW1lIGZvciByZW51bWJlcmluZy4gQXQgZGVmYXVsdCBSRUZERVMKCiAg ICAtLXZlcmJvc2UgICBFbmFibGVzIHZlcmJvc2Ugb3V0cHV0LgoKICAgIC0tdmVyc2lvbiAgIFNo b3dzIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcHJvZ3JhbS4KCgpSZXR1cm4gY29kZXM6CgoJcmVmZGVz X3JlbnVtLnB5IHJldHVybnMgdGhlIGZvbGxvd2luZyBjb2RlcyB0byB0aGUgc2hlbGwgdXBvbiBj b21wbGV0aW9uOgoKICAgICAgICAgIDAgICBQcm9ncmFtIHJhbiBzdWNjZXNzZnVsbHkuCiAgICAg ICAgICAxICAgRXJyb3Igb3BlbmluZyBvciByZWFkaW5nIGlucHV0IGZpbGUuCiAgICAgICAgICAy ICAgRXJyb3Igb3BlbmluZyBvciB3cml0aW5nIG91dHB1dCBmaWxlLgogICAgICAgICAgMyAgIFRv byBtYW55IGNvbXBvbmVudHMgZm9yIC0tcGdza2lwIHNldHRpbmcuCiAgICAgICAgICA0ICAgSW50 ZXJuYWwgZXJyb3IgKHByb2dyYW0gYnVnIGVuY291bnRlcmVkKS4KClVzYWdlIGV4YW1wbGVzOgoK MS4JVG8gcmVudW1iZXIgdGhlIHJlZmVyZW5jZSBkZXNpZ25hdG9ycyBpbiBhIHNpbmdsZSBwYWdl IHNjaGVtYXRpYwoJbXlzY2guc2NoOgoKCQlyZWZkZXNfcmVudW0ucHkgbXlzY2guc2NoCgkJCgoy LglUbyByZW51bWJlciB0aGUgcmVmZXJlbmNlIGRlc2lnbmF0b3JzIGluIHNjaGVtYXRpYyBwYWdl cyBwZzEuc2NoLAoJcGcyLnNjaCBhbmQgcGczLnNjaCwgd2l0aCB0aGUgcmVmZXJlbmNlIGRlc2ln bmF0b3JzIG9uIHBnMS5zY2gKCWJlZ2lubmluZyBhdCAxMDEsIHRoZSBkZXNpZ25hdG9ycyBvbiBw ZzIuc2NoIGJlZ2lubmluZyBhdCAyMDEsCglhbmQgdGhlIGRlc2lnbmF0b3JzIG9uIHBnMy5zY2gg YmVnaW5uaW5nIGF0IDMwMToKCgkJcmVmZGVzX3JlbnVtLnB5IC0tcGdza2lwIHBnMS5zY2ggcGcy LnNjaCBwZzMuc2NoCgoJCjMuCUZvcmNlIHJlcGxhY2VkIHRoZSBSRUZERVNzIGluIHNjaGVtYXRp YyBhbmQgUENCIGZpbGVzLgoJTm8gZm9yZ290IGdzY2gycGNiIHByb2dyYW0gZm9yIGdlbmVyYXRl IHByb3BlciBuZXRsaXN0IDopCgkJCgkJcmVmZGVzX3JlbnVtLnB5IC0tZm9yY2UgZm9vMS5zY2gg Zm9vMi5zY2ggZm9vLnBjYgoJCgo0LglGb3JjZSByZXBsYWNlZCB0aGUgUkVGREVTcyBpbiBjdXJy ZW50IChvciBub24gY3VycmVudCkgd29ya2VkIHByb2plY3QuCgkJCgkJcmVmZGVzX3JlbnVtLnB5 IC0tZm9yY2UgcHJvamVjdAoJCXJlZmRlc19yZW51bS5weSAtLWZvcmNlIC4uLy4uL2Rlc2lnbi9n ZWRhL3Byb2plY3QKCQoKNS4JUmVwbGFjaW5nIHdpdGggbm9uIGRlZmF1bHQgc29ydGluZyBhbGdv cml0aG0KCgkJcmVmZGVzX3JlbnVtLnB5IC0tZm9yY2UgcHJvamVjdCAtLXNvcnQgbGVmdHRvcmln aHQKCQoKCnJlZmRlc19yZW51bS5weSB3YXMgd3JpdHRlbiBieSBLaGFya292c2t5IEFsZXhleSA8 c3ZldG9ub21lckBnbWFpbC5jb20+CiIiIgoKdmVyc2lvbj0ncmVmZGVzX3JlbnVtLnB5IHYxLjAg YnkgS2hhcmtvdnNreSBBbGV4ZXkgOiknCnNvcnRfbWV0aG9kID0gWydkaWFnJywndG9wdG9ib3Qn LCdib3R0b3RvcCcsJ2xlZnR0b3JpZ2h0JywncmlnaHR0b2xlZnQnLCdmaWxlJ10KCmltcG9ydCBz eXMsb3MKaW1wb3J0IHJlCgppZiBsZW4oc3lzLmFyZ3YpID09IDE6CglwcmludCBoZWxwCglleGl0 KDApCgppZiAnLS1oZWxwJyBpbiBzeXMuYXJndjoKCXByaW50IGhlbHAKCWV4aXQoMCkKCmlmICct LXZlcnNpb24nIGluIHN5cy5hcmd2OgoJcHJpbnQgdmVyc2lvbgoJZXhpdCgwKQoKaWYgJy0tbm9j b3B5JyAgaW4gc3lzLmFyZ3Y6CglTdWZmaXggPSAnLnJlbnVtJwoJc3lzLmFyZ3YucmVtb3ZlKCct LW5vY29weScpCmVsc2U6CglTdWZmaXggPSAnJwoKaWYgJy0tcGdza2lwJyAgaW4gc3lzLmFyZ3Y6 CglpZiBzeXMuYXJndltzeXMuYXJndi5pbmRleCgnLS1wZ3NraXAnKSsxXSBpcyBpbnQ6CgkJYWRk X3BhZ2VfbnVtID0gc3lzLmFyZ3Zbc3lzLmFyZ3YuaW5kZXgoJy0tcGdza2lwJykrMV0KCWVsc2U6 YWRkX3BhZ2VfbnVtID0gMTAwICNQYWdlIGluY3JlbWVudCAKCXN5cy5hcmd2ID0gc3lzLmFyZ3Zb OnN5cy5hcmd2LmluZGV4KCctLXBnc2tpcCcpXSArIHN5cy5hcmd2W3N5cy5hcmd2LmluZGV4KCct LXBnc2tpcCcpKzI6XQplbHNlOgoJYWRkX3BhZ2VfbnVtID0gMCNQYWdlIGluY3JlbWVudCAKCmlm ICctLWdlbnRsZScgIGluIHN5cy5hcmd2OgoJc3lzLmFyZ3YucmVtb3ZlKCctLWdlbnRsZScpCglp ZiAnLS1mb3JjZScgIGluIHN5cy5hcmd2OgoJCXByaW50ICdEbyBub3QgdXNlIFwiLS1nZW50bGVc IiBhbmQgXCItLWZvcmNlXCIgc3VtYWx0ZW51b3VzbHknCgkJZXhpdCgwKQoKaWYgJy0tZm9yY2Un ICBpbiBzeXMuYXJndjoKCWZvcmNlID0gVHJ1ZQoJc3lzLmFyZ3YucmVtb3ZlKCctLWZvcmNlJykK ZWxzZToKCWZvcmNlID0gRmFsc2UKCmlmICctLXZlcmJvc2UnICBpbiBzeXMuYXJndjoKCXZlcmJv c2UgPSBUcnVlCglzeXMuYXJndi5yZW1vdmUoJy0tdmVyYm9zZScpCmVsc2U6Cgl2ZXJib3NlID0g RmFsc2UKCmlmICctLXNvcnQnICBpbiBzeXMuYXJndjoKCWlmIHN5cy5hcmd2W3N5cy5hcmd2Lmlu ZGV4KCctLXNvcnQnKSsxXSBpbiBzb3J0X21ldGhvZDoKCQlzb3J0ID0gc3lzLmFyZ3Zbc3lzLmFy Z3YuaW5kZXgoJy0tc29ydCcpKzFdICNzb3J0IG1ldGhvZAoJZWxzZToKCQlwcmludCAnVW5rbm93 biBhcmd1bWVudCBmb3IgLS1zb3J0IG9yIHNvcnQgbWV0aG9kIGlzIHNraXBwZWQnCgkJcHJpbnQg J1RoZSBwZXJtaXNzaWJsZSB2YWx1ZSBmb3Igc29ydCBtZXRob2Q6ICcgLCBzdHIoc29ydF9tZXRo b2QpCgkJZXhpdCgwKQoJc3lzLmFyZ3YgPSBzeXMuYXJndls6c3lzLmFyZ3YuaW5kZXgoJy0tc29y dCcpXSArIHN5cy5hcmd2W3N5cy5hcmd2LmluZGV4KCctLXNvcnQnKSsyOl0KZWxzZToKCXNvcnQg PSAndG9wdG9ib3QnCgppZiAnLS1sb2cnIGluIHN5cy5hcmd2OgoJbG9nID0gVHJ1ZQoJc3lzLmFy Z3YucmVtb3ZlKCctLWxvZycpCmVsc2U6Cglsb2cgPSBGYWxzZQoKaWYgJy0tY29tcG9uZW50JyBp biBzeXMuYXJndjoKCWF0dHJfY29vcmQgPSBGYWxzZSAjIGZvciBjb21wb25lbnQgY29vcmRpbmF0 ZXMgdXNpbmcKCXN5cy5hcmd2LnJlbW92ZSgnLS1jb21wb25lbnQnKSAKZWxzZToKCWF0dHJfY29v cmQgPSBUcnVlCgppZiAnLS1hdHRyJyAgaW4gc3lzLmFyZ3Y6CglhdHRyID0gc3lzLmFyZ3Zbc3lz LmFyZ3YuaW5kZXgoJy0tYXR0cicpKzFdICNhdHRyIG1ldGhvZAoJc3lzLmFyZ3YgPSBzeXMuYXJn dls6c3lzLmFyZ3YuaW5kZXgoJy0tYXR0cicpXSArIHN5cy5hcmd2W3N5cy5hcmd2LmluZGV4KCct LWF0dHInKSsyOl0KZWxzZToKCWF0dHIgPSAncmVmZGVzJwoKaWYgJy0tYXR0ci1wcmVmaXgnIGlu IHN5cy5hcmd2OgoJYXR0cl9wcmVmaXggPSBzeXMuYXJndltzeXMuYXJndi5pbmRleCgnLS1hdHRy LXByZWZpeCcpKzFdICNhdHRyIG1ldGhvZAoJc3lzLmFyZ3YgPSBzeXMuYXJndls6c3lzLmFyZ3Yu aW5kZXgoJy0tYXR0cl9wcmVmaXgnKV0gKyBzeXMuYXJndltzeXMuYXJndi5pbmRleCgnLS1hdHRy JykrMjpdCmVsc2U6CglhdHRyX3ByZWZpeCA9ICcnCgpwY2JuYW1lcyA9IFtdCnBjYmNvbnRlbnQg PSBbXQpzY2hlbV9uYW1lcyA9IFtdCmZvciBpIGluIHN5cy5hcmd2WzE6XToKCWlmIHJlLnNlYXJj aCgnLipcLnBjYiQnLGksZmxhZ3M9cmUuRE9UQUxMKTogI1RydWUgaWYgZW5kIG9mIGZpbGVuYW1l IGlzIC5wY2IKCQlpZiBpIG5vdCBpbiBwY2JuYW1lczoKCQkJcGNibmFtZXMuYXBwZW5kKGkpCgll bGlmIHJlLnNlYXJjaCgnLipcLnNjaCQnLGksZmxhZ3M9cmUuRE9UQUxMKTogI1RydWUgaWYgZW5k IG9mIGZpbGVuYW1lIGlzIC5zY2gKCQlpZiBpIG5vdCBpbiBzY2hlbV9uYW1lczoKCQkJc2NoZW1f bmFtZXMuYXBwZW5kKGkpCgllbHNlOiAjZmlsZSBpcyBub3QgcGNiIGFuZCBzY2ggPT4gdGhpcyBm aWxlIGlzIHByb2plY3QgZmlsZQoJCWZpbGU9b3BlbihpLCdydCcpCgkJY29udGVudCA9IGZpbGUu cmVhZCgpCgkJZmlsZS5jbG9zZSgpCgkJZm9yIHRlbXAxIGluIHJlLmZpbmRhbGwoJ3NjaGVtYXRp Y3NccysuKlwuc2NoJyxjb250ZW50LGZsYWdzPXJlLkRPVEFMTCk6ICNUaGlzIHN0cmluZyBhcmUg Y29udGFuaW5nIHRoZSBzY2hlbWF0aWMgZmlsZSBuYW1lcwoJCQlmb3IgdGVtcCBpbiB0ZW1wMS5z cGxpdCgpWzE6XToKCQkJCXRlbXAgPSBvcy5wYXRoLmRpcm5hbWUoaSkrJy8nKyB0ZW1wICMgQWRk IHBhdGggdG8gZmlsZSAoVXNlZnVsIGlmIHByb2plY3QgZmlsZSBub3QgaW4gY3VycmVudCBkaXJl Y3RvcnkpCgkJCQlpZiB0ZW1wIG5vdCBpbiBzY2hlbV9uYW1lczoKCQkJCQlzY2hlbV9uYW1lcy5h cHBlbmQodGVtcCkKCQlmb3IgdGVtcDEgaW4gcmUuZmluZGFsbCgnb3V0cHV0LW5hbWVccysuKlwu cGNiJyxjb250ZW50LGZsYWdzPXJlLkRPVEFMTCk6I1RoaXMgc3RyaW5nIGFyZSBjb250YW5pbmcg dGhlIHNjaGVtYXRpYyBmaWxlIG5hbWVzCgkJCWZvciB0ZW1wIGluIHRlbXAxLnNwbGl0KClbMTpd OgoJCQkJdGVtcCA9IG9zLnBhdGguZGlybmFtZShpKSsnLycrIHRlbXAgKyAnLnBjYicjIEFkZCBw YXRoIHRvIGZpbGUgKFVzZWZ1bCBpZiBwcm9qZWN0IGZpbGUgbm90IGluIGN1cnJlbnQgZGlyZWN0 b3J5KS4gQWZ0ZXIgYWRkIC5wY2IgKGFjdHVhbCBmb3IgcHJvamVjdCBmaWxlKSAKI1doZW4gaW4g cHJvamVjdCBmaWxlICJvdXRwdXQtbmFtZSBmb28ucGNiIiwgZ3NjaDJwY2IgY3JlYXRlICBmb28u cGNiLnBjYiwgdGhlcmVmb3JlIHRoaXMgZmlsZSBJUyBtYWluIFBDQi4KCQkJCWlmIHRlbXAgbm90 IGluIHBjYm5hbWVzOgoJCQkJCXBjYm5hbWVzLmFwcGVuZCh0ZW1wKQojIFJlYWQgY29udGVudCBv ZiBQQ0IgZmlsZQpmb3IgaSBpbiBwY2JuYW1lczoKCWZpbGU9b3BlbihpLCdydCcpCglwY2Jjb250 ZW50LmFwcGVuZChmaWxlLnJlYWQoKSkKCWZpbGUuY2xvc2UoKQojIFJlYWQgY29udGVudCBvZiBQ Q0IgZmlsZXMgCgpwYWdlX251bSA9IDAKZm9yIGZpbGVuYW1lIGluIHNjaGVtX25hbWVzOiAjIFRo aXMgCgkjUmVhZCBjb250ZW50IFNDSCBmaWxlcyBvbmUgYXQgYSB0aW1lISEhIEluIGZ1dHVyZSBt YXkgYmUgcmVwbGFjZSBmb3IgcmVhZCBjb250ZW50IGFsbCBTQ0ggZmlsZXMKCWZpbGU9b3Blbihm aWxlbmFtZSwncnQnKQoJY29udGVudCA9IGZpbGUucmVhZCgpCglmaWxlLmNsb3NlKCkKCglwcmlu dCBhdHRyCiNGaW5kIGFsbCByZXBsYWNpbmcgc3RyaW5ncyBpbiBjdXJyZW50IHNjaGVtYXRpYwoJ aWYgYXR0cl9jb29yZD09VHJ1ZTogI0lmIHVzZWQgcmVmZGVzIGF0dHJpYnV0ZSBjb29yZGluYXRl cwoJCWlmIGZvcmNlOiMgQWxsIHJlZmRlcyBhdHRyaWJ1dGVzIGFyZSBzZWxlY3RlZAoJCQljb21w X2xpc3QgID0gcmUuZmluZGFsbCgnVFteXG5dK1xzKyVzPVx3Klw/PycgJShhdHRyKSAsY29udGVu dCxmbGFncz1yZS5ET1RBTEwpCgkJZWxzZTojIE9ubHkgTk9OIG51bWJlcmluZyByZWZkZXMgYXR0 cmlidXRlcyBhcmUgc2VsZWN0ZWQgKEV4YW1wbGU6IFI/IEREPyBldGMuKQoJCQljb21wX2xpc3Qg ID0gcmUuZmluZGFsbCgnVFteXG5dK1xzKyVzPVx3Klw/JyAlKGF0dHIpICxjb250ZW50LGZsYWdz PXJlLkRPVEFMTCkKCQkKCWVsc2U6ICNJZiB1c2VkIGNvbXBvbmVudCBjb29yZGluYXRlcyAobGlz dCBvZiBzdHJpbmdzKQoJCWlmIGZvcmNlOgoJCQkjZm9yIGVtYmVkZGVkIGNvbXBvbmVudHMKCQkJ Y29tcF9saXN0ICA9IHJlLmZpbmRhbGwoJ0NccytcZCtccytcZCtccytcZCtccytcZCtccytcZCtc cytFTUJFRERFRC4rP1xbLis/XF1ccytce1tee31dKiVzPVx3Klw/P1tee31dKlx9JyAlKGF0dHIp ICxjb250ZW50LGZsYWdzPXJlLkRPVEFMTCkKCQkJI2ZvciBub24gZW1iZWRkZWQgY29tcG9uZW50 cwoJCQljb21wX2xpc3QgKz0gcmUuZmluZGFsbCgnQ1xzK1xkK1xzK1xkK1xzK1xkK1xzK1xkK1xz K1xkK1teXG5dK1xzK1x7W157fV0qJXM9XHcqXD8/W157fV0qXH0nICUoYXR0cikgLGNvbnRlbnQs ZmxhZ3M9cmUuRE9UQUxMKQoJCWVsc2U6CgkJCSNmb3IgZW1iZWRkZWQgY29tcG9uZW50cwoJCQlj b21wX2xpc3QgID0gcmUuZmluZGFsbCgnQ1xzK1xkK1xzK1xkK1xzK1xkK1xzK1xkK1xzK1xkK1xz K0VNQkVEREVELis/XFsuKz9cXVxzK1x7W157fV0qJXM9XHcqXD9bXnt9XSpcfScgJShhdHRyKSAs Y29udGVudCxmbGFncz1yZS5ET1RBTEwpCgkJCSNmb3Igbm9uIGVtYmVkZGVkIGNvbXBvbmVudHMK CQkJY29tcF9saXN0ICs9IHJlLmZpbmRhbGwoJ0NccytcZCtccytcZCtccytcZCtccytcZCtccytc ZCtbXlxuXStccytce1tee31dKiVzPVx3Klw/W157fV0qXH0nICUoYXR0cikgLGNvbnRlbnQsZmxh Z3M9cmUuRE9UQUxMKQoKCWlmIG5vdCBjb21wX2xpc3Q6ICNUcnVlIGlmIG5vIFJFRkRFU3MgZm9y IHJlcGxhY2luZwoJCXByaW50IGNvbXBfbGlzdAoJCWNvbnRpbnVlCgkKCXBhZ2VfbnVtICs9IGFk ZF9wYWdlX251bSAgIyBBZGRpbmcgUGFnZSBiaWFzIGZvciBuZXcgZmlsZSAKCSMgT2J0YWluaW5n IHRoZSBjb21wb25lbnQgbGlzdAoJZm9yIGkgaW4gcmFuZ2UoMCxsZW4oY29tcF9saXN0KSk6ICNG aW5kIGNvb3JkaW5hdGVzIHRvIHJlcGxhY2luZwoJCXh5ID0gY29tcF9saXN0W2ldLnNwbGl0KE5v bmUsMylbMTozXQoJCXh5WzBdID0gaW50KHh5WzBdKQoJCXh5WzFdID0gaW50KHh5WzFdKQoKI1Nl bGVjdCByZXBsYWNpbmcgYWxnb3J5dGhtIGJ5IHByb3BlciBzZXR1cCBjb29yZGluYXRlcyBsb2Nh dGlvbiBvcmRlciBhbmQgc29tZSBjb21wdXRhdGlvbgoJCWlmIHNvcnQgPT0gJ2RpYWcnOgoJCQlj b21wX2xpc3RbaV0gPSBbeHlbMF0gLSB4eVsxXV0gKyBbY29tcF9saXN0W2ldXQoJCWVsaWYgc29y dCA9PSAnbGVmdHRvcmlnaHQnOgoJCQljb21wX2xpc3RbaV0gPSBbeHlbMF1dICsgWy14eVsxXV0g KyBbY29tcF9saXN0W2ldXQoJCWVsaWYgc29ydCA9PSAndG9wdG9ib3QnOgoJCQljb21wX2xpc3Rb aV0gPSBbLXh5WzFdXSArIFt4eVswXV0gKyBbY29tcF9saXN0W2ldXQoJCWVsaWYgc29ydCA9PSAn cmlnaHR0b2xlZnQnOgoJCQljb21wX2xpc3RbaV0gPSBbLXh5WzBdXSArIFt4eVsxXV0gKyBbY29t cF9saXN0W2ldXQoJCWVsaWYgc29ydCA9PSAnYm90dG90b3AnOgoJCQljb21wX2xpc3RbaV0gPSBb eHlbMV1dICsgWy14eVswXV0gKyBbY29tcF9saXN0W2ldXQoJCWVsc2U6CgkJCWNvbXBfbGlzdFtp XSA9IFtjb21wX2xpc3RbaV1dCgoJCSNjb21wX2xpc3QgY29udGVudDogW2Nvb3JkMSwgY29vcmQy LCAncmVwbGFjZWQgc3RyaW5nIG9mIGZpbGUnXQoJCSNFeGFtcGxlOgkJCVstNTA4MDAgLCA2NTEw MCAsICdDIDY1MTAwIDUwODAwIC4uLiByZXNpc3Rvci0xLnN5bSB7Li4uLnJlZmRlcz1SMTIuLi59 J10KCQkKCQkjRmluZCB0aGUgcmVwbGFjZWQgUkVGREVTIGxldHRlciBwcmVmaXggYW5kIG51bWJl ciBzdWZmaXggYW5kIEFERCB0byBjb21wb25lbnQgbGlzdCAKCQlyZWZkZXM9cmUuc2VhcmNoKCco LiopJXM9KFthLXpBLVpdKikoXGQrfFw/KiknICUoYXR0cikgLGNvbXBfbGlzdFtpXVstMV0sZmxh Z3M9cmUuRE9UQUxMKQoJCWNvbXBfbGlzdFtpXS5pbnNlcnQoMCxyZWZkZXMuZ3JvdXAoMikpCgkJ Y29tcF9saXN0W2ldLmFwcGVuZChyZWZkZXMuZ3JvdXAoMykgaWYgcmVmZGVzLmdyb3VwKDMpIGVs c2UgJycpICNGb3IgbGV0dGVycyBvbmx5IFJFRkRFU3MgKGluIGZ1dHVyZSBXZSBjYW4gcmVtb3Zl IHRoZXkgZnJvbSByZWNwbGFjaW5nIGxpc3QpCgoJCSNjb21wX2xpc3QgY29udGVudDogWydSRUZE RVMgcHJlZml4JywgY29vcmQxLCBjb29yZDIsICdyZXBsYWNlZCBzdHJpbmcgb2YgZmlsZScJCQkJ CQkJCSwnT2xkIE5VTUJFUiBvZiBSRUZERVMnXQoJCSNFeGFtcGxlOgkJCVsgICdSJwkJCSwgLTUw ODAwICwgNjUxMDAgLCAnQyA2NTEwMCA1MDgwMCAuLi4gcmVzaXN0b3ItMS5zeW0gey4uLi5yZWZk ZXM9UjEyLi4ufSwnMTInXQoKCgkjIFNvcnRpbmcgdGhlIHJlcGxhY2VkIGNvbXBvbmVudC9yZWZk ZXMgbGlzdCB3aXRoIFJFRkRFU3MgcHJlZml4IGFuZCBhZnRlciB3aXRoIHNlbGVjdGVkIHNvcnQg YWxnb3JpdGhtCgljb21wX2xpc3QgPSBzb3J0ZWQoY29tcF9saXN0KQoJCglyZWZfY3Vycl9wcmVm PScwJyAjVGhpcyBpcyBOT04gYWxmYWJldGljIGZvciBhdmFpbGFibGUgcmVudW1iZXIgb2YgZW1w dHkgcmVmZGVzcyAoZS5nLiAiMSIsICIyIiwgIjIzNCIpCglpZiAncmVmX2xhc3RfbnVtcycgbm90 IGluIGxvY2FscygpOgoJCXJlZl9sYXN0X251bXM9e30gI0xhc3RzIG51bWJlcnMgZm9yIFJFRkRF U3MgcHJldmlvdXMgc2NoZW1hdGljIChGb3IgZGlzY29udGludW91cyByZW51bWJlciAod2l0aG91 dCAtLXBnc2tpcCkpIAoJCSNFeGFtcGxlIG9mIHRoaXMgZGljdCBjb250ZW50OiB7J0REJzo1LCAn Uic6MTQsICdDJzo0NX0KCglmb3IgaSBpbiByYW5nZShsZW4oY29tcF9saXN0KSk6ICNSZXBsYWNp bmcgc29ydGVkIGF0dHJpYnV0ZXMKCQkjQ29tcGxleCBjYWxjdWxhdGUgb2YgY3VycmVudCBudW1i ZXIgb2YgYXR0cmlidXRlCgkJaWYgcmVmX2N1cnJfcHJlZiA9PSBjb21wX2xpc3RbaV1bMF06ICMg VGhpcyBBdHRyaWJ1cmUgKHdpdGggY3VycmVudCBwcmVmaXgpIGlzIG5vdCBmaXJzdCBpbiB0aGlz IFNjaGVtYXRpYyBmaWxlCgkJCWlmIGNvbXBfbGlzdFtpXVt+MF0hPSc/JyBhbmQgY29tcF9saXN0 W2ldW34wXSBpbiBtYXAobGFtYmRhIHg6eFt+MV0sY29tcF9saXN0W2lfZmlyc3RfcHJlZml4Omld KTogI1JlcGVhdGluZyBhdHRyaWJ1dGUsIGUuZyBOZXcgU0xPVCBvZiBleGlzdGluZyBSRUZERVMp CgkJCQljb21wX2xpc3RbaV0uYXBwZW5kKHN0cihjb21wX2xpc3RbaV9maXJzdF9wcmVmaXgrbWFw KGxhbWJkYSB4OnhbfjFdLGNvbXBfbGlzdFtpX2ZpcnN0X3ByZWZpeDppXSkuaW5kZXgoY29tcF9s aXN0W2ldW34wXSldW34wXSkpICNBZGQgcHJldmlvdXMgbnVtYmVyIG9mIHRoaXMgc3ltYm9sIGZv ciB0aGlzIFNMT1Qgb3IgUEFSVChmb3IgbWFueSBzeW1ib2xzIGNvbXBvbmVudCkKCQkJZWxzZTog I05leHQgbnVtYmVyIGF0dHJpYnV0ZQoJCQkJcmVmX2N1cnJfbnVtICs9IDEKCQkJCWNvbXBfbGlz dFtpXS5hcHBlbmQoc3RyKHJlZl9jdXJyX251bSkpICNBZGQgY3VycmVudCBudW1iZXIgdG8gY29t cG9uZW50IGxpc3QKCQllbHNlOgoJCQl0cnk6cmVmX2N1cnJfbnVtID0gcGFnZV9udW0gKyAxIGlm IHBhZ2VfbnVtICE9IDAgZWxzZSByZWZfbGFzdF9udW1zW2NvbXBfbGlzdFtpXVswXV0gKyAxIAoJ CQlleGNlcHQ6cmVmX2N1cnJfbnVtPTEKCQkJY29tcF9saXN0W2ldLmFwcGVuZChzdHIocmVmX2N1 cnJfbnVtKSkgI0FkZCBjdXJyZW50IG51bWJlciB0byBjb21wb25lbnQgbGlzdAoJCQlyZWZfY3Vy cl9wcmVmID0gY29tcF9saXN0W2ldWzBdCiAgICAgICAgICAgICAgICAgICAgICAgIGlfZmlyc3Rf cHJlZml4ID0gaSAjIEJlZ2luIG9mIGN1cnJlbnQgcHJlZml4CgkJcmVmX2xhc3RfbnVtc1tyZWZf Y3Vycl9wcmVmXT1yZWZfY3Vycl9udW0gIyBBZGQgY3VycmVudCBSRUZERVMgaW4gbGFzdCBudW1i ZXJzCgoJCSNjb21wX2xpc3QgY29udGVudDogWydSRUZERVMgcHJlZml4JywgY29vcmQxLCBjb29y ZDIsICdyZXBsYWNlZCBzdHJpbmcgb2YgZmlsZScJCQkJLCdPbGQgTlVNQkVSJywnTmV3IE5VTUJF UiddCgkJI0V4YW1wbGU6CQkJWyAgJ1InCQkJLCAtNTA4MDAgLCA2NTEwMCAsICdDIDY1MTAwIDUw ODAwIC4uLnsuLi4ucmVmZGVzPVIxMi4uLn0sCScxMicJICwJJzQnXQoJCQoJCWNvbnRlbnQgPSBj b250ZW50LnJlcGxhY2UoY29tcF9saXN0W2ldW34yXSxjb21wX2xpc3RbaV1bfjJdLnJlcGxhY2Uo JyVzPScgJShhdHRyKSArY29tcF9saXN0W2ldWzBdK2NvbXBfbGlzdFtpXVt+MV0sJyVzPScgJShh dHRyKSArY29tcF9saXN0W2ldWzBdK2NvbXBfbGlzdFtpXVt+MF0pKSAjUmVwbGFjaW5nIGN1cnJl bnQgc3RyaW5nIHdpdGggTmV3IFJFRkRFUwoJCWlmIGxvZyBhbmQgdmVyYm9zZToKCQkJcHJpbnQg J1JlcGxhY2luZyBpbiBzY2ggOiAnLCBjb21wX2xpc3RbaV1bMF0rY29tcF9saXN0W2ldW34xXSwg JyA9PiAnLCBjb21wX2xpc3RbaV1bMF0rY29tcF9saXN0W2ldW34wXQoJCQlwcmludCAnPDw8ICcs IGNvbXBfbGlzdFtpXVt+Ml0KCQkJcHJpbnQgJz4+PiAnLCBjb21wX2xpc3RbaV1bfjJdLnJlcGxh Y2UoJyVzPScgJShhdHRyKSArY29tcF9saXN0W2ldWzBdK2NvbXBfbGlzdFtpXVt+MV0sJyVzPScg JShhdHRyKSArY29tcF9saXN0W2ldWzBdK2NvbXBfbGlzdFtpXVt+MF0pCgkJCXByaW50ICctLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nCgoJCWlmIGF0dHI9PSdyZWZkZXMnOgoJ CQlmb3IgcGNiX2luZGV4IGluIHJhbmdlKDAsbGVuKHBjYmNvbnRlbnQpKTogI1NlYXJjaCBjdXJy ZW50IFJFRkRFUyBpbiBwY2IgZmlsZXMgYW5kIEFERCBjb250ZXh0IG9mIFJFRkRFUyAoYXBwcm9w cmlhdGUgZWxlbWVudCBvbnRleCBjb21wbGV0ZWx5KSB0byBsaXN0IG9mIHJlcGxhY2VzCgkJCQll bGVtID0gcmUuc2VhcmNoKCdFbGVtZW50XFtbXltcXV0qIiVzIlteW1xdXSpcXScgJShjb21wX2xp c3RbaV1bMF0rY29tcF9saXN0W2ldW34xXSkscGNiY29udGVudFtwY2JfaW5kZXhdICxmbGFncz1y ZS5ET1RBTEwpCgkJCQlpZiBlbGVtOgoJCQkJCXRyeToKCQkJCQkJcGNiX3JlcGxhY2VzLmFwcGVu ZChbcGNiX2luZGV4LGVsZW0uZ3JvdXAoKSxlbGVtLmdyb3VwKCkucmVwbGFjZShjb21wX2xpc3Rb aV1bMF0rY29tcF9saXN0W2ldW34xXSxjb21wX2xpc3RbaV1bMF0rY29tcF9saXN0W2ldW34wXSld KSAKCQkJCQlleGNlcHQ6cGNiX3JlcGxhY2VzID0gIFtbcGNiX2luZGV4LGVsZW0uZ3JvdXAoKSxl bGVtLmdyb3VwKCkucmVwbGFjZShjb21wX2xpc3RbaV1bMF0rY29tcF9saXN0W2ldW34xXSxjb21w X2xpc3RbaV1bMF0rY29tcF9saXN0W2ldW34wXSldXSAjQ3JlYXRlIG5ldyByZXBsYWNlIGxpc3QK CQkJCQlpZiBsb2cgYW5kIHZlcmJvc2U6CgkJCQkJCXByaW50ICdSZXBsYWNpbmcgaW4gcGNiOiAn LCBjb21wX2xpc3RbaV1bMF0rY29tcF9saXN0W2ldW34xXSwgJyA9PiAnLCBjb21wX2xpc3RbaV1b MF0rY29tcF9saXN0W2ldW34wXQoJCQkJCQlwcmludCAnPDw8ICcsIGVsZW0uZ3JvdXAoKQoJCQkJ CQlwcmludCAnPj4+ICcsIGVsZW0uZ3JvdXAoKS5yZXBsYWNlKGNvbXBfbGlzdFtpXVswXStjb21w X2xpc3RbaV1bfjFdLGNvbXBfbGlzdFtpXVswXStjb21wX2xpc3RbaV1bfjBdKQoJCQkJCQlwcmlu dCAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJwoKCWlmICdwY2JfcmVwbGFj ZXMnIGluIHZhcnMoKTogI0lmIFBDQiByZXBsYWNlIGxpc3QgYXJlIGV4aXN0cwoJCWZvciBpIGlu IHBjYl9yZXBsYWNlczoJI1JlcGxhY2UgY29ycmVzcG9uZGluZyBlbGVtZW50cyBjb250ZXh0cywg Y29udGFpbmluZyByZXBsYWNlZCBSRUZERVNzCgkJCXBjYmNvbnRlbnRbaVswXV0gPSBwY2Jjb250 ZW50W2lbMF1dLnJlcGxhY2UoaVsxXSxpWzJdKQoKIyBXcml0ZSBjdXJyZW50IHJlcGxhY2VkIGNv bnRlbnQgKHNjaGVtYXRpYykgdG8gY3VycmVudCBzY2hlbWF0aWMgZmlsZQoJZmlsZT1vcGVuKGZp bGVuYW1lK1N1ZmZpeCwnd3QnKQoJZmlsZS53cml0ZShjb250ZW50KQoJZmlsZS5jbG9zZSgpCgoj V3JpdGUgYWxsIFBDQiByZXBsYWNlZCBjb250ZW50cyB0byBjb3JyZXNwb25pbmcgUENCIGZpbGUK Zm9yIGkgaW4gcmFuZ2UoMCxsZW4ocGNiY29udGVudCkpOgoJZmlsZT1vcGVuKHBjYm5hbWVzW2ld K1N1ZmZpeCwnd3QnKQoJZmlsZS53cml0ZShwY2Jjb250ZW50W2ldKQoJZmlsZS5jbG9zZSgpCgoj UHJpbnQgbG9nIG1lc3NhZ2UgdG8gc3Rkb3V0IChzdW1tYXJ5IHJlcGxhY2VkKQppZiBsb2c6Cglw cmludCAnU3VtbWFyeSByZXBsYWNlZCcKCWZvciBpIGluIGNvbXBfbGlzdDoKCQlwcmludCBpWzBd K2lbfjFdLCAnID0+ICcsIGlbMF0raVt+MF0KCQkKCg== --089e0149c5060b3ee304f13c8af8--