www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2016/05/18/18:23:02

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=date:from:to:cc:subject:message-id:in-reply-to:references
:mime-version;
bh=n3PGqhDNqmfIDMMY8h+Se5QC6Q+pH12ZKCyYpxHdMGE=;
b=Z/QbPaonCLmvWXna0sHcgIexEI/205CWNpMMdUnqvXwtyI29kC/niJce4r7uVZVQjX
bhPHJGxs1rCfQs5jLyAdIrPLKhRToYd37s01t4U9RuNedCc+nipZQfxbcAciXgwT8Y4+
XHZNiNwJgUvDW0HBTVKfr/rjB6O5LA12+1i0ikTWe9vrg3v55lqQ4manZ3djKm6l0/mO
BjacZpUAqtyEBW0+snXsGpPI65t8UtUNN+kd9Rg3NuYO5bSY32+AmUyideU4jGlOf4Cc
bQ/VhAykraULAjh6ms1QmrWocgJk/iheDaLsKfxkTSMnkHfKOWzaBzR9hJoiNqELaqu5
XiOw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20130820;
h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to
:references:mime-version;
bh=n3PGqhDNqmfIDMMY8h+Se5QC6Q+pH12ZKCyYpxHdMGE=;
b=RtZKCcxXUwutDb6zJ7It3UsG5OODaHmGzgpylDFE3s8ObtzjY2LfgdgB1yHZC4xJGv
eePeqwEbcvYduF2TeAYPYDfVIhJFCaqs+NigJmkupnDXOeqyWIjUIgr0HnBa5YNmYSZw
AJa3x6Di5th0TovQS9GLnUcWr/qU4LquI4KdMpu/kQ3SKPqUplAlNyK+TEWINwuHL0xb
HatA6mzD9wpOHVx8XVyVw8U9tVEw1uQ7ssMXubuhlhbQInMDMJO1oJSfxzOlrv7xR513
7QZfPcOyduyFg+zx6Ukuoiv7b8WLfymxIVSTloZaKORDp+iJlyV5r7QdN4AA2ZtCmWu4
7ulw==
X-Gm-Message-State: AOPr4FX9hFsRIxwwZB8vQ2IGpoASWXBbaUlQ8chNwGQN9ATPlKMjJCZUPSqXaZ4AYnikSw==
X-Received: by 10.194.116.9 with SMTP id js9mr11325712wjb.112.1463610165049;
Wed, 18 May 2016 15:22:45 -0700 (PDT)
Date: Thu, 19 May 2016 00:22:40 +0200
From: "Nicklas Karlsson (nicklas DOT karlsson17 AT gmail DOT com) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com>
To: geda-user AT delorie DOT com
Cc: Peter Clifton <petercjclifton AT googlemail DOT com>
Subject: Re: [geda-user] response about DRC stuff
Message-Id: <20160519002240.5ff52f8cfdae85db0595a24d@gmail.com>
In-Reply-To: <CAC4O8c-aXjQZLJnFuL0jqpaHEOzNZdXV2AjUqdfS10ea7ebN1g@mail.gmail.com>
References: <CAC4O8c-aXjQZLJnFuL0jqpaHEOzNZdXV2AjUqdfS10ea7ebN1g AT mail DOT gmail DOT com>
X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu)
Mime-Version: 1.0
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

This is a multi-part message in MIME format.

--Multipart=_Thu__19_May_2016_00_22_40_+0200_zM+o7cCV5lI_rFPo
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Attached file which is a C file, it currently have no connection with real code although comments may be useful.

Clearance is checked between all combionations of nets. Since there is a function to figure out clearance value used between each combination of nets it should be simple to add netclasses.

Clearance precedence which may be shown graphically as hierachy is probably a good solution: global default value, net classes, between individual nets.

It would be possible to extend to between different layers and for individual drawing primitives if needed.


Nicklas Karlsson



> >> Do you think that between us we can work out a plan to hit improved DRC for
> >> multiple netclass with different clearance rules? I will probably make some
> 
> How are you intending to do this?  It might be easiest to just re-run the entire
> DRC with different settings, then throw out everything that doesn't involve
> objects with different netclasses.  This is maybe a little hackish but DRC is
> already sort of due for a rewrite anyway.  I guess this wouldn't help with
> incremental if that's your preferred way.
> 
> However as John has pointed out in the past existing DRC is no good between
> layers etc. so depending on what you want to do this might not be enough.
> I think fixing DRC to be fully conscious of interlayer interactions
> might be better
> done with a rewrite than by trying to change the existing stuff.
> 
> Britton

--Multipart=_Thu__19_May_2016_00_22_40_+0200_zM+o7cCV5lI_rFPo
Content-Type: application/octet-stream;
 name="clearance_c"
Content-Disposition: attachment;
 filename="clearance_c"
Content-Transfer-Encoding: base64

LyoKICogY2xlYXJhbmNlLmMKICoKICogIENyZWF0ZWQgb246IE1heSAxNiwgMjAxNgogKiAgICAg
IEF1dGhvcjoga2FybG5pY2sKICovCgovKiBBbGdvcml0aG0gY2xlYXJhbmNlOgogKiAwLiBBc3Np
Z24gYSBuZXQgbmFtZSB0byBhbGwgY29wcGVyIG9iamVjdHMvImRyYXdpbmcgcHJpbWl0aXZlcyIs
IHRoaXMgd2lsbAogKiAgICBiZSBhbGwgZHJhd2luZyBwcmltaXRpdmVzIG9uIGNvcHBlciBsYXll
ci4gT3Igb3RoZXIgbWV0aG9kIHRvIG1ha2Ugc3VyZSBhbGwKICogICAgZHJhd2luZyBwcmltaXRp
dmVzIGJlbG9uZyB0byBhIG5ldC4KICoKICogMS4gRm9yIGVhY2ggbmV0IGluY2x1ZGluZyBvYmpl
Y3RzIG5vdCBhc3NpZ25lZCB0byBuZXQuCiAqIDEuMS4gRmluZCBhbGwgZHJhd2luZyBwcmltaXRp
dmVzIGJlbG9uZ2luZyB0byB0aGlzIG5ldC4KICogMS4xLjEuIEZvciBlYWNoIG5ldCBleGNlcHQg
c2FtZSBuZXQuCiAqIDEuMS4yLiBUZW1wb3JhcnkgZ3JvdyBkcmF3aW5nIHByaW1pdGl2ZXMgZm9y
IHRoaXMgbmV0IHdpdGggY2xlYXJhbmNlIGJldHdlZW4KICogICAgICAgIHRoaXMgYW5kIG90aGVy
IG5ldC4KICogMS4xLjMuIENoZWNrIGZvciBpbnRlcnNlY3Rpb24gYmV0d2VlbiBvYmplY3RzIGlu
IHRoaXMgbmV0IGFuZCBvdGhlciBuZXQuCiAqCiAqIEFsZ29yaXRobSBjaGVjayBpZiBuZXRzIGFy
ZSB0byBjbG9zZSBidXQgZG8gbm8gZGV0ZXJtaW5lIGRpc3RhbmNlIGJldHdlZW4gdGhlbS4KICoK
ICogRm9yIGNsZWFyYW5jZXMgcHJlY2VkZW5jZSBpcyB1c2VmdWw6CiAqICAgMS4gR2xvYmFsIHZh
bHVlLgogKiAgIDIuIE5ldCBjbGFzcy4KICogICAzLiBOZXQuCiAqICAgNC4gSW5kaXZpZHVhbCBk
cmF3aW5nIHByaW1pdGl2ZS4KICoKICogT25lIG5pY2UgcHJvcGVydHkgbWV0aG9kIHRvIGNoZWNr
IGNsZWFyYW5jZSBpcyB0aGUgcG9zc2liaWxpdHkgdG8gdmlzdWFsaXplIGNsZWFyYW5jZQogKiBz
aXplIGluIHBhcnRpY3VsYXIgdG8gc2hvdyB0aGUgb3ZlcmxhcC4gVGhlcmUgYXJlIHR3byBwb3Nz
aWJpbGl0aWVzIGZyb20gdGhpcyBuZXRzCiAqIHBvaW50IG9mIHZpZXcgb3Igb3RoZXIgbmV0cyBw
b2ludCBvZiB2aWV3LgogKgogKiBUaGVyZSBpcyBhbHNvIGEgbmVlZCB0byBjaGVjayBjbGVhcmFu
Y2UgdmFsdWUgYWdhaW5zdCBtaW5pbXVtIGNvcHBlciBzcGFjaW5nIGZvcgogKiBlYWNoIGxheWVy
LiBJZiB0aGVyZSBpcyBhIHZlbmRvciByZXNvdXJjZSBmaWxlIGl0IGlzIHVzZWZ1bCB0byBjaGVj
ayBtaW5pbXVtIGNvcHBlcgogKiBzcGFjaW5nIGZvciB0aGlzIGFuZC9vciBtYXliZSB1c2UgdGhl
IGFjdHVhbCBjb3BwZXIgdGhpY2tuZXNzIHRvIGdldCBudW1iZXIgY29ycmVjdC4KICogQ29wcGVy
IHRoaWNrbmVzcyBwcm9iYWJseSBtYXkgbWFrZSBtb3JlIG9mIGEgZGlmZmVyZW5jZSB0aGFuIG1h
bnVmYWN0dXJlci4KICoKICogQ29wcGVyIHBvdXI6CiAqIEZvciBjbGVhcmFuY2UgYmV0d2VlbiBh
IG5ldCBhbmQgYSBjb3BwZXIgYXJlYS4gRWFjaCBuZXQgd2lsbCBtYWtlIGEgY3V0IG91dAogKiBp
biBjb3BwZXIgYXJlYXMgYmVsb25naW5nIHRvIG90aGVyIG5ldHMgd2l0aCB0aGUgc2l6ZSBlcXVh
bCB0byB0aGUgY2xlYXJhbmNlCiAqIHZhbHVlLiBDdXJyZW50IG1ldGhvZCB0byBqb2luIG9iamVj
dHMgdG8gY29wcGVyIGFyZWFzIHdpdGggdGhlICJqIiBrZXkgbWF5CiAqIHN0aWxsIGJlIHVzZWZ1
bC4gRm9yIG9iamVjdHMgbm90IGpvaW5lZCB0byAib3duIiBuZXQgdGhlcmUgd291bGQgYmUgYSBj
bGVhcmFuY2UKICogdmFsdWUgZm9yIHNhbWUgbmV0IGp1c3QgYXMgZm9yIG90aGVycy4gSXQgbWln
aHQgYmUgdXNlZnVsIHdpdGggYSBmbGFnIHdoaWNoIGlzCiAqIGEga2luZCBvZiBhdHRyaWJ1dGUg
b3Igc2ltaWxhciB0byB0ZWxsIHdoaWNoIG9iamVjdHMgYXJlIGNvcHBlciBhcmVhcyBpbnN0ZWFk
CiAqIG9mIGFzc3VtaW5nIHBvbHlnb25zIGFyZSBjb3BwZXIgYXJlYXMuIEl0IGlzIGluIHBhcnRp
Y3VsYXIgdXNlZnVsIHdpdGgKICogcG9zc2liaWxpdHkgdG8gdXNlIHBvbHlnb25zIHdoaWNoIGFy
ZSBub3QgY29wcGVyIGFyZWFzLgogKgogKiBJdCB3b3VsZCBwcm9iYWJseSBhbHNvIGJlIGdvb2Qg
d2l0aCBwb3NzaWJpbGl0eSBmb3IgYSBmbGFnIG9uIGRyYXdpbmcgcHJpbWl0aXZlcwogKiB0byBt
YXJrIHRoZXkgYXJlIGN1dCBvdXRzIGFsdGhvdWdoIHRoZXkgaGF2ZSBub3RoaW5nIHRvIGRvIHdp
dGggY2xlYXJhbmNlLgogKgogKiBHcm93aW5nIHRoZSBjb3BwZXIgb2JqZWN0czoKICogTGluZSBz
ZWdtZW50cyB3aXRoIHJvdW5kZWQgZWRnZSBkaWFtZXRlciBlcXVhbCB0byBsaW5lIHdpZHRoIGNv
dWxkIGJlIGdyb3duIGJ5CiAqIGluY3JlYXNpbmcgbGluZSB3aWR0aC4KICoKICogT2JqZWN0cyB3
aXRoIHNoYXJwIG91dGVyIGNvcm5lcnMgbGlrZSBwb2x5Z29ucyBhbmQgc3F1YXJlIGVkZ2VzIG11
c3QgYmUgZ3Jvd24KICogd2l0aCBhIHJvdW5kZWQgb3V0ZXIgY29ybmVyIG9yIHRoZXkgd2lsbCB3
YXN0ZSBzcGFjZS4KICoKICogVG8gZ3JvdyBhbiBvdXRlciBjb3JuZXIgd2l0aCBhIHNoYXJwIGVk
Z2UgYSBjaXJjbGUgc2VnbWVudCB3aWR0aCBsaW5lIHdpZHRoIGVxdWFsCiAqIHRvIGRpc3RhbmNl
IHRvIGdyb3cgd2lsbCBwcm9iYWJseSBtYWtlIHRoZSB0cmljay4KICoKICogSW50ZXJzZWN0aW9u
czoKICoKICogQmFzaWMgbmVlZCBmb3IgZ2VvbWV0cmljIGxpYnJhcnkgaXMgY2FsY3VsYXRlIGlu
dGVyc2VjdGlvbiBiZXR3ZWVuIGRyYXdpbmcKICogcHJpbWl0aXZlcyB1c2VkIGluIHBjYiBhbmQg
Y3V0IG91dHMgZm9yIGRpc3BsYXkgb24gc2NyZWVuLiBJbnRlcnNlY3Rpb24gaXMKICogdXNlZCB0
byBmaWd1cmUgb3V0IHdoaWNoIGRyYXdpbmcgcHJpbWl0aXZlcyBvdmVybGFwIGZvciBjb25uZWN0
aXZpdHkgY2hlY2sgYW5kCiAqIGEgZ3Jvd24gY29weSBmb3IgY2xlYXJhbmNlIGNoZWNrLiBHZXJi
ZXIgZmlsZXMgc2hvdWxkIGhhdmUgdGhlcmUgb3duIG1lY2hhbmlzbQogKiBmb3IgY3V0IG91dHMg
YnkgYSBwb2xhcml0eSBtZWNoYW5pc20gYW5kIGlmIHRoaXMgd29yayBjdXQgb3V0IGlzIG9ubHkg
bmVlZGVkCiAqIGZvciBzY3JlZW4gZGlzcGxheS4gSXQgaXMgcG9zc2libGUgdGhlcm1hbHMgdXNl
IHRoaXMgbWVjaGFuaXNtLgogKgogKiBEcmF3aW5nIHByaW1pdGl2ZXMgYXJlIGFzc3VtZWQgdG8g
YmU6IGxpbmVzIHdpdGggcm91bmRlZCBlbmRzLCBjaXJjbGUgc2VnbWVudHMKICogd2l0aCByb3Vu
ZGVkIGVuZHMsIGNpcmNsZXMgd2hpY2ggZXNzZW50aWFsbHkgYXJlIGVxdWFsIHRvIHplcm8gbGVu
Z3RoIGxpbmVzLAogKiBwb2x5Z29ucyBhbmQgc3F1YXJlcyB3aGljaCBtYXkgYmUgZHJhd24gYnkg
YSBwb2x5Z29uLgoKICogSXQgaXMgYXNzdW1lZCBjdXJyZW50IGFsZ29yaXRobSB0byBjYWxjdWxh
dGUgaW50ZXJzZWN0aW9ucyB3aXRoaW4gcGNiIGlzIGdvb2QKICogZW5vdWdoIG90aGVyd2lzZSB0
aGVyZSBhcmUgb3RoZXIgbGlicmFyaWVzOgogKiAgIDEuIENsaXBwZXIgd2hpY2ggU3RlcGhhbiBC
w7Z0dGNoZXIgYnJvdWdodCB1cCBhIHNob3J0IHdoaWxlIGFnbyBhbmQgc3RhcnRlZAogKiAgICAg
IHRvIHdyaXRlIG9uIGEgZ2VyYmVyIGZpbGUgY2xlYXJhbmNlIGNoZWNrZXIuCiAqICAgICAgaHR0
cDovL2FuZ3Vzai5jb20vZGVscGhpL2NsaXBwZXIucGhwCiAqICAgICAgaHR0cDovL3d3dy5wc2p0
Lm9yZy9jb2RlL2RyYy9zY3JlZW5zaG90LnBuZwogKiAgICAgIGh0dHA6Ly93d3cucHNqdC5vcmcv
Y29kZS8KICogICAyLiBDZ2FsIHdoaWNoIGhhdmUgYW4gaW1wcmVzc2l2ZSBkZXZlbG9wZXIgbGlz
dCBhbmQgdGhlc2UgcGVvcGxlIGNhbid0CiAqICAgICAgc29sdmUgYSBwcm9ibGVtIEkgaGF2ZSBu
byBpZGVhIHdoZXJlIHRvIGxvb2suIEEgdHlwaWNhbCBkZXZlbG9wZXIgb24gY2dhbAogKiAgICAg
IGRvIG1hdGhlbWF0aWNhbCByZXNlYXJjaC4KICogICAgICBodHRwOi8vd3d3LmNnYWwub3JnCiAq
ICBJZiB0aGVyZSBpcyBhIG5lZWQgZm9yIGEgZ2VvbWV0cmljIGxpYnJhcnkgaW4gcGNiIGNnYWwg
aXMgcHJvYmFibHkgdGhlIGNob2ljZS4KICoKICogIEl0IGlzIGFzc3VtZWQgZ2VvbWV0cmljIGxp
YnJhcnkgYWxzbyBpcyB1c2VmdWwgdG8gY2FsY3VsYXRlIHdoaWNoIG9iamVjdHMKICogIGJlbG9u
ZyB0byB3aGljaCBuZXQuCiAqLwojaW5jbHVkZSA8bWF0aC5oPgoKdHlwZWRlZiBzdHJ1Y3R7Cn0g
bmV0X3R5cGU7Cgp0eXBlZGVmIHN0cnVjdHsKfSBjaXJjbGVfdHlwZTsKCnR5cGVkZWYgc3RydWN0
ewp9IGxpbmVfdHlwZTsKCnR5cGVkZWYgc3RydWN0ewp9IHBvbHlnb25fdHlwZTsKCnR5cGVkZWYg
c3RydWN0ewp9IGFyY190eXBlOwoKdHlwZWRlZiBzdHJ1Y3R7CiAgZW51bSB7Y2lyY2xlX2VudW0s
IGxpbmVfZW51bSwgcG9seWdvbl9lbnVtLCBhcmNfZW51bX0gdHlwZTsKICB1bmlvbnsKICAgIGNp
cmNsZV90eXBlIGNpcmNsZTsKICAgIGxpbmVfdHlwZSBsaW5lOwogICAgcG9seWdvbl90eXBlIHBv
bHlnb247CiAgICBhcmNfdHlwZSBhcmM7CiAgfTsKfSBwcmltaXRpdmVfdHlwZTsKCmZsb2F0IGdl
dENsZWFyYW5jZShuZXRfdHlwZSBuZXQxLCBuZXRfdHlwZSBuZXQyKTsgLy8gRmluZCBjbGVhcmFu
Y2UgdmFsdWUgd2hpY2ggc2hvdWxkIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHVzZWQgYmV0d2VlbiBuZXRzLiBUaGVyZSBtYXkgYmUgYQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoaWVyYXJjaHkg
Z2xvYmFsLS0+bmV0IGNsYXNzLT5uZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZXJlIHdvdWxkIHByb2JhYmx5IGJlIGEgbWluaW11bQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3BwZXIgc3Bh
Y2luZyBvbiBlYWNoIGxheWVyIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjbGVhcmFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IHRoZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYW1lIGFzIG1pbmlt
dW0gY29wcGVyIHNwYWNpbmcgYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYWN0dWFsIGxheWVyLgoKdm9pZCBjaGVja0NsZWFyYW5jZSh2b2lkKXsK
ICBpbnQgbmV0OwogIGNvbnN0IG5ldF90eXBlIG5ldHNbXSA9IGdldE5ldHMoKTsgICAgICAgICAg
ICAvLyBMaXN0IG9mIGFsbCBuZXRzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBOZXRzIHNob3VsZCBpZGVhbGx5IGluY2x1ZGUgbmV0cwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtZWQgYnkgZmxv
YXRpbmcgZHJhd2luZyBwcmltaXRpdmVzIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjb25uZWN0ZWQgdG8gYSBuZXQgaW4gbmV0IGxpc3QuCiAg
Y29uc3QgaW50IG5ldHNMZW4gPSBnZXROZXRzTGVuKCk7ICAgICAgICAgICAgIC8vIE51bWJlciBv
ZiBuZXRzCgogIGZvcihuZXQgPSAwOyBuZXQgPCBuZXRzTGVuOyBuZXQrKyl7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZWFjaCBuZXQKICAgICAgY29uc3QgcHJpbWl0
aXZlX3R5cGUgcHJpbWl0aXZlc1tdID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RHJhd2luZyBwcmltaXRpdmVzIGluIHRoaXMgbmV0CiAgICAgICAgICBmaW5kRHJhd2luZ1ByaW1p
dGl2ZXMobmV0c1tuZXRdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhl
IGRyYXdpbmcgcHJpbWl0aXZlcwogICAgICBjb25zdCBpbnQgcHJpbWl0aXZlc0xlbiA9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOdW1iZXIgb2YgZHJhd2luZyBw
cmltaXRpdmVzIGluIHRoaXMgbmV0CiAgICAgICAgICBnZXREcmF3aW5nUHJpbWl0aXZlcyhuZXRz
W25ldF0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgbGVuZ3RoCiAgICAg
IGludCBuZXRPdGhlcjsKCiAgICAgIGZvcihuZXRPdGhlciA9IDA7IG5ldE90aGVyIDwgbmV0c0xl
bjsgbmV0T3RoZXIrKyl7ICAgICAgICAgICAgICAgIC8vIEZvciBlYWNoIG5ldAogICAgICAgICAg
aWYobmV0T3RoZXIgPT0gbmV0KXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTYW1lIG5ldD8KICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjZXB0IHNhbWUgbmV0CiAgICAg
ICAgICB9CgogICAgICAgICAgaW50IHByaW1pdGl2ZTsKICAgICAgICAgIGNvbnN0IGludCBjbGVh
cmFuY2UgPSBnZXRDbGVhcmFuY2UobmV0c1tuZXRdLCBuZXRzW25ldE90aGVyXSk7Ly8gRmluZCBj
bGVhcmFuY2UgdmFsdWUgYmV0d2VlbiB0aGlzIGFuZCBvdGhlciBuZXQKCiAgICAgICAgICBjb25z
dCBwcmltaXRpdmVfdHlwZSBuZXRCbG9hdGVkID0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEJsb2F0ZWQgd2l0aCBjbGVhcmFuY2UgdmFsdWUgZm9yIG90aGVyIG5ldAogICAgICAgICAg
ICAgIGJsb2F0UHJpbWl0aXZlcyhuZXRzW25ldF0sIG5ldHNbbmV0T3RoZXJdLCBjbGVhcmFuY2Up
OyAgICAvLyBCbG9hdCBiZXR3ZWVuIHRoaXMgYW5kIG90aGVyIG5ldAoKICAgICAgICAgIGNvbnN0
IHByaW1pdGl2ZV90eXBlIHByaW1pdGl2ZXNPdGhlcltdID0KICAgICAgICAgICAgICBmaW5kRHJh
d2luZ1ByaW1pdGl2ZXMobmV0c1tuZXRPdGhlcl0pOwoKICAgICAgICAgIGZvcihwcmltaXRpdmUg
PSAwOyBwcmltaXRpdmUgPCBwcmltaXRpdmVzTGVuOyBwcmltaXRpdmUrKyl7ICAgLy8gRm9yIGVh
Y2ggZHJhd2luZyBwcmltaXRpdmUKICAgICAgICAgICAgICBwcmltaXRpdmVfdHlwZSBwcmltaXRp
dmUgPSBwcmltaXRpdmVzT3RoZXJbcHJpbWl0aXZlXTsgICAgLy8gUHJpbWl0aXZlIGluIG90aGVy
IG5ldAogICAgICAgICAgICAgIGlmKGludGVyc2VjdChuZXRCbG9hdGVkLCBwcmltaXRpdmUpKXsg
ICAgICAgICAgICAgICAgICAgICAvLyBCbG9hdGVkIG5ldCBpbnRlcnNlY3Qgd2l0aCBwcmltaXRp
dmUgaW4gb3RoZXIgbmV0PwogICAgICAgICAgICAgICAgICBhcHBlbmRfZHJjX3Zpb2xhdGlvbih2
aW9sYXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAvLyBJbmRpY2F0ZSBlcnJvcgogICAgICAg
ICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQoKICB9Cn0KCmZsb2F0IGdldENsZWFyYW5jZShu
ZXRfdHlwZSBuZXQxLCBuZXRfdHlwZSBuZXQyKXsgICAgICAgICAgICAgICAgICAgICAgIC8vIEZp
Z3VyZSB3aGljaCBjbGVhcmFuY2Ugc2hvbGQgYmUgdXNlZCBiZXR3ZWVuIG5ldHMKICBmbG9hdCBj
bGVhcmFuY2U7CgogIGNsZWFyYW5jZSA9IG5ldEZpbmRDbGVhcmFuY2UobmV0MSwgbmV0Mik7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWdoZXN0IHByZWNlZGVuY2UgYmV0d2VlbiBu
ZXRzCiAgaWYoaXNuYW4oY2xlYXJhbmNlKSl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIENsZWFyYW5jZSBleGlzdD8KICAgICAgY2xlYXJhbmNlID0g
bmV0Q2xhc3NGaW5kQ2xlYXJhbmNlKG5ldDEsIG5ldDIpOyAgICAgICAgICAgICAgICAgICAgLy8g
TmV4dCBwcmVjZWRlbmNlIGFnYWluc3QgbmV0IGNsYXNzZXMKICAgICAgaWYoaXNuYW4oY2xlYXJh
bmNlKSl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xl
YXJhbmNlIGV4aXN0PwogICAgICAgICAgY2xlYXJhbmNlID0gY2xlYXJhbmNlR2xvYmFsKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgZ2xvYmFsIHZhbHVlIGFzc3VtZWQg
dG8gZXhpc3QKICAgICAgfQogIH0KCiAgcmV0dXJuIGNsZWFyYW5jZTsKfQoKdm9pZCBkcmNNaW5p
bXVtQ29wcGVyU3BhY2luZyh2b2lkKXsKICBpbnQgbGF5ZXIsIGxheWVyTGVuOwoKICBmb3IobGF5
ZXIgPSAwOyBsYXllciA8IGxheWVyTGVuOyBsYXllcisrKXsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRm9yIGVhY2ggbGF5ZXIKICAgICAgbmV0X3R5cGUgbmV0OwogICAgICBpbnQgbmV0
TGVuOwoKICAgICAgZm9yKG5ldCA9IDA7IG5ldCA8IGxheWVyTGVuOyBuZXQrKyl7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGVhY2ggbmV0IG9uIGxheWVyCiAgICAgICAgICBu
ZXRfdHlwZSBuZXRPdGhlcjsKICAgICAgICAgIGludCBuZXRPdGhlckxlbjsKCiAgICAgICAgICBm
b3IobmV0T3RoZXIgPSAwOyBuZXRPdGhlciA8IGxheWVyTGVuOyBuZXRPdGhlcisrKXsgICAgICAg
ICAgIC8vIEZvciBlYWNoIG5ldCBvbiBsYXllcgogICAgICAgICAgICAgIGZsb2F0IGNsZWFyYW5j
ZSA9IG5ldENsYXNzRmluZENsZWFyYW5jZShuZXQsIG5ldE90aGVyKTsgICAvLyBGaW5kIGNsZWFy
YW5jZSBiZXR3ZWVuIHRoaXMgbmV0IGFuZCBvdGhlciBuZXQKCiAgICAgICAgICAgICAgaWYoY2xl
YXJhbmNlID4gbWluaW11bUNvcHBlclNwYWNpbmcoKSl7ICAgICAgICAgICAgICAgICAgIC8vIENs
ZWFyYW5jZSA+IG1pbmltdW0gY29wcGVyIHNwYWNpbmcgZm9yIHRoaXMgbGF5ZXI/CiAgICAgICAg
ICAgICAgICAgIGFwcGVuZF9kcmNfdmlvbGF0aW9uKHZpb2xhdGlvbik7ICAgICAgICAgICAgICAg
ICAgICAgIC8vIEluZGljYXRlIGVycm9yIGJ1dCBkbyBub3QgZm9yY2UgdXNlCiAgICAgICAgICAg
ICAgfQogICAgICB9CiAgfQp9Cg==

--Multipart=_Thu__19_May_2016_00_22_40_+0200_zM+o7cCV5lI_rFPo--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019