[tuhopuu-devel] Percent Loopcut Patch

Johnny Matthews tuhopuu-devel@blender.org
Mon, 22 Dec 2003 09:35:29 -0600


This is a multi-part message in MIME format.

------_=_NextPart_001_01C3C8A1.3ABEBC47
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_002_01C3C8A1.3ABEBC47"


------_=_NextPart_002_01C3C8A1.3ABEBC47
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Here is a patch that does allows for % loopcut, with an option for
smooth cutting. Here is a thread about the development for it.
=20
http://www.blender.org/modules.php?op=3Dmodload&name=3DphpBB2&file=3Dview=
topic
&t=3D2546
=20
If I need to do anything else with it, let me know.
=20
Johnny Matthews (guitarGeek)
DBA / Programmer
Greenville College
Johnny.Matthews@greenville.edu
=20

------_=_NextPart_002_01C3C8A1.3ABEBC47
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:st1=3D"urn:schemas-microsoft-com:office:smarttags" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">


<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 10">
<meta name=3DOriginator content=3D"Microsoft Word 10">
<link rel=3DFile-List href=3D"cid:filelist.xml@01C3C86E.EFEA8DF0">
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"PlaceType"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"PlaceName"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"place"/>
<!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:DoNotRelyOnCSS/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:Zoom>200</w:Zoom>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:DocumentKind>DocumentEmail</w:DocumentKind>
  <w:EnvelopeVis/>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAutoSig, li.MsoAutoSig, div.MsoAutoSig
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
span.EmailStyle17
	{mso-style-type:personal-compose;
	mso-style-noshow:yes;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:Arial;
	mso-ascii-font-family:Arial;
	mso-hansi-font-family:Arial;
	mso-bidi-font-family:Arial;
	color:windowtext;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
span.GramE
	{mso-style-name:"";
	mso-gram-e:yes;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */=20
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";}
</style>
<![endif]-->
</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple =
style=3D'tab-interval:.5in'>

<div class=3DSection1>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>Here is a patch that does <span =
class=3DGramE>allows</span>
for % <span class=3DSpellE>loopcut</span>, with an option for smooth =
cutting.
Here is a thread about the development for =
it.<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><font
size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;font-family:Arial'><a
href=3D"http://www.blender.org/modules.php?op=3Dmodload&amp;name=3DphpBB2=
&amp;file=3Dviewtopic&amp;t=3D2546">http://www.blender.org/modules.php?op=
=3Dmodload&amp;name=3DphpBB2&amp;file=3Dviewtopic&amp;t=3D2546</a><o:p></=
o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>If I need to do anything else with it, let me =
know.<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoAutoSig><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt;mso-no-proof:yes'>Johnny Matthews =
(guitarGeek)<o:p></o:p></span></font></p>

<p class=3DMsoAutoSig><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt;mso-no-proof:yes'>DBA / Programmer<o:p></o:p></span></font></p>

<p class=3DMsoAutoSig><st1:place><st1:PlaceName><font size=3D3
  face=3D"Times New Roman"><span =
style=3D'font-size:12.0pt;mso-no-proof:yes'>Greenville</span></font></st1=
:PlaceName><span
 style=3D'mso-no-proof:yes'> </span><st1:PlaceType><span =
style=3D'mso-no-proof:
  yes'>College</span></st1:PlaceType></st1:place><span =
style=3D'mso-no-proof:
yes'><o:p></o:p></span></p>

<p class=3DMsoAutoSig><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt;mso-no-proof:yes'>Johnny.Matthews@greenville.edu<o:p></o:p></span>=
</font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>
=00
------_=_NextPart_002_01C3C8A1.3ABEBC47--

------_=_NextPart_001_01C3C8A1.3ABEBC47
Content-Type: application/octet-stream;
	name="loopcut.diff"
Content-Transfer-Encoding: base64
Content-Description: loopcut.diff
Content-Disposition: attachment;
	filename="loopcut.diff"

SW5kZXg6IHR1aG9wdXUyL3NvdXJjZS9ibGVuZGVyL3NyYy9lZGl0bWVzaC5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnNyb290L3R1aG9wdXUvdHVob3B1dTIvc291cmNlL2JsZW5kZXIvc3JjL2Vk
aXRtZXNoLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDcKZGlmZiAtcjEuNDcgZWRpdG1lc2gu
YwoyMjYwYTIyNjEsMjM0MAo+IAo+IAo+IHN0YXRpYyBFZGl0RWRnZSAqZmluZG5lYXJlc3RmbGFn
Z2VkZWRnZSgpCj4gewo+IAlFZGl0RWRnZSAqY2xvc2VzdCwgKmVlZDsKPiAJc2hvcnQgZm91bmQ9
MCwgbXZhbFsyXTsKPiAJZmxvYXQgZGlzdGFuY2VbMl0sIHYxWzJdLCB2MlsyXSwgbXZhbDJbMl07
Cj4gCQo+IAljYWxjX21lc2h2ZXJ0c19leHRfZjIoKTsgICAgIAkvKnNldHMgKGV2ZS0+ZiAmIDIp
IGZvciB2ZXJ0aWNlcyB0aGF0IGFyZW4ndCB2aXNpYmxlKi8KPiAJCj4gCWlmKEcuZWRlZC5maXJz
dD09MCkgcmV0dXJuIE5VTEw7Cj4gCWVlZD1HLmVkZWQuZmlyc3Q7CQo+IAljbG9zZXN0PU5VTEw7
Cj4gCQo+IAkvKiByZXNldCB0ZXN0IGZsYWdzICovCj4gCXdoaWxlKGVlZCl7CQo+IAkJZWVkLT5m
ICY9IH40Owo+IAkJZWVkPWVlZC0+bmV4dDsKPiAJfQo+IAkKPiAJZ2V0bW91c2Vjb19hcmVhd2lu
KG12YWwpOwo+IAltdmFsMlswXSA9IChmbG9hdCltdmFsWzBdOyAgICAJLyogY2FzdCB0byBmbG9h
dCBiZWNhdXNlIG9mIHRoZSBwZGlzdCBmdW5jdGlvbiBvbmx5IHRha2luZyBmbG9hdHMuLi4qLwo+
IAltdmFsMlsxXSA9IChmbG9hdCltdmFsWzFdOwo+IAkKPiAJZWVkPUcuZWRlZC5maXJzdDsKPiAJ
d2hpbGUoZWVkKSB7ICAgICAgCQkJCQkvKmNvbXBhcmUgdGhlIGRpc3RhbmNlIHRvIHRoZSByZXN0
IG9mIHRoZSBlZGdlcyBhbmQgZmluZCB0aGUgY2xvc2VzdCBvbmUqLwo+IAkJaWYoZWVkLT5mICYg
OCkKPiAJCXsKPiAJCQlpZiggISgoZWVkLT52MS0+ZiAmIDIpICYmIChlZWQtPnYyLT5mICYgMikp
KXsgCS8qIEFyZSBib3RoIHZlcnRpY2VzIG9mIHRoZSBlZGdlIGludmlzaWJsZT8gdGhlbiBkb24n
dCBzZWxlY3QgdGhlIGVkZ2UqLwo+IAkJCQl2MVswXSA9IGVlZC0+djEtPnhzOyAgCQkJLyogb2gg
Z3JlYXQhIHRoZSBzY3JlZW5jb29yZGluYXRlcyBhcmUgbm90IGFuIGFycmF5Li4uLmdycnJyKi8K
PiAJCQkJdjFbMV0gPSBlZWQtPnYxLT55czsKPiAJCQkJdjJbMF0gPSBlZWQtPnYyLT54czsKPiAJ
CQkJdjJbMV0gPSBlZWQtPnYyLT55czsKPiAJCQkJCj4gCQkJCWRpc3RhbmNlWzFdID0gUGRpc3RW
TDJEZmwobXZhbDIsIHYxLCB2Mik7Cj4gCQkJCQo+IAkJCQlpZihkaXN0YW5jZVsxXTw1MCl7ICAg
IAkJCS8qIFRPRE86IG1ha2UgdGhpcyBtYXhpbXVtIHNlbGVjdGluZyBkaXN0YW5jZSBzZWxlY3Rh
YmxlICh0aGUgc2FtZSB3aXRoIHZlcnRpY2Ugc2VsZWN0PykgKi8KPiAJCQkJCWlmKGZvdW5kKSB7
ICAgICAgICAgICAgICAJLypkbyB3ZSBoYXZlIHRvIGNvbXBhcmUgaXQgdG8gb3RoZXIgZGlzdGFu
Y2VzPyAqLwo+IAkJCQkJCWlmIChkaXN0YW5jZVsxXTxkaXN0YW5jZVswXSl7Cj4gCQkJCQkJCWRp
c3RhbmNlWzBdPWRpc3RhbmNlWzFdOwo+IAkJCQkJCQljbG9zZXN0PWVlZDsgIAkvKnNhdmUgdGhl
IGN1cnJlbnQgY2xvc2VzdCBlZGdlKi8KPiAJCQkJCQl9Cj4gCQkJCQl9IGVsc2Ugewo+IAkJCQkJ
CWRpc3RhbmNlWzBdPWRpc3RhbmNlWzFdOwo+IAkJCQkJCWNsb3Nlc3Q9ZWVkOwo+IAkJCQkJCWZv
dW5kPTE7Cj4gCQkJCQl9Cj4gCQkJCX0KPiAJCQl9Cj4gCQl9Cj4gCQllZWQ9IGVlZC0+bmV4dDsK
PiAJfQo+IAkKPiAJLyogcmVzZXQgZmxhZ3MgKi8KPiAJZWVkPUcuZWRlZC5maXJzdDsKPiAJd2hp
bGUoZWVkKSB7CQkKPiAJCWVlZC0+ZiAmPSB+KDJ8NCk7Cj4gCQllZWQtPnYxLT5mICY9IH4oMik7
Cj4gCQllZWQtPnYyLT5mICY9IH4oMik7CQkJCj4gCQllZWQ9IGVlZC0+bmV4dDsJCQkKPiAJfQo+
IAo+IAlpZihmb3VuZCkgcmV0dXJuIGNsb3Nlc3Q7Cj4gCWVsc2UgcmV0dXJuIE5VTEw7Cj4gfQo+
IHNob3J0IGhhc3NoYXJlZGVkZ2UoRWRpdFZlcnQqIHYxLEVkaXRWZXJ0KiB2MikKPiB7Cj4gCWlm
KHYxID09IHYyKQo+IAkJcmV0dXJuIDA7Cj4gCUVkaXRFZGdlICplZWQgPSBHLmVkZWQuZmlyc3Q7
Cj4gCXdoaWxlKGVlZCl7Cj4gCQlpZigodjEgPT0gZWVkLT52MSAmJiB2MiA9PSBlZWQtPnYyKSB8
fCAodjIgPT0gZWVkLT52MSAmJiB2MSA9PSBlZWQtPnYyKSkKPiAJCQlyZXR1cm4gMTsKPiAJCWVl
ZCA9IGVlZC0+bmV4dDsKPiAJfQo+IAlyZXR1cm4gMDsKPiB9Cj4gCj4gCj4gCjI2NjcsMjY3MmMy
NzQ3LDI3NTkKPCAJCXdoaWxlKGVlZCkgewkJCjwgCQkJaWYoZWVkLT5mICYgOCl7CjwgCQkJCWVl
ZC0+djEtPmYgfD0gMTsKPCAJCQkJZWVkLT52Mi0+ZiB8PSAxOwo8IAkJCX0JCQkKPCAJCQllZWQ9
IGVlZC0+bmV4dDsJCQkKLS0tCj4gCQlpbnQgaT0wLCBlY3QgPSAwOwo+IAkJd2hpbGUoZWVkKQo+
IAkJewkKPiAJCQlpZihlZWQtPmYgJiA4KQo+IAkJCQllY3QrKzsKPiAJCQllZWQgPSBlZWQtPm5l
eHQ7Cj4gCQl9Cj4gCQlFZGl0RWRnZSoqIHRhZ2dlZCA9IChFZGl0RWRnZSoqKW1hbGxvYyhlY3Qq
c2l6ZW9mKEVkaXRFZGdlKikpOwo+IAkJRWRpdEVkZ2UqKiB0YWdnZWRzcmNoID0gKEVkaXRFZGdl
KiopbWFsbG9jKGVjdCpzaXplb2YoRWRpdEVkZ2UqKSk7Cj4gCQlmb3IoaT0wO2k8ZWN0O2krKykK
PiAJCXsKPiAJCQl0YWdnZWRbaV0gPSBOVUxMOwo+IAkJCXRhZ2dlZHNyY2hbaV0gPSBOVUxMOwoy
Njc0LDI2NzZkMjc2MAo8IAkJCjwgCQlzdWJkaXZpZGVmbGFnKDgsIDAsIEJfS05JRkUpOyAvKiBC
X0tOSUZFIHRlbGxzIHN1YmRpdmlkZSB0aGF0IGVkZ2VmbGFncyBhcmUgYWxyZWFkeSBzZXQgKi8K
PCAJCQoyNjc4LDI2ODBjMjc2MiwyODQ0CjwgCQl3aGlsZShlZWQpIHsJCQkJCQkJCjwgCQkJaWYo
ZWVkLT52MS0+ZiAmIDE2KSBlZWQtPnYxLT5mIHw9IDE7CjwgCQkJZWxzZSBlZWQtPnYxLT5mICY9
IH4xOwotLS0KPiAJCWVjdCA9IDA7Cj4gCQl3aGlsZShlZWQpCj4gCQl7CQo+IAkJCWlmKGVlZC0+
ZiAmIDgpCj4gCQkJewo+IAkJCQllZWQtPnYxLT5mIHw9IDE7Cj4gCQkJCWVlZC0+djItPmYgfD0g
MTsKPiAJCQkJdGFnZ2VkW2VjdF0gPSBlZWQ7Cj4gCQkJCWVlZC0+ZiAmPSB+KDMyKTsKPiAJCQkJ
ZWN0Kys7Cj4gCQkJfQo+IAkJCWVlZCA9IGVlZC0+bmV4dDsKPiAJCX0KPiAJCWludCBqPTAsaz0w
Owo+IAkJdGFnZ2Vkc3JjaFswXSA9IHRhZ2dlZFswXTsKPiAJCUVkaXRWZXJ0KiBsb29rID0gTlVM
TDsKPiAJCWludCB0aW1lc3Rocm91Z2ggPSAwOwo+IAkJd2hpbGUodGltZXN0aHJvdWdoIDwgMikK
PiAJCXsKPiAJCQlpPTA7Cj4gCQkJd2hpbGUoaSA8IGVjdCl7Ly9Mb29rIGF0IHRoZSBtZW1iZXJz
IG9mIHRoZSBzZWFyY2ggYXJyYXkgdG8gbGluZSB1cCBjdXRzCj4gCQkJCWlmKHRhZ2dlZHNyY2hb
aV09PU5VTEwpYnJlYWs7Cj4gCQkJCWZvcihqPTA7ajxlY3Q7aisrKXsJCQkgLy9Mb29rIHRocm91
Z2ggdGhlIGxpc3Qgb2YgdGFnZ2VkIHZlcnRzIGZvciBjb25uZWN0ZWQgZWRnZXMKPiAJCQkJCWlu
dCBhZGRlZGVkZ2UgPSAwOwo+IAkJCQkJaWYodGFnZ2Vkc3JjaFtpXS0+ZiAmIDMyKSAgICAgICAg
Ly9JZiB0aGlzIGVkZ2VlIGlzIG1hcmtlZCBhcyBmbGlwcGVkLCB1c2UgdmVydCAyCj4gCQkJCQkJ
bG9vayA9IHRhZ2dlZHNyY2hbaV0tPnYyOwo+IAkJCQkJZWxzZQkJCQkJCQkgLy9lbHNlIHVzZSB2
ZXJ0IDEKPiAJCQkJCQlsb29rID0gdGFnZ2Vkc3JjaFtpXS0+djE7Cj4gCj4gCQkJCQlpZih0YWdn
ZWRzcmNoW2ldID09IHRhZ2dlZFtqXSkKPiAJCQkJCQljb250aW51ZTsgIC8vSWYgd2UgYXJlIGxv
b2tpbmcgYXQgdGhlIHNhbWUgZWRnZSwgc2tpcCBpdAo+IAkKPiAJCQkJCXNob3J0IHNraXAgPSAw
Owo+IAkJCQkJZm9yKGs9MDtrPGVjdDtrKyspCXsJLy9sb29rIHRocm91Z2ggdGhlIHNlYXJjaCBh
cnJheSB0byBzZWUgaWYgdGhlIAo+IAkJCQkJCWlmKHRhZ2dlZHNyY2hba10gPT0gTlVMTCkJLy9n
b3QgdG8gZW1wdHkgcGFydCBvZiBzZWFyY2ggbGlzdCB3aXRob3V0IGZpbmRpbmcKPiAJCQkJCQkJ
YnJlYWs7CQkJCQkJCQo+IAkJCQkJCWlmKHRhZ2dlZFtqXSA9PSB0YWdnZWRzcmNoW2tdKXsJCS8v
V2UgZm91bmQgYSBtYXRjaCBhbHJlYWR5IGluIHRoZSBsaXN0Cj4gCQkJCQkJCXNraXAgPSAxOwo+
IAkJCQkJCQlicmVhazsKPiAJCQkJCQl9Cj4gCQkJCQl9Cj4gCQkJCQlpZihza2lwKQo+IAkJCQkJ
CWNvbnRpbnVlOwo+IAkJCQkJc2hvcnQgbmV4dHBvcyA9IDA7Cj4gCQkJCQlpZihmaW5kZWRnZWxp
c3QobG9vayx0YWdnZWRbal0tPnYyKSl7Cj4gCQkJCQkJd2hpbGUobmV4dHBvcyA8IGVjdCl7IC8v
RmluZCB0aGUgZmlyc3Qgb3BlbiBzcG90IGluIHRoZSBzZWFyY2ggYXJyYXkKPiAJCQkJCQkJaWYo
dGFnZ2Vkc3JjaFtuZXh0cG9zXSA9PSBOVUxMKXsKPiAJCQkJCQkJCXRhZ2dlZHNyY2hbbmV4dHBv
c10gPSB0YWdnZWRbal07IC8vcHV0IHRhZ2dlZFtqXSBpbiBpdAo+IAkJCQkJCQkJdGFnZ2Vkc3Jj
aFtuZXh0cG9zXS0+ZiB8PSAzMjsKPiAJCQkJCQkJCWFkZGVkZWRnZSA9IDE7Cj4gCQkJCQkJCQli
cmVhazsKPiAJCQkJCQkJfQo+IAkJCQkJCQllbHNlCj4gCQkJCQkJCQluZXh0cG9zKys7Cj4gCQkJ
CQkJfQo+IAkJCQkJfSAvLyBFbmQgZWxzZSBpZiBjb25uZWN0ZWQgdG8gdmVydCAyCj4gCQkJCQll
bHNlIGlmKGZpbmRlZGdlbGlzdChsb29rLHRhZ2dlZFtqXS0+djEpKXsgICAvL0lmIG91ciB2ZXJ0
IGlzIGNvbm5lY3RlZCB0byB2ZXJ0IDEgCj4gCQkJCQkJd2hpbGUobmV4dHBvcyA8IGVjdCl7IC8v
RmluZCB0aGUgZmlyc3Qgb3BlbiBzcG90IGluIHRoZSBzZWFyY2ggYXJyYXkKPiAJCQkJCQkJaWYo
dGFnZ2Vkc3JjaFtuZXh0cG9zXSA9PSBOVUxMKXsKPiAJCQkJCQkJCXRhZ2dlZHNyY2hbbmV4dHBv
c10gPSB0YWdnZWRbal07IC8vcHV0IHRhZ2dlZFtqXSBpbiBpdAo+IAkJCQkJCQkJYWRkZWRlZGdl
ID0gMTsKPiAJCQkJCQkJCWJyZWFrOwo+IAkJCQkJCQl9Cj4gCQkJCQkJCWVsc2UgCj4gCQkJCQkJ
CQluZXh0cG9zKys7Cj4gCQkJCQkJfQo+IAkJCQkJfQo+IAo+IAkJCQkJaWYoYWRkZWRlZGdlKQo+
IAkJCQkJewo+IAkJCQkJCWJyZWFrOwo+IAkJCQkJfQkJCQkJCj4gCQkJCX0vLyBFbmQgT3V0ZXIg
Rm9yIChqKQo+IAkJCQlpKys7Cj4gCQkJfSAvLyBFbmQgd2hpbGUoajxlY3QpCj4gCQkJdGltZXN0
aHJvdWdoKys7Cj4gCQl9IC8vZW5kIHdoaWxlIHRpbWVzdGhyb3VnaAo+IAkJZmxvYXQgcGVyY2Vu
dGN1dCA9IDAuNTA7Cj4gCQlzZWFyY2hpbmcgPSAxOwo+IAkJaW50IGN1dCAgID0gMTsKPiAJCWlu
dCBzbW9vdGggPSAwOwo+IAkJd2hpbGUoc2VhcmNoaW5nKXsKPiAJCQkvKi0tLS0tLS0tLS0tLS0g
UGVyY2VudCBDdXQgUHJldmlldyBMaW5lcy0tLS0tLS0tLS0tLS0tLSAqLwoyNjgyLDI2ODNjMjg0
NiwzMDI0CjwgCQkJaWYoZWVkLT52Mi0+ZiAmIDE2KSBlZWQtPnYyLT5mIHw9IDE7CjwgCQkJZWxz
ZSBlZWQtPnYyLT5mICY9IH4xOwotLS0KPiAJCQlzY3JhcmVhX2RvX3dpbmRyYXcoY3VyYXJlYSk7
CQkJCj4gCQkJcGVyc3AoUEVSU1BfVklFVyk7Cj4gCQkJZ2xQdXNoTWF0cml4KCk7Cj4gCQkJbXlt
dWx0bWF0cml4KEcub2JlZGl0LT5vYm1hdCk7Cj4gCQkJZ2xDb2xvcjN1YigwLCAyNTUsIDI1NSk7
Cj4gCQkJCQo+IAkJCS8vUHV0IHRoZSBwcmV2aWV3IGxpbmVzIHdoZXJlIHRoZXkgc2hvdWxkIGJl
IGZvciB0aGUgcGVyY2VudGFnZSBzZWxlY3RlZC4KPiAJCQlldmw9IEcuZWR2bC5maXJzdDsKPiAK
PiAJCQkvLwo+IAkJCXdoaWxlKGV2bCkKPiAJCQl7Cj4gCj4gCQkJCWVlZCA9IEcuZWRlZC5maXJz
dDsKPiAJCQkJd2hpbGUoZWVkKQo+IAkJCQl7Cj4gCQkJCQlpZihlZWQtPmYgJiA4KQo+IAkJCQkJ
ewo+IAkJCQkJCWdsU2hhZGVNb2RlbChHTF9TTU9PVEgpOwo+IAkJCQkJCWdsQmVnaW4oR0xfTElO
RVMpOwo+IAkJCQkJCWZsb2F0IGxuWzJdWzNdOwo+IAkJCQkJCWlmKGVlZC0+ZiAmIDMyKQo+IAkJ
CQkJCXsKPiAJCQkJCQkJbG5bMF1bMF0gPSBlZWQtPnYyLT5jb1swXTsKPiAJCQkJCQkJbG5bMF1b
MV0gPSBlZWQtPnYyLT5jb1sxXTsKPiAJCQkJCQkJbG5bMF1bMl0gPSBlZWQtPnYyLT5jb1syXTsK
PiAJCQkJCQkJbG5bMV1bMF0gPSBlZWQtPnYxLT5jb1swXTsKPiAJCQkJCQkJbG5bMV1bMV0gPSBl
ZWQtPnYxLT5jb1sxXTsKPiAJCQkJCQkJbG5bMV1bMl0gPSBlZWQtPnYxLT5jb1syXTsKPiAJCQkJ
CQl9Cj4gCQkJCQkJZWxzZQo+IAkJCQkJCXsKPiAJCQkJCQkJbG5bMF1bMF0gPSBlZWQtPnYxLT5j
b1swXTsKPiAJCQkJCQkJbG5bMF1bMV0gPSBlZWQtPnYxLT5jb1sxXTsKPiAJCQkJCQkJbG5bMF1b
Ml0gPSBlZWQtPnYxLT5jb1syXTsKPiAJCQkJCQkJbG5bMV1bMF0gPSBlZWQtPnYyLT5jb1swXTsK
PiAJCQkJCQkJbG5bMV1bMV0gPSBlZWQtPnYyLT5jb1sxXTsKPiAJCQkJCQkJbG5bMV1bMl0gPSBl
ZWQtPnYyLT5jb1syXTsKPiAJCQkJCQl9Cj4gCQkJCQkJLy8KPiAJCQkJCQlnbENvbG9yM3ViKDI1
NSwwLDApOwo+IAkJCQkJCWdsVmVydGV4M2Z2KGxuWzBdKTsKPiAJCQkJCQlnbENvbG9yM3ViKDAs
MCwyNTUpOwo+IAkJCQkJCWdsVmVydGV4M2Z2KGxuWzFdKTsKPiAJCQkJCQlnbEVuZCgpOwo+IAkJ
CQkJfQo+IAkJCQkJZWVkID0gZWVkLT5uZXh0Owo+IAkJCQl9Cj4gCj4gCQkJCWdsQ29sb3IzdWIo
MCwyNTUsMjU1KTsKPiAJCQkJaWYoZXZsLT5mICYgOCkKPiAJCQkJewo+IAkJCQkJZmxvYXQgY2Vu
WzJdWzNdOwo+IAkJCQkJaW50IGE9MDsKPiAJCQkJCWdsQmVnaW4oR0xfTElORVMpOwo+IAkJCQkJ
Cj4gCQkJCQlpZihldmwtPmUxLT5mICYgOCkKPiAJCQkJCXsKPiAJCQkJCQlmbG9hdCBwY3Q7Cj4g
CQkJCQkJaWYoZXZsLT5lMS0+ZiAmIDMyKQo+IAkJCQkJCQlwY3QgPSAxLXBlcmNlbnRjdXQ7Cj4g
CQkJCQkJZWxzZQo+IAkJCQkJCQlwY3QgPSBwZXJjZW50Y3V0Owo+IAkJCQkJCWNlblthXVswXT0g
ZXZsLT5lMS0+djEtPmNvWzBdIC0gKChldmwtPmUxLT52MS0+Y29bMF0gLSBldmwtPmUxLT52Mi0+
Y29bMF0pICogKHBjdCkpOwo+IAkJCQkJCWNlblthXVsxXT0gZXZsLT5lMS0+djEtPmNvWzFdIC0g
KChldmwtPmUxLT52MS0+Y29bMV0gLSBldmwtPmUxLT52Mi0+Y29bMV0pICogKHBjdCkpOwo+IAkJ
CQkJCWNlblthXVsyXT0gZXZsLT5lMS0+djEtPmNvWzJdIC0gKChldmwtPmUxLT52MS0+Y29bMl0g
LSBldmwtPmUxLT52Mi0+Y29bMl0pICogKHBjdCkpOwo+IAkJCQkJCWV2bC0+ZTEtPnYxLT5mIHw9
IDg7Cj4gCQkJCQkJZXZsLT5lMS0+djItPmYgfD0gODsKPiAJCQkJCQlhKys7Cj4gCQkJCQl9Cj4g
CQkJCQlpZigoZXZsLT5lMi0+ZiAmIDgpICYmIGEhPTIpCj4gCQkJCQl7Cj4gCQkJCQkJZmxvYXQg
cGN0Owo+IAkJCQkJCWlmKGV2bC0+ZTItPmYgJiAzMikKPiAJCQkJCQkJcGN0ID0gMS1wZXJjZW50
Y3V0Owo+IAkJCQkJCWVsc2UKPiAJCQkJCQkJcGN0ID0gcGVyY2VudGN1dDsKPiAJCQkJCQljZW5b
YV1bMF09IGV2bC0+ZTItPnYxLT5jb1swXSAtICgoZXZsLT5lMi0+djEtPmNvWzBdIC0gZXZsLT5l
Mi0+djItPmNvWzBdKSAqIChwY3QpKTsKPiAJCQkJCQljZW5bYV1bMV09IGV2bC0+ZTItPnYxLT5j
b1sxXSAtICgoZXZsLT5lMi0+djEtPmNvWzFdIC0gZXZsLT5lMi0+djItPmNvWzFdKSAqIChwY3Qp
KTsKPiAJCQkJCQljZW5bYV1bMl09IGV2bC0+ZTItPnYxLT5jb1syXSAtICgoZXZsLT5lMi0+djEt
PmNvWzJdIC0gZXZsLT5lMi0+djItPmNvWzJdKSAqIChwY3QpKTsKPiAKPiAJCQkJCQlldmwtPmUx
LT52MS0+ZiB8PSA4Owo+IAkJCQkJCWV2bC0+ZTEtPnYyLT5mIHw9IDg7Cj4gCQkJCQkJCj4gCQkJ
CQkJYSsrOwo+IAkJCQkJfQo+IAkJCQkJaWYoKGV2bC0+ZTMtPmYgJiA4KSAmJiBhIT0yKXsKPiAJ
CQkJCQlmbG9hdCBwY3Q7Cj4gCQkJCQkJaWYoZXZsLT5lMy0+ZiAmIDMyKQo+IAkJCQkJCQlwY3Qg
PSAxLXBlcmNlbnRjdXQ7Cj4gCQkJCQkJZWxzZQo+IAkJCQkJCQlwY3QgPSBwZXJjZW50Y3V0Owo+
IAkJCQkJCWNlblthXVswXT0gZXZsLT5lMy0+djEtPmNvWzBdIC0gKChldmwtPmUzLT52MS0+Y29b
MF0gLSBldmwtPmUzLT52Mi0+Y29bMF0pICogKHBjdCkpOwo+IAkJCQkJCWNlblthXVsxXT0gZXZs
LT5lMy0+djEtPmNvWzFdIC0gKChldmwtPmUzLT52MS0+Y29bMV0gLSBldmwtPmUzLT52Mi0+Y29b
MV0pICogKHBjdCkpOwo+IAkJCQkJCWNlblthXVsyXT0gZXZsLT5lMy0+djEtPmNvWzJdIC0gKChl
dmwtPmUzLT52MS0+Y29bMl0gLSBldmwtPmUzLT52Mi0+Y29bMl0pICogKHBjdCkpOwo+IAo+IAkJ
CQkJCWV2bC0+ZTEtPnYxLT5mIHw9IDg7Cj4gCQkJCQkJZXZsLT5lMS0+djItPmYgfD0gODsKPiAJ
CQkJCQkKPiAJCQkJCQlhKys7Cj4gCQkJCQl9Cj4gCQkJCQkJCj4gCQkJCQlpZihldmwtPmU0KQo+
IAkJCQkJewo+IAkJCQkJCWlmKChldmwtPmU0LT5mICYgOCkgJiYgYSE9MikKPiAJCQkJCQl7Cj4g
CQkJCQkJCWZsb2F0IHBjdDsKPiAJCQkJCQkJaWYoZXZsLT5lNC0+ZiAmIDMyKQo+IAkJCQkJCQkJ
cGN0ID0gMS1wZXJjZW50Y3V0Owo+IAkJCQkJCQllbHNlCj4gCQkJCQkJCQlwY3QgPSBwZXJjZW50
Y3V0Owo+IAkJCQkJCQljZW5bYV1bMF09IGV2bC0+ZTQtPnYxLT5jb1swXSAtICgoZXZsLT5lNC0+
djEtPmNvWzBdIC0gZXZsLT5lNC0+djItPmNvWzBdKSAqIChwY3QpKTsKPiAJCQkJCQkJY2VuW2Fd
WzFdPSBldmwtPmU0LT52MS0+Y29bMV0gLSAoKGV2bC0+ZTQtPnYxLT5jb1sxXSAtIGV2bC0+ZTQt
PnYyLT5jb1sxXSkgKiAocGN0KSk7Cj4gCQkJCQkJCWNlblthXVsyXT0gZXZsLT5lNC0+djEtPmNv
WzJdIC0gKChldmwtPmU0LT52MS0+Y29bMl0gLSBldmwtPmU0LT52Mi0+Y29bMl0pICogKHBjdCkp
Owo+IAo+IAkJCQkJCQlldmwtPmUxLT52MS0+ZiB8PSA4Owo+IAkJCQkJCQlldmwtPmUxLT52Mi0+
ZiB8PSA4Owo+IAkJCQkJCQo+IAkJCQkJCQlhKys7Cj4gCQkJCQkJfQo+IAkJCQkJfQo+IAkJCQkJ
ZWxzZQo+IAkJCQkJewkvKiBpZiBpdCdzIGEgdHJpYW5ndWxhciBmYWNlLCBzZXQgdGhlIHJlbWFp
bmluZyB2ZXJ0ZXggYXMgdGhlIGN1dGN1cnZlIGNvb3JkaW5hdGUgKi8KPiAJCQkJCQlpZihhIT0y
KQo+IAkJCQkJCXsKPiAJCQkJCQkJaWYoZXZsLT52MS0+ZiAmIDE2KXsKPiAJCQkJCQkJY2VuW2Fd
WzBdPSBldmwtPnYxLT5jb1swXTsKPiAJCQkJCQkJY2VuW2FdWzFdPSBldmwtPnYxLT5jb1sxXTsK
PiAJCQkJCQkJY2VuW2FdWzJdPSBldmwtPnYxLT5jb1syXTsKPiAJCQkJCQkJZXZsLT52MS0+ZiAm
PSB+MTY7Cj4gCQkJCQkJfQo+IAkJCQkJCWVsc2UgaWYoZXZsLT52Mi0+ZiAmIDE2KQo+IAkJCQkJ
CXsKPiAJCQkJCQkJY2VuW2FdWzBdPSBldmwtPnYyLT5jb1swXTsKPiAJCQkJCQkJY2VuW2FdWzFd
PSBldmwtPnYyLT5jb1sxXTsKPiAJCQkJCQkJY2VuW2FdWzJdPSBldmwtPnYyLT5jb1syXTsKPiAJ
CQkJCQkJZXZsLT52Mi0+ZiAmPSB+MTY7Cj4gCQkJCQkJfQo+IAkJCQkJCWVsc2UgaWYoZXZsLT52
My0+ZiAmIDE2KQo+IAkJCQkJCXsKPiAJCQkJCQkJY2VuW2FdWzBdPSBldmwtPnYzLT5jb1swXTsK
PiAJCQkJCQkJY2VuW2FdWzFdPSBldmwtPnYzLT5jb1sxXTsKPiAJCQkJCQkJY2VuW2FdWzJdPSBl
dmwtPnYzLT5jb1syXTsKPiAJCQkJCQkJZXZsLT52My0+ZiAmPSB+MTY7Cj4gCQkJCQkJfQo+IAkJ
CQkJfQo+IAkJCQl9Cj4gCQkJCWdsVmVydGV4M2Z2KGNlblswXSk7Cj4gCQkJCWdsVmVydGV4M2Z2
KGNlblsxXSk7Cj4gCQkJCWdsRW5kKCk7CQkJCQkJCj4gCQkJfQo+IAkJCWV2bD1ldmwtPm5leHQ7
Cj4gCQl9Cj4gCQkJLyogcmVzdG9yZSBtYXRyaXggdHJhbnNmb3JtICovCj4gCQlnbFBvcE1hdHJp
eCgpOwo+IAo+IAkJCS8qLS0tLS0tLS0tIEVORCBQcmV2aWV3IExpbmVzLS0tLS0tLS0tLS0tKi8K
PiAJCXdoaWxlKHF0ZXN0KCkpIAo+IAkJewo+IAkJCXVuc2lnbmVkIHNob3J0IHZhbD0wOwkJCQo+
IAkJCWV2ZW50PSBleHRlcm5fcXJlYWQoJnZhbCk7CS8vIGV4dGVybl9xcmVhZCBzdG9yZXMgaW1w
b3J0YW50IGV2ZW50cyBmb3IgdGhlIG1haW5sb29wIHRvIGhhbmRsZSAKPiAJCQkvKiB2YWw9PTAg
b24ga2V5LXJlbGVhc2UgZXZlbnQgKi8KPiAJCj4gCj4gCQkJaWYodmFsICYmIChldmVudD09U0tF
WSkpCj4gCQkJewo+IAkJCQlpZihzbW9vdGgpc21vb3RoID0gMDsKPiAJCQkJZWxzZSBzbW9vdGgg
PSAxOwo+IAkJCX0KPiAKPiAJCQlpZih2YWwgJiYgKGV2ZW50PT1MRUZUTU9VU0UgfHwgZXZlbnQ9
PVJFVEtFWSkpCj4gCQkJewo+IAkJCQlzZWFyY2hpbmc9MDsKPiAJCQl9Cj4gCQkJaWYodmFsICYm
IChldmVudD09RVNDS0VZIHx8IGV2ZW50PT1SSUdIVE1PVVNFICkpCj4gCQkJewo+IAkJCQlzZWFy
Y2hpbmc9MDsKPiAJCQkJY3V0ID0gMDsKPiAJCQl9CjI2ODVjMzAyNiwzMTE0CjwgCQkJZWVkPSBl
ZWQtPm5leHQ7CQkJCi0tLQo+IAkJfQo+IAkJRWRpdEVkZ2UgKmNsb3NlID0gZmluZG5lYXJlc3Rm
bGFnZ2VkZWRnZSgpOwo+IAkJaWYoY2xvc2UpCj4gCQl7Cj4gCQkJc2hvcnQgbXZhbFsyXTsKPiAJ
CQlzaG9ydCBkMSxkMixwMSxwMixtMSxtMjsKPiAKPiAJCQlnZXRtb3VzZWNvX2FyZWF3aW4obXZh
bCk7Cj4gCQkJaWYobXZhbFswXSA+IG1heChjbG9zZS0+djEtPnhzLGNsb3NlLT52Mi0+eHMpKQo+
IAkJCQltMSA9IG1heChjbG9zZS0+djEtPnhzLGNsb3NlLT52Mi0+eHMpOwo+IAkJCWVsc2UgaWYo
bXZhbFswXSA8IG1pbihjbG9zZS0+djEtPnhzLGNsb3NlLT52Mi0+eHMpKQo+IAkJCQltMSA9IG1p
bihjbG9zZS0+djEtPnhzLGNsb3NlLT52Mi0+eHMpOwo+IAkJCWVsc2UKPiAJCQkJbTEgPSBtdmFs
WzBdOwo+IAo+IAkJCWlmKG12YWxbMV0gPiBtYXgoY2xvc2UtPnYxLT55cyxjbG9zZS0+djItPnlz
KSkKPiAJCQkJbTIgPSBtYXgoY2xvc2UtPnYxLT55cyxjbG9zZS0+djItPnlzKTsKPiAJCQllbHNl
IGlmKG12YWxbMV0gPCBtaW4oY2xvc2UtPnYxLT55cyxjbG9zZS0+djItPnlzKSkKPiAJCQkJbTIg
PSBtaW4oY2xvc2UtPnYxLT55cyxjbG9zZS0+djItPnlzKTsKPiAJCQllbHNlCj4gCQkJCW0yID0g
bXZhbFsxXTsKPiAKPiAJCQlkMSA9IGFicyhjbG9zZS0+djEtPnlzIC0gY2xvc2UtPnYyLT55cyk7
Cj4gCQkJZDIgPSBhYnMoY2xvc2UtPnYxLT54cyAtIGNsb3NlLT52Mi0+eHMpOwo+IAkJCXAxID0g
YWJzKG0yIC0gY2xvc2UtPnYyLT55cyk7Cj4gCQkJcDIgPSBhYnMobTEgLSBjbG9zZS0+djItPnhz
KTsKPiAKPiAJCQlpZihkMSAmJiBkMikKPiAJCQkJcGVyY2VudGN1dCA9IDEtKCgoZmxvYXQpcDEv
KGZsb2F0KWQxKSsoKGZsb2F0KXAyLyhmbG9hdClkMikpLzI7Cj4gCQkJZWxzZSBpZihkMiAmJiAh
ZDEpCj4gCQkJCXBlcmNlbnRjdXQgPSAxLSgoZmxvYXQpcDIvKGZsb2F0KWQyKTsKPiAJCQllbHNl
IGlmKGQxICYmICFkMikKPiAJCQkJcGVyY2VudGN1dCA9IDEtKChmbG9hdClwMS8oZmxvYXQpZDEp
OwkJCj4gCQkJZWxzZQo+IAkJCQlwZXJjZW50Y3V0PTAuNTsKPiAKPiAJCQlpZihjbG9zZS0+ZiAm
IDMyKQo+IAkJCQlwZXJjZW50Y3V0ID0gMS1wZXJjZW50Y3V0Owo+IAkJfQo+IAkJaWYgKEcucXVh
bCAmIExSX0NUUkxLRVkpCj4gCQkJcGVyY2VudGN1dCA9IHJpbnQocGVyY2VudGN1dCoxMCkvMTA7
Cj4gCQllbHNlIGlmIChHLnF1YWwgJiBMUl9TSElGVEtFWSkgDQo+IAkJCXBlcmNlbnRjdXQgPSBy
aW50KHBlcmNlbnRjdXQqMTAwKS8xMDA7CQkJCj4gCQljaGFyIG1lc2dbMTAwXTsKPiAKPiAJCWlu
dCBvdXRjdXQgPSByaW50KHBlcmNlbnRjdXQqMTAwKTsKPiAJCWlmKHNtb290aCkKPiAJCQlzcHJp
bnRmKG1lc2csIkN1dDogJWRcJSwgU21vb3RoIChza2V5KTogT04iLG91dGN1dCk7Cj4gCQllbHNl
Cj4gCQkJc3ByaW50ZihtZXNnLCJDdXQ6ICVkXCUsIFNtb290aCAoc2tleSk6IE9GRiIsb3V0Y3V0
KTsKPiAJCWhlYWRlcnByaW50KG1lc2cpOwo+IAkJc2NyZWVuX3N3YXBidWZmZXJzKCk7Cj4gCQkK
PiAJfQkJCQo+IAllZWQgPSBHLmVkZWQuZmlyc3Q7Cj4gCWlmKGN1dCl7Cj4gCQkvL05vdyB0aGF0
IHdlIGhhdmUgc2VsZWN0ZWQgYSBjdXQgJSwgbWFyayB0aGUgZWRnZXMgZm9yIGN1dHRpbmcuCj4g
CQl3aGlsZShlZWQpCj4gCQl7Cj4gCQkJICAgIGlmKHBlcmNlbnRjdXQgPT0gMSkKPiAJCQkJCXBl
cmNlbnRjdXQgPSAwLjk5OTk7Cj4gCQkJCWVsc2UgaWYocGVyY2VudGN1dCA9PSAwKQo+IAkJCQkJ
cGVyY2VudGN1dCA9IDAuMDAwMTsKPiAJCQkJaWYoZWVkLT5mICYgOCl7Cj4gCQkJCQlpZihlZWQt
PmYgJiAzMikKPiAJCQkJCQllZWQtPmYxID0gMzI3NjgqKDEtcGVyY2VudGN1dCk7Cj4gCQkJCQll
bHNlCj4gCQkJCQkJZWVkLT5mMSA9IDMyNzY4KihwZXJjZW50Y3V0KTsKPiAJCQkJfQo+IAkJCQll
ZWQgPSBlZWQtPm5leHQ7Cj4gCQl9Cj4gCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQo+IAo+IAkJCWlmKHNtb290aCkKPiAJCQkJc3ViZGl2aWRlZmxhZyg4LCAwLCBCX0tO
SUZFIHwgQl9TTU9PVEgpOyAvKiBCX0tOSUZFIHRlbGxzIHN1YmRpdmlkZSB0aGF0IGVkZ2VmbGFn
cyBhcmUgYWxyZWFkeSBzZXQgKi8KPiAJCQllbHNlCj4gCQkJCXN1YmRpdmlkZWZsYWcoOCwgMCwg
Ql9LTklGRSk7IC8qIEJfS05JRkUgdGVsbHMgc3ViZGl2aWRlIHRoYXQgZWRnZWZsYWdzIGFyZSBh
bHJlYWR5IHNldCAqLwo+IAkJCWVlZD1HLmVkZWQuZmlyc3Q7Cj4gCQkJd2hpbGUoZWVkKSB7CQkJ
CQkJCQo+IAkJCQlpZihlZWQtPnYxLT5mICYgMTYpIGVlZC0+djEtPmYgfD0gMTsKPiAJCQkJZWxz
ZSBlZWQtPnYxLT5mICY9IH4xOwo+IAkJCQkKPiAJCQkJaWYoZWVkLT52Mi0+ZiAmIDE2KSBlZWQt
PnYyLT5mIHw9IDE7Cj4gCQkJCWVsc2UgZWVkLT52Mi0+ZiAmPSB+MTsKPiAJCQkJCj4gCQkJCWVl
ZD0gZWVkLT5uZXh0OwkJCQo+IAkJCX0KPiAJCQlmcmVlKHRhZ2dlZCk7Cj4gCQkJZnJlZSh0YWdn
ZWRzcmNoKTsKMzk0NmE0Mzc2Cj4gCQkJaWYgKGJlYXV0eSAmIEJfS05JRkUpIHBlcmNlbnQ9KGZs
b2F0KShlZWQtPmYxKS8zMjc2OC4wOwo=

------_=_NextPart_001_01C3C8A1.3ABEBC47--