<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>42588</bug_id>
          
          <creation_ts>2010-07-19 12:59:10 -0700</creation_ts>
          <short_desc>Web Inspector: CodeGeneratorInspector should be able to generate Backend part of Inspector interface.</short_desc>
          <delta_ts>2010-07-23 01:33:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>253349</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-19 12:59:10 -0700</bug_when>
    <thetext>After big discussion with Pavel it was decided to keep original InspectorBackend
functionality as is, and generate separate class RemoteInspectorBackend
for parsing transfered arguments and pass these arguments to the current
implementation of InspectorBackend. This implementation will be an adoptation layer
between Remote Debugging interface, which should be stable for 
customers, and flexible internal implementation of that interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253565</commentid>
    <comment_count>1</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-19 23:05:25 -0700</bug_when>
    <thetext>The name RemoteInspectorBackend sounds confusing to me. How can backend be remote wrt WebCore. I&apos;d call the new class InspectorBackendDispatcher. It might be created with backend instance in the constructor and have single dispatch(String) method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253774</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-20 09:45:20 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; The name RemoteInspectorBackend sounds confusing to me. How can backend be
&gt; remote wrt WebCore. I&apos;d call the new class InspectorBackendDispatcher. It might
&gt; be created with backend instance in the constructor and have single
&gt; dispatch(String) method.

+1, I like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254704</commentid>
    <comment_count>3</comment_count>
      <attachid>62278</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-22 02:44:56 -0700</bug_when>
    <thetext>Created attachment 62278
[patch] initial version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254705</commentid>
    <comment_count>4</comment_count>
      <attachid>62279</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-22 02:56:02 -0700</bug_when>
    <thetext>Created attachment 62279
sample: InspectorBackendDispatcher.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254706</commentid>
    <comment_count>5</comment_count>
      <attachid>62280</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-22 02:56:39 -0700</bug_when>
    <thetext>Created attachment 62280
sample: InspectorBackendDispatcher.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254710</commentid>
    <comment_count>6</comment_count>
      <attachid>62278</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-22 03:15:44 -0700</bug_when>
    <thetext>Comment on attachment 62278
[patch] initial version.

WebCore/GNUmakefile.am:553
 +  	DerivedSources/WebCore/InspectorBackendDispatcher.cpp \
mind alphabetic order

WebCore/WebCore.gyp/WebCore.gyp:481
 +              &apos;../inspector/CodeGeneratorInspector.pm&apos;,
Could you add a comment for this?

WebCore/WebCore.gypi: 
 +          &apos;webcore_inspector_idl_files&apos;: [
is it referenced from other places?

WebCore/inspector/CodeGeneratorInspector.pm:168
 +      push(@backendHead, &quot;    ${backendClassName}* create(InspectorBackend* backend) { return new ${backendClassName}(backend); }&quot;);
either remote create or make the constructor private

WebCore/inspector/CodeGeneratorInspector.pm:241
 +      push(@function, &quot;void ${backendClassName}::${functionName}(PassRefPtr&lt;InspectorArray&gt;&quot; . ( scalar(@argsFiltered) ? &quot; args)&quot; : &quot;)&quot;));
Please add comment about &quot;unused argument&quot; warning/

WebCore/inspector/CodeGeneratorInspector.pm:248
 +              $type = &quot;double&quot;;
can you take it from the type description?

WebCore/inspector/CodeGeneratorInspector.pm:271
 +      my @mapEntries = map(&quot;dispatchMap.add(String(\&quot;$_\&quot;), &amp;${backendClassName}::$_);&quot;, @methods);
Is explicit check really needed here?

WebCore/inspector/CodeGeneratorInspector.pm:271
 +      my @mapEntries = map(&quot;dispatchMap.add(String(\&quot;$_\&quot;), &amp;${backendClassName}::$_);&quot;, @methods);
I think calling .set( would be more appropriate here.

WebCore/inspector/front-end/ElementsPanel.js:225
 +              InspectorBackend.pushNodeByPathToFrontend(callId, this._selectedPathOnReset.join(&quot;,&quot;));
We should eventually pass an array instead of string here.

WebKit/chromium/src/js/InspectorControllerImpl.js:157
 +      args.unshift(methodName);
just pass 2 as the second parameter above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254725</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-22 04:31:52 -0700</bug_when>
    <thetext>All (In reply to comment #5)
&gt; Created an attachment (id=62280) [details]
&gt; sample: InspectorBackendDispatcher.h

All methods but constructor and dispatch should be private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254796</commentid>
    <comment_count>8</comment_count>
      <attachid>62278</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-22 08:12:19 -0700</bug_when>
    <thetext>Comment on attachment 62278
[patch] initial version.

WebCore/GNUmakefile.am:553
 +      DerivedSources/WebCore/InspectorBackendDispatcher.cpp \
mind alphabetic order

fixed.



WebCore/WebCore.gyp/WebCore.gyp:481
 +              &apos;../inspector/CodeGeneratorInspector.pm&apos;,
Could you add a comment for this?

done.


WebCore/WebCore.gypi: 
 +          &apos;webcore_inspector_idl_files&apos;: [
is it referenced from other places?

no  other references.



WebCore/inspector/CodeGeneratorInspector.pm:168
 +      push(@backendHead, &quot;    ${backendClassName}* create(InspectorBackend* backend) { return new ${backendClassName}(backend); }&quot;);
either remote create or make the constructor private

removed.

WebCore/inspector/CodeGeneratorInspector.pm:241
 +      push(@function, &quot;void ${backendClassName}::${functionName}(PassRefPtr&lt;InspectorArray&gt;&quot; . ( scalar(@argsFiltered) ? &quot; args)&quot; : &quot;)&quot;));
Please add comment about &quot;unused argument&quot; warning/

done.


WebCore/inspector/CodeGeneratorInspector.pm:248
 +              $type = &quot;double&quot;;
can you take it from the type description?

fixed.


WebCore/inspector/CodeGeneratorInspector.pm:271
 +      my @mapEntries = map(&quot;dispatchMap.add(String(\&quot;$_\&quot;), &amp;${backendClassName}::$_);&quot;, @methods);
Is explicit check really needed here?

removed.


WebCore/inspector/CodeGeneratorInspector.pm:271
 +      my @mapEntries = map(&quot;dispatchMap.add(String(\&quot;$_\&quot;), &amp;${backendClassName}::$_);&quot;, @methods);
I think calling .set( would be more appropriate here.

all these entries are assigning at the first run.


WebCore/inspector/front-end/ElementsPanel.js:225
 +              InspectorBackend.pushNodeByPathToFrontend(callId, this._selectedPathOnReset.join(&quot;,&quot;));
We should eventually pass an array instead of string here.

In generally it is possible but other platforms are not migrated yet.



&gt; All methods but constructor and dispatch should be private.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254804</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-22 08:20:47 -0700</bug_when>
    <thetext>Attachment 62298 did not build on mac:
Build output: http://queues.webkit.org/results/3577349</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254811</commentid>
    <comment_count>10</comment_count>
      <attachid>62301</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-22 08:30:21 -0700</bug_when>
    <thetext>Created attachment 62301
[patch] third iteration.

x64 compile error was fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254821</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-22 08:36:28 -0700</bug_when>
    <thetext>*** Bug 40167 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254916</commentid>
    <comment_count>12</comment_count>
      <attachid>62301</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-22 12:10:09 -0700</bug_when>
    <thetext>Comment on attachment 62301
[patch] third iteration.

Excellent! This is just what I thought it would look like after
talking with Pavel. You did it very well, with nice error messages.
My usual minor comments below.


&gt; WebCore/WebCore.gyp/WebCore.gyp
&gt; 479           # The second input item will be used as item name in vcproj.
&gt; 480           # It is not possible to put there Inspector.idl because
&gt; 481           # all idl files are marking as excluded by gyp generator.

This could be reworded. &quot;It is not possible to put Inspector.idl there&quot;.


&gt;      InspectorBackend* inspectorBackend() { return m_inspectorBackend.get(); }
&gt; +    InspectorBackendDispatcher* inspectorBackendDispatcher() { return m_inspectorBackendDispatcher.get(); }
&gt;      InjectedScriptHost* injectedScriptHost() { return m_injectedScriptHost.get(); }

These could all use &quot;const&quot;. I think I mentioned this before.
No big deal.


&gt; +++ b/WebCore/inspector/InspectorValues.cpp

&gt; +    *output = (long)m_doubleValue;
&gt; +    *output = (unsigned long)m_doubleValue;

Should these have used static_cast&lt;...&gt;(...)?


&gt; *exception = \&quot;Error: Invalid message format. The message should be jsonified array of arguments.\&quot;;&quot;);

I would say &quot;The message should be a JSONified array of arguments.&quot;,
Because JSON was capitalized before, but mostly the &quot;a&quot; in front
of JSONified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255251</commentid>
    <comment_count>13</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-23 01:10:30 -0700</bug_when>
    <thetext>
Committed r63952
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/src/WebDevToolsAgentImpl.cpp
	M	WebKit/chromium/src/js/InspectorControllerImpl.js
	M	WebKit/chromium/src/WebDevToolsAgentImpl.h
	M	WebKit/chromium/src/ToolsAgent.h
	M	WebCore/WebCore.pri
	M	WebCore/ChangeLog
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gyp/WebCore.gyp
	M	WebCore/WebCore.gypi
	M	WebCore/inspector/CodeGeneratorInspector.pm
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorValues.h
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorValues.cpp
	M	WebCore/WebCore.xcodeproj/project.pbxproj
r63952 = d923b0a72242f6f9ae060d20a3e391f6ed5da461 (refs/remotes/trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255259</commentid>
    <comment_count>14</comment_count>
      <attachid>62394</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-23 01:33:30 -0700</bug_when>
    <thetext>Created attachment 62394
really landed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62278</attachid>
            <date>2010-07-22 02:44:56 -0700</date>
            <delta_ts>2010-07-22 08:12:19 -0700</delta_ts>
            <desc>[patch] initial version.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26306</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Zjk3NmNmMi4uZjA4ZDZjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNy0yMiAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
IHdhcyBleHRlbmRlZCBhbmQgbm93IGl0IGNhbgorICAgICAgICBnZW5lcmF0ZSBJbnNwZWN0b3JC
YWNrZWREaXNwYXRjaGVyJ3MgY29kZS4gVGhpcyBkaXNwYXRjaGVyIHdpbGwKKyAgICAgICAgdmFs
aWRhdGUgYW5kIGRpc3BhdGNoIGluY29taW5nIGluc3BlY3RvciBjb21tYW5kcyBvbmx5IGJ5IG5h
dGl2ZQorICAgICAgICBjb2RlIHdpdGhvdXQgdXNpbmcgamF2YVNjcmlwdC4gVGhhdCBpcyBuZWNl
c3Nhcnkgc3RlcCBmb3IKKyAgICAgICAgUmVtb3RlRGVidWdnaW5nIHN1cHBvcnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU4OAorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5zZXREb2N1bWVudCk6
CisKIDIwMTAtMDctMjIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZjQ3YzNlNi4uZmY4ODZmNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCkBAIC01NTAsNiArNTUwLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWE1MU2VyaWFsaXplci5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTWFNMVFByb2Nlc3Nvci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNYU0xUUHJvY2Vzc29yLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVtb3RlSW5zcGVj
dG9yRnJvbnRlbmQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3Rv
ckZyb250ZW5kLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvVXNlckFnZW50U3R5bGVTaGVl
dHNEYXRhLmNwcCBcCkBAIC00Mzk0LDggKzQzOTYsOCBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L1hNTE5TTmFtZXMuY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWE1MTlNOYW1lcy5oOiAkKFdl
YgogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9YTUxOYW1lcy5jcHAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9YTUxOYW1lcy5oOiAkKFdlYkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkv
eG1sL3htbGF0dHJzLmluCiAJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9iaW5kaW5n
cy9zY3JpcHRzICQ8IC0tYXR0cnMgJChXZWJDb3JlKS94bWwveG1sYXR0cnMuaW4gLS1vdXRwdXRE
aXIgIiQoR0VOU09VUkNFU19XRUJDT1JFKSIKIAotIyBSZW1vdGUgSW5zcGVjdG9yIGZyb250ZW5k
Ci1EZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmNwcCBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmg6ICQoV2ViQ29yZSkv
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgJChTQ1JJUFRTX0JJTkRJTkdTKSAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCisjIFJlbW90ZUluc3BlY3RvckZyb250
ZW5kIGFuZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcgorRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9SZW1vdGVJbnNwZWN0b3JGcm9udGVuZC5jcHAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9SZW1v
dGVJbnNwZWN0b3JGcm9udGVuZC5oIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCAkKFNDUklQ
VFNfQklORElOR1MpICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3Iu
cG0KIAkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgLUkk
KFdlYkNvcmUpL2luc3BlY3RvciAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwgJChJRExfUEFUSDolPS0taW5jbHVkZSAiJSIpIC0tb3V0cHV0RGlyICIkKEdF
TlNPVVJDRVNfV0VCQ09SRSkiIC0tZGVmaW5lcyAiTEFOR1VBR0VfSkFWQVNDUklQVD0xICQoRkVB
VFVSRV9ERUZJTkVTKSIgLS1nZW5lcmF0b3IgSW5zcGVjdG9yICQ8CiAKIElETF9QQVRIIDo9IFwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IDYxOTMyOTQuLmM2ZTJkYTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cApAQCAtNDc4LDEzICs0NzgsMTUgQEAKICAgICAgICAgICAnYWN0aW9uX25h
bWUnOiAnUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQnLAogICAgICAgICAgICdpbnB1dHMnOiBbCiAg
ICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCcsCisg
ICAgICAgICAgICAnLi4vaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0nLAogICAg
ICAgICAgICAgJy4uL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbScsCiAgICAgICAg
ICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0nLAogICAgICAgICAgICAgJy4u
L2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtJywKLSAgICAgICAgICAgICcuLi9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbScsCiAgICAgICAgICAgICAnLi4vaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwnLAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ291dHB1dHMnOiBb
CisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2ViY29yZS9iaW5kaW5n
cy9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAnLAorICAgICAgICAgICAgJzwoU0hBUkVE
X0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9iaW5kaW5ncy9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oJywKICAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3Jl
L2JpbmRpbmdzL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmNwcCcsCiAgICAgICAgICAgICAnPChT
SEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L2JpbmRpbmdzL1JlbW90ZUluc3BlY3RvckZy
b250ZW5kLmgnLAogICAgICAgICAgIF0sCkBAIC01MDUsNyArNTA3LDcgQEAKICAgICAgICAgICAg
ICctLWdlbmVyYXRvcicsICdJbnNwZWN0b3InLAogICAgICAgICAgICAgJzxAKGdlbmVyYXRvcl9p
bmNsdWRlX2RpcnMpJwogICAgICAgICAgIF0sCi0gICAgICAgICAgJ21lc3NhZ2UnOiAnR2VuZXJh
dGluZyBSZW1vdGVJbnNwZWN0b3JGcm9udGVuZCBjbGFzcyBmcm9tIEluc3BlY3Rvci5pZGwnLAor
ICAgICAgICAgICdtZXNzYWdlJzogJ0dlbmVyYXRpbmcgSW5zcGVjdG9yIGludGVyZmFjZSBjbGFz
c2VzIGZyb20gSW5zcGVjdG9yLmlkbCcsCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAg
ICAnYWN0aW9uX25hbWUnOiAnWE1MTmFtZXMnLApAQCAtNzE0LDYgKzcxNiw3IEBACiAKICAgICAg
ICAgIyBBZGRpdGlvbmFsIC5jcHAgZmlsZXMgZnJvbSB0aGUgd2ViY29yZV9pbnNwZWN0b3Jfc291
cmNlcyBsaXN0LgogICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2ViY29yZS9i
aW5kaW5ncy9SZW1vdGVJbnNwZWN0b3JGcm9udGVuZC5jcHAnLAorICAgICAgICAnPChTSEFSRURf
SU5URVJNRURJQVRFX0RJUikvd2ViY29yZS9iaW5kaW5ncy9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAnLAogICAgICAgXSwKICAgICAgICdjb25kaXRpb25zJzogWwogICAgICAgICBbJ2ph
dmFzY3JpcHRfZW5naW5lPT0idjgiJywgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwNGIzN2Y0Li5hYTAxNTNkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
Mjc4LDkgKzI3OCw2IEBACiAgICAgICAgICAgICAneG1sL1hQYXRoUmVzdWx0LmlkbCcsCiAgICAg
ICAgICAgICAneG1sL1hTTFRQcm9jZXNzb3IuaWRsJywKICAgICAgICAgXSwKLSAgICAgICAgJ3dl
YmNvcmVfaW5zcGVjdG9yX2lkbF9maWxlcyc6IFsKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yLmlkbCcsCi0gICAgICAgIF0sCiAgICAgICAgICd3ZWJjb3JlX3N2Z19iaW5kaW5nc19p
ZGxfZmlsZXMnOiBbCiAgICAgICAgICAgICAnc3ZnL0VsZW1lbnRUaW1lQ29udHJvbC5pZGwnLAog
ICAgICAgICAgICAgJ3N2Zy9TVkdBRWxlbWVudC5pZGwnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnByaSBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggNzIwNWFkZC4uZGU3OWUyZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9XZWJDb3JlL1dlYkNvcmUucHJp
CkBAIC04MDgsNyArODA4LDcgQEAgaWRsLmRlcGVuZHMgPSAkJFBXRC9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0gXAogYWRkRXh0cmFDb21waWxlcihpZGwpCiAKICMgR0VORVJBVE9S
IDI6IGluc3BlY3RvciBpZGwgY29tcGlsZXIKLWluc3BlY3RvcklETC5vdXRwdXQgPSAkJHtXQ19H
RU5FUkFURURfU09VUkNFU19ESVJ9L1JlbW90ZSR7UU1BS0VfRklMRV9CQVNFfUZyb250ZW5kLmNw
cAoraW5zcGVjdG9ySURMLm91dHB1dCA9ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vUmVt
b3RlJHtRTUFLRV9GSUxFX0JBU0V9RnJvbnRlbmQuY3BwICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VT
X0RJUn0vJHtRTUFLRV9GSUxFX0JBU0V9QmFja2VuZERpc3BhdGNoZXIuY3BwCiBpbnNwZWN0b3JJ
REwuaW5wdXQgPSBJTlNQRUNUT1JfSU5URVJGQUNFUwogaW5zcGVjdG9ySURMLndrU2NyaXB0ID0g
JCRQV0QvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAogaW5zcGVjdG9ySURM
LmNvbW1hbmRzID0gcGVybCAtSSQkUFdEL2JpbmRpbmdzL3NjcmlwdHMgLUkkJFBXRC9pbnNwZWN0
b3IgJCRpbnNwZWN0b3JJREwud2tTY3JpcHQgLS1kZWZpbmVzIFwiJCR7RkVBVFVSRV9ERUZJTkVT
X0pBVkFTQ1JJUFR9XCIgLS1nZW5lcmF0b3IgSW5zcGVjdG9yIC0tb3V0cHV0RGlyICQkV0NfR0VO
RVJBVEVEX1NPVVJDRVNfRElSIC0tcHJlcHJvY2Vzc29yIFwiJCR7UU1BS0VfTU9DfSAtRVwiICR7
UU1BS0VfRklMRV9OQU1FfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
ZTk2YjdiZS4uMjJhNmVkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC0yMDc0MSw2ICsyMDc0MSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRo
PSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJl
bW90ZUluc3BlY3RvckZyb250ZW5kLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMxMTBkNzYuLjRjMThkODAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDMwLDYg
KzEwMzAsOCBAQAogCQk0RjMyODlCNTExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4
OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovOyB9OwogCQk0RjMy
ODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCNDExQTQyQUFCMDA1QUJFN0Ug
LyogSW5zcGVjdG9yVmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIFJlbW90ZUluc3BlY3Rv
ckZyb250ZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGNEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBSZW1vdGVJbnNwZWN0b3JGcm9udGVuZC5j
cHAgKi87IH07CisJCTRGNzA3QTk5MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0RjcwN0E5NzExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuY3BwICovOyB9OworCQk0RjcwN0E5QTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oICovOyB9OwogCQk0RkQ4RDBGMjExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkQ4
RDBGMDExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5jcHAgKi87IH07CiAJCTRGRDhE
MEYzMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyog
U2NyaXB0R0NFdmVudC5oICovOyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjc3NCw2ICs2Nzc2LDggQEAKIAkJ
NEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIFJlbW90ZUluc3BlY3Rv
ckZyb250ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUluc3BlY3RvckZyb250ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEY0
RjVGRkMxMUNCRDMwMTAwQTE4NkJGIC8qIFJlbW90ZUluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvckZyb250ZW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGNzA3QTk3MTFFRjY3OTQwMEFDREE2OSAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkQ4
RDBGMDExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRHQ0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEZEOEQwRjExMTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0R0NFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRQYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTQzMiw2ICsxMTQzNiw4IEBACiAJCQkJ
OUZBMzdFRjcxMTcyRkQ5MzAwQzRDRDU1IC8qIEpTU2NyaXB0UHJvZmlsZS5oICovLAogCQkJCTlG
QTM3RUY4MTE3MkZEOTMwMEM0Q0Q1NSAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmNwcCAqLywKIAkJ
CQk5RkEzN0VGOTExNzJGRDkzMDBDNENENTUgLyogSlNTY3JpcHRQcm9maWxlTm9kZS5oICovLAor
CQkJCTRGNzA3QTk3MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAgKi8sCisJCQkJNEY3MDdBOTgxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggKi8sCiAJCQkJNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIFJlbW90
ZUluc3BlY3RvckZyb250ZW5kLmNwcCAqLywKIAkJCQk0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYg
LyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCAqLywKIAkJCSk7CkBAIC0xOTgzOSw2ICsxOTg0
NSw3IEBACiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QzZFQTYxQTExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MkM3RjUxMUY3N0VGQjAwNjEyRUZFIC8q
IFNjaGVtZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0RjcwN0E5QTExRUY2Nzk0MDBB
Q0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MjIyMzQsNiArMjIyNDEsNyBAQAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThDNkVBNjE5MTFFRjdFMDQwMEZEOEVFMyAv
KiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjJDN0Y0
MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk0RjcwN0E5OTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yLnBtIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5wbQppbmRleCBhZmFkZGVjLi42OWE3NmRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
ZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KQEAgLTE0LDYgKzE0LDEwIEBAICR0eXBlVHJhbnNmb3Jt
eyJJbnNwZWN0b3JDbGllbnQifSA9IHsKICAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckNsaWVu
dCIsCiAgICAgImhlYWRlciIgPT4gIkluc3BlY3RvckNsaWVudC5oIiwKIH07CiskdHlwZVRyYW5z
Zm9ybXsiSW5zcGVjdG9yQmFja2VuZCJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9y
QmFja2VuZCIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvckJhY2tlbmQuaCIsCit9OwogJHR5
cGVUcmFuc2Zvcm17IlBhc3NSZWZQdHIifSA9IHsKICAgICAiZm9yd2FyZEhlYWRlciIgPT4gInd0
Zi9QYXNzUmVmUHRyLmgiLAogfTsKQEAgLTk1LDYgKzk5LDEzIEBAIG15ICR2ZXJib3NlOwogCiBt
eSAkbmFtZXNwYWNlOwogCitteSAkYmFja2VuZENsYXNzTmFtZTsKK215ICViYWNrZW5kVHlwZXM7
CitteSAlYmFja2VuZE1ldGhvZHM7CitteSBAYmFja2VuZE1ldGhvZHNJbXBsOworbXkgJGJhY2tl
bmRDb25zdHJ1Y3RvcjsKK215ICRiYWNrZW5kRm9vdGVyOworCiBteSAkZnJvbnRlbmRDbGFzc05h
bWU7CiBteSAlZnJvbnRlbmRUeXBlczsKIG15ICVmcm9udGVuZE1ldGhvZHM7CkBAIC0xNTAsNiAr
MTYxLDE3IEBAIHN1YiBHZW5lcmF0ZUludGVyZmFjZQogICAgICRmcm9udGVuZFR5cGVzeyJJbnNw
ZWN0b3JDbGllbnQifSA9IDE7CiAgICAgJGZyb250ZW5kVHlwZXN7IlBhc3NSZWZQdHIifSA9IDE7
CiAKKyAgICAkYmFja2VuZENsYXNzTmFtZSA9ICRjbGFzc05hbWUgLiAiQmFja2VuZERpc3BhdGNo
ZXIiOworICAgIG15IEBiYWNrZW5kSGVhZDsKKyAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICAk
e2JhY2tlbmRDbGFzc05hbWV9KEluc3BlY3RvckJhY2tlbmQqIGluc3BlY3RvckJhY2tlbmQpIDog
bV9pbnNwZWN0b3JCYWNrZW5kKGluc3BlY3RvckJhY2tlbmQpIHsgfSIpOworICAgIHB1c2goQGJh
Y2tlbmRIZWFkLCAiICAgIHZvaWQgZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTdHJp
bmcqIGV4Y2VwdGlvbik7Iik7CisgICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgJHtiYWNrZW5k
Q2xhc3NOYW1lfSogY3JlYXRlKEluc3BlY3RvckJhY2tlbmQqIGJhY2tlbmQpIHsgcmV0dXJuIG5l
dyAke2JhY2tlbmRDbGFzc05hbWV9KGJhY2tlbmQpOyB9Iik7CisgICAgJGJhY2tlbmRDb25zdHJ1
Y3RvciA9IGpvaW4oIlxuIiwgQGJhY2tlbmRIZWFkKTsKKyAgICAkYmFja2VuZEZvb3RlciA9ICIg
ICAgSW5zcGVjdG9yQmFja2VuZCogbV9pbnNwZWN0b3JCYWNrZW5kOyI7CisgICAgJGJhY2tlbmRU
eXBlc3siSW5zcGVjdG9yQmFja2VuZCJ9ID0gMTsKKyAgICAkYmFja2VuZFR5cGVzeyJQYXNzUmVm
UHRyIn0gPSAxOworICAgICRiYWNrZW5kVHlwZXN7IkFycmF5In0gPSAxOworCiAgICAgZ2VuZXJh
dGVGdW5jdGlvbnMoJGludGVyZmFjZSk7CiB9CiAKQEAgLTE1OSw3ICsxODEsOSBAQCBzdWIgZ2Vu
ZXJhdGVGdW5jdGlvbnMKIAogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2Ut
PmZ1bmN0aW9uc30pIHsKICAgICAgICAgZ2VuZXJhdGVGcm9udGVuZEZ1bmN0aW9uKCRmdW5jdGlv
bik7CisgICAgICAgIGdlbmVyYXRlQmFja2VuZEZ1bmN0aW9uKCRmdW5jdGlvbik7CiAgICAgfQor
ICAgIHB1c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVCYWNrZW5kRGlzcGF0Y2hlcigp
KTsKIH0KIAogc3ViIGdlbmVyYXRlRnJvbnRlbmRGdW5jdGlvbgpAQCAtMTk4LDYgKzIyMiwxMDIg
QEAgc3ViIGdlbmVyYXRlRnJvbnRlbmRGdW5jdGlvbgogICAgIH0KIH0KIAorc3ViIGdlbmVyYXRl
QmFja2VuZEZ1bmN0aW9uCit7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgcmV0dXJu
IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsibm90aWZ5In07
CisKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisK
KyAgICBteSBAYXJnc0ZpbHRlcmVkID0gZ3JlcCgkXy0+ZGlyZWN0aW9uIGVxICJpbiIsIEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfSk7CisgICAgbWFwKCRiYWNrZW5kVHlwZXN7JF8tPnR5cGV9ID0g
MSwgQGFyZ3NGaWx0ZXJlZCk7ICMgcmVnaXN0ZXIgcmVxdWlyZWQgdHlwZXMKKyAgICBteSAkYXJn
dW1lbnRzID0gam9pbigiLCAiLCBtYXAoJHR5cGVUcmFuc2Zvcm17JF8tPnR5cGV9LT57InBhcmFt
In0gLiAiICIgLiAkXy0+bmFtZSwgQGFyZ3NGaWx0ZXJlZCkpOworCisgICAgbXkgJHNpZ25hdHVy
ZSA9ICIgICAgdm9pZCAke2Z1bmN0aW9uTmFtZX0oUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
YXJncyk7IjsKKyAgICAhJGJhY2tlbmRNZXRob2RzeyR7c2lnbmF0dXJlfX0gfHwgZGllICJEdXBs
aWNhdGUgZnVuY3Rpb24gd2FzIGRldGVjdGVkIGZvciBzaWduYXR1cmUgJyRzaWduYXR1cmUnLiI7
CisgICAgJGJhY2tlbmRNZXRob2RzeyR7c2lnbmF0dXJlfX0gPSAkZnVuY3Rpb25OYW1lOworCisg
ICAgbXkgQGZ1bmN0aW9uOworICAgIHB1c2goQGZ1bmN0aW9uLCAidm9pZCAke2JhY2tlbmRDbGFz
c05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0oUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4iIC4gKCBz
Y2FsYXIoQGFyZ3NGaWx0ZXJlZCkgPyAiIGFyZ3MpIiA6ICIpIikpOworICAgIHB1c2goQGZ1bmN0
aW9uLCAieyIpOworICAgIG15ICRpID0gMTsgIyB6ZXJvIGVsZW1lbnQgaXMgdGhlIG1ldGhvZCBu
YW1lLgorICAgIG15IEBhcmdzOworICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQGFyZ3NGaWx0
ZXJlZCkgeworICAgICAgICBteSAkdHlwZTsKKyAgICAgICAgaWYgKCR0eXBlVHJhbnNmb3JteyRw
YXJhbWV0ZXItPnR5cGV9LT57ImFjY2Vzc29yU3VmZml4In0gZXEgIk51bWJlciIpIHsKKyAgICAg
ICAgICAgICR0eXBlID0gImRvdWJsZSI7CisgICAgICAgICAgICBwdXNoKEBhcmdzLCAiKCIgLiAk
dHlwZVRyYW5zZm9ybXskcGFyYW1ldGVyLT50eXBlfS0+eyJyZXRWYWwifSAuICIpIiAuICRwYXJh
bWV0ZXItPm5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJHR5cGUgPSAkdHlw
ZVRyYW5zZm9ybXskcGFyYW1ldGVyLT50eXBlfS0+eyJyZXRWYWwifTsKKyAgICAgICAgICAgIHB1
c2goQGFyZ3MsICRwYXJhbWV0ZXItPm5hbWUpOworICAgICAgICB9CisgICAgICAgIHB1c2goQGZ1
bmN0aW9uLCAiICAgICIgLiAkdHlwZSAuICIgIiAuICRwYXJhbWV0ZXItPm5hbWUgLiAiOyIpOwor
ICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBpZiAoIWFyZ3MtPmdldCgiIC4gJGkgLiAiKS0+
YXMiIC4gJHR5cGVUcmFuc2Zvcm17JHBhcmFtZXRlci0+dHlwZX0tPnsiYWNjZXNzb3JTdWZmaXgi
fSAuICIoJiIgLiAkcGFyYW1ldGVyLT5uYW1lIC4gIikpIHsiKTsKKyAgICAgICAgcHVzaChAZnVu
Y3Rpb24sICIgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyIpOworICAgICAgICBwdXNoKEBm
dW5jdGlvbiwgIiAgICAgICAgcmV0dXJuOyIpOworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICB9Iik7CisgICAgICAgICsrJGk7CisgICAgfQorICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIG1f
aW5zcGVjdG9yQmFja2VuZC0+JGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJncykgLiAi
KTsiKTsKKyAgICBwdXNoKEBmdW5jdGlvbiwgIn0iKTsKKyAgICBwdXNoKEBmdW5jdGlvbiwgIiIp
OworICAgIHB1c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgQGZ1bmN0aW9uKTsKK30KKworc3ViIGdl
bmVyYXRlQmFja2VuZERpc3BhdGNoZXIKK3sKKyAgICBteSBAYm9keTsKKyAgICBteSBAbWV0aG9k
cyA9IG1hcCgkYmFja2VuZE1ldGhvZHN7JF99LCBrZXlzICViYWNrZW5kTWV0aG9kcyk7CisgICAg
bXkgQG1hcEVudHJpZXMgPSBtYXAoImRpc3BhdGNoTWFwLmFkZChTdHJpbmcoXCIkX1wiKSwgJiR7
YmFja2VuZENsYXNzTmFtZX06OiRfKTsiLCBAbWV0aG9kcyk7CisKKyAgICBwdXNoKEBib2R5LCAi
dm9pZCAke2JhY2tlbmRDbGFzc05hbWV9OjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IFN0cmluZyogZXhjZXB0aW9uKSIpOworICAgIHB1c2goQGJvZHksICJ7Iik7CisgICAgcHVzaChA
Ym9keSwgIiAgICB0eXBlZGVmIHZvaWQgKCR7YmFja2VuZENsYXNzTmFtZX06OipDYWxsSGFuZGxl
cikoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7Iik7CisgICAgcHVzaChAYm9keSwg
IiAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxlcj4gRGlzcGF0Y2hNYXA7Iik7
CisgICAgcHVzaChAYm9keSwgIiAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBk
aXNwYXRjaE1hcCwgKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIGlmIChkaXNwYXRjaE1hcC5p
c0VtcHR5KCkpIHsiKTsKKyAgICBwdXNoKEBib2R5LCBtYXAoIiAgICAgICAgJF8iLCBAbWFwRW50
cmllcykpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1c2goQGJvZHksICIiKTsK
KyAgICBwdXNoKEBib2R5LCAiICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcGFyc2VkTWVzc2Fn
ZSA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7Iik7CisgICAgcHVzaChAYm9k
eSwgIiAgICBpZiAoIXBhcnNlZE1lc3NhZ2UpIHsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICAqZXhj
ZXB0aW9uID0gXCJFcnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4gTWVzc2FnZSBzaG91bGQg
YmUgaW4gSlNPTiBmb3JtYXQuXCI7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgcmV0dXJu
OyIpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1c2goQGJvZHksICIiKTsKKyAg
ICBwdXNoKEBib2R5LCAiICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gbWVzc2FnZUFycmF5ID0g
cGFyc2VkTWVzc2FnZS0+YXNBcnJheSgpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgaWYgKCFt
ZXNzYWdlQXJyYXkpIHsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICAqZXhjZXB0aW9uID0gXCJFcnJv
cjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4gVGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGpzb25pZmll
ZCBhcnJheSBvZiBhcmd1bWVudHMuXCI7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgcmV0
dXJuOyIpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1c2goQGJvZHksICIiKTsK
KyAgICBwdXNoKEBib2R5LCAiICAgIGlmICghbWVzc2FnZUFycmF5LT5sZW5ndGgoKSkgeyIpOwor
ICAgIHB1c2goQGJvZHksICIgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyIpOworICAgIHB1
c2goQGJvZHksICIgICAgICAgICpleGNlcHRpb24gPSBcIkVycm9yOiBJbnZhbGlkIG1lc3NhZ2Ug
Zm9ybWF0LiBFbXB0eSBtZXNzYWdlIHdhcyByZWNlaXZlZC5cIjsiKTsKKyAgICBwdXNoKEBib2R5
LCAiICAgICAgICByZXR1cm47Iik7CisgICAgcHVzaChAYm9keSwgIiAgICB9Iik7CisgICAgcHVz
aChAYm9keSwgIiIpOworICAgIHB1c2goQGJvZHksICIgICAgU3RyaW5nIG1ldGhvZE5hbWU7Iik7
CisgICAgcHVzaChAYm9keSwgIiAgICBpZiAoIW1lc3NhZ2VBcnJheS0+Z2V0KDApLT5hc1N0cmlu
ZygmbWV0aG9kTmFtZSkpIHsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICAqZXhjZXB0aW9uID0gXCJF
cnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4gVGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIG1l
c3NhZ2Ugc2hvdWxkIGJlIG1ldGhvZCBuYW1lLlwiOyIpOworICAgIHB1c2goQGJvZHksICIgICAg
ICAgIHJldHVybjsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIH0iKTsKKyAgICBwdXNoKEBib2R5
LCAiIik7CisgICAgcHVzaChAYm9keSwgIiAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+
OjppdGVyYXRvciBpdCA9IGRpc3BhdGNoTWFwLmZpbmQobWV0aG9kTmFtZSk7Iik7CisgICAgcHVz
aChAYm9keSwgIiAgICBpZiAoaXQgPT0gZGlzcGF0Y2hNYXAuZW5kKCkpIHsiKTsKKyAgICBwdXNo
KEBib2R5LCAiICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsiKTsKKyAgICBwdXNoKEBib2R5
LCAiICAgICAgICBTdHJpbmc6OmZvcm1hdChcIkVycm9yOiBJbnZhbGlkIG1ldGhvZCBuYW1lLiAn
JXMnIHdhc24ndCBmb3VuZC5cIiwgbWV0aG9kTmFtZS51dGY4KCkuZGF0YSgpKTsiKTsKKyAgICBw
dXNoKEBib2R5LCAiICAgICAgICByZXR1cm47Iik7CisgICAgcHVzaChAYm9keSwgIiAgICB9Iik7
CisgICAgcHVzaChAYm9keSwgIiIpOworICAgIHB1c2goQGJvZHksICIgICAgKCgqdGhpcykuKml0
LT5zZWNvbmQpKG1lc3NhZ2VBcnJheSk7Iik7CisgICAgcHVzaChAYm9keSwgIn0iKTsKKyAgICBy
ZXR1cm4gQGJvZHk7Cit9CisKIHN1YiBnZW5lcmF0ZUhlYWRlcgogewogICAgIG15ICRjbGFzc05h
bWUgPSBzaGlmdDsKQEAgLTI4NCw2ICs0MDQsMTUgQEAgc3ViIGZpbmlzaAogICAgIGNsb3NlKCRI
RUFERVIpOwogICAgIHVuZGVmKCRIRUFERVIpOwogCisgICAgb3BlbigkU09VUkNFLCAiPiRvdXRw
dXREaXIvJGJhY2tlbmRDbGFzc05hbWUuY3BwIikgfHwgZGllICJDb3VsZG4ndCBvcGVuIGZpbGUg
JG91dHB1dERpci8kYmFja2VuZENsYXNzTmFtZS5jcHAiOworICAgIHByaW50ICRTT1VSQ0Ugam9p
bigiXG4iLCBnZW5lcmF0ZVNvdXJjZSgkYmFja2VuZENsYXNzTmFtZSwgXCViYWNrZW5kVHlwZXMs
IFxAYmFja2VuZE1ldGhvZHNJbXBsKSk7CisgICAgY2xvc2UoJFNPVVJDRSk7CisgICAgdW5kZWYo
JFNPVVJDRSk7CisKKyAgICBvcGVuKCRIRUFERVIsICI+JG91dHB1dEhlYWRlcnNEaXIvJGJhY2tl
bmRDbGFzc05hbWUuaCIpIHx8IGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRvdXRwdXRIZWFkZXJz
RGlyLyRiYWNrZW5kQ2xhc3NOYW1lLmgiOworICAgIHByaW50ICRIRUFERVIgam9pbigiXG4iLCBn
ZW5lcmF0ZUhlYWRlcigkYmFja2VuZENsYXNzTmFtZSwgXCViYWNrZW5kVHlwZXMsICRiYWNrZW5k
Q29uc3RydWN0b3IsIFwlYmFja2VuZE1ldGhvZHMsICRiYWNrZW5kRm9vdGVyKSk7CisgICAgY2xv
c2UoJEhFQURFUik7CisgICAgdW5kZWYoJEhFQURFUik7CiB9CiAKIDE7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDg4NzliOGUuLjdmOWYzZDUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01NSw2ICs1NSw3IEBA
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhv
c3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NTdG9yZS5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmgiCkBAIC0xOTIsNiArMTkzLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9y
Q29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICAsIG1f
cmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdzTG9hZGVkKGZh
bHNlKQogICAgICwgbV9pbnNwZWN0b3JCYWNrZW5kKEluc3BlY3RvckJhY2tlbmQ6OmNyZWF0ZSh0
aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIobmV3IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKG1faW5zcGVjdG9yQmFja2VuZC5nZXQoKSkpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0SG9zdChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSh0aGlzKSkKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAsIG1fZGVidWdnZXJFbmFibGVkKGZhbHNlKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDc2Yjg4ZjEuLjE3NmRk
MTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTY0LDYgKzY0
LDcgQEAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRIb3N0OwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKK2NsYXNzIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5z
cGVjdG9yQ1NTU3RvcmU7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U7CkBAIC0x
MjAsNiArMTIxLDcgQEAgcHVibGljOgogICAgIH5JbnNwZWN0b3JDb250cm9sbGVyKCk7CiAKICAg
ICBJbnNwZWN0b3JCYWNrZW5kKiBpbnNwZWN0b3JCYWNrZW5kKCkgeyByZXR1cm4gbV9pbnNwZWN0
b3JCYWNrZW5kLmdldCgpOyB9CisgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKTsgfQogICAgIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0
KCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCk7IH0KIAogICAgIHZvaWQgaW5z
cGVjdGVkUGFnZURlc3Ryb3llZCgpOwpAQCAtMzk1LDYgKzM5Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkOwogICAgIGJvb2wgbV9zZXR0aW5nc0xvYWRl
ZDsKICAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZD4gbV9pbnNwZWN0b3JCYWNrZW5kOworICAg
IE93blB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjsKICAgICBSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0
SG9zdDsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gU2V0dGluZ3M7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDQ4ZWI0
YzAuLmVjOTU1OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCkBAIC0yMjIsNyArMjIyLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFBhdGhPblJlc2V0KSB7CiAg
ICAgICAgICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoc2VsZWN0
TGFzdFNlbGVjdGVkTm9kZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgICAgIEluc3BlY3RvckJhY2tl
bmQucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGNhbGxJZCwgdGhpcy5fc2VsZWN0ZWRQYXRoT25S
ZXNldCk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlQnlQYXRoVG9Gcm9u
dGVuZChjYWxsSWQsIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQuam9pbigiLCIpKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBzZWxlY3ROb2RlLmNhbGwodGhpcyk7CiAgICAgICAgIGRl
bGV0ZSB0aGlzLl9zZWxlY3RlZFBhdGhPblJlc2V0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDg1Mzc5ZC4u
MWU2YTRiMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDctMjIgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogQ29kZUdlbmVyYXRvcklu
c3BlY3RvciB3YXMgZXh0ZW5kZWQgYW5kIG5vdyBpdCBjYW4KKyAgICAgICAgZ2VuZXJhdGUgSW5z
cGVjdG9yQmFja2VkRGlzcGF0Y2hlcidzIGNvZGUuIFRoaXMgZGlzcGF0Y2hlciB3aWxsCisgICAg
ICAgIHZhbGlkYXRlIGFuZCBkaXNwYXRjaCBpbmNvbWluZyBpbnNwZWN0b3IgY29tbWFuZHMgb25s
eSBieSBuYXRpdmUKKyAgICAgICAgY29kZSB3aXRob3V0IHVzaW5nIGphdmFTY3JpcHQuIFRoYXQg
aXMgbmVjZXNzYXJ5IHN0ZXAgZm9yCisgICAgICAgIFJlbW90ZURlYnVnZ2luZyBzdXBwb3J0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI1ODgKKwor
ICAgICAgICAqIHNyYy9Ub29sc0FnZW50Lmg6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdl
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3Bh
dGNoT25JbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuaDoKKyAgICAgICAgKiBzcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanM6Cisg
ICAgICAgIChkZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbC5wcm90b3R5cGUuY2FsbEluc3Bl
Y3RvckNvbnRyb2xsZXJfKToKKwogMjAxMC0wNy0yMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Ub29sc0FnZW50LmggYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1Rvb2xzQWdlbnQuaAppbmRleCBjNzQ4YzhhLi5kODc4YWVhIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Rv
b2xzQWdlbnQuaApAQCAtMzksOCArMzksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIEFQSSBm
b3IgYXV4aWxpYXJ5IFVJIGZ1bmN0aW9ucyBzdWNoIGFzIGRvbSBlbGVtZW50cyBoaWdobGlnaHRp
bmcuCiAjZGVmaW5lIFRPT0xTX0FHRU5UX1NUUlVDVChNRVRIT0QwLCBNRVRIT0QxLCBNRVRIT0Qy
LCBNRVRIT0QzLCBNRVRIT0Q0LCBNRVRIT0Q1KSBcCiAgICAgLyogRGlzcGF0Y2hlcyBnaXZlbiBm
dW5jdGlvbiBvbiB0aGUgSW5zcGVjdG9yQ29udHJvbGxlciBvYmplY3QgKi8gXAotICAgIE1FVEhP
RDMoZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIsIGludCAvKiBjYWxsX2lkICovLCBcCi0g
ICAgICAgIFN0cmluZyAvKiBmdW5jdGlvbl9uYW1lICovLCBTdHJpbmcgLyoganNvbl9hcmdzICov
KSBcCisgICAgTUVUSE9EMihkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlciwgaW50IC8qIGNh
bGxfaWQgKi8sIFwKKyAgICAgICAgU3RyaW5nIC8qIG1lc3NhZ2UgKi8pIFwKICAgICBcCiAgICAg
LyogRGlzcGF0Y2hlcyBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgSW5qZWN0ZWRTY3JpcHQgb2JqZWN0
ICovIFwKICAgICBNRVRIT0Q1KGRpc3BhdGNoT25JbmplY3RlZFNjcmlwdCwgaW50IC8qIGNhbGxf
aWQgKi8sIFwKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAK
aW5kZXggMGQ4Y2JhZC4uNjIzOGRkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZU
b29sc0FnZW50SW1wbC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIKQEAgLTMwOCwxMyArMzA5LDEx
IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmZvcmNlUmVwYWludCgpCiAgICAgbV9jbGll
bnQtPmZvcmNlUmVwYWludCgpOwogfQogCi12b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNw
YXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlcihpbnQgY2FsbElkLCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBqc29uQXJncykKK3ZvaWQgV2ViRGV2VG9vbHNBZ2VudElt
cGw6OmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGludCBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgcmVzdWx0OwogICAgIFN0cmluZyBleGNlcHRpb247
Ci0gICAgcmVzdWx0ID0gbV9kZWJ1Z2dlckFnZW50SW1wbC0+ZXhlY3V0ZVV0aWxpdHlGdW5jdGlv
bihtX3V0aWxpdHlDb250ZXh0LCBjYWxsSWQsCi0gICAgICAgICJJbnNwZWN0b3JDb250cm9sbGVy
RGlzcGF0Y2hlciIsIGZ1bmN0aW9uTmFtZSwganNvbkFyZ3MsIGZhbHNlIC8qIGlzIHN5bmMgKi8s
ICZleGNlcHRpb24pOwotICAgIG1fdG9vbHNBZ2VudERlbGVnYXRlU3R1Yi0+ZGlkRGlzcGF0Y2hP
bihjYWxsSWQsIHJlc3VsdCwgZXhjZXB0aW9uKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyKCkt
Pmluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKCktPmRpc3BhdGNoKG1lc3NhZ2UsICZleGNlcHRp
b24pOworICAgIG1fdG9vbHNBZ2VudERlbGVnYXRlU3R1Yi0+ZGlkRGlzcGF0Y2hPbihjYWxsSWQs
ICIiLCBleGNlcHRpb24pOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRj
aE9uSW5qZWN0ZWRTY3JpcHQoaW50IGNhbGxJZCwgaW50IGluamVjdGVkU2NyaXB0SWQsIGNvbnN0
IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGpzb25BcmdzLCBib29sIGFzeW5j
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5o
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IDEyZjUx
ZjkuLmJlYjVjZmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNB
Z2VudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkRldlRvb2xzQWdl
bnRJbXBsKCk7CiAKICAgICAvLyBUb29sc0FnZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlcihpbnQgY2FsbElkLCBjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBqc29u
QXJncyk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGlu
dCBjYWxsSWQsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoT25JbmplY3RlZFNjcmlwdChpbnQgY2FsbElkLCBpbnQgaW5qZWN0ZWRTY3Jp
cHRJZCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYganNvbkFyZ3MsIGJvb2wgYXN5bmMpOwogCiAgICAgLy8gV2ViRGV2VG9vbHNBZ2Vu
dFByaXZhdGUgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9J
bnNwZWN0b3JDb250cm9sbGVySW1wbC5qcwppbmRleCA1ZWQ1MDZhLi4zYmM0ZmQ2IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMKQEAg
LTE1NCw3ICsxNTQsOCBAQCBkZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbC5wcm90b3R5cGUu
aW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8gPSBmdQogZGV2dG9vbHMuSW5zcGVj
dG9yQmFja2VuZEltcGwucHJvdG90eXBlLmNhbGxJbnNwZWN0b3JDb250cm9sbGVyXyA9IGZ1bmN0
aW9uKG1ldGhvZE5hbWUsIHZhcl9hcmcpCiB7CiAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5
cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwotICAgIFJlbW90ZVRvb2xzQWdlbnQuZGlzcGF0
Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIoV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoZnVuY3Rp
b24oKXt9KSwgbWV0aG9kTmFtZSwgSlNPTi5zdHJpbmdpZnkoYXJncykpOworICAgIGFyZ3MudW5z
aGlmdChtZXRob2ROYW1lKTsKKyAgICBSZW1vdGVUb29sc0FnZW50LmRpc3BhdGNoT25JbnNwZWN0
b3JDb250cm9sbGVyKFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKGZ1bmN0aW9uKCl7fSksIEpT
T04uc3RyaW5naWZ5KGFyZ3MpKTsKIH07CiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62279</attachid>
            <date>2010-07-22 02:56:02 -0700</date>
            <delta_ts>2010-07-22 02:56:02 -0700</delta_ts>
            <desc>sample: InspectorBackendDispatcher.cpp</desc>
            <filename>InspectorBackendDispatcher.cpp</filename>
            <type>application/octet-stream</type>
            <size>35672</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">Ly8gQ29weXJpZ2h0IChjKSAyMDEwIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgovLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCgoK
I2luY2x1ZGUgImNvbmZpZy5oIgojaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCIKCiNpZiBFTkFCTEUoSU5TUEVDVE9SKQoKI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmQuaCIK
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgojaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
Cm5hbWVzcGFjZSBXZWJDb3JlIHsKCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnN0
b3JlTGFzdEFjdGl2ZVBhbmVsKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAg
IFN0cmluZyBwYW5lbE5hbWU7CiAgICBpZiAoIWFyZ3MtPmdldCgxKS0+YXNTdHJpbmcoJnBhbmVs
TmFtZSkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAg
ICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPnN0b3JlTGFzdEFjdGl2ZVBhbmVsKHBhbmVsTmFt
ZSk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnNhdmVBcHBsaWNhdGlvblNl
dHRpbmdzKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIFN0cmluZyBzZXR0
aW5nczsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc1N0cmluZygmc2V0dGluZ3MpKSB7CiAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNw
ZWN0b3JCYWNrZW5kLT5zYXZlQXBwbGljYXRpb25TZXR0aW5ncyhzZXR0aW5ncyk7Cn0KCnZvaWQg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnNhdmVTZXNzaW9uU2V0dGluZ3MoUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewogICAgU3RyaW5nIHNldHRpbmdzOwogICAgaWYgKCFh
cmdzLT5nZXQoMSktPmFzU3RyaW5nKCZzZXR0aW5ncykpIHsKICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPnNh
dmVTZXNzaW9uU2V0dGluZ3Moc2V0dGluZ3MpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjplbmFibGVTZWFyY2hpbmdGb3JOb2RlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KQp7CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmVuYWJsZVNlYXJjaGluZ0Zvck5vZGUoKTsKfQoK
dm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzYWJsZVNlYXJjaGluZ0Zvck5vZGUo
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4pCnsKICAgIG1faW5zcGVjdG9yQmFja2VuZC0+ZGlz
YWJsZVNlYXJjaGluZ0Zvck5vZGUoKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6ZW5hYmxlTW9uaXRvcmluZ1hIUihQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PikKewogICAg
bV9pbnNwZWN0b3JCYWNrZW5kLT5lbmFibGVNb25pdG9yaW5nWEhSKCk7Cn0KCnZvaWQgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmRpc2FibGVNb25pdG9yaW5nWEhSKFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+KQp7CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmRpc2FibGVNb25pdG9yaW5n
WEhSKCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmVuYWJsZVJlc291cmNl
VHJhY2tpbmcoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewogICAgYm9vbCBhbHdh
eXM7CiAgICBpZiAoIWFyZ3MtPmdldCgxKS0+YXNCb29sKCZhbHdheXMpKSB7CiAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JC
YWNrZW5kLT5lbmFibGVSZXNvdXJjZVRyYWNraW5nKGFsd2F5cyk7Cn0KCnZvaWQgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmRpc2FibGVSZXNvdXJjZVRyYWNraW5nKFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGJvb2wgYWx3YXlzOwogICAgaWYgKCFhcmdzLT5nZXQo
MSktPmFzQm9vbCgmYWx3YXlzKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgIHJldHVybjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+ZGlzYWJsZVJlc291cmNl
VHJhY2tpbmcoYWx3YXlzKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
UmVzb3VyY2VDb250ZW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRv
dWJsZSBjYWxsSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgxKS0+YXNOdW1iZXIoJmNhbGxJZCkpIHsK
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBk
b3VibGUgaWRlbnRpZmllcjsKICAgIGlmICghYXJncy0+Z2V0KDIpLT5hc051bWJlcigmaWRlbnRp
ZmllcikpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAg
ICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmdldFJlc291cmNlQ29udGVudCgobG9uZyljYWxs
SWQsICh1bnNpZ25lZCBsb25nKWlkZW50aWZpZXIpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpyZWxvYWRQYWdlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KQp7CiAgICBt
X2luc3BlY3RvckJhY2tlbmQtPnJlbG9hZFBhZ2UoKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6c3RhcnRUaW1lbGluZVByb2ZpbGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KQp7CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOwp9
Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzdG9wVGltZWxpbmVQcm9maWxlcihQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PikKewogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5zdG9w
VGltZWxpbmVQcm9maWxlcigpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpl
bmFibGVEZWJ1Z2dlcihQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBib29s
IGFsd2F5czsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc0Jvb2woJmFsd2F5cykpIHsKICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3Bl
Y3RvckJhY2tlbmQtPmVuYWJsZURlYnVnZ2VyKGFsd2F5cyk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OmRpc2FibGVEZWJ1Z2dlcihQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBhcmdzKQp7CiAgICBib29sIGFsd2F5czsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc0Jvb2wo
JmFsd2F5cykpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47
CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmRpc2FibGVEZWJ1Z2dlcihhbHdheXMpOwp9
Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZXRCcmVha3BvaW50KFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRvdWJsZSBjYWxsSWQ7CiAgICBpZiAoIWFy
Z3MtPmdldCgxKS0+YXNOdW1iZXIoJmNhbGxJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBTdHJpbmcgc291cmNlSUQ7CiAgICBpZiAo
IWFyZ3MtPmdldCgyKS0+YXNTdHJpbmcoJnNvdXJjZUlEKSkgewogICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGRvdWJsZSBsaW5lTnVtYmVyOwog
ICAgaWYgKCFhcmdzLT5nZXQoMyktPmFzTnVtYmVyKCZsaW5lTnVtYmVyKSkgewogICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGJvb2wgZW5hYmxl
ZDsKICAgIGlmICghYXJncy0+Z2V0KDQpLT5hc0Jvb2woJmVuYWJsZWQpKSB7CiAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIGNvbmRp
dGlvbjsKICAgIGlmICghYXJncy0+Z2V0KDUpLT5hc1N0cmluZygmY29uZGl0aW9uKSkgewogICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG1faW5z
cGVjdG9yQmFja2VuZC0+c2V0QnJlYWtwb2ludCgobG9uZyljYWxsSWQsIHNvdXJjZUlELCAodW5z
aWduZWQgbG9uZylsaW5lTnVtYmVyLCBlbmFibGVkLCBjb25kaXRpb24pOwp9Cgp2b2lkIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZW1vdmVCcmVha3BvaW50KFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGFyZ3MpCnsKICAgIFN0cmluZyBzb3VyY2VJRDsKICAgIGlmICghYXJncy0+Z2V0
KDEpLT5hc1N0cmluZygmc291cmNlSUQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIGxpbmVOdW1iZXI7CiAgICBpZiAoIWFy
Z3MtPmdldCgyKS0+YXNOdW1iZXIoJmxpbmVOdW1iZXIpKSB7CiAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5y
ZW1vdmVCcmVha3BvaW50KHNvdXJjZUlELCAodW5zaWduZWQgbG9uZylsaW5lTnVtYmVyKTsKfQoK
dm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6YWN0aXZhdGVCcmVha3BvaW50cyhQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PikKewogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5hY3RpdmF0
ZUJyZWFrcG9pbnRzKCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmRlYWN0
aXZhdGVCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PikKewogICAgbV9pbnNw
ZWN0b3JCYWNrZW5kLT5kZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKfQoKdm9pZCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6cGF1c2UoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4pCnsKICAg
IG1faW5zcGVjdG9yQmFja2VuZC0+cGF1c2UoKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6cmVzdW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KQp7CiAgICBtX2luc3Bl
Y3RvckJhY2tlbmQtPnJlc3VtZSgpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpzdGVwT3ZlclN0YXRlbWVudChQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PikKewogICAgbV9p
bnNwZWN0b3JCYWNrZW5kLT5zdGVwT3ZlclN0YXRlbWVudCgpOwp9Cgp2b2lkIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpzdGVwSW50b1N0YXRlbWVudChQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PikKewogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5zdGVwSW50b1N0YXRlbWVudCgpOwp9Cgp2
b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzdGVwT3V0T2ZGdW5jdGlvbihQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PikKewogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5zdGVwT3V0T2ZG
dW5jdGlvbigpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRv
dWJsZSBwYXVzZU9uRXhjZXB0aW9uc1N0YXRlOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVt
YmVyKCZwYXVzZU9uRXhjZXB0aW9uc1N0YXRlKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+c2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSgobG9uZylwYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKfQoKdm9p
ZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZWRpdFNjcmlwdFNvdXJjZShQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdz
LT5nZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIHNvdXJjZUlEOwogICAgaWYgKCFh
cmdzLT5nZXQoMiktPmFzU3RyaW5nKCZzb3VyY2VJRCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBTdHJpbmcgbmV3Q29udGVudDsKICAg
IGlmICghYXJncy0+Z2V0KDMpLT5hc1N0cmluZygmbmV3Q29udGVudCkpIHsKICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJh
Y2tlbmQtPmVkaXRTY3JpcHRTb3VyY2UoKGxvbmcpY2FsbElkLCBzb3VyY2VJRCwgbmV3Q29udGVu
dCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFNjcmlwdFNvdXJjZShQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAg
aWYgKCFhcmdzLT5nZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIHNvdXJjZUlEOwog
ICAgaWYgKCFhcmdzLT5nZXQoMiktPmFzU3RyaW5nKCZzb3VyY2VJRCkpIHsKICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJh
Y2tlbmQtPmdldFNjcmlwdFNvdXJjZSgobG9uZyljYWxsSWQsIHNvdXJjZUlEKTsKfQoKdm9pZCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZW5hYmxlUHJvZmlsZXIoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYXJncykKewogICAgYm9vbCBhbHdheXM7CiAgICBpZiAoIWFyZ3MtPmdldCgx
KS0+YXNCb29sKCZhbHdheXMpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5lbmFibGVQcm9maWxlcihh
bHdheXMpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNhYmxlUHJvZmls
ZXIoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewogICAgYm9vbCBhbHdheXM7CiAg
ICBpZiAoIWFyZ3MtPmdldCgxKS0+YXNCb29sKCZhbHdheXMpKSB7CiAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5k
LT5kaXNhYmxlUHJvZmlsZXIoYWx3YXlzKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6c3RhcnRQcm9maWxpbmcoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4pCnsKICAgIG1f
aW5zcGVjdG9yQmFja2VuZC0+c3RhcnRQcm9maWxpbmcoKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6c3RvcFByb2ZpbGluZyhQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PikK
ewogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5zdG9wUHJvZmlsaW5nKCk7Cn0KCnZvaWQgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFByb2ZpbGVIZWFkZXJzKFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRvdWJsZSBjYWxsSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgx
KS0+YXNOdW1iZXIoJmNhbGxJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmdldFByb2ZpbGVIZWFk
ZXJzKChsb25nKWNhbGxJZCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dFByb2ZpbGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewogICAgZG91YmxlIGNh
bGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJlcigmY2FsbElkKSkgewogICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGRvdWJsZSB1
aWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNOdW1iZXIoJnVpZCkpIHsKICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJh
Y2tlbmQtPmdldFByb2ZpbGUoKGxvbmcpY2FsbElkLCAodW5zaWduZWQgbG9uZyl1aWQpOwp9Cgp2
b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZW1vdmVQcm9maWxlKFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRvdWJsZSB1aWQ7CiAgICBpZiAoIWFyZ3MtPmdl
dCgxKS0+YXNOdW1iZXIoJnVpZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPnJlbW92ZVByb2ZpbGUo
KHVuc2lnbmVkIGxvbmcpdWlkKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Y2xlYXJQcm9maWxlcyhQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PikKewogICAgbV9pbnNwZWN0
b3JCYWNrZW5kLT5jbGVhclByb2ZpbGVzKCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OnRha2VIZWFwU25hcHNob3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4pCnsKICAg
IG1faW5zcGVjdG9yQmFja2VuZC0+dGFrZUhlYXBTbmFwc2hvdCgpOwp9Cgp2b2lkIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpzZXRJbmplY3RlZFNjcmlwdFNvdXJjZShQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBTdHJpbmcgc2NyaXB0U291cmNlOwogICAgaWYgKCFh
cmdzLT5nZXQoMSktPmFzU3RyaW5nKCZzY3JpcHRTb3VyY2UpKSB7CiAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5k
LT5zZXRJbmplY3RlZFNjcmlwdFNvdXJjZShzY3JpcHRTb3VyY2UpOwp9Cgp2b2lkIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gYXJncykKewogICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+
Z2V0KDEpLT5hc051bWJlcigmY2FsbElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGRvdWJsZSBpbmplY3RlZFNjcmlwdElkOwogICAg
aWYgKCFhcmdzLT5nZXQoMiktPmFzTnVtYmVyKCZpbmplY3RlZFNjcmlwdElkKSkgewogICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIFN0cmluZyBt
ZXRob2ROYW1lOwogICAgaWYgKCFhcmdzLT5nZXQoMyktPmFzU3RyaW5nKCZtZXRob2ROYW1lKSkg
ewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAg
IFN0cmluZyBhcmd1bWVudHM7CiAgICBpZiAoIWFyZ3MtPmdldCg0KS0+YXNTdHJpbmcoJmFyZ3Vt
ZW50cykpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAg
ICB9CiAgICBib29sIGFzeW5jOwogICAgaWYgKCFhcmdzLT5nZXQoNSktPmFzQm9vbCgmYXN5bmMp
KSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQog
ICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5kaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoKGxvbmcpY2Fs
bElkLCAobG9uZylpbmplY3RlZFNjcmlwdElkLCBtZXRob2ROYW1lLCBhcmd1bWVudHMsIGFzeW5j
KTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6YWRkU2NyaXB0VG9FdmFsdWF0
ZU9uTG9hZChQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBTdHJpbmcgc2Ny
aXB0U291cmNlOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzU3RyaW5nKCZzY3JpcHRTb3VyY2Up
KSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQog
ICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5hZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKHNjcmlwdFNv
dXJjZSk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlbW92ZUFsbFNjcmlw
dHNUb0V2YWx1YXRlT25Mb2FkKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KQp7CiAgICBtX2lu
c3BlY3RvckJhY2tlbmQtPnJlbW92ZUFsbFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKCk7Cn0KCnZv
aWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldENoaWxkTm9kZXMoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gYXJncykKewogICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+
Z2V0KDEpLT5hc051bWJlcigmY2FsbElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGRvdWJsZSBub2RlSWQ7CiAgICBpZiAoIWFyZ3Mt
PmdldCgyKS0+YXNOdW1iZXIoJm5vZGVJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmdldENoaWxk
Tm9kZXMoKGxvbmcpY2FsbElkLCAobG9uZylub2RlSWQpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpzZXRBdHRyaWJ1dGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJn
cykKewogICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJlcigm
Y2FsbElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsK
ICAgIH0KICAgIGRvdWJsZSBlbGVtZW50SWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNOdW1i
ZXIoJmVsZW1lbnRJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICBy
ZXR1cm47CiAgICB9CiAgICBTdHJpbmcgbmFtZTsKICAgIGlmICghYXJncy0+Z2V0KDMpLT5hc1N0
cmluZygmbmFtZSkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1
cm47CiAgICB9CiAgICBTdHJpbmcgdmFsdWU7CiAgICBpZiAoIWFyZ3MtPmdldCg0KS0+YXNTdHJp
bmcoJnZhbHVlKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVy
bjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+c2V0QXR0cmlidXRlKChsb25nKWNhbGxJ
ZCwgKGxvbmcpZWxlbWVudElkLCBuYW1lLCB2YWx1ZSk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OnJlbW92ZUF0dHJpYnV0ZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBh
cmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVtYmVy
KCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJu
OwogICAgfQogICAgZG91YmxlIGVsZW1lbnRJZDsKICAgIGlmICghYXJncy0+Z2V0KDIpLT5hc051
bWJlcigmZWxlbWVudElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
IHJldHVybjsKICAgIH0KICAgIFN0cmluZyBuYW1lOwogICAgaWYgKCFhcmdzLT5nZXQoMyktPmFz
U3RyaW5nKCZuYW1lKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJl
dHVybjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+cmVtb3ZlQXR0cmlidXRlKChsb25n
KWNhbGxJZCwgKGxvbmcpZWxlbWVudElkLCBuYW1lKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6c2V0VGV4dE5vZGVWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBh
cmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVtYmVy
KCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJu
OwogICAgfQogICAgZG91YmxlIG5vZGVJZDsKICAgIGlmICghYXJncy0+Z2V0KDIpLT5hc051bWJl
cigmbm9kZUlkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVy
bjsKICAgIH0KICAgIFN0cmluZyB2YWx1ZTsKICAgIGlmICghYXJncy0+Z2V0KDMpLT5hc1N0cmlu
ZygmdmFsdWUpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJu
OwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5zZXRUZXh0Tm9kZVZhbHVlKChsb25nKWNh
bGxJZCwgKGxvbmcpbm9kZUlkLCB2YWx1ZSk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVt
YmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0
dXJuOwogICAgfQogICAgZG91YmxlIG5vZGVJZDsKICAgIGlmICghYXJncy0+Z2V0KDIpLT5hc051
bWJlcigmbm9kZUlkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJl
dHVybjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+Z2V0RXZlbnRMaXN0ZW5lcnNGb3JO
b2RlKChsb25nKWNhbGxJZCwgKGxvbmcpbm9kZUlkKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Y29weU5vZGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewog
ICAgZG91YmxlIG5vZGVJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJlcigmbm9kZUlk
KSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0K
ICAgIG1faW5zcGVjdG9yQmFja2VuZC0+Y29weU5vZGUoKGxvbmcpbm9kZUlkKTsKfQoKdm9pZCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVtb3ZlTm9kZShQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5nZXQoMSkt
PmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIG5vZGVJZDsKICAgIGlmICghYXJncy0+Z2V0KDIp
LT5hc051bWJlcigmbm9kZUlkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgIHJldHVybjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+cmVtb3ZlTm9kZSgobG9u
ZyljYWxsSWQsIChsb25nKW5vZGVJZCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmNoYW5nZVRhZ05hbWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewogICAg
ZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJlcigmY2FsbElkKSkg
ewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAg
IGRvdWJsZSBub2RlSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNOdW1iZXIoJm5vZGVJZCkp
IHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAg
ICBTdHJpbmcgbmV3VGFnTmFtZTsKICAgIGlmICghYXJncy0+Z2V0KDMpLT5hc1N0cmluZygmbmV3
VGFnTmFtZSkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47
CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmNoYW5nZVRhZ05hbWUoKGxvbmcpY2FsbElk
LCAobG9uZylub2RlSWQsIG5ld1RhZ05hbWUpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpnZXRPdXRlckhUTUwoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewog
ICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJlcigmY2FsbElk
KSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0K
ICAgIGRvdWJsZSBub2RlSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNOdW1iZXIoJm5vZGVJ
ZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9
CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmdldE91dGVySFRNTCgobG9uZyljYWxsSWQsIChsb25n
KW5vZGVJZCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnNldE91dGVySFRN
TChQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwog
ICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIG5vZGVJZDsK
ICAgIGlmICghYXJncy0+Z2V0KDIpLT5hc051bWJlcigmbm9kZUlkKSkgewogICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIFN0cmluZyBvdXRlckhU
TUw7CiAgICBpZiAoIWFyZ3MtPmdldCgzKS0+YXNTdHJpbmcoJm91dGVySFRNTCkpIHsKICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3Bl
Y3RvckJhY2tlbmQtPnNldE91dGVySFRNTCgobG9uZyljYWxsSWQsIChsb25nKW5vZGVJZCwgb3V0
ZXJIVE1MKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6YWRkSW5zcGVjdGVk
Tm9kZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgbm9kZUlk
OwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVtYmVyKCZub2RlSWQpKSB7CiAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JC
YWNrZW5kLT5hZGRJbnNwZWN0ZWROb2RlKChsb25nKW5vZGVJZCk7Cn0KCnZvaWQgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OnBlcmZvcm1TZWFyY2goUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYXJncykKewogICAgU3RyaW5nIHF1ZXJ5OwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzU3Ry
aW5nKCZxdWVyeSkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1
cm47CiAgICB9CiAgICBib29sIHJ1blN5bmNocm9ub3VzbHk7CiAgICBpZiAoIWFyZ3MtPmdldCgy
KS0+YXNCb29sKCZydW5TeW5jaHJvbm91c2x5KSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+cGVyZm9y
bVNlYXJjaChxdWVyeSwgcnVuU3luY2hyb25vdXNseSk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OnNlYXJjaENhbmNlbGVkKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KQp7
CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPnNlYXJjaENhbmNlbGVkKCk7Cn0KCnZvaWQgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdz
LT5nZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIHBhdGg7CiAgICBpZiAoIWFyZ3Mt
PmdldCgyKS0+YXNTdHJpbmcoJnBhdGgpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5wdXNoTm9kZUJ5
UGF0aFRvRnJvbnRlbmQoKGxvbmcpY2FsbElkLCBwYXRoKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3JB
cnJheT4pCnsKICAgIG1faW5zcGVjdG9yQmFja2VuZC0+Y2xlYXJDb25zb2xlTWVzc2FnZXMoKTsK
fQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6aGlnaGxpZ2h0RE9NTm9kZShQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgbm9kZUlkOwogICAgaWYg
KCFhcmdzLT5nZXQoMSktPmFzTnVtYmVyKCZub2RlSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5o
aWdobGlnaHRET01Ob2RlKChsb25nKW5vZGVJZCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmhpZGVET01Ob2RlSGlnaGxpZ2h0KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KQp7CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7Cn0KCnZv
aWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0eWxlcyhQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5nZXQo
MSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIG5vZGVJZDsKICAgIGlmICghYXJncy0+Z2V0
KDIpLT5hc051bWJlcigmbm9kZUlkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgIHJldHVybjsKICAgIH0KICAgIGJvb2wgYXV0aE9ubHk7CiAgICBpZiAoIWFyZ3MtPmdl
dCgzKS0+YXNCb29sKCZhdXRoT25seSkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmdldFN0eWxlcygo
bG9uZyljYWxsSWQsIChsb25nKW5vZGVJZCwgYXV0aE9ubHkpOwp9Cgp2b2lkIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRBbGxTdHlsZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
YXJncykKewogICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJl
cigmY2FsbElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVy
bjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+Z2V0QWxsU3R5bGVzKChsb25nKWNhbGxJ
ZCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldElubGluZVN0eWxlKFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRvdWJsZSBjYWxsSWQ7CiAgICBp
ZiAoIWFyZ3MtPmdldCgxKS0+YXNOdW1iZXIoJmNhbGxJZCkpIHsKICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBkb3VibGUgbm9kZUlkOwogICAg
aWYgKCFhcmdzLT5nZXQoMiktPmFzTnVtYmVyKCZub2RlSWQpKSB7CiAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5k
LT5nZXRJbmxpbmVTdHlsZSgobG9uZyljYWxsSWQsIChsb25nKW5vZGVJZCk7Cn0KCnZvaWQgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldENvbXB1dGVkU3R5bGUoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYXJncykKewogICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0
KDEpLT5hc051bWJlcigmY2FsbElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgIHJldHVybjsKICAgIH0KICAgIGRvdWJsZSBub2RlSWQ7CiAgICBpZiAoIWFyZ3MtPmdl
dCgyKS0+YXNOdW1iZXIoJm5vZGVJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmdldENvbXB1dGVk
U3R5bGUoKGxvbmcpY2FsbElkLCAobG9uZylub2RlSWQpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpnZXRTdHlsZVNoZWV0KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFy
Z3MpCnsKICAgIGRvdWJsZSBjYWxsSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgxKS0+YXNOdW1iZXIo
JmNhbGxJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47
CiAgICB9CiAgICBkb3VibGUgc3R5bGVTaGVldElkOwogICAgaWYgKCFhcmdzLT5nZXQoMiktPmFz
TnVtYmVyKCZzdHlsZVNoZWV0SWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5nZXRTdHlsZVNoZWV0
KChsb25nKWNhbGxJZCwgKGxvbmcpc3R5bGVTaGVldElkKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0UnVsZVJhbmdlc0ZvclN0eWxlU2hlZXRJZChQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5n
ZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIHN0eWxlU2hlZXRJZDsKICAgIGlmICgh
YXJncy0+Z2V0KDIpLT5hc051bWJlcigmc3R5bGVTaGVldElkKSkgewogICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2Vu
ZC0+Z2V0UnVsZVJhbmdlc0ZvclN0eWxlU2hlZXRJZCgobG9uZyljYWxsSWQsIChsb25nKXN0eWxl
U2hlZXRJZCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmFwcGx5U3R5bGVU
ZXh0KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRvdWJsZSBjYWxsSWQ7
CiAgICBpZiAoIWFyZ3MtPmdldCgxKS0+YXNOdW1iZXIoJmNhbGxJZCkpIHsKICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBkb3VibGUgc3R5bGVJ
ZDsKICAgIGlmICghYXJncy0+Z2V0KDIpLT5hc051bWJlcigmc3R5bGVJZCkpIHsKICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBTdHJpbmcgc3R5
bGVUZXh0OwogICAgaWYgKCFhcmdzLT5nZXQoMyktPmFzU3RyaW5nKCZzdHlsZVRleHQpKSB7CiAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgU3Ry
aW5nIHByb3BlcnR5TmFtZTsKICAgIGlmICghYXJncy0+Z2V0KDQpLT5hc1N0cmluZygmcHJvcGVy
dHlOYW1lKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsK
ICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+YXBwbHlTdHlsZVRleHQoKGxvbmcpY2FsbElk
LCAobG9uZylzdHlsZUlkLCBzdHlsZVRleHQsIHByb3BlcnR5TmFtZSk7Cn0KCnZvaWQgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OnNldFN0eWxlVGV4dChQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFz
TnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
cmV0dXJuOwogICAgfQogICAgZG91YmxlIHN0eWxlSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+
YXNOdW1iZXIoJnN0eWxlSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIHN0eWxlVGV4dDsKICAgIGlmICghYXJncy0+Z2V0
KDMpLT5hc1N0cmluZygmc3R5bGVUZXh0KSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG1faW5zcGVjdG9yQmFja2VuZC0+c2V0U3R5bGVU
ZXh0KChsb25nKWNhbGxJZCwgKGxvbmcpc3R5bGVJZCwgc3R5bGVUZXh0KTsKfQoKdm9pZCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2V0U3R5bGVQcm9wZXJ0eShQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5nZXQo
MSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIHN0eWxlSWQ7CiAgICBpZiAoIWFyZ3MtPmdl
dCgyKS0+YXNOdW1iZXIoJnN0eWxlSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIG5hbWU7CiAgICBpZiAoIWFyZ3MtPmdl
dCgzKS0+YXNTdHJpbmcoJm5hbWUpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIHZhbHVlOwogICAgaWYgKCFhcmdzLT5nZXQo
NCktPmFzU3RyaW5nKCZ2YWx1ZSkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPnNldFN0eWxlUHJvcGVy
dHkoKGxvbmcpY2FsbElkLCAobG9uZylzdHlsZUlkLCBuYW1lLCB2YWx1ZSk7Cn0KCnZvaWQgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnRvZ2dsZVN0eWxlRW5hYmxlZChQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5n
ZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIHN0eWxlSWQ7CiAgICBpZiAoIWFyZ3Mt
PmdldCgyKS0+YXNOdW1iZXIoJnN0eWxlSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIHByb3BlcnR5TmFtZTsKICAgIGlm
ICghYXJncy0+Z2V0KDMpLT5hc1N0cmluZygmcHJvcGVydHlOYW1lKSkgewogICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGJvb2wgZGlzYWJsZWQ7
CiAgICBpZiAoIWFyZ3MtPmdldCg0KS0+YXNCb29sKCZkaXNhYmxlZCkpIHsKICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJh
Y2tlbmQtPnRvZ2dsZVN0eWxlRW5hYmxlZCgobG9uZyljYWxsSWQsIChsb25nKXN0eWxlSWQsIHBy
b3BlcnR5TmFtZSwgZGlzYWJsZWQpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpzZXRSdWxlU2VsZWN0b3IoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewogICAg
ZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJlcigmY2FsbElkKSkg
ewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAg
IGRvdWJsZSBydWxlSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNOdW1iZXIoJnJ1bGVJZCkp
IHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAg
ICBTdHJpbmcgc2VsZWN0b3I7CiAgICBpZiAoIWFyZ3MtPmdldCgzKS0+YXNTdHJpbmcoJnNlbGVj
dG9yKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAg
IH0KICAgIGRvdWJsZSBzZWxlY3RlZE5vZGVJZDsKICAgIGlmICghYXJncy0+Z2V0KDQpLT5hc051
bWJlcigmc2VsZWN0ZWROb2RlSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5zZXRSdWxlU2VsZWN0
b3IoKGxvbmcpY2FsbElkLCAobG9uZylydWxlSWQsIHNlbGVjdG9yLCAobG9uZylzZWxlY3RlZE5v
ZGVJZCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmFkZFJ1bGUoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewogICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICgh
YXJncy0+Z2V0KDEpLT5hc051bWJlcigmY2FsbElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIFN0cmluZyBzZWxlY3RvcjsKICAgIGlm
ICghYXJncy0+Z2V0KDIpLT5hc1N0cmluZygmc2VsZWN0b3IpKSB7CiAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIHNlbGVjdGVkTm9k
ZUlkOwogICAgaWYgKCFhcmdzLT5nZXQoMyktPmFzTnVtYmVyKCZzZWxlY3RlZE5vZGVJZCkpIHsK
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBt
X2luc3BlY3RvckJhY2tlbmQtPmFkZFJ1bGUoKGxvbmcpY2FsbElkLCBzZWxlY3RvciwgKGxvbmcp
c2VsZWN0ZWROb2RlSWQpOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRD
b29raWVzKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRvdWJsZSBjYWxs
SWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgxKS0+YXNOdW1iZXIoJmNhbGxJZCkpIHsKICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3Rv
ckJhY2tlbmQtPmdldENvb2tpZXMoKGxvbmcpY2FsbElkKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGVsZXRlQ29va2llKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFy
Z3MpCnsKICAgIFN0cmluZyBjb29raWVOYW1lOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzU3Ry
aW5nKCZjb29raWVOYW1lKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
IHJldHVybjsKICAgIH0KICAgIFN0cmluZyBkb21haW47CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+
YXNTdHJpbmcoJmRvbWFpbikpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICByZXR1cm47CiAgICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmRlbGV0ZUNvb2tpZShjb29r
aWVOYW1lLCBkb21haW4pOwp9Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRB
cHBsaWNhdGlvbkNhY2hlcyhQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBk
b3VibGUgY2FsbElkOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7
CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAg
bV9pbnNwZWN0b3JCYWNrZW5kLT5nZXRBcHBsaWNhdGlvbkNhY2hlcygobG9uZyljYWxsSWQpOwp9
Cgp2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZWxlYXNlV3JhcHBlck9iamVjdEdy
b3VwKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpCnsKICAgIGRvdWJsZSBpbmplY3Rl
ZFNjcmlwdElkOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVtYmVyKCZpbmplY3RlZFNjcmlw
dElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAg
IH0KICAgIFN0cmluZyBvYmplY3RHcm91cDsKICAgIGlmICghYXJncy0+Z2V0KDIpLT5hc1N0cmlu
Zygmb2JqZWN0R3JvdXApKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
cmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5yZWxlYXNlV3JhcHBlck9iamVj
dEdyb3VwKChsb25nKWluamVjdGVkU2NyaXB0SWQsIG9iamVjdEdyb3VwKTsKfQoKdm9pZCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2FsbElkOwogICAgaWYg
KCFhcmdzLT5nZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgU3RyaW5nIGpzb25SZXN1bHQ7CiAg
ICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNTdHJpbmcoJmpzb25SZXN1bHQpKSB7CiAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JC
YWNrZW5kLT5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKChsb25nKWNhbGxJZCwganNvblJl
c3VsdCk7Cn0KCnZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERhdGFiYXNlVGFi
bGVOYW1lcyhQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKQp7CiAgICBkb3VibGUgY2Fs
bElkOwogICAgaWYgKCFhcmdzLT5nZXQoMSktPmFzTnVtYmVyKCZjYWxsSWQpKSB7CiAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZG91YmxlIGRh
dGFiYXNlSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNOdW1iZXIoJmRhdGFiYXNlSWQpKSB7
CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAg
bV9pbnNwZWN0b3JCYWNrZW5kLT5nZXREYXRhYmFzZVRhYmxlTmFtZXMoKGxvbmcpY2FsbElkLCAo
bG9uZylkYXRhYmFzZUlkKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RE9NU3RvcmFnZUVudHJpZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewogICAg
ZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJlcigmY2FsbElkKSkg
ewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAg
IGRvdWJsZSBzdG9yYWdlSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNOdW1iZXIoJnN0b3Jh
Z2VJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAg
ICB9CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPmdldERPTVN0b3JhZ2VFbnRyaWVzKChsb25nKWNh
bGxJZCwgKGxvbmcpc3RvcmFnZUlkKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6c2V0RE9NU3RvcmFnZUl0ZW0oUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncykKewog
ICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJlcigmY2FsbElk
KSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVybjsKICAgIH0K
ICAgIGRvdWJsZSBzdG9yYWdlSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNOdW1iZXIoJnN0
b3JhZ2VJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47
CiAgICB9CiAgICBTdHJpbmcga2V5OwogICAgaWYgKCFhcmdzLT5nZXQoMyktPmFzU3RyaW5nKCZr
ZXkpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0dXJuOwogICAg
fQogICAgU3RyaW5nIHZhbHVlOwogICAgaWYgKCFhcmdzLT5nZXQoNCktPmFzU3RyaW5nKCZ2YWx1
ZSkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICByZXR1cm47CiAgICB9
CiAgICBtX2luc3BlY3RvckJhY2tlbmQtPnNldERPTVN0b3JhZ2VJdGVtKChsb25nKWNhbGxJZCwg
KGxvbmcpc3RvcmFnZUlkLCBrZXksIHZhbHVlKTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0oUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
YXJncykKewogICAgZG91YmxlIGNhbGxJZDsKICAgIGlmICghYXJncy0+Z2V0KDEpLT5hc051bWJl
cigmY2FsbElkKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgIHJldHVy
bjsKICAgIH0KICAgIGRvdWJsZSBzdG9yYWdlSWQ7CiAgICBpZiAoIWFyZ3MtPmdldCgyKS0+YXNO
dW1iZXIoJnN0b3JhZ2VJZCkpIHsKICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICByZXR1cm47CiAgICB9CiAgICBTdHJpbmcga2V5OwogICAgaWYgKCFhcmdzLT5nZXQoMyktPmFz
U3RyaW5nKCZrZXkpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgcmV0
dXJuOwogICAgfQogICAgbV9pbnNwZWN0b3JCYWNrZW5kLT5yZW1vdmVET01TdG9yYWdlSXRlbSgo
bG9uZyljYWxsSWQsIChsb25nKXN0b3JhZ2VJZCwga2V5KTsKfQoKdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTdHJpbmcqIGV4
Y2VwdGlvbikKewogICAgdHlwZWRlZiB2b2lkIChJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
KkNhbGxIYW5kbGVyKShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiBEaXNwYXRjaE1hcDsKICAgIERFRklORV9T
VEFUSUNfTE9DQUwoRGlzcGF0Y2hNYXAsIGRpc3BhdGNoTWFwLCApOwogICAgaWYgKGRpc3BhdGNo
TWFwLmlzRW1wdHkoKSkgewogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoImdldENoaWxk
Tm9kZXMiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRDaGlsZE5vZGVzKTsKICAg
ICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJwYXVzZSIpLCAmSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OnBhdXNlKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJhY3RpdmF0
ZUJyZWFrcG9pbnRzIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6YWN0aXZhdGVCcmVh
a3BvaW50cyk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygiZGlzYWJsZU1vbml0b3Jp
bmdYSFIiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNhYmxlTW9uaXRvcmluZ1hI
Uik7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygiYXBwbHlTdHlsZVRleHQiKSwgJklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjphcHBseVN0eWxlVGV4dCk7CiAgICAgICAgZGlzcGF0
Y2hNYXAuYWRkKFN0cmluZygiZ2V0UnVsZVJhbmdlc0ZvclN0eWxlU2hlZXRJZCIpLCAmSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFJ1bGVSYW5nZXNGb3JTdHlsZVNoZWV0SWQpOwogICAg
ICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoInN0ZXBPdXRPZkZ1bmN0aW9uIiksICZJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c3RlcE91dE9mRnVuY3Rpb24pOwogICAgICAgIGRpc3BhdGNo
TWFwLmFkZChTdHJpbmcoImhpZGVET01Ob2RlSGlnaGxpZ2h0IiksICZJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6aGlkZURPTU5vZGVIaWdobGlnaHQpOwogICAgICAgIGRpc3BhdGNoTWFwLmFk
ZChTdHJpbmcoInNldEF0dHJpYnV0ZSIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnNl
dEF0dHJpYnV0ZSk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygicmVzdW1lIiksICZJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVzdW1lKTsKICAgICAgICBkaXNwYXRjaE1hcC5h
ZGQoU3RyaW5nKCJjb3B5Tm9kZSIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNvcHlO
b2RlKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJkaWRFdmFsdWF0ZUZvclRlc3RJ
bkZyb250ZW5kIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlkRXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZCk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygic2V0UnVsZVNl
bGVjdG9yIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2V0UnVsZVNlbGVjdG9yKTsK
ICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQi
KSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQp
OwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoImdldFByb2ZpbGVIZWFkZXJzIiksICZJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0UHJvZmlsZUhlYWRlcnMpOwogICAgICAgIGRp
c3BhdGNoTWFwLmFkZChTdHJpbmcoImVuYWJsZURlYnVnZ2VyIiksICZJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6ZW5hYmxlRGVidWdnZXIpOwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJp
bmcoInNldEluamVjdGVkU2NyaXB0U291cmNlIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6c2V0SW5qZWN0ZWRTY3JpcHRTb3VyY2UpOwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJp
bmcoInN0YXJ0VGltZWxpbmVQcm9maWxlciIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OnN0YXJ0VGltZWxpbmVQcm9maWxlcik7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygi
YWRkSW5zcGVjdGVkTm9kZSIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmFkZEluc3Bl
Y3RlZE5vZGUpOwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoInNldFRleHROb2RlVmFs
dWUiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZXRUZXh0Tm9kZVZhbHVlKTsKICAg
ICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJzZXRCcmVha3BvaW50IiksICZJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6c2V0QnJlYWtwb2ludCk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRk
KFN0cmluZygiZ2V0U2NyaXB0U291cmNlIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0U2NyaXB0U291cmNlKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJzZXRQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygic3Rv
cFByb2ZpbGluZyIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnN0b3BQcm9maWxpbmcp
OwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoImdldERhdGFiYXNlVGFibGVOYW1lcyIp
LCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERhdGFiYXNlVGFibGVOYW1lcyk7CiAg
ICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygiZGlzYWJsZVNlYXJjaGluZ0Zvck5vZGUiKSwg
Jkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNhYmxlU2VhcmNoaW5nRm9yTm9kZSk7CiAg
ICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygidG9nZ2xlU3R5bGVFbmFibGVkIiksICZJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6dG9nZ2xlU3R5bGVFbmFibGVkKTsKICAgICAgICBkaXNw
YXRjaE1hcC5hZGQoU3RyaW5nKCJoaWdobGlnaHRET01Ob2RlIiksICZJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6aGlnaGxpZ2h0RE9NTm9kZSk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0
cmluZygic2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpzYXZlQXBwbGljYXRpb25TZXR0aW5ncyk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0
cmluZygiZGlzYWJsZVJlc291cmNlVHJhY2tpbmciKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpkaXNhYmxlUmVzb3VyY2VUcmFja2luZyk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0
cmluZygic2V0T3V0ZXJIVE1MIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2V0T3V0
ZXJIVE1MKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJkaXNhYmxlRGVidWdnZXIi
KSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNhYmxlRGVidWdnZXIpOwogICAgICAg
IGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoInN0ZXBJbnRvU3RhdGVtZW50IiksICZJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6c3RlcEludG9TdGF0ZW1lbnQpOwogICAgICAgIGRpc3BhdGNoTWFw
LmFkZChTdHJpbmcoInN0ZXBPdmVyU3RhdGVtZW50IiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmco
ImdldFN0eWxlU2hlZXQiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHlsZVNo
ZWV0KTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJyZW1vdmVCcmVha3BvaW50Iiks
ICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVtb3ZlQnJlYWtwb2ludCk7CiAgICAgICAg
ZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygic2F2ZVNlc3Npb25TZXR0aW5ncyIpLCAmSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OnNhdmVTZXNzaW9uU2V0dGluZ3MpOwogICAgICAgIGRpc3BhdGNo
TWFwLmFkZChTdHJpbmcoInJlbW92ZURPTVN0b3JhZ2VJdGVtIiksICZJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0pOwogICAgICAgIGRpc3BhdGNoTWFwLmFk
ZChTdHJpbmcoImVuYWJsZVNlYXJjaGluZ0Zvck5vZGUiKSwgJkluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjplbmFibGVTZWFyY2hpbmdGb3JOb2RlKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQo
U3RyaW5nKCJnZXRDb29raWVzIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Q29v
a2llcyk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygiZGlzYWJsZVByb2ZpbGVyIiks
ICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzYWJsZVByb2ZpbGVyKTsKICAgICAgICBk
aXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIiksICZJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6YWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCk7CiAgICAg
ICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygic2V0U3R5bGVQcm9wZXJ0eSIpLCAmSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OnNldFN0eWxlUHJvcGVydHkpOwogICAgICAgIGRpc3BhdGNoTWFw
LmFkZChTdHJpbmcoInRha2VIZWFwU25hcHNob3QiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjp0YWtlSGVhcFNuYXBzaG90KTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJz
ZXRTdHlsZVRleHQiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZXRTdHlsZVRleHQp
OwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoInJlbW92ZUF0dHJpYnV0ZSIpLCAmSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlbW92ZUF0dHJpYnV0ZSk7CiAgICAgICAgZGlzcGF0
Y2hNYXAuYWRkKFN0cmluZygiZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlIiksICZJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKTsKICAgICAgICBkaXNw
YXRjaE1hcC5hZGQoU3RyaW5nKCJwZXJmb3JtU2VhcmNoIiksICZJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6cGVyZm9ybVNlYXJjaCk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygi
Y2hhbmdlVGFnTmFtZSIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNoYW5nZVRhZ05h
bWUpOwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoImNsZWFyUHJvZmlsZXMiKSwgJklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjbGVhclByb2ZpbGVzKTsKICAgICAgICBkaXNwYXRj
aE1hcC5hZGQoU3RyaW5nKCJyZW1vdmVBbGxTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCIpLCAmSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlbW92ZUFsbFNjcmlwdHNUb0V2YWx1YXRlT25Mb2Fk
KTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJyZW1vdmVQcm9maWxlIiksICZJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVtb3ZlUHJvZmlsZSk7CiAgICAgICAgZGlzcGF0Y2hN
YXAuYWRkKFN0cmluZygicHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kIiksICZJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKTsKICAgICAgICBkaXNwYXRj
aE1hcC5hZGQoU3RyaW5nKCJyZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwIiksICZJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cCk7CiAgICAgICAgZGlz
cGF0Y2hNYXAuYWRkKFN0cmluZygiYWRkUnVsZSIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmFkZFJ1bGUpOwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoInNldERPTVN0b3Jh
Z2VJdGVtIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2V0RE9NU3RvcmFnZUl0ZW0p
OwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoImdldEFwcGxpY2F0aW9uQ2FjaGVzIiks
ICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXBwbGljYXRpb25DYWNoZXMpOwogICAg
ICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoImVkaXRTY3JpcHRTb3VyY2UiKSwgJkluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjplZGl0U2NyaXB0U291cmNlKTsKICAgICAgICBkaXNwYXRjaE1h
cC5hZGQoU3RyaW5nKCJzdG9wVGltZWxpbmVQcm9maWxlciIpLCAmSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OnN0b3BUaW1lbGluZVByb2ZpbGVyKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQo
U3RyaW5nKCJlbmFibGVNb25pdG9yaW5nWEhSIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6ZW5hYmxlTW9uaXRvcmluZ1hIUik7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygi
c2VhcmNoQ2FuY2VsZWQiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZWFyY2hDYW5j
ZWxlZCk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygic3RhcnRQcm9maWxpbmciKSwg
Jkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzdGFydFByb2ZpbGluZyk7CiAgICAgICAgZGlz
cGF0Y2hNYXAuYWRkKFN0cmluZygiZW5hYmxlUmVzb3VyY2VUcmFja2luZyIpLCAmSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmVuYWJsZVJlc291cmNlVHJhY2tpbmcpOwogICAgICAgIGRpc3Bh
dGNoTWFwLmFkZChTdHJpbmcoImNsZWFyQ29uc29sZU1lc3NhZ2VzIiksICZJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOwogICAgICAgIGRpc3BhdGNoTWFw
LmFkZChTdHJpbmcoImdldElubGluZVN0eWxlIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Z2V0SW5saW5lU3R5bGUpOwogICAgICAgIGRpc3BhdGNoTWFwLmFkZChTdHJpbmcoImdldE91
dGVySFRNTCIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE91dGVySFRNTCk7CiAg
ICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygiZ2V0Q29tcHV0ZWRTdHlsZSIpLCAmSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldENvbXB1dGVkU3R5bGUpOwogICAgICAgIGRpc3BhdGNo
TWFwLmFkZChTdHJpbmcoImRlYWN0aXZhdGVCcmVha3BvaW50cyIpLCAmSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmRlYWN0aXZhdGVCcmVha3BvaW50cyk7CiAgICAgICAgZGlzcGF0Y2hNYXAu
YWRkKFN0cmluZygiZ2V0UmVzb3VyY2VDb250ZW50IiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0UmVzb3VyY2VDb250ZW50KTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5n
KCJnZXRET01TdG9yYWdlRW50cmllcyIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dERPTVN0b3JhZ2VFbnRyaWVzKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJyZW1v
dmVOb2RlIiksICZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVtb3ZlTm9kZSk7CiAgICAg
ICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygiZ2V0U3R5bGVzIiksICZJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0U3R5bGVzKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJl
bmFibGVQcm9maWxlciIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmVuYWJsZVByb2Zp
bGVyKTsKICAgICAgICBkaXNwYXRjaE1hcC5hZGQoU3RyaW5nKCJnZXRBbGxTdHlsZXMiKSwgJklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBbGxTdHlsZXMpOwogICAgICAgIGRpc3BhdGNo
TWFwLmFkZChTdHJpbmcoImRlbGV0ZUNvb2tpZSIpLCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmRlbGV0ZUNvb2tpZSk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygic3RvcmVM
YXN0QWN0aXZlUGFuZWwiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzdG9yZUxhc3RB
Y3RpdmVQYW5lbCk7CiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKFN0cmluZygiZ2V0UHJvZmlsZSIp
LCAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFByb2ZpbGUpOwogICAgICAgIGRpc3Bh
dGNoTWFwLmFkZChTdHJpbmcoInJlbG9hZFBhZ2UiKSwgJkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpyZWxvYWRQYWdlKTsKICAgIH0KCiAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNl
ZE1lc3NhZ2UgPSBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2UpOwogICAgaWYgKCFw
YXJzZWRNZXNzYWdlKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgKmV4
Y2VwdGlvbiA9ICJFcnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4gTWVzc2FnZSBzaG91bGQg
YmUgaW4gSlNPTiBmb3JtYXQuIjsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgUmVmUHRyPElu
c3BlY3RvckFycmF5PiBtZXNzYWdlQXJyYXkgPSBwYXJzZWRNZXNzYWdlLT5hc0FycmF5KCk7CiAg
ICBpZiAoIW1lc3NhZ2VBcnJheSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICpleGNlcHRpb24gPSAiRXJyb3I6IEludmFsaWQgbWVzc2FnZSBmb3JtYXQuIFRoZSBtZXNz
YWdlIHNob3VsZCBiZSBqc29uaWZpZWQgYXJyYXkgb2YgYXJndW1lbnRzLiI7CiAgICAgICAgcmV0
dXJuOwogICAgfQoKICAgIGlmICghbWVzc2FnZUFycmF5LT5sZW5ndGgoKSkgewogICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICpleGNlcHRpb24gPSAiRXJyb3I6IEludmFsaWQg
bWVzc2FnZSBmb3JtYXQuIEVtcHR5IG1lc3NhZ2Ugd2FzIHJlY2VpdmVkLiI7CiAgICAgICAgcmV0
dXJuOwogICAgfQoKICAgIFN0cmluZyBtZXRob2ROYW1lOwogICAgaWYgKCFtZXNzYWdlQXJyYXkt
PmdldCgwKS0+YXNTdHJpbmcoJm1ldGhvZE5hbWUpKSB7CiAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgKmV4Y2VwdGlvbiA9ICJFcnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1h
dC4gVGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIG1ldGhvZCBuYW1l
LiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxl
cj46Oml0ZXJhdG9yIGl0ID0gZGlzcGF0Y2hNYXAuZmluZChtZXRob2ROYW1lKTsKICAgIGlmIChp
dCA9PSBkaXNwYXRjaE1hcC5lbmQoKSkgewogICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgIFN0cmluZzo6Zm9ybWF0KCJFcnJvcjogSW52YWxpZCBtZXRob2QgbmFtZS4gJyVzJyB3
YXNuJ3QgZm91bmQuIiwgbWV0aG9kTmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICByZXR1cm47
CiAgICB9CgogICAgKCgqdGhpcykuKml0LT5zZWNvbmQpKG1lc3NhZ2VBcnJheSk7Cn0KCn0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKCiNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62280</attachid>
            <date>2010-07-22 02:56:39 -0700</date>
            <delta_ts>2010-07-22 02:56:39 -0700</delta_ts>
            <desc>sample: InspectorBackendDispatcher.h</desc>
            <filename>InspectorBackendDispatcher.h</filename>
            <type>application/octet-stream</type>
            <size>5559</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">Ly8gQ29weXJpZ2h0IChjKSAyMDEwIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgovLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiNp
Zm5kZWYgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAojZGVmaW5lIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyX2gKCiNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgoKbmFtZXNwYWNlIFdl
YkNvcmUgewoKY2xhc3MgSW5zcGVjdG9yQXJyYXk7CmNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CmNs
YXNzIFN0cmluZzsKCmNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKcHVibGljOgog
ICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZCogaW5zcGVjdG9y
QmFja2VuZCkgOiBtX2luc3BlY3RvckJhY2tlbmQoaW5zcGVjdG9yQmFja2VuZCkgeyB9CiAgICB2
b2lkIGRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgU3RyaW5nKiBleGNlcHRpb24pOwog
ICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGNyZWF0ZShJbnNwZWN0b3JCYWNrZW5kKiBi
YWNrZW5kKSB7IHJldHVybiBuZXcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZCk7
IH0KCiAgICB2b2lkIGdldENoaWxkTm9kZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJn
cyk7CiAgICB2b2lkIHBhdXNlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAg
dm9pZCBhY3RpdmF0ZUJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3Mp
OwogICAgdm9pZCBkaXNhYmxlTW9uaXRvcmluZ1hIUihQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBhcmdzKTsKICAgIHZvaWQgYXBwbHlTdHlsZVRleHQoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYXJncyk7CiAgICB2b2lkIGdldFJ1bGVSYW5nZXNGb3JTdHlsZVNoZWV0SWQoUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIHN0ZXBPdXRPZkZ1bmN0aW9uKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdo
dChQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZvaWQgc2V0QXR0cmlidXRl
KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCByZXN1bWUoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGNvcHlOb2RlKFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250
ZW5kKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzZXRSdWxlU2Vs
ZWN0b3IoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGRpc3BhdGNo
T25JbmplY3RlZFNjcmlwdChQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZv
aWQgZ2V0UHJvZmlsZUhlYWRlcnMoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAg
ICB2b2lkIGVuYWJsZURlYnVnZ2VyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwog
ICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdFNvdXJjZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBhcmdzKTsKICAgIHZvaWQgc3RhcnRUaW1lbGluZVByb2ZpbGVyKFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzZXRUZXh0Tm9kZVZhbHVlKFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzZXRCcmVha3BvaW50KFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3Rh
dGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIHN0b3BQcm9maWxp
bmcoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGdldERhdGFiYXNl
VGFibGVOYW1lcyhQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZvaWQgZGlz
YWJsZVNlYXJjaGluZ0Zvck5vZGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAg
ICB2b2lkIHRvZ2dsZVN0eWxlRW5hYmxlZChQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdz
KTsKICAgIHZvaWQgaGlnaGxpZ2h0RE9NTm9kZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBh
cmdzKTsKICAgIHZvaWQgc2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MoUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGRpc2FibGVSZXNvdXJjZVRyYWNraW5nKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzZXRPdXRlckhUTUwoUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGRpc2FibGVEZWJ1Z2dlcihQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQoUGFz
c1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50
KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBnZXRTdHlsZVNoZWV0
KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCByZW1vdmVCcmVha3Bv
aW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzYXZlU2Vzc2lv
blNldHRpbmdzKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCByZW1v
dmVET01TdG9yYWdlSXRlbShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZv
aWQgZW5hYmxlU2VhcmNoaW5nRm9yTm9kZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdz
KTsKICAgIHZvaWQgZ2V0Q29va2llcyhQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsK
ICAgIHZvaWQgZGlzYWJsZVByb2ZpbGVyKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3Mp
OwogICAgdm9pZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzZXRTdHlsZVByb3BlcnR5KFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzZXRTdHlsZVRleHQoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBwZXJmb3JtU2VhcmNoKFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBjaGFuZ2VUYWdOYW1lKFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBjbGVhclByb2ZpbGVzKFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCByZW1vdmVBbGxTY3JpcHRz
VG9FdmFsdWF0ZU9uTG9hZChQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZv
aWQgcmVtb3ZlUHJvZmlsZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZv
aWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFy
Z3MpOwogICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBhZGRSdWxlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IGFyZ3MpOwogICAgdm9pZCBzZXRET01TdG9yYWdlSXRlbShQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBhcmdzKTsKICAgIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZXMoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIHN0b3BUaW1lbGluZVByb2ZpbGVyKFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBlbmFibGVNb25pdG9yaW5n
WEhSKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzZWFyY2hDYW5j
ZWxlZChQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZvaWQgc3RhcnRQcm9m
aWxpbmcoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGVuYWJsZVJl
c291cmNlVHJhY2tpbmcoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lk
IGNsZWFyQ29uc29sZU1lc3NhZ2VzKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwog
ICAgdm9pZCBnZXRJbmxpbmVTdHlsZShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsK
ICAgIHZvaWQgZ2V0T3V0ZXJIVE1MKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOwog
ICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3Mp
OwogICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYXJncyk7CiAgICB2b2lkIGdldFJlc291cmNlQ29udGVudChQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBhcmdzKTsKICAgIHZvaWQgZ2V0RE9NU3RvcmFnZUVudHJpZXMoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIHJlbW92ZU5vZGUoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGdldFN0eWxlcyhQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBhcmdzKTsKICAgIHZvaWQgZW5hYmxlUHJvZmlsZXIoUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYXJncyk7CiAgICB2b2lkIGdldEFsbFN0eWxlcyhQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBhcmdzKTsKICAgIHZvaWQgZGVsZXRlQ29va2llKFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGFyZ3MpOwogICAgdm9pZCBzdG9yZUxhc3RBY3RpdmVQYW5lbChQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBhcmdzKTsKICAgIHZvaWQgZ2V0UHJvZmlsZShQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBhcmdzKTsKICAgIHZvaWQgcmVsb2FkUGFnZShQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBhcmdzKTsKCnByaXZhdGU6CiAgICBJbnNwZWN0b3JCYWNrZW5kKiBtX2luc3BlY3Rv
ckJhY2tlbmQ7Cn07Cgp9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62298</attachid>
            <date>2010-07-22 08:12:19 -0700</date>
            <delta_ts>2010-07-22 08:30:21 -0700</delta_ts>
            <desc>[patch] second iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>28148</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTgxZWIzNC4uYzQ5NjhjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNy0yMiAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
IHdhcyBleHRlbmRlZCBhbmQgbm93IGl0IGNhbgorICAgICAgICBnZW5lcmF0ZSBJbnNwZWN0b3JC
YWNrZWREaXNwYXRjaGVyJ3MgY29kZS4gVGhpcyBkaXNwYXRjaGVyIHdpbGwKKyAgICAgICAgdmFs
aWRhdGUgYW5kIGRpc3BhdGNoIGluY29taW5nIGluc3BlY3RvciBjb21tYW5kcyBvbmx5IGJ5IG5h
dGl2ZQorICAgICAgICBjb2RlIHdpdGhvdXQgdXNpbmcgamF2YVNjcmlwdC4gVGhhdCBpcyBuZWNl
c3Nhcnkgc3RlcCBmb3IKKyAgICAgICAgUmVtb3RlRGVidWdnaW5nIHN1cHBvcnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU4OAorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5zZXREb2N1bWVudCk6
CisKIDIwMTAtMDctMjIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZjQ3YzNlNi4u
ODc5MzExZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC05OSw2ICs5OSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5TmFtZXMuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0hUTUxOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSFRNTE5hbWVzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtl
ci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXJyYXlCdWZmZXIuY3BwIFwKQEAgLTQzOTQsOCArNDM5
Niw4IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWE1MTlNOYW1lcy5jcHAgRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9YTUxOU05hbWVzLmg6ICQoV2ViCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hN
TE5hbWVzLmNwcCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hNTE5hbWVzLmg6ICQoV2ViQ29yZSkv
ZG9tL21ha2VfbmFtZXMucGwgJChXZWJDb3JlKS94bWwveG1sYXR0cnMuaW4KIAkkKEFNX1ZfR0VO
KSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1hdHRycyAkKFdlYkNv
cmUpL3htbC94bWxhdHRycy5pbiAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTX1dFQkNPUkUpIgog
Ci0jIFJlbW90ZSBJbnNwZWN0b3IgZnJvbnRlbmQKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVt
b3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVtb3RlSW5z
cGVjdG9yRnJvbnRlbmQuaDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCAkKFND
UklQVFNfQklORElOR1MpICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucG0KKyMgUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQgYW5kIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmNw
cCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmggRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOiAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9JbnNwZWN0b3IuaWRsICQoU0NSSVBUU19CSU5ESU5HUykgJChXZWJDb3JlKS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQogCSQoQU1fVl9HRU4pJChQRVJMKSAtSSQo
V2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAtSSQoV2ViQ29yZSkvaW5zcGVjdG9yICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAkKElETF9QQVRIOiU9LS1p
bmNsdWRlICIlIikgLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19XRUJDT1JFKSIgLS1kZWZpbmVz
ICJMQU5HVUFHRV9KQVZBU0NSSVBUPTEgJChGRUFUVVJFX0RFRklORVMpIiAtLWdlbmVyYXRvciBJ
bnNwZWN0b3IgJDwKIAogSURMX1BBVEggOj0gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cCBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXgg
NjE5MzI5NC4uZjZmM2Y1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC00NzYsMTUgKzQ3
NiwyMCBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzog
J1JlbW90ZUluc3BlY3RvckZyb250ZW5kJywKKyAgICAgICAgICAjIFRoZSBzZWNvbmQgaW5wdXQg
aXRlbSB3aWxsIGJlIHVzZWQgYXMgaXRlbSBuYW1lIGluIHZjcHJvai4KKyAgICAgICAgICAjIEl0
IGlzIG5vdCBwb3NzaWJsZSB0byBwdXQgdGhlcmUgSW5zcGVjdG9yLmlkbCBiZWNhdXNlCisgICAg
ICAgICAgIyBhbGwgaWRsIGZpbGVzIGFyZSBtYXJraW5nIGFzIGV4Y2x1ZGVkIGJ5IGd5cCBnZW5l
cmF0b3IuCiAgICAgICAgICAgJ2lucHV0cyc6IFsKICAgICAgICAgICAgICcuLi9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgICAgICcuLi9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbScsCiAgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtJywKICAgICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3JpcHRz
L0lETFBhcnNlci5wbScsCiAgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1
Y3R1cmUucG0nLAotICAgICAgICAgICAgJy4uL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnBtJywKICAgICAgICAgICAgICcuLi9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCcsCiAgICAg
ICAgICAgXSwKICAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICc8KFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcCcsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0
L2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgnLAogICAgICAgICAgICAgJzwo
U0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUvYmluZGluZ3MvUmVtb3RlSW5zcGVjdG9y
RnJvbnRlbmQuY3BwJywKICAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJraXQvYmluZGluZ3MvUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCcsCiAgICAgICAgICAgXSwK
QEAgLTUwNSw3ICs1MTAsNyBAQAogICAgICAgICAgICAgJy0tZ2VuZXJhdG9yJywgJ0luc3BlY3Rv
cicsCiAgICAgICAgICAgICAnPEAoZ2VuZXJhdG9yX2luY2x1ZGVfZGlycyknCiAgICAgICAgICAg
XSwKLSAgICAgICAgICAnbWVzc2FnZSc6ICdHZW5lcmF0aW5nIFJlbW90ZUluc3BlY3RvckZyb250
ZW5kIGNsYXNzIGZyb20gSW5zcGVjdG9yLmlkbCcsCisgICAgICAgICAgJ21lc3NhZ2UnOiAnR2Vu
ZXJhdGluZyBJbnNwZWN0b3IgaW50ZXJmYWNlIGNsYXNzZXMgZnJvbSBJbnNwZWN0b3IuaWRsJywK
ICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdYTUxOYW1l
cycsCkBAIC03MTQsNiArNzE5LDcgQEAKIAogICAgICAgICAjIEFkZGl0aW9uYWwgLmNwcCBmaWxl
cyBmcm9tIHRoZSB3ZWJjb3JlX2luc3BlY3Rvcl9zb3VyY2VzIGxpc3QuCiAgICAgICAgICc8KFNI
QVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdzL1JlbW90ZUluc3BlY3RvckZy
b250ZW5kLmNwcCcsCisgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3Jl
L2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCcsCiAgICAgICBdLAogICAg
ICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgICAgIFsnamF2YXNjcmlwdF9lbmdpbmU9PSJ2OCInLCB7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDA0YjM3ZjQuLmFhMDE1M2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzgsOSArMjc4LDYgQEAKICAgICAgICAg
ICAgICd4bWwvWFBhdGhSZXN1bHQuaWRsJywKICAgICAgICAgICAgICd4bWwvWFNMVFByb2Nlc3Nv
ci5pZGwnLAogICAgICAgICBdLAotICAgICAgICAnd2ViY29yZV9pbnNwZWN0b3JfaWRsX2ZpbGVz
JzogWwotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsJywKLSAgICAgICAgXSwK
ICAgICAgICAgJ3dlYmNvcmVfc3ZnX2JpbmRpbmdzX2lkbF9maWxlcyc6IFsKICAgICAgICAgICAg
ICdzdmcvRWxlbWVudFRpbWVDb250cm9sLmlkbCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FFbGVt
ZW50LmlkbCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvV2ViQ29yZS9XZWJD
b3JlLnByaQppbmRleCA3MjA1YWRkLi5kZTc5ZTJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTgwOCw3ICs4MDgsNyBAQCBpZGwu
ZGVwZW5kcyA9ICQkUFdEL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBcCiBhZGRF
eHRyYUNvbXBpbGVyKGlkbCkKIAogIyBHRU5FUkFUT1IgMjogaW5zcGVjdG9yIGlkbCBjb21waWxl
cgotaW5zcGVjdG9ySURMLm91dHB1dCA9ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vUmVt
b3RlJHtRTUFLRV9GSUxFX0JBU0V9RnJvbnRlbmQuY3BwCitpbnNwZWN0b3JJREwub3V0cHV0ID0g
JCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS9SZW1vdGUke1FNQUtFX0ZJTEVfQkFTRX1Gcm9u
dGVuZC5jcHAgJCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS8ke1FNQUtFX0ZJTEVfQkFTRX1C
YWNrZW5kRGlzcGF0Y2hlci5jcHAKIGluc3BlY3RvcklETC5pbnB1dCA9IElOU1BFQ1RPUl9JTlRF
UkZBQ0VTCiBpbnNwZWN0b3JJREwud2tTY3JpcHQgPSAkJFBXRC9iaW5kaW5ncy9zY3JpcHRzL2dl
bmVyYXRlLWJpbmRpbmdzLnBsCiBpbnNwZWN0b3JJREwuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0Qv
YmluZGluZ3Mvc2NyaXB0cyAtSSQkUFdEL2luc3BlY3RvciAkJGluc3BlY3RvcklETC53a1Njcmlw
dCAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVH1cIiAtLWdlbmVyYXRv
ciBJbnNwZWN0b3IgLS1vdXRwdXREaXIgJCRXQ19HRU5FUkFURURfU09VUkNFU19ESVIgLS1wcmVw
cm9jZXNzb3IgXCIkJHtRTUFLRV9NT0N9IC1FXCIgJHtRTUFLRV9GSUxFX05BTUV9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlOTZiN2JlLi4yMmE2ZWQ2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTIwNzQxLDYgKzIwNzQxLDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMzExMGQ3Ni4uNGMxOGQ4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzAsNiArMTAzMCw4IEBACiAJCTRGMzI4OUI1MTFB
NDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIElu
c3BlY3RvclZhbHVlcy5jcHAgKi87IH07CiAJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJ
bnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRGNUZGQjEx
Q0JEMkUxMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4
NkJGIC8qIFJlbW90ZUluc3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKKwkJNEY3MDdBOTkxMUVG
Njc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNzA3QTk3MTFFRjY3OTQwMEFD
REE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CisJCTRGNzA3QTlB
MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAw
QUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IH07CiAJCTRGRDhEMEYy
MTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYwMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmNwcCAqLzsgfTsKIAkJNEZEOEQwRjMxMTlDNzE4QjAwMkZBODI1IC8qIFNj
cmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggKi87IH07CiAJ
CTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYg
LyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC02Nzc0LDYgKzY3NzYsOCBAQAogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0Ug
LyogSW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZGQTEx
Q0JEMkQyMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyog
UmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEY3MDdBOTcxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEY3MDdBOTgx
MUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGRDhEMEYwMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cmlwdEdDRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkQ4RDBGMTEx
OUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRHQ0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExNDMyLDYgKzExNDM2LDggQEAKIAkJCQk5RkEzN0VGNzExNzJGRDkzMDBDNENENTUg
LyogSlNTY3JpcHRQcm9maWxlLmggKi8sCiAJCQkJOUZBMzdFRjgxMTcyRkQ5MzAwQzRDRDU1IC8q
IEpTU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovLAogCQkJCTlGQTM3RUY5MTE3MkZEOTMwMEM0Q0Q1
NSAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggKi8sCisJCQkJNEY3MDdBOTcxMUVGNjc5NDAwQUNE
QTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk0RjcwN0E5ODEx
RUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLywKIAkJCQk0
RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwICov
LAogCQkJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBSZW1vdGVJbnNwZWN0b3JGcm9udGVu
ZC5oICovLAogCQkJKTsKQEAgLTE5ODM5LDYgKzE5ODQ1LDcgQEAKIAkJCQlDRTE3MkUwMTExMzZF
OENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCThDNkVBNjFBMTFF
RjdFMDQwMEZEOEVFMyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTYyQzdGNTExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMjIzNCw2ICsyMjI0MSw3IEBACiAJCQkJ
OTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOEM2RUE2MTkxMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2MkM3RjQxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVt
ZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRGNzA3QTk5MTFFRjY3OTQwMEFDREE2
OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9XZWJD
b3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IGFmYWRkZWMuLmIy
MDVmYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucG0KKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQpA
QCAtMTQsNiArMTQsMTAgQEAgJHR5cGVUcmFuc2Zvcm17Ikluc3BlY3RvckNsaWVudCJ9ID0gewog
ICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yQ2xpZW50IiwKICAgICAiaGVhZGVyIiA9PiAiSW5z
cGVjdG9yQ2xpZW50LmgiLAogfTsKKyR0eXBlVHJhbnNmb3JteyJJbnNwZWN0b3JCYWNrZW5kIn0g
PSB7CisgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JCYWNrZW5kIiwKKyAgICAiaGVhZGVyIiA9
PiAiSW5zcGVjdG9yQmFja2VuZC5oIiwKK307CiAkdHlwZVRyYW5zZm9ybXsiUGFzc1JlZlB0ciJ9
ID0gewogICAgICJmb3J3YXJkSGVhZGVyIiA9PiAid3RmL1Bhc3NSZWZQdHIuaCIsCiB9OwpAQCAt
OTUsNiArOTksMTMgQEAgbXkgJHZlcmJvc2U7CiAKIG15ICRuYW1lc3BhY2U7CiAKK215ICRiYWNr
ZW5kQ2xhc3NOYW1lOworbXkgJWJhY2tlbmRUeXBlczsKK215ICViYWNrZW5kTWV0aG9kczsKK215
IEBiYWNrZW5kTWV0aG9kc0ltcGw7CitteSAkYmFja2VuZENvbnN0cnVjdG9yOworbXkgJGJhY2tl
bmRGb290ZXI7CisKIG15ICRmcm9udGVuZENsYXNzTmFtZTsKIG15ICVmcm9udGVuZFR5cGVzOwog
bXkgJWZyb250ZW5kTWV0aG9kczsKQEAgLTE1MCw2ICsxNjEsMTcgQEAgc3ViIEdlbmVyYXRlSW50
ZXJmYWNlCiAgICAgJGZyb250ZW5kVHlwZXN7Ikluc3BlY3RvckNsaWVudCJ9ID0gMTsKICAgICAk
ZnJvbnRlbmRUeXBlc3siUGFzc1JlZlB0ciJ9ID0gMTsKIAorICAgICRiYWNrZW5kQ2xhc3NOYW1l
ID0gJGNsYXNzTmFtZSAuICJCYWNrZW5kRGlzcGF0Y2hlciI7CisgICAgbXkgQGJhY2tlbmRIZWFk
OworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAiICAgICR7YmFja2VuZENsYXNzTmFtZX0oSW5zcGVj
dG9yQmFja2VuZCogaW5zcGVjdG9yQmFja2VuZCkgOiBtX2luc3BlY3RvckJhY2tlbmQoaW5zcGVj
dG9yQmFja2VuZCkgeyB9Iik7CisgICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgdm9pZCBkaXNw
YXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFN0cmluZyogZXhjZXB0aW9uKTsiKTsKKyAgICBw
dXNoKEBiYWNrZW5kSGVhZCwgInByaXZhdGU6Iik7CisgICAgJGJhY2tlbmRDb25zdHJ1Y3RvciA9
IGpvaW4oIlxuIiwgQGJhY2tlbmRIZWFkKTsKKyAgICAkYmFja2VuZEZvb3RlciA9ICIgICAgSW5z
cGVjdG9yQmFja2VuZCogbV9pbnNwZWN0b3JCYWNrZW5kOyI7CisgICAgJGJhY2tlbmRUeXBlc3si
SW5zcGVjdG9yQmFja2VuZCJ9ID0gMTsKKyAgICAkYmFja2VuZFR5cGVzeyJQYXNzUmVmUHRyIn0g
PSAxOworICAgICRiYWNrZW5kVHlwZXN7IkFycmF5In0gPSAxOworCiAgICAgZ2VuZXJhdGVGdW5j
dGlvbnMoJGludGVyZmFjZSk7CiB9CiAKQEAgLTE1OSw3ICsxODEsOSBAQCBzdWIgZ2VuZXJhdGVG
dW5jdGlvbnMKIAogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0
aW9uc30pIHsKICAgICAgICAgZ2VuZXJhdGVGcm9udGVuZEZ1bmN0aW9uKCRmdW5jdGlvbik7Cisg
ICAgICAgIGdlbmVyYXRlQmFja2VuZEZ1bmN0aW9uKCRmdW5jdGlvbik7CiAgICAgfQorICAgIHB1
c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVCYWNrZW5kRGlzcGF0Y2hlcigpKTsKIH0K
IAogc3ViIGdlbmVyYXRlRnJvbnRlbmRGdW5jdGlvbgpAQCAtMTk4LDYgKzIyMiw5NCBAQCBzdWIg
Z2VuZXJhdGVGcm9udGVuZEZ1bmN0aW9uCiAgICAgfQogfQogCitzdWIgZ2VuZXJhdGVCYWNrZW5k
RnVuY3Rpb24KK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICByZXR1cm4gaWYgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJub3RpZnkifTsKKworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKworICAgIG15
IEBhcmdzRmlsdGVyZWQgPSBncmVwKCRfLT5kaXJlY3Rpb24gZXEgImluIiwgQHskZnVuY3Rpb24t
PnBhcmFtZXRlcnN9KTsKKyAgICBtYXAoJGJhY2tlbmRUeXBlc3skXy0+dHlwZX0gPSAxLCBAYXJn
c0ZpbHRlcmVkKTsgIyByZWdpc3RlciByZXF1aXJlZCB0eXBlcworICAgIG15ICRhcmd1bWVudHMg
PSBqb2luKCIsICIsIG1hcCgkdHlwZVRyYW5zZm9ybXskXy0+dHlwZX0tPnsicGFyYW0ifSAuICIg
IiAuICRfLT5uYW1lLCBAYXJnc0ZpbHRlcmVkKSk7CisKKyAgICBteSAkc2lnbmF0dXJlID0gIiAg
ICB2b2lkICR7ZnVuY3Rpb25OYW1lfShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsi
OworICAgICEkYmFja2VuZE1ldGhvZHN7JHtzaWduYXR1cmV9fSB8fCBkaWUgIkR1cGxpY2F0ZSBm
dW5jdGlvbiB3YXMgZGV0ZWN0ZWQgZm9yIHNpZ25hdHVyZSAnJHNpZ25hdHVyZScuIjsKKyAgICAk
YmFja2VuZE1ldGhvZHN7JHtzaWduYXR1cmV9fSA9ICRmdW5jdGlvbk5hbWU7CisKKyAgICBteSBA
ZnVuY3Rpb247CisgICAgIyBTa2lwIHBhcmFtZXRlciBuYW1lIGlmIG5vIGFyZ3VtZW50cyBpbiB0
aGUgYXJyYXkuIEp1c3QgdG8gYXZvaWQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nLgorICAgIHB1
c2goQGZ1bmN0aW9uLCAidm9pZCAke2JhY2tlbmRDbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0o
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4iIC4gKCBzY2FsYXIoQGFyZ3NGaWx0ZXJlZCkgPyAi
IGFyZ3MpIiA6ICIpIikpOworICAgIHB1c2goQGZ1bmN0aW9uLCAieyIpOworICAgIG15ICRpID0g
MTsgIyB6ZXJvIGVsZW1lbnQgaXMgdGhlIG1ldGhvZCBuYW1lLgorICAgIGZvcmVhY2ggbXkgJHBh
cmFtZXRlciAoQGFyZ3NGaWx0ZXJlZCkgeworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAi
IC4gJHR5cGVUcmFuc2Zvcm17JHBhcmFtZXRlci0+dHlwZX0tPnsicmV0VmFsIn0gLiAiICIgLiAk
cGFyYW1ldGVyLT5uYW1lIC4gIjsiKTsKKyAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgaWYg
KCFhcmdzLT5nZXQoIiAuICRpIC4gIiktPmFzIiAuICR0eXBlVHJhbnNmb3JteyRwYXJhbWV0ZXIt
PnR5cGV9LT57ImFjY2Vzc29yU3VmZml4In0gLiAiKCYiIC4gJHBhcmFtZXRlci0+bmFtZSAuICIp
KSB7Iik7CisgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsiKTsKKyAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIHJldHVybjsiKTsKKyAg
ICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgfSIpOworICAgICAgICArKyRpOworICAgIH0KKyAg
ICBwdXNoKEBmdW5jdGlvbiwgIiAgICBtX2luc3BlY3RvckJhY2tlbmQtPiRmdW5jdGlvbk5hbWUo
IiAuIGpvaW4oIiwgIiwgbWFwKCRfLT5uYW1lLCBAYXJnc0ZpbHRlcmVkKSkgLiAiKTsiKTsKKyAg
ICBwdXNoKEBmdW5jdGlvbiwgIn0iKTsKKyAgICBwdXNoKEBmdW5jdGlvbiwgIiIpOworICAgIHB1
c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgQGZ1bmN0aW9uKTsKK30KKworc3ViIGdlbmVyYXRlQmFj
a2VuZERpc3BhdGNoZXIKK3sKKyAgICBteSBAYm9keTsKKyAgICBteSBAbWV0aG9kcyA9IG1hcCgk
YmFja2VuZE1ldGhvZHN7JF99LCBrZXlzICViYWNrZW5kTWV0aG9kcyk7CisgICAgbXkgQG1hcEVu
dHJpZXMgPSBtYXAoImRpc3BhdGNoTWFwLmFkZChcIiRfXCIsICYke2JhY2tlbmRDbGFzc05hbWV9
OjokXyk7IiwgQG1ldGhvZHMpOworCisgICAgcHVzaChAYm9keSwgInZvaWQgJHtiYWNrZW5kQ2xh
c3NOYW1lfTo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTdHJpbmcqIGV4Y2VwdGlv
bikiKTsKKyAgICBwdXNoKEBib2R5LCAieyIpOworICAgIHB1c2goQGJvZHksICIgICAgdHlwZWRl
ZiB2b2lkICgke2JhY2tlbmRDbGFzc05hbWV9OjoqQ2FsbEhhbmRsZXIpKFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IGFyZ3MpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+IERpc3BhdGNoTWFwOyIpOworICAgIHB1c2goQGJvZHks
ICIgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEaXNwYXRjaE1hcCwgZGlzcGF0Y2hNYXAsICk7Iik7
CisgICAgcHVzaChAYm9keSwgIiAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0eSgpKSB7Iik7Cisg
ICAgcHVzaChAYm9keSwgbWFwKCIgICAgICAgICRfIiwgQG1hcEVudHJpZXMpKTsKKyAgICBwdXNo
KEBib2R5LCAiICAgIH0iKTsKKyAgICBwdXNoKEBib2R5LCAiIik7CisgICAgcHVzaChAYm9keSwg
IiAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNlZE1lc3NhZ2UgPSBJbnNwZWN0b3JWYWx1
ZTo6cGFyc2VKU09OKG1lc3NhZ2UpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgaWYgKCFwYXJz
ZWRNZXNzYWdlKSB7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgKmV4Y2VwdGlvbiA9IFwiRXJyb3I6
IEludmFsaWQgbWVzc2FnZSBmb3JtYXQuIE1lc3NhZ2Ugc2hvdWxkIGJlIGluIEpTT04gZm9ybWF0
LlwiOyIpOworICAgIHB1c2goQGJvZHksICIgICAgICAgIHJldHVybjsiKTsKKyAgICBwdXNoKEBi
b2R5LCAiICAgIH0iKTsKKyAgICBwdXNoKEBib2R5LCAiIik7CisgICAgcHVzaChAYm9keSwgIiAg
ICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IG1lc3NhZ2VBcnJheSA9IHBhcnNlZE1lc3NhZ2UtPmFz
QXJyYXkoKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIGlmICghbWVzc2FnZUFycmF5KSB7Iik7
CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Iik7CisgICAg
cHVzaChAYm9keSwgIiAgICAgICAgKmV4Y2VwdGlvbiA9IFwiRXJyb3I6IEludmFsaWQgbWVzc2Fn
ZSBmb3JtYXQuIFRoZSBtZXNzYWdlIHNob3VsZCBiZSBqc29uaWZpZWQgYXJyYXkgb2YgYXJndW1l
bnRzLlwiOyIpOworICAgIHB1c2goQGJvZHksICIgICAgICAgIHJldHVybjsiKTsKKyAgICBwdXNo
KEBib2R5LCAiICAgIH0iKTsKKyAgICBwdXNoKEBib2R5LCAiIik7CisgICAgcHVzaChAYm9keSwg
IiAgICBpZiAoIW1lc3NhZ2VBcnJheS0+bGVuZ3RoKCkpIHsiKTsKKyAgICBwdXNoKEBib2R5LCAi
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAg
ICAqZXhjZXB0aW9uID0gXCJFcnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4gRW1wdHkgbWVz
c2FnZSB3YXMgcmVjZWl2ZWQuXCI7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgcmV0dXJu
OyIpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1c2goQGJvZHksICIiKTsKKyAg
ICBwdXNoKEBib2R5LCAiICAgIFN0cmluZyBtZXRob2ROYW1lOyIpOworICAgIHB1c2goQGJvZHks
ICIgICAgaWYgKCFtZXNzYWdlQXJyYXktPmdldCgwKS0+YXNTdHJpbmcoJm1ldGhvZE5hbWUpKSB7
Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Iik7Cisg
ICAgcHVzaChAYm9keSwgIiAgICAgICAgKmV4Y2VwdGlvbiA9IFwiRXJyb3I6IEludmFsaWQgbWVz
c2FnZSBmb3JtYXQuIFRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBtZXNzYWdlIHNob3VsZCBiZSBt
ZXRob2QgbmFtZS5cIjsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICByZXR1cm47Iik7Cisg
ICAgcHVzaChAYm9keSwgIiAgICB9Iik7CisgICAgcHVzaChAYm9keSwgIiIpOworICAgIHB1c2go
QGJvZHksICIgICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPjo6aXRlcmF0b3IgaXQgPSBk
aXNwYXRjaE1hcC5maW5kKG1ldGhvZE5hbWUpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgaWYg
KGl0ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgU3RyaW5n
Ojpmb3JtYXQoXCJFcnJvcjogSW52YWxpZCBtZXRob2QgbmFtZS4gJyVzJyB3YXNuJ3QgZm91bmQu
XCIsIG1ldGhvZE5hbWUudXRmOCgpLmRhdGEoKSk7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAg
ICAgcmV0dXJuOyIpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1c2goQGJvZHks
ICIiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICgoKnRoaXMpLippdC0+c2Vjb25kKShtZXNzYWdl
QXJyYXkpOyIpOworICAgIHB1c2goQGJvZHksICJ9Iik7CisgICAgcmV0dXJuIEBib2R5OworfQor
CiBzdWIgZ2VuZXJhdGVIZWFkZXIKIHsKICAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CkBAIC0y
ODQsNiArMzk2LDE1IEBAIHN1YiBmaW5pc2gKICAgICBjbG9zZSgkSEVBREVSKTsKICAgICB1bmRl
ZigkSEVBREVSKTsKIAorICAgIG9wZW4oJFNPVVJDRSwgIj4kb3V0cHV0RGlyLyRiYWNrZW5kQ2xh
c3NOYW1lLmNwcCIpIHx8IGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRvdXRwdXREaXIvJGJhY2tl
bmRDbGFzc05hbWUuY3BwIjsKKyAgICBwcmludCAkU09VUkNFIGpvaW4oIlxuIiwgZ2VuZXJhdGVT
b3VyY2UoJGJhY2tlbmRDbGFzc05hbWUsIFwlYmFja2VuZFR5cGVzLCBcQGJhY2tlbmRNZXRob2Rz
SW1wbCkpOworICAgIGNsb3NlKCRTT1VSQ0UpOworICAgIHVuZGVmKCRTT1VSQ0UpOworCisgICAg
b3BlbigkSEVBREVSLCAiPiRvdXRwdXRIZWFkZXJzRGlyLyRiYWNrZW5kQ2xhc3NOYW1lLmgiKSB8
fCBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkb3V0cHV0SGVhZGVyc0Rpci8kYmFja2VuZENsYXNz
TmFtZS5oIjsKKyAgICBwcmludCAkSEVBREVSIGpvaW4oIlxuIiwgZ2VuZXJhdGVIZWFkZXIoJGJh
Y2tlbmRDbGFzc05hbWUsIFwlYmFja2VuZFR5cGVzLCAkYmFja2VuZENvbnN0cnVjdG9yLCBcJWJh
Y2tlbmRNZXRob2RzLCAkYmFja2VuZEZvb3RlcikpOworICAgIGNsb3NlKCRIRUFERVIpOworICAg
IHVuZGVmKCRIRUFERVIpOwogfQogCiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCA4ODc5YjhlLi43ZjlmM2Q1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTU3RvcmUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
bGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgpAQCAtMTkyLDYg
KzE5Myw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlVHJhY2tpbmdF
bmFibGVkKGZhbHNlKQogICAgICwgbV9zZXR0aW5nc0xvYWRlZChmYWxzZSkKICAgICAsIG1faW5z
cGVjdG9yQmFja2VuZChJbnNwZWN0b3JCYWNrZW5kOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKG5ldyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciht
X2luc3BlY3RvckJhY2tlbmQuZ2V0KCkpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUodGhpcykpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCiAgICAgLCBtX2RlYnVnZ2VyRW5hYmxlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA3NmI4OGYxLi4xNzZkZDExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIEhpdFRl
c3RSZXN1bHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9z
dDsKIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CitjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckNTU1N0b3JlOwog
Y2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOwpAQCAtMTIwLDYgKzEyMSw3IEBAIHB1
YmxpYzoKICAgICB+SW5zcGVjdG9yQ29udHJvbGxlcigpOwogCiAgICAgSW5zcGVjdG9yQmFja2Vu
ZCogaW5zcGVjdG9yQmFja2VuZCgpIHsgcmV0dXJuIG1faW5zcGVjdG9yQmFja2VuZC5nZXQoKTsg
fQorICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBpbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcigpIHsgcmV0dXJuIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KICAg
ICBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCgpIHsgcmV0dXJuIG1faW5q
ZWN0ZWRTY3JpcHRIb3N0LmdldCgpOyB9CiAKICAgICB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95
ZWQoKTsKQEAgLTM5NSw2ICszOTcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXNvdXJjZVRy
YWNraW5nRW5hYmxlZDsKICAgICBib29sIG1fc2V0dGluZ3NMb2FkZWQ7CiAgICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmQ+IG1faW5zcGVjdG9yQmFja2VuZDsKKyAgICBPd25QdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgUmVm
UHRyPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAKaW5kZXggOTBhNDBmOS4uYjExZDQyNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC00ODQsNiArNDg0LDE2IEBAIGJvb2wgSW5zcGVjdG9yVmFs
dWU6OmFzTnVtYmVyKGRvdWJsZSopIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29s
IEluc3BlY3RvclZhbHVlOjphc051bWJlcihsb25nKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqKSBj
b25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNT
dHJpbmcoU3RyaW5nKikgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC01NDAsNiArNTUw
LDIzIEBAIGJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIoZG91YmxlKiBvdXRwdXQp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6
YXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gVHlwZURv
dWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICpvdXRwdXQgPSBtX2RvdWJsZVZhbHVl
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVt
YmVyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IFR5
cGVEb3VibGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAqb3V0cHV0ID0gbV9kb3VibGVW
YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCiB2b2lkIEluc3BlY3RvckJhc2ljVmFsdWU6
OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHR5
cGUoKSA9PSBUeXBlQm9vbGVhbiB8fCB0eXBlKCkgPT0gVHlwZURvdWJsZSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oCmluZGV4IGEwYzBjMmQuLjk0MGJhYjkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBhc0Jvb2woYm9vbCogb3V0cHV0KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXNO
dW1iZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihs
b25nKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBs
b25nKiBvdXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91
dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXNP
YmplY3QoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFzQXJyYXko
KTsKQEAgLTEwNSw2ICsxMDcsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXNCb29s
KGJvb2wqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGRvdWJsZSog
b3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIobG9uZyogb3V0cHV0KSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgbG9uZyogb3V0cHV0KSBj
b25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5q
cwppbmRleCA0OGViNGMwLi5lYzk1NTlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMjIyLDcgKzIyMiw3IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRQYXRo
T25SZXNldCkgewogICAgICAgICAgICAgdmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFj
ay53cmFwKHNlbGVjdExhc3RTZWxlY3RlZE5vZGUuYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChjYWxsSWQsIHRoaXMuX3Nl
bGVjdGVkUGF0aE9uUmVzZXQpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5wdXNoTm9k
ZUJ5UGF0aFRvRnJvbnRlbmQoY2FsbElkLCB0aGlzLl9zZWxlY3RlZFBhdGhPblJlc2V0LmpvaW4o
IiwiKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc2VsZWN0Tm9kZS5jYWxsKHRoaXMp
OwogICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldDsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDU1ZDFlNzAuLmVjZjFkMGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEw
LTA3LTIyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IENv
ZGVHZW5lcmF0b3JJbnNwZWN0b3Igd2FzIGV4dGVuZGVkIGFuZCBub3cgaXQgY2FuCisgICAgICAg
IGdlbmVyYXRlIEluc3BlY3RvckJhY2tlZERpc3BhdGNoZXIncyBjb2RlLiBUaGlzIGRpc3BhdGNo
ZXIgd2lsbAorICAgICAgICB2YWxpZGF0ZSBhbmQgZGlzcGF0Y2ggaW5jb21pbmcgaW5zcGVjdG9y
IGNvbW1hbmRzIG9ubHkgYnkgbmF0aXZlCisgICAgICAgIGNvZGUgd2l0aG91dCB1c2luZyBqYXZh
U2NyaXB0LiBUaGF0IGlzIG5lY2Vzc2FyeSBzdGVwIGZvcgorICAgICAgICBSZW1vdGVEZWJ1Z2dp
bmcgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyNTg4CisKKyAgICAgICAgKiBzcmMvVG9vbHNBZ2VudC5oOgorICAgICAgICAqIHNyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdl
bnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmg6CisgICAgICAgICogc3JjL2pzL0luc3BlY3RvckNvbnRyb2xs
ZXJJbXBsLmpzOgorICAgICAgICAoZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwucHJvdG90
eXBlLmNhbGxJbnNwZWN0b3JDb250cm9sbGVyXyk6CisKIDIwMTAtMDctMjIgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZl
bCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Ub29sc0FnZW50Lmgg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaAppbmRleCBjNzQ4YzhhLi5kODc4YWVh
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaApAQCAtMzksOCArMzksOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIC8vIEFQSSBmb3IgYXV4aWxpYXJ5IFVJIGZ1bmN0aW9ucyBzdWNoIGFzIGRvbSBl
bGVtZW50cyBoaWdobGlnaHRpbmcuCiAjZGVmaW5lIFRPT0xTX0FHRU5UX1NUUlVDVChNRVRIT0Qw
LCBNRVRIT0QxLCBNRVRIT0QyLCBNRVRIT0QzLCBNRVRIT0Q0LCBNRVRIT0Q1KSBcCiAgICAgLyog
RGlzcGF0Y2hlcyBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgSW5zcGVjdG9yQ29udHJvbGxlciBvYmpl
Y3QgKi8gXAotICAgIE1FVEhPRDMoZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIsIGludCAv
KiBjYWxsX2lkICovLCBcCi0gICAgICAgIFN0cmluZyAvKiBmdW5jdGlvbl9uYW1lICovLCBTdHJp
bmcgLyoganNvbl9hcmdzICovKSBcCisgICAgTUVUSE9EMihkaXNwYXRjaE9uSW5zcGVjdG9yQ29u
dHJvbGxlciwgaW50IC8qIGNhbGxfaWQgKi8sIFwKKyAgICAgICAgU3RyaW5nIC8qIG1lc3NhZ2Ug
Ki8pIFwKICAgICBcCiAgICAgLyogRGlzcGF0Y2hlcyBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgSW5q
ZWN0ZWRTY3JpcHQgb2JqZWN0ICovIFwKICAgICBNRVRIT0Q1KGRpc3BhdGNoT25JbmplY3RlZFNj
cmlwdCwgaW50IC8qIGNhbGxfaWQgKi8sIFwKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZU
b29sc0FnZW50SW1wbC5jcHAKaW5kZXggMGQ4Y2JhZC4uNjIzOGRkMiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIK
QEAgLTMwOCwxMyArMzA5LDExIEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmZvcmNlUmVw
YWludCgpCiAgICAgbV9jbGllbnQtPmZvcmNlUmVwYWludCgpOwogfQogCi12b2lkIFdlYkRldlRv
b2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlcihpbnQgY2FsbElkLCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBqc29uQXJncykKK3ZvaWQg
V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGludCBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgcmVzdWx0OwogICAg
IFN0cmluZyBleGNlcHRpb247Ci0gICAgcmVzdWx0ID0gbV9kZWJ1Z2dlckFnZW50SW1wbC0+ZXhl
Y3V0ZVV0aWxpdHlGdW5jdGlvbihtX3V0aWxpdHlDb250ZXh0LCBjYWxsSWQsCi0gICAgICAgICJJ
bnNwZWN0b3JDb250cm9sbGVyRGlzcGF0Y2hlciIsIGZ1bmN0aW9uTmFtZSwganNvbkFyZ3MsIGZh
bHNlIC8qIGlzIHN5bmMgKi8sICZleGNlcHRpb24pOwotICAgIG1fdG9vbHNBZ2VudERlbGVnYXRl
U3R1Yi0+ZGlkRGlzcGF0Y2hPbihjYWxsSWQsIHJlc3VsdCwgZXhjZXB0aW9uKTsKKyAgICBpbnNw
ZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKCktPmRpc3BhdGNo
KG1lc3NhZ2UsICZleGNlcHRpb24pOworICAgIG1fdG9vbHNBZ2VudERlbGVnYXRlU3R1Yi0+ZGlk
RGlzcGF0Y2hPbihjYWxsSWQsICIiLCBleGNlcHRpb24pOwogfQogCiB2b2lkIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoaW50IGNhbGxJZCwgaW50IGluamVj
dGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGpz
b25BcmdzLCBib29sIGFzeW5jKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5oCmluZGV4IDEyZjUxZjkuLmJlYjVjZmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfldlYkRldlRvb2xzQWdlbnRJbXBsKCk7CiAKICAgICAvLyBUb29sc0FnZW50IGltcGxlbWVu
dGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlcihp
bnQgY2FsbElkLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJiBqc29uQXJncyk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoT25JbnNw
ZWN0b3JDb250cm9sbGVyKGludCBjYWxsSWQsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2Fn
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoT25JbmplY3RlZFNjcmlwdChpbnQgY2FsbElk
LCBpbnQgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYganNvbkFyZ3MsIGJvb2wgYXN5bmMpOwogCiAgICAg
Ly8gV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcwppbmRleCBhNzk1ODkx
Li4zMGVkZDllIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNv
bnRyb2xsZXJJbXBsLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29u
dHJvbGxlckltcGwuanMKQEAgLTE1NCw3ICsxNTQsOCBAQCBkZXZ0b29scy5JbnNwZWN0b3JCYWNr
ZW5kSW1wbC5wcm90b3R5cGUuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8gPSBm
dQogZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwucHJvdG90eXBlLmNhbGxJbnNwZWN0b3JD
b250cm9sbGVyXyA9IGZ1bmN0aW9uKG1ldGhvZE5hbWUsIHZhcl9hcmcpCiB7CiAgICAgdmFyIGFy
Z3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwotICAgIFJlbW90
ZVRvb2xzQWdlbnQuZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIoV2ViSW5zcGVjdG9yLkNh
bGxiYWNrLndyYXAoZnVuY3Rpb24oKXt9KSwgbWV0aG9kTmFtZSwgSlNPTi5zdHJpbmdpZnkoYXJn
cykpOworICAgIGFyZ3MudW5zaGlmdChtZXRob2ROYW1lKTsKKyAgICBSZW1vdGVUb29sc0FnZW50
LmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFw
KGZ1bmN0aW9uKCl7fSksIEpTT04uc3RyaW5naWZ5KGFyZ3MpKTsKIH07CiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62301</attachid>
            <date>2010-07-22 08:30:21 -0700</date>
            <delta_ts>2010-07-23 01:33:30 -0700</delta_ts>
            <desc>[patch] third iteration.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>28169</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTgxZWIzNC4uYzQ5NjhjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNy0yMiAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
IHdhcyBleHRlbmRlZCBhbmQgbm93IGl0IGNhbgorICAgICAgICBnZW5lcmF0ZSBJbnNwZWN0b3JC
YWNrZWREaXNwYXRjaGVyJ3MgY29kZS4gVGhpcyBkaXNwYXRjaGVyIHdpbGwKKyAgICAgICAgdmFs
aWRhdGUgYW5kIGRpc3BhdGNoIGluY29taW5nIGluc3BlY3RvciBjb21tYW5kcyBvbmx5IGJ5IG5h
dGl2ZQorICAgICAgICBjb2RlIHdpdGhvdXQgdXNpbmcgamF2YVNjcmlwdC4gVGhhdCBpcyBuZWNl
c3Nhcnkgc3RlcCBmb3IKKyAgICAgICAgUmVtb3RlRGVidWdnaW5nIHN1cHBvcnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU4OAorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5zZXREb2N1bWVudCk6
CisKIDIwMTAtMDctMjIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZjQ3YzNlNi4u
ODc5MzExZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC05OSw2ICs5OSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5TmFtZXMuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0hUTUxOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSFRNTE5hbWVzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtl
ci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXJyYXlCdWZmZXIuY3BwIFwKQEAgLTQzOTQsOCArNDM5
Niw4IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWE1MTlNOYW1lcy5jcHAgRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9YTUxOU05hbWVzLmg6ICQoV2ViCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hN
TE5hbWVzLmNwcCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hNTE5hbWVzLmg6ICQoV2ViQ29yZSkv
ZG9tL21ha2VfbmFtZXMucGwgJChXZWJDb3JlKS94bWwveG1sYXR0cnMuaW4KIAkkKEFNX1ZfR0VO
KSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1hdHRycyAkKFdlYkNv
cmUpL3htbC94bWxhdHRycy5pbiAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTX1dFQkNPUkUpIgog
Ci0jIFJlbW90ZSBJbnNwZWN0b3IgZnJvbnRlbmQKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVt
b3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVtb3RlSW5z
cGVjdG9yRnJvbnRlbmQuaDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCAkKFND
UklQVFNfQklORElOR1MpICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucG0KKyMgUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQgYW5kIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmNw
cCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmggRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOiAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9JbnNwZWN0b3IuaWRsICQoU0NSSVBUU19CSU5ESU5HUykgJChXZWJDb3JlKS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQogCSQoQU1fVl9HRU4pJChQRVJMKSAtSSQo
V2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAtSSQoV2ViQ29yZSkvaW5zcGVjdG9yICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAkKElETF9QQVRIOiU9LS1p
bmNsdWRlICIlIikgLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19XRUJDT1JFKSIgLS1kZWZpbmVz
ICJMQU5HVUFHRV9KQVZBU0NSSVBUPTEgJChGRUFUVVJFX0RFRklORVMpIiAtLWdlbmVyYXRvciBJ
bnNwZWN0b3IgJDwKIAogSURMX1BBVEggOj0gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cCBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXgg
NjE5MzI5NC4uZjZmM2Y1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC00NzYsMTUgKzQ3
NiwyMCBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzog
J1JlbW90ZUluc3BlY3RvckZyb250ZW5kJywKKyAgICAgICAgICAjIFRoZSBzZWNvbmQgaW5wdXQg
aXRlbSB3aWxsIGJlIHVzZWQgYXMgaXRlbSBuYW1lIGluIHZjcHJvai4KKyAgICAgICAgICAjIEl0
IGlzIG5vdCBwb3NzaWJsZSB0byBwdXQgdGhlcmUgSW5zcGVjdG9yLmlkbCBiZWNhdXNlCisgICAg
ICAgICAgIyBhbGwgaWRsIGZpbGVzIGFyZSBtYXJraW5nIGFzIGV4Y2x1ZGVkIGJ5IGd5cCBnZW5l
cmF0b3IuCiAgICAgICAgICAgJ2lucHV0cyc6IFsKICAgICAgICAgICAgICcuLi9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgICAgICcuLi9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbScsCiAgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtJywKICAgICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3JpcHRz
L0lETFBhcnNlci5wbScsCiAgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1
Y3R1cmUucG0nLAotICAgICAgICAgICAgJy4uL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnBtJywKICAgICAgICAgICAgICcuLi9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCcsCiAgICAg
ICAgICAgXSwKICAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICc8KFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcCcsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0
L2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgnLAogICAgICAgICAgICAgJzwo
U0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUvYmluZGluZ3MvUmVtb3RlSW5zcGVjdG9y
RnJvbnRlbmQuY3BwJywKICAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJraXQvYmluZGluZ3MvUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCcsCiAgICAgICAgICAgXSwK
QEAgLTUwNSw3ICs1MTAsNyBAQAogICAgICAgICAgICAgJy0tZ2VuZXJhdG9yJywgJ0luc3BlY3Rv
cicsCiAgICAgICAgICAgICAnPEAoZ2VuZXJhdG9yX2luY2x1ZGVfZGlycyknCiAgICAgICAgICAg
XSwKLSAgICAgICAgICAnbWVzc2FnZSc6ICdHZW5lcmF0aW5nIFJlbW90ZUluc3BlY3RvckZyb250
ZW5kIGNsYXNzIGZyb20gSW5zcGVjdG9yLmlkbCcsCisgICAgICAgICAgJ21lc3NhZ2UnOiAnR2Vu
ZXJhdGluZyBJbnNwZWN0b3IgaW50ZXJmYWNlIGNsYXNzZXMgZnJvbSBJbnNwZWN0b3IuaWRsJywK
ICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdYTUxOYW1l
cycsCkBAIC03MTQsNiArNzE5LDcgQEAKIAogICAgICAgICAjIEFkZGl0aW9uYWwgLmNwcCBmaWxl
cyBmcm9tIHRoZSB3ZWJjb3JlX2luc3BlY3Rvcl9zb3VyY2VzIGxpc3QuCiAgICAgICAgICc8KFNI
QVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdzL1JlbW90ZUluc3BlY3RvckZy
b250ZW5kLmNwcCcsCisgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3Jl
L2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCcsCiAgICAgICBdLAogICAg
ICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgICAgIFsnamF2YXNjcmlwdF9lbmdpbmU9PSJ2OCInLCB7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDA0YjM3ZjQuLmFhMDE1M2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzgsOSArMjc4LDYgQEAKICAgICAgICAg
ICAgICd4bWwvWFBhdGhSZXN1bHQuaWRsJywKICAgICAgICAgICAgICd4bWwvWFNMVFByb2Nlc3Nv
ci5pZGwnLAogICAgICAgICBdLAotICAgICAgICAnd2ViY29yZV9pbnNwZWN0b3JfaWRsX2ZpbGVz
JzogWwotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsJywKLSAgICAgICAgXSwK
ICAgICAgICAgJ3dlYmNvcmVfc3ZnX2JpbmRpbmdzX2lkbF9maWxlcyc6IFsKICAgICAgICAgICAg
ICdzdmcvRWxlbWVudFRpbWVDb250cm9sLmlkbCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FFbGVt
ZW50LmlkbCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvV2ViQ29yZS9XZWJD
b3JlLnByaQppbmRleCA3MjA1YWRkLi5kZTc5ZTJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTgwOCw3ICs4MDgsNyBAQCBpZGwu
ZGVwZW5kcyA9ICQkUFdEL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBcCiBhZGRF
eHRyYUNvbXBpbGVyKGlkbCkKIAogIyBHRU5FUkFUT1IgMjogaW5zcGVjdG9yIGlkbCBjb21waWxl
cgotaW5zcGVjdG9ySURMLm91dHB1dCA9ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vUmVt
b3RlJHtRTUFLRV9GSUxFX0JBU0V9RnJvbnRlbmQuY3BwCitpbnNwZWN0b3JJREwub3V0cHV0ID0g
JCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS9SZW1vdGUke1FNQUtFX0ZJTEVfQkFTRX1Gcm9u
dGVuZC5jcHAgJCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS8ke1FNQUtFX0ZJTEVfQkFTRX1C
YWNrZW5kRGlzcGF0Y2hlci5jcHAKIGluc3BlY3RvcklETC5pbnB1dCA9IElOU1BFQ1RPUl9JTlRF
UkZBQ0VTCiBpbnNwZWN0b3JJREwud2tTY3JpcHQgPSAkJFBXRC9iaW5kaW5ncy9zY3JpcHRzL2dl
bmVyYXRlLWJpbmRpbmdzLnBsCiBpbnNwZWN0b3JJREwuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0Qv
YmluZGluZ3Mvc2NyaXB0cyAtSSQkUFdEL2luc3BlY3RvciAkJGluc3BlY3RvcklETC53a1Njcmlw
dCAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVH1cIiAtLWdlbmVyYXRv
ciBJbnNwZWN0b3IgLS1vdXRwdXREaXIgJCRXQ19HRU5FUkFURURfU09VUkNFU19ESVIgLS1wcmVw
cm9jZXNzb3IgXCIkJHtRTUFLRV9NT0N9IC1FXCIgJHtRTUFLRV9GSUxFX05BTUV9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlOTZiN2JlLi4yMmE2ZWQ2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTIwNzQxLDYgKzIwNzQxLDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMzExMGQ3Ni4uNGMxOGQ4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzAsNiArMTAzMCw4IEBACiAJCTRGMzI4OUI1MTFB
NDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIElu
c3BlY3RvclZhbHVlcy5jcHAgKi87IH07CiAJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJ
bnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRGNUZGQjEx
Q0JEMkUxMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4
NkJGIC8qIFJlbW90ZUluc3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKKwkJNEY3MDdBOTkxMUVG
Njc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNzA3QTk3MTFFRjY3OTQwMEFD
REE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CisJCTRGNzA3QTlB
MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAw
QUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IH07CiAJCTRGRDhEMEYy
MTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYwMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmNwcCAqLzsgfTsKIAkJNEZEOEQwRjMxMTlDNzE4QjAwMkZBODI1IC8qIFNj
cmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggKi87IH07CiAJ
CTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYg
LyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC02Nzc0LDYgKzY3NzYsOCBAQAogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0Ug
LyogSW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZGQTEx
Q0JEMkQyMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyog
UmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEY3MDdBOTcxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEY3MDdBOTgx
MUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGRDhEMEYwMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cmlwdEdDRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkQ4RDBGMTEx
OUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRHQ0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExNDMyLDYgKzExNDM2LDggQEAKIAkJCQk5RkEzN0VGNzExNzJGRDkzMDBDNENENTUg
LyogSlNTY3JpcHRQcm9maWxlLmggKi8sCiAJCQkJOUZBMzdFRjgxMTcyRkQ5MzAwQzRDRDU1IC8q
IEpTU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovLAogCQkJCTlGQTM3RUY5MTE3MkZEOTMwMEM0Q0Q1
NSAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggKi8sCisJCQkJNEY3MDdBOTcxMUVGNjc5NDAwQUNE
QTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk0RjcwN0E5ODEx
RUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLywKIAkJCQk0
RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwICov
LAogCQkJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBSZW1vdGVJbnNwZWN0b3JGcm9udGVu
ZC5oICovLAogCQkJKTsKQEAgLTE5ODM5LDYgKzE5ODQ1LDcgQEAKIAkJCQlDRTE3MkUwMTExMzZF
OENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCThDNkVBNjFBMTFF
RjdFMDQwMEZEOEVFMyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTYyQzdGNTExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMjIzNCw2ICsyMjI0MSw3IEBACiAJCQkJ
OTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOEM2RUE2MTkxMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2MkM3RjQxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVt
ZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRGNzA3QTk5MTFFRjY3OTQwMEFDREE2
OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9XZWJD
b3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IGFmYWRkZWMuLmIy
MDVmYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucG0KKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQpA
QCAtMTQsNiArMTQsMTAgQEAgJHR5cGVUcmFuc2Zvcm17Ikluc3BlY3RvckNsaWVudCJ9ID0gewog
ICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yQ2xpZW50IiwKICAgICAiaGVhZGVyIiA9PiAiSW5z
cGVjdG9yQ2xpZW50LmgiLAogfTsKKyR0eXBlVHJhbnNmb3JteyJJbnNwZWN0b3JCYWNrZW5kIn0g
PSB7CisgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JCYWNrZW5kIiwKKyAgICAiaGVhZGVyIiA9
PiAiSW5zcGVjdG9yQmFja2VuZC5oIiwKK307CiAkdHlwZVRyYW5zZm9ybXsiUGFzc1JlZlB0ciJ9
ID0gewogICAgICJmb3J3YXJkSGVhZGVyIiA9PiAid3RmL1Bhc3NSZWZQdHIuaCIsCiB9OwpAQCAt
OTUsNiArOTksMTMgQEAgbXkgJHZlcmJvc2U7CiAKIG15ICRuYW1lc3BhY2U7CiAKK215ICRiYWNr
ZW5kQ2xhc3NOYW1lOworbXkgJWJhY2tlbmRUeXBlczsKK215ICViYWNrZW5kTWV0aG9kczsKK215
IEBiYWNrZW5kTWV0aG9kc0ltcGw7CitteSAkYmFja2VuZENvbnN0cnVjdG9yOworbXkgJGJhY2tl
bmRGb290ZXI7CisKIG15ICRmcm9udGVuZENsYXNzTmFtZTsKIG15ICVmcm9udGVuZFR5cGVzOwog
bXkgJWZyb250ZW5kTWV0aG9kczsKQEAgLTE1MCw2ICsxNjEsMTcgQEAgc3ViIEdlbmVyYXRlSW50
ZXJmYWNlCiAgICAgJGZyb250ZW5kVHlwZXN7Ikluc3BlY3RvckNsaWVudCJ9ID0gMTsKICAgICAk
ZnJvbnRlbmRUeXBlc3siUGFzc1JlZlB0ciJ9ID0gMTsKIAorICAgICRiYWNrZW5kQ2xhc3NOYW1l
ID0gJGNsYXNzTmFtZSAuICJCYWNrZW5kRGlzcGF0Y2hlciI7CisgICAgbXkgQGJhY2tlbmRIZWFk
OworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAiICAgICR7YmFja2VuZENsYXNzTmFtZX0oSW5zcGVj
dG9yQmFja2VuZCogaW5zcGVjdG9yQmFja2VuZCkgOiBtX2luc3BlY3RvckJhY2tlbmQoaW5zcGVj
dG9yQmFja2VuZCkgeyB9Iik7CisgICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgdm9pZCBkaXNw
YXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFN0cmluZyogZXhjZXB0aW9uKTsiKTsKKyAgICBw
dXNoKEBiYWNrZW5kSGVhZCwgInByaXZhdGU6Iik7CisgICAgJGJhY2tlbmRDb25zdHJ1Y3RvciA9
IGpvaW4oIlxuIiwgQGJhY2tlbmRIZWFkKTsKKyAgICAkYmFja2VuZEZvb3RlciA9ICIgICAgSW5z
cGVjdG9yQmFja2VuZCogbV9pbnNwZWN0b3JCYWNrZW5kOyI7CisgICAgJGJhY2tlbmRUeXBlc3si
SW5zcGVjdG9yQmFja2VuZCJ9ID0gMTsKKyAgICAkYmFja2VuZFR5cGVzeyJQYXNzUmVmUHRyIn0g
PSAxOworICAgICRiYWNrZW5kVHlwZXN7IkFycmF5In0gPSAxOworCiAgICAgZ2VuZXJhdGVGdW5j
dGlvbnMoJGludGVyZmFjZSk7CiB9CiAKQEAgLTE1OSw3ICsxODEsOSBAQCBzdWIgZ2VuZXJhdGVG
dW5jdGlvbnMKIAogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0
aW9uc30pIHsKICAgICAgICAgZ2VuZXJhdGVGcm9udGVuZEZ1bmN0aW9uKCRmdW5jdGlvbik7Cisg
ICAgICAgIGdlbmVyYXRlQmFja2VuZEZ1bmN0aW9uKCRmdW5jdGlvbik7CiAgICAgfQorICAgIHB1
c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVCYWNrZW5kRGlzcGF0Y2hlcigpKTsKIH0K
IAogc3ViIGdlbmVyYXRlRnJvbnRlbmRGdW5jdGlvbgpAQCAtMTk4LDYgKzIyMiw5NCBAQCBzdWIg
Z2VuZXJhdGVGcm9udGVuZEZ1bmN0aW9uCiAgICAgfQogfQogCitzdWIgZ2VuZXJhdGVCYWNrZW5k
RnVuY3Rpb24KK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICByZXR1cm4gaWYgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJub3RpZnkifTsKKworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKworICAgIG15
IEBhcmdzRmlsdGVyZWQgPSBncmVwKCRfLT5kaXJlY3Rpb24gZXEgImluIiwgQHskZnVuY3Rpb24t
PnBhcmFtZXRlcnN9KTsKKyAgICBtYXAoJGJhY2tlbmRUeXBlc3skXy0+dHlwZX0gPSAxLCBAYXJn
c0ZpbHRlcmVkKTsgIyByZWdpc3RlciByZXF1aXJlZCB0eXBlcworICAgIG15ICRhcmd1bWVudHMg
PSBqb2luKCIsICIsIG1hcCgkdHlwZVRyYW5zZm9ybXskXy0+dHlwZX0tPnsicGFyYW0ifSAuICIg
IiAuICRfLT5uYW1lLCBAYXJnc0ZpbHRlcmVkKSk7CisKKyAgICBteSAkc2lnbmF0dXJlID0gIiAg
ICB2b2lkICR7ZnVuY3Rpb25OYW1lfShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmdzKTsi
OworICAgICEkYmFja2VuZE1ldGhvZHN7JHtzaWduYXR1cmV9fSB8fCBkaWUgIkR1cGxpY2F0ZSBm
dW5jdGlvbiB3YXMgZGV0ZWN0ZWQgZm9yIHNpZ25hdHVyZSAnJHNpZ25hdHVyZScuIjsKKyAgICAk
YmFja2VuZE1ldGhvZHN7JHtzaWduYXR1cmV9fSA9ICRmdW5jdGlvbk5hbWU7CisKKyAgICBteSBA
ZnVuY3Rpb247CisgICAgIyBTa2lwIHBhcmFtZXRlciBuYW1lIGlmIG5vIGFyZ3VtZW50cyBpbiB0
aGUgYXJyYXkuIEp1c3QgdG8gYXZvaWQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nLgorICAgIHB1
c2goQGZ1bmN0aW9uLCAidm9pZCAke2JhY2tlbmRDbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0o
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4iIC4gKCBzY2FsYXIoQGFyZ3NGaWx0ZXJlZCkgPyAi
IGFyZ3MpIiA6ICIpIikpOworICAgIHB1c2goQGZ1bmN0aW9uLCAieyIpOworICAgIG15ICRpID0g
MTsgIyB6ZXJvIGVsZW1lbnQgaXMgdGhlIG1ldGhvZCBuYW1lLgorICAgIGZvcmVhY2ggbXkgJHBh
cmFtZXRlciAoQGFyZ3NGaWx0ZXJlZCkgeworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAi
IC4gJHR5cGVUcmFuc2Zvcm17JHBhcmFtZXRlci0+dHlwZX0tPnsicmV0VmFsIn0gLiAiICIgLiAk
cGFyYW1ldGVyLT5uYW1lIC4gIjsiKTsKKyAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgaWYg
KCFhcmdzLT5nZXQoIiAuICRpIC4gIiktPmFzIiAuICR0eXBlVHJhbnNmb3JteyRwYXJhbWV0ZXIt
PnR5cGV9LT57ImFjY2Vzc29yU3VmZml4In0gLiAiKCYiIC4gJHBhcmFtZXRlci0+bmFtZSAuICIp
KSB7Iik7CisgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsiKTsKKyAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIHJldHVybjsiKTsKKyAg
ICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgfSIpOworICAgICAgICArKyRpOworICAgIH0KKyAg
ICBwdXNoKEBmdW5jdGlvbiwgIiAgICBtX2luc3BlY3RvckJhY2tlbmQtPiRmdW5jdGlvbk5hbWUo
IiAuIGpvaW4oIiwgIiwgbWFwKCRfLT5uYW1lLCBAYXJnc0ZpbHRlcmVkKSkgLiAiKTsiKTsKKyAg
ICBwdXNoKEBmdW5jdGlvbiwgIn0iKTsKKyAgICBwdXNoKEBmdW5jdGlvbiwgIiIpOworICAgIHB1
c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgQGZ1bmN0aW9uKTsKK30KKworc3ViIGdlbmVyYXRlQmFj
a2VuZERpc3BhdGNoZXIKK3sKKyAgICBteSBAYm9keTsKKyAgICBteSBAbWV0aG9kcyA9IG1hcCgk
YmFja2VuZE1ldGhvZHN7JF99LCBrZXlzICViYWNrZW5kTWV0aG9kcyk7CisgICAgbXkgQG1hcEVu
dHJpZXMgPSBtYXAoImRpc3BhdGNoTWFwLmFkZChcIiRfXCIsICYke2JhY2tlbmRDbGFzc05hbWV9
OjokXyk7IiwgQG1ldGhvZHMpOworCisgICAgcHVzaChAYm9keSwgInZvaWQgJHtiYWNrZW5kQ2xh
c3NOYW1lfTo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTdHJpbmcqIGV4Y2VwdGlv
bikiKTsKKyAgICBwdXNoKEBib2R5LCAieyIpOworICAgIHB1c2goQGJvZHksICIgICAgdHlwZWRl
ZiB2b2lkICgke2JhY2tlbmRDbGFzc05hbWV9OjoqQ2FsbEhhbmRsZXIpKFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IGFyZ3MpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+IERpc3BhdGNoTWFwOyIpOworICAgIHB1c2goQGJvZHks
ICIgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEaXNwYXRjaE1hcCwgZGlzcGF0Y2hNYXAsICk7Iik7
CisgICAgcHVzaChAYm9keSwgIiAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0eSgpKSB7Iik7Cisg
ICAgcHVzaChAYm9keSwgbWFwKCIgICAgICAgICRfIiwgQG1hcEVudHJpZXMpKTsKKyAgICBwdXNo
KEBib2R5LCAiICAgIH0iKTsKKyAgICBwdXNoKEBib2R5LCAiIik7CisgICAgcHVzaChAYm9keSwg
IiAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNlZE1lc3NhZ2UgPSBJbnNwZWN0b3JWYWx1
ZTo6cGFyc2VKU09OKG1lc3NhZ2UpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgaWYgKCFwYXJz
ZWRNZXNzYWdlKSB7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgKmV4Y2VwdGlvbiA9IFwiRXJyb3I6
IEludmFsaWQgbWVzc2FnZSBmb3JtYXQuIE1lc3NhZ2Ugc2hvdWxkIGJlIGluIEpTT04gZm9ybWF0
LlwiOyIpOworICAgIHB1c2goQGJvZHksICIgICAgICAgIHJldHVybjsiKTsKKyAgICBwdXNoKEBi
b2R5LCAiICAgIH0iKTsKKyAgICBwdXNoKEBib2R5LCAiIik7CisgICAgcHVzaChAYm9keSwgIiAg
ICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IG1lc3NhZ2VBcnJheSA9IHBhcnNlZE1lc3NhZ2UtPmFz
QXJyYXkoKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIGlmICghbWVzc2FnZUFycmF5KSB7Iik7
CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Iik7CisgICAg
cHVzaChAYm9keSwgIiAgICAgICAgKmV4Y2VwdGlvbiA9IFwiRXJyb3I6IEludmFsaWQgbWVzc2Fn
ZSBmb3JtYXQuIFRoZSBtZXNzYWdlIHNob3VsZCBiZSBqc29uaWZpZWQgYXJyYXkgb2YgYXJndW1l
bnRzLlwiOyIpOworICAgIHB1c2goQGJvZHksICIgICAgICAgIHJldHVybjsiKTsKKyAgICBwdXNo
KEBib2R5LCAiICAgIH0iKTsKKyAgICBwdXNoKEBib2R5LCAiIik7CisgICAgcHVzaChAYm9keSwg
IiAgICBpZiAoIW1lc3NhZ2VBcnJheS0+bGVuZ3RoKCkpIHsiKTsKKyAgICBwdXNoKEBib2R5LCAi
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAg
ICAqZXhjZXB0aW9uID0gXCJFcnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4gRW1wdHkgbWVz
c2FnZSB3YXMgcmVjZWl2ZWQuXCI7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgcmV0dXJu
OyIpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1c2goQGJvZHksICIiKTsKKyAg
ICBwdXNoKEBib2R5LCAiICAgIFN0cmluZyBtZXRob2ROYW1lOyIpOworICAgIHB1c2goQGJvZHks
ICIgICAgaWYgKCFtZXNzYWdlQXJyYXktPmdldCgwKS0+YXNTdHJpbmcoJm1ldGhvZE5hbWUpKSB7
Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Iik7Cisg
ICAgcHVzaChAYm9keSwgIiAgICAgICAgKmV4Y2VwdGlvbiA9IFwiRXJyb3I6IEludmFsaWQgbWVz
c2FnZSBmb3JtYXQuIFRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBtZXNzYWdlIHNob3VsZCBiZSBt
ZXRob2QgbmFtZS5cIjsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICByZXR1cm47Iik7Cisg
ICAgcHVzaChAYm9keSwgIiAgICB9Iik7CisgICAgcHVzaChAYm9keSwgIiIpOworICAgIHB1c2go
QGJvZHksICIgICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPjo6aXRlcmF0b3IgaXQgPSBk
aXNwYXRjaE1hcC5maW5kKG1ldGhvZE5hbWUpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgaWYg
KGl0ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgU3RyaW5n
Ojpmb3JtYXQoXCJFcnJvcjogSW52YWxpZCBtZXRob2QgbmFtZS4gJyVzJyB3YXNuJ3QgZm91bmQu
XCIsIG1ldGhvZE5hbWUudXRmOCgpLmRhdGEoKSk7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAg
ICAgcmV0dXJuOyIpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1c2goQGJvZHks
ICIiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICgoKnRoaXMpLippdC0+c2Vjb25kKShtZXNzYWdl
QXJyYXkpOyIpOworICAgIHB1c2goQGJvZHksICJ9Iik7CisgICAgcmV0dXJuIEBib2R5OworfQor
CiBzdWIgZ2VuZXJhdGVIZWFkZXIKIHsKICAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CkBAIC0y
ODQsNiArMzk2LDE1IEBAIHN1YiBmaW5pc2gKICAgICBjbG9zZSgkSEVBREVSKTsKICAgICB1bmRl
ZigkSEVBREVSKTsKIAorICAgIG9wZW4oJFNPVVJDRSwgIj4kb3V0cHV0RGlyLyRiYWNrZW5kQ2xh
c3NOYW1lLmNwcCIpIHx8IGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRvdXRwdXREaXIvJGJhY2tl
bmRDbGFzc05hbWUuY3BwIjsKKyAgICBwcmludCAkU09VUkNFIGpvaW4oIlxuIiwgZ2VuZXJhdGVT
b3VyY2UoJGJhY2tlbmRDbGFzc05hbWUsIFwlYmFja2VuZFR5cGVzLCBcQGJhY2tlbmRNZXRob2Rz
SW1wbCkpOworICAgIGNsb3NlKCRTT1VSQ0UpOworICAgIHVuZGVmKCRTT1VSQ0UpOworCisgICAg
b3BlbigkSEVBREVSLCAiPiRvdXRwdXRIZWFkZXJzRGlyLyRiYWNrZW5kQ2xhc3NOYW1lLmgiKSB8
fCBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkb3V0cHV0SGVhZGVyc0Rpci8kYmFja2VuZENsYXNz
TmFtZS5oIjsKKyAgICBwcmludCAkSEVBREVSIGpvaW4oIlxuIiwgZ2VuZXJhdGVIZWFkZXIoJGJh
Y2tlbmRDbGFzc05hbWUsIFwlYmFja2VuZFR5cGVzLCAkYmFja2VuZENvbnN0cnVjdG9yLCBcJWJh
Y2tlbmRNZXRob2RzLCAkYmFja2VuZEZvb3RlcikpOworICAgIGNsb3NlKCRIRUFERVIpOworICAg
IHVuZGVmKCRIRUFERVIpOwogfQogCiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCA4ODc5YjhlLi43ZjlmM2Q1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTU3RvcmUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
bGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgpAQCAtMTkyLDYg
KzE5Myw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlVHJhY2tpbmdF
bmFibGVkKGZhbHNlKQogICAgICwgbV9zZXR0aW5nc0xvYWRlZChmYWxzZSkKICAgICAsIG1faW5z
cGVjdG9yQmFja2VuZChJbnNwZWN0b3JCYWNrZW5kOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKG5ldyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciht
X2luc3BlY3RvckJhY2tlbmQuZ2V0KCkpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUodGhpcykpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCiAgICAgLCBtX2RlYnVnZ2VyRW5hYmxlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA3NmI4OGYxLi4xNzZkZDExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIEhpdFRl
c3RSZXN1bHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9z
dDsKIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CitjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckNTU1N0b3JlOwog
Y2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOwpAQCAtMTIwLDYgKzEyMSw3IEBAIHB1
YmxpYzoKICAgICB+SW5zcGVjdG9yQ29udHJvbGxlcigpOwogCiAgICAgSW5zcGVjdG9yQmFja2Vu
ZCogaW5zcGVjdG9yQmFja2VuZCgpIHsgcmV0dXJuIG1faW5zcGVjdG9yQmFja2VuZC5nZXQoKTsg
fQorICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBpbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcigpIHsgcmV0dXJuIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KICAg
ICBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCgpIHsgcmV0dXJuIG1faW5q
ZWN0ZWRTY3JpcHRIb3N0LmdldCgpOyB9CiAKICAgICB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95
ZWQoKTsKQEAgLTM5NSw2ICszOTcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXNvdXJjZVRy
YWNraW5nRW5hYmxlZDsKICAgICBib29sIG1fc2V0dGluZ3NMb2FkZWQ7CiAgICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmQ+IG1faW5zcGVjdG9yQmFja2VuZDsKKyAgICBPd25QdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgUmVm
UHRyPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAKaW5kZXggOTBhNDBmOS4uMTFhODkyZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC00ODQsNiArNDg0LDE2IEBAIGJvb2wgSW5zcGVjdG9yVmFs
dWU6OmFzTnVtYmVyKGRvdWJsZSopIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29s
IEluc3BlY3RvclZhbHVlOjphc051bWJlcihsb25nKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqKSBj
b25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNT
dHJpbmcoU3RyaW5nKikgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC01NDAsNiArNTUw
LDIzIEBAIGJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIoZG91YmxlKiBvdXRwdXQp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6
YXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gVHlwZURv
dWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICpvdXRwdXQgPSAobG9uZyltX2RvdWJs
ZVZhbHVlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEluc3BlY3RvckJhc2ljVmFsdWU6
OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgp
ICE9IFR5cGVEb3VibGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAqb3V0cHV0ID0gKHVu
c2lnbmVkIGxvbmcpbV9kb3VibGVWYWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCiB2b2lk
IEluc3BlY3RvckJhc2ljVmFsdWU6OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBUeXBlQm9vbGVhbiB8fCB0eXBlKCkgPT0gVHlw
ZURvdWJsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCmluZGV4IGEwYzBjMmQuLjk0
MGJhYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC02OSw2ICs2OSw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2woYm9vbCogb3V0cHV0KSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBhc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBhc051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gYXNPYmplY3QoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IGFzQXJyYXkoKTsKQEAgLTEwNSw2ICsxMDcsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgYXNCb29sKGJvb2wqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGFzTnVtYmVyKGRvdWJsZSogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNO
dW1iZXIobG9uZyogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5z
aWduZWQgbG9uZyogb3V0cHV0KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04o
VmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA0OGViNGMwLi5lYzk1NTlmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMjIyLDcgKzIyMiw3
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBp
ZiAodGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldCkgewogICAgICAgICAgICAgdmFyIGNhbGxJZCA9
IFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKHNlbGVjdExhc3RTZWxlY3RlZE5vZGUuYmluZCh0
aGlzKSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlQnlQYXRoVG9Gcm9u
dGVuZChjYWxsSWQsIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQpOworICAgICAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoY2FsbElkLCB0aGlzLl9zZWxl
Y3RlZFBhdGhPblJlc2V0LmpvaW4oIiwiKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
c2VsZWN0Tm9kZS5jYWxsKHRoaXMpOwogICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRQYXRo
T25SZXNldDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU1ZDFlNzAuLmVjZjFkMGIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDEwLTA3LTIyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWJJbnNwZWN0b3I6IENvZGVHZW5lcmF0b3JJbnNwZWN0b3Igd2FzIGV4dGVuZGVkIGFu
ZCBub3cgaXQgY2FuCisgICAgICAgIGdlbmVyYXRlIEluc3BlY3RvckJhY2tlZERpc3BhdGNoZXIn
cyBjb2RlLiBUaGlzIGRpc3BhdGNoZXIgd2lsbAorICAgICAgICB2YWxpZGF0ZSBhbmQgZGlzcGF0
Y2ggaW5jb21pbmcgaW5zcGVjdG9yIGNvbW1hbmRzIG9ubHkgYnkgbmF0aXZlCisgICAgICAgIGNv
ZGUgd2l0aG91dCB1c2luZyBqYXZhU2NyaXB0LiBUaGF0IGlzIG5lY2Vzc2FyeSBzdGVwIGZvcgor
ICAgICAgICBSZW1vdGVEZWJ1Z2dpbmcgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNTg4CisKKyAgICAgICAgKiBzcmMvVG9vbHNBZ2Vu
dC5oOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxl
cik6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmg6CisgICAgICAgICogc3Jj
L2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzOgorICAgICAgICAoZGV2dG9vbHMuSW5zcGVj
dG9yQmFja2VuZEltcGwucHJvdG90eXBlLmNhbGxJbnNwZWN0b3JDb250cm9sbGVyXyk6CisKIDIw
MTAtMDctMjIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Ub29sc0FnZW50LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaApp
bmRleCBjNzQ4YzhhLi5kODc4YWVhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1Rv
b2xzQWdlbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaApAQCAtMzks
OCArMzksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIEFQSSBmb3IgYXV4aWxpYXJ5IFVJIGZ1
bmN0aW9ucyBzdWNoIGFzIGRvbSBlbGVtZW50cyBoaWdobGlnaHRpbmcuCiAjZGVmaW5lIFRPT0xT
X0FHRU5UX1NUUlVDVChNRVRIT0QwLCBNRVRIT0QxLCBNRVRIT0QyLCBNRVRIT0QzLCBNRVRIT0Q0
LCBNRVRIT0Q1KSBcCiAgICAgLyogRGlzcGF0Y2hlcyBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgSW5z
cGVjdG9yQ29udHJvbGxlciBvYmplY3QgKi8gXAotICAgIE1FVEhPRDMoZGlzcGF0Y2hPbkluc3Bl
Y3RvckNvbnRyb2xsZXIsIGludCAvKiBjYWxsX2lkICovLCBcCi0gICAgICAgIFN0cmluZyAvKiBm
dW5jdGlvbl9uYW1lICovLCBTdHJpbmcgLyoganNvbl9hcmdzICovKSBcCisgICAgTUVUSE9EMihk
aXNwYXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlciwgaW50IC8qIGNhbGxfaWQgKi8sIFwKKyAgICAg
ICAgU3RyaW5nIC8qIG1lc3NhZ2UgKi8pIFwKICAgICBcCiAgICAgLyogRGlzcGF0Y2hlcyBnaXZl
biBmdW5jdGlvbiBvbiB0aGUgSW5qZWN0ZWRTY3JpcHQgb2JqZWN0ICovIFwKICAgICBNRVRIT0Q1
KGRpc3BhdGNoT25JbmplY3RlZFNjcmlwdCwgaW50IC8qIGNhbGxfaWQgKi8sIFwKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggMGQ4Y2JhZC4uNjIz
OGRkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yUmVzb3VyY2UuaCIKQEAgLTMwOCwxMyArMzA5LDExIEBAIHZvaWQgV2ViRGV2VG9v
bHNBZ2VudEltcGw6OmZvcmNlUmVwYWludCgpCiAgICAgbV9jbGllbnQtPmZvcmNlUmVwYWludCgp
OwogfQogCi12b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQ29u
dHJvbGxlcihpbnQgY2FsbElkLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3Ry
aW5nJiBqc29uQXJncykKK3ZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoT25JbnNw
ZWN0b3JDb250cm9sbGVyKGludCBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBTdHJpbmcgcmVzdWx0OwogICAgIFN0cmluZyBleGNlcHRpb247Ci0gICAgcmVzdWx0ID0gbV9k
ZWJ1Z2dlckFnZW50SW1wbC0+ZXhlY3V0ZVV0aWxpdHlGdW5jdGlvbihtX3V0aWxpdHlDb250ZXh0
LCBjYWxsSWQsCi0gICAgICAgICJJbnNwZWN0b3JDb250cm9sbGVyRGlzcGF0Y2hlciIsIGZ1bmN0
aW9uTmFtZSwganNvbkFyZ3MsIGZhbHNlIC8qIGlzIHN5bmMgKi8sICZleGNlcHRpb24pOwotICAg
IG1fdG9vbHNBZ2VudERlbGVnYXRlU3R1Yi0+ZGlkRGlzcGF0Y2hPbihjYWxsSWQsIHJlc3VsdCwg
ZXhjZXB0aW9uKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKCktPmRpc3BhdGNoKG1lc3NhZ2UsICZleGNlcHRpb24pOworICAgIG1fdG9vbHNB
Z2VudERlbGVnYXRlU3R1Yi0+ZGlkRGlzcGF0Y2hPbihjYWxsSWQsICIiLCBleGNlcHRpb24pOwog
fQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQo
aW50IGNhbGxJZCwgaW50IGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIGpzb25BcmdzLCBib29sIGFzeW5jKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IDEyZjUxZjkuLmJlYjVjZmEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTcyLDcgKzcyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkRldlRvb2xzQWdlbnRJbXBsKCk7CiAKICAgICAv
LyBUb29sc0FnZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9u
SW5zcGVjdG9yQ29udHJvbGxlcihpbnQgY2FsbElkLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGZ1
bmN0aW9uTmFtZSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBqc29uQXJncyk7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGludCBjYWxsSWQsIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoT25Jbmpl
Y3RlZFNjcmlwdChpbnQgY2FsbElkLCBpbnQgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYganNvbkFyZ3Ms
IGJvb2wgYXN5bmMpOwogCiAgICAgLy8gV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUgaW1wbGVtZW50
YXRpb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRy
b2xsZXJJbXBsLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVy
SW1wbC5qcwppbmRleCBhNzk1ODkxLi4zMGVkZDllIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMKQEAgLTE1NCw3ICsxNTQsOCBAQCBk
ZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbC5wcm90b3R5cGUuaW5zdGFsbEluc3BlY3RvckNv
bnRyb2xsZXJEZWxlZ2F0ZV8gPSBmdQogZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwucHJv
dG90eXBlLmNhbGxJbnNwZWN0b3JDb250cm9sbGVyXyA9IGZ1bmN0aW9uKG1ldGhvZE5hbWUsIHZh
cl9hcmcpCiB7CiAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1
bWVudHMsIDEpOwotICAgIFJlbW90ZVRvb2xzQWdlbnQuZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRy
b2xsZXIoV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoZnVuY3Rpb24oKXt9KSwgbWV0aG9kTmFt
ZSwgSlNPTi5zdHJpbmdpZnkoYXJncykpOworICAgIGFyZ3MudW5zaGlmdChtZXRob2ROYW1lKTsK
KyAgICBSZW1vdGVUb29sc0FnZW50LmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKFdlYklu
c3BlY3Rvci5DYWxsYmFjay53cmFwKGZ1bmN0aW9uKCl7fSksIEpTT04uc3RyaW5naWZ5KGFyZ3Mp
KTsKIH07CiAKIAo=
</data>
<flag name="review"
          id="50471"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62394</attachid>
            <date>2010-07-23 01:33:30 -0700</date>
            <delta_ts>2010-07-23 01:33:30 -0700</delta_ts>
            <desc>really landed</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>28223</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGU4YWVhZC4uNWI1Y2ZhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNy0yMiAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBT
ZW1pa2hhdHNreS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IENvZGVHZW5lcmF0b3JJbnNwZWN0
b3Igd2FzIGV4dGVuZGVkIGFuZCBub3cgaXQgY2FuCisgICAgICAgIGdlbmVyYXRlIEluc3BlY3Rv
ckJhY2tlZERpc3BhdGNoZXIncyBjb2RlLiBUaGlzIGRpc3BhdGNoZXIgd2lsbAorICAgICAgICB2
YWxpZGF0ZSBhbmQgZGlzcGF0Y2ggaW5jb21pbmcgaW5zcGVjdG9yIGNvbW1hbmRzIG9ubHkgYnkg
bmF0aXZlCisgICAgICAgIGNvZGUgd2l0aG91dCB1c2luZyBqYXZhU2NyaXB0LiBUaGF0IGlzIG5l
Y2Vzc2FyeSBzdGVwIGZvcgorICAgICAgICBSZW1vdGVEZWJ1Z2dpbmcgc3VwcG9ydC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNTg4CisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcmk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnBtOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnNldERvY3VtZW50
KToKKwogMjAxMC0wNy0yMiAgU2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOGZiYmI5NS4u
YWUyM2ZjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC05OSw2ICs5OSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5TmFtZXMuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0hUTUxOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSFRNTE5hbWVzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtl
ci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXJyYXlCdWZmZXIuY3BwIFwKQEAgLTQzOTYsOCArNDM5
OCw4IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWE1MTlNOYW1lcy5jcHAgRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9YTUxOU05hbWVzLmg6ICQoV2ViCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hN
TE5hbWVzLmNwcCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hNTE5hbWVzLmg6ICQoV2ViQ29yZSkv
ZG9tL21ha2VfbmFtZXMucGwgJChXZWJDb3JlKS94bWwveG1sYXR0cnMuaW4KIAkkKEFNX1ZfR0VO
KSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1hdHRycyAkKFdlYkNv
cmUpL3htbC94bWxhdHRycy5pbiAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTX1dFQkNPUkUpIgog
Ci0jIFJlbW90ZSBJbnNwZWN0b3IgZnJvbnRlbmQKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVt
b3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVtb3RlSW5z
cGVjdG9yRnJvbnRlbmQuaDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCAkKFND
UklQVFNfQklORElOR1MpICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucG0KKyMgUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQgYW5kIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmNw
cCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlbW90ZUluc3BlY3RvckZyb250ZW5kLmggRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOiAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9JbnNwZWN0b3IuaWRsICQoU0NSSVBUU19CSU5ESU5HUykgJChXZWJDb3JlKS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQogCSQoQU1fVl9HRU4pJChQRVJMKSAtSSQo
V2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAtSSQoV2ViQ29yZSkvaW5zcGVjdG9yICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAkKElETF9QQVRIOiU9LS1p
bmNsdWRlICIlIikgLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19XRUJDT1JFKSIgLS1kZWZpbmVz
ICJMQU5HVUFHRV9KQVZBU0NSSVBUPTEgJChGRUFUVVJFX0RFRklORVMpIiAtLWdlbmVyYXRvciBJ
bnNwZWN0b3IgJDwKIAogSURMX1BBVEggOj0gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cCBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXgg
NjE5MzI5NC4uYWJkNDllNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC00NzYsMTUgKzQ3
NiwyMCBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzog
J1JlbW90ZUluc3BlY3RvckZyb250ZW5kJywKKyAgICAgICAgICAjIFRoZSBzZWNvbmQgaW5wdXQg
aXRlbSB3aWxsIGJlIHVzZWQgYXMgaXRlbSBuYW1lIGluIHZjcHJvai4KKyAgICAgICAgICAjIEl0
IGlzIG5vdCBwb3NzaWJsZSB0byBwdXQgSW5zcGVjdG9yLmlkbCB0aGVyZSBiZWNhdXNlCisgICAg
ICAgICAgIyBhbGwgaWRsIGZpbGVzIGFyZSBtYXJraW5nIGFzIGV4Y2x1ZGVkIGJ5IGd5cCBnZW5l
cmF0b3IuCiAgICAgICAgICAgJ2lucHV0cyc6IFsKICAgICAgICAgICAgICcuLi9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgICAgICcuLi9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbScsCiAgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtJywKICAgICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3JpcHRz
L0lETFBhcnNlci5wbScsCiAgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1
Y3R1cmUucG0nLAotICAgICAgICAgICAgJy4uL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnBtJywKICAgICAgICAgICAgICcuLi9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCcsCiAgICAg
ICAgICAgXSwKICAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICc8KFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcCcsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0
L2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgnLAogICAgICAgICAgICAgJzwo
U0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUvYmluZGluZ3MvUmVtb3RlSW5zcGVjdG9y
RnJvbnRlbmQuY3BwJywKICAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJraXQvYmluZGluZ3MvUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCcsCiAgICAgICAgICAgXSwK
QEAgLTUwNSw3ICs1MTAsNyBAQAogICAgICAgICAgICAgJy0tZ2VuZXJhdG9yJywgJ0luc3BlY3Rv
cicsCiAgICAgICAgICAgICAnPEAoZ2VuZXJhdG9yX2luY2x1ZGVfZGlycyknCiAgICAgICAgICAg
XSwKLSAgICAgICAgICAnbWVzc2FnZSc6ICdHZW5lcmF0aW5nIFJlbW90ZUluc3BlY3RvckZyb250
ZW5kIGNsYXNzIGZyb20gSW5zcGVjdG9yLmlkbCcsCisgICAgICAgICAgJ21lc3NhZ2UnOiAnR2Vu
ZXJhdGluZyBJbnNwZWN0b3IgaW50ZXJmYWNlIGNsYXNzZXMgZnJvbSBJbnNwZWN0b3IuaWRsJywK
ICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdYTUxOYW1l
cycsCkBAIC03MTQsNiArNzE5LDcgQEAKIAogICAgICAgICAjIEFkZGl0aW9uYWwgLmNwcCBmaWxl
cyBmcm9tIHRoZSB3ZWJjb3JlX2luc3BlY3Rvcl9zb3VyY2VzIGxpc3QuCiAgICAgICAgICc8KFNI
QVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdzL1JlbW90ZUluc3BlY3RvckZy
b250ZW5kLmNwcCcsCisgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3Jl
L2JpbmRpbmdzL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCcsCiAgICAgICBdLAogICAg
ICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgICAgIFsnamF2YXNjcmlwdF9lbmdpbmU9PSJ2OCInLCB7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGYyMjJlYWQuLmY1M2Y0NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzgsOSArMjc4LDYgQEAKICAgICAgICAg
ICAgICd4bWwvWFBhdGhSZXN1bHQuaWRsJywKICAgICAgICAgICAgICd4bWwvWFNMVFByb2Nlc3Nv
ci5pZGwnLAogICAgICAgICBdLAotICAgICAgICAnd2ViY29yZV9pbnNwZWN0b3JfaWRsX2ZpbGVz
JzogWwotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsJywKLSAgICAgICAgXSwK
ICAgICAgICAgJ3dlYmNvcmVfc3ZnX2JpbmRpbmdzX2lkbF9maWxlcyc6IFsKICAgICAgICAgICAg
ICdzdmcvRWxlbWVudFRpbWVDb250cm9sLmlkbCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FFbGVt
ZW50LmlkbCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvV2ViQ29yZS9XZWJD
b3JlLnByaQppbmRleCA4MTQxNDk5Li4xOGE3NmEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTgxNiw3ICs4MTYsNyBAQCBpZGwu
ZGVwZW5kcyA9ICQkUFdEL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBcCiBhZGRF
eHRyYUNvbXBpbGVyKGlkbCkKIAogIyBHRU5FUkFUT1IgMjogaW5zcGVjdG9yIGlkbCBjb21waWxl
cgotaW5zcGVjdG9ySURMLm91dHB1dCA9ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vUmVt
b3RlJHtRTUFLRV9GSUxFX0JBU0V9RnJvbnRlbmQuY3BwCitpbnNwZWN0b3JJREwub3V0cHV0ID0g
JCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS9SZW1vdGUke1FNQUtFX0ZJTEVfQkFTRX1Gcm9u
dGVuZC5jcHAgJCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS8ke1FNQUtFX0ZJTEVfQkFTRX1C
YWNrZW5kRGlzcGF0Y2hlci5jcHAKIGluc3BlY3RvcklETC5pbnB1dCA9IElOU1BFQ1RPUl9JTlRF
UkZBQ0VTCiBpbnNwZWN0b3JJREwud2tTY3JpcHQgPSAkJFBXRC9iaW5kaW5ncy9zY3JpcHRzL2dl
bmVyYXRlLWJpbmRpbmdzLnBsCiBpbnNwZWN0b3JJREwuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0Qv
YmluZGluZ3Mvc2NyaXB0cyAtSSQkUFdEL2luc3BlY3RvciAkJGluc3BlY3RvcklETC53a1Njcmlw
dCAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVH1cIiAtLWdlbmVyYXRv
ciBJbnNwZWN0b3IgLS1vdXRwdXREaXIgJCRXQ19HRU5FUkFURURfU09VUkNFU19ESVIgLS1wcmVw
cm9jZXNzb3IgXCIkJHtRTUFLRV9NT0N9IC1FXCIgJHtRTUFLRV9GSUxFX05BTUV9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA3ODQ0MGZhLi40NDc5MTgyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTIwNzQxLDYgKzIwNzQxLDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMGQ0ZmMzNS4uNzljZDY2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzAsNiArMTAzMCw4IEBACiAJCTRGMzI4OUI1MTFB
NDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIElu
c3BlY3RvclZhbHVlcy5jcHAgKi87IH07CiAJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJ
bnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRGNUZGQjEx
Q0JEMkUxMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4
NkJGIC8qIFJlbW90ZUluc3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKKwkJNEY3MDdBOTkxMUVG
Njc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNzA3QTk3MTFFRjY3OTQwMEFD
REE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CisJCTRGNzA3QTlB
MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAw
QUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IH07CiAJCTRGRDhEMEYy
MTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYwMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmNwcCAqLzsgfTsKIAkJNEZEOEQwRjMxMTlDNzE4QjAwMkZBODI1IC8qIFNj
cmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmggKi87IH07CiAJ
CTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYg
LyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC02Nzc3LDYgKzY3NzksOCBAQAogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0Ug
LyogSW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZGQTEx
Q0JEMkQyMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyog
UmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEY3MDdBOTcxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEY3MDdBOTgx
MUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGRDhEMEYwMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cmlwdEdDRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkQ4RDBGMTEx
OUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRHQ0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExNDM4LDYgKzExNDQyLDggQEAKIAkJCQk5RkEzN0VGNzExNzJGRDkzMDBDNENENTUg
LyogSlNTY3JpcHRQcm9maWxlLmggKi8sCiAJCQkJOUZBMzdFRjgxMTcyRkQ5MzAwQzRDRDU1IC8q
IEpTU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovLAogCQkJCTlGQTM3RUY5MTE3MkZEOTMwMEM0Q0Q1
NSAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggKi8sCisJCQkJNEY3MDdBOTcxMUVGNjc5NDAwQUNE
QTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk0RjcwN0E5ODEx
RUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLywKIAkJCQk0
RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuY3BwICov
LAogCQkJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBSZW1vdGVJbnNwZWN0b3JGcm9udGVu
ZC5oICovLAogCQkJKTsKQEAgLTE5ODUwLDYgKzE5ODU2LDcgQEAKIAkJCQlCQzVDRkNBOTExRjc5
MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNjJDN0Y1MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNERjMxN0MxMUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5k
aWNhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk0RjcwN0E5QTExRUY2Nzk0MDBBQ0RBNjkgLyog
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjIyNDUsNiAr
MjIyNTIsNyBAQAogCQkJCThDNkVBNjE5MTFFRjdFMDQwMEZEOEVFMyAvKiBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjJDN0Y0MTFGNzdFRkIwMDYxMkVG
RSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0RGMzE3QjExRjhE
NjgzMDAzQzVCRjggLyogVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNEY3MDdBOTkxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucG0KaW5kZXggYWZhZGRlYy4uNWFkZTRhNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCkBAIC0xNCw2ICsxNCwxMCBAQCAkdHlwZVRy
YW5zZm9ybXsiSW5zcGVjdG9yQ2xpZW50In0gPSB7CiAgICAgImZvcndhcmQiID0+ICJJbnNwZWN0
b3JDbGllbnQiLAogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JDbGllbnQuaCIsCiB9OworJHR5
cGVUcmFuc2Zvcm17Ikluc3BlY3RvckJhY2tlbmQifSA9IHsKKyAgICAiZm9yd2FyZCIgPT4gIklu
c3BlY3RvckJhY2tlbmQiLAorICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JCYWNrZW5kLmgiLAor
fTsKICR0eXBlVHJhbnNmb3JteyJQYXNzUmVmUHRyIn0gPSB7CiAgICAgImZvcndhcmRIZWFkZXIi
ID0+ICJ3dGYvUGFzc1JlZlB0ci5oIiwKIH07CkBAIC05NSw2ICs5OSwxMyBAQCBteSAkdmVyYm9z
ZTsKIAogbXkgJG5hbWVzcGFjZTsKIAorbXkgJGJhY2tlbmRDbGFzc05hbWU7CitteSAlYmFja2Vu
ZFR5cGVzOworbXkgJWJhY2tlbmRNZXRob2RzOworbXkgQGJhY2tlbmRNZXRob2RzSW1wbDsKK215
ICRiYWNrZW5kQ29uc3RydWN0b3I7CitteSAkYmFja2VuZEZvb3RlcjsKKwogbXkgJGZyb250ZW5k
Q2xhc3NOYW1lOwogbXkgJWZyb250ZW5kVHlwZXM7CiBteSAlZnJvbnRlbmRNZXRob2RzOwpAQCAt
MTUwLDYgKzE2MSwxNyBAQCBzdWIgR2VuZXJhdGVJbnRlcmZhY2UKICAgICAkZnJvbnRlbmRUeXBl
c3siSW5zcGVjdG9yQ2xpZW50In0gPSAxOwogICAgICRmcm9udGVuZFR5cGVzeyJQYXNzUmVmUHRy
In0gPSAxOwogCisgICAgJGJhY2tlbmRDbGFzc05hbWUgPSAkY2xhc3NOYW1lIC4gIkJhY2tlbmRE
aXNwYXRjaGVyIjsKKyAgICBteSBAYmFja2VuZEhlYWQ7CisgICAgcHVzaChAYmFja2VuZEhlYWQs
ICIgICAgJHtiYWNrZW5kQ2xhc3NOYW1lfShJbnNwZWN0b3JCYWNrZW5kKiBpbnNwZWN0b3JCYWNr
ZW5kKSA6IG1faW5zcGVjdG9yQmFja2VuZChpbnNwZWN0b3JCYWNrZW5kKSB7IH0iKTsKKyAgICBw
dXNoKEBiYWNrZW5kSGVhZCwgIiAgICB2b2lkIGRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgU3RyaW5nKiBleGNlcHRpb24pOyIpOworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAicHJpdmF0
ZToiKTsKKyAgICAkYmFja2VuZENvbnN0cnVjdG9yID0gam9pbigiXG4iLCBAYmFja2VuZEhlYWQp
OworICAgICRiYWNrZW5kRm9vdGVyID0gIiAgICBJbnNwZWN0b3JCYWNrZW5kKiBtX2luc3BlY3Rv
ckJhY2tlbmQ7IjsKKyAgICAkYmFja2VuZFR5cGVzeyJJbnNwZWN0b3JCYWNrZW5kIn0gPSAxOwor
ICAgICRiYWNrZW5kVHlwZXN7IlBhc3NSZWZQdHIifSA9IDE7CisgICAgJGJhY2tlbmRUeXBlc3si
QXJyYXkifSA9IDE7CisKICAgICBnZW5lcmF0ZUZ1bmN0aW9ucygkaW50ZXJmYWNlKTsKIH0KIApA
QCAtMTU5LDcgKzE4MSw5IEBAIHN1YiBnZW5lcmF0ZUZ1bmN0aW9ucwogCiAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBnZW5lcmF0
ZUZyb250ZW5kRnVuY3Rpb24oJGZ1bmN0aW9uKTsKKyAgICAgICAgZ2VuZXJhdGVCYWNrZW5kRnVu
Y3Rpb24oJGZ1bmN0aW9uKTsKICAgICB9CisgICAgcHVzaChAYmFja2VuZE1ldGhvZHNJbXBsLCBn
ZW5lcmF0ZUJhY2tlbmREaXNwYXRjaGVyKCkpOwogfQogCiBzdWIgZ2VuZXJhdGVGcm9udGVuZEZ1
bmN0aW9uCkBAIC0xOTgsNiArMjIyLDk0IEBAIHN1YiBnZW5lcmF0ZUZyb250ZW5kRnVuY3Rpb24K
ICAgICB9CiB9CiAKK3N1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgoreworICAgIG15ICRmdW5j
dGlvbiA9IHNoaWZ0OworICAgIHJldHVybiBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Im5vdGlmeSJ9OworCisgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lOworCisgICAgbXkgQGFyZ3NGaWx0ZXJlZCA9IGdyZXAoJF8t
PmRpcmVjdGlvbiBlcSAiaW4iLCBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pOworICAgIG1hcCgk
YmFja2VuZFR5cGVzeyRfLT50eXBlfSA9IDEsIEBhcmdzRmlsdGVyZWQpOyAjIHJlZ2lzdGVyIHJl
cXVpcmVkIHR5cGVzCisgICAgbXkgJGFyZ3VtZW50cyA9IGpvaW4oIiwgIiwgbWFwKCR0eXBlVHJh
bnNmb3JteyRfLT50eXBlfS0+eyJwYXJhbSJ9IC4gIiAiIC4gJF8tPm5hbWUsIEBhcmdzRmlsdGVy
ZWQpKTsKKworICAgIG15ICRzaWduYXR1cmUgPSAiICAgIHZvaWQgJHtmdW5jdGlvbk5hbWV9KFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3MpOyI7CisgICAgISRiYWNrZW5kTWV0aG9kc3sk
e3NpZ25hdHVyZX19IHx8IGRpZSAiRHVwbGljYXRlIGZ1bmN0aW9uIHdhcyBkZXRlY3RlZCBmb3Ig
c2lnbmF0dXJlICckc2lnbmF0dXJlJy4iOworICAgICRiYWNrZW5kTWV0aG9kc3ske3NpZ25hdHVy
ZX19ID0gJGZ1bmN0aW9uTmFtZTsKKworICAgIG15IEBmdW5jdGlvbjsKKyAgICAjIFNraXAgcGFy
YW1ldGVyIG5hbWUgaWYgbm8gYXJndW1lbnRzIGluIHRoZSBhcnJheS4gSnVzdCB0byBhdm9pZCB1
bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcuCisgICAgcHVzaChAZnVuY3Rpb24sICJ2b2lkICR7YmFj
a2VuZENsYXNzTmFtZX06OiR7ZnVuY3Rpb25OYW1lfShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiIgLiAoIHNjYWxhcihAYXJnc0ZpbHRlcmVkKSA/ICIgYXJncykiIDogIikiKSk7CisgICAgcHVz
aChAZnVuY3Rpb24sICJ7Iik7CisgICAgbXkgJGkgPSAxOyAjIHplcm8gZWxlbWVudCBpcyB0aGUg
bWV0aG9kIG5hbWUuCisgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAYXJnc0ZpbHRlcmVkKSB7
CisgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICIgLiAkdHlwZVRyYW5zZm9ybXskcGFyYW1l
dGVyLT50eXBlfS0+eyJyZXRWYWwifSAuICIgIiAuICRwYXJhbWV0ZXItPm5hbWUgLiAiOyIpOwor
ICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBpZiAoIWFyZ3MtPmdldCgiIC4gJGkgLiAiKS0+
YXMiIC4gJHR5cGVUcmFuc2Zvcm17JHBhcmFtZXRlci0+dHlwZX0tPnsiYWNjZXNzb3JTdWZmaXgi
fSAuICIoJiIgLiAkcGFyYW1ldGVyLT5uYW1lIC4gIikpIHsiKTsKKyAgICAgICAgcHVzaChAZnVu
Y3Rpb24sICIgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyIpOworICAgICAgICBwdXNoKEBm
dW5jdGlvbiwgIiAgICAgICAgcmV0dXJuOyIpOworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICB9Iik7CisgICAgICAgICsrJGk7CisgICAgfQorICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIG1f
aW5zcGVjdG9yQmFja2VuZC0+JGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBtYXAoJF8tPm5h
bWUsIEBhcmdzRmlsdGVyZWQpKSAuICIpOyIpOworICAgIHB1c2goQGZ1bmN0aW9uLCAifSIpOwor
ICAgIHB1c2goQGZ1bmN0aW9uLCAiIik7CisgICAgcHVzaChAYmFja2VuZE1ldGhvZHNJbXBsLCBA
ZnVuY3Rpb24pOworfQorCitzdWIgZ2VuZXJhdGVCYWNrZW5kRGlzcGF0Y2hlcgoreworICAgIG15
IEBib2R5OworICAgIG15IEBtZXRob2RzID0gbWFwKCRiYWNrZW5kTWV0aG9kc3skX30sIGtleXMg
JWJhY2tlbmRNZXRob2RzKTsKKyAgICBteSBAbWFwRW50cmllcyA9IG1hcCgiZGlzcGF0Y2hNYXAu
YWRkKFwiJF9cIiwgJiR7YmFja2VuZENsYXNzTmFtZX06OiRfKTsiLCBAbWV0aG9kcyk7CisKKyAg
ICBwdXNoKEBib2R5LCAidm9pZCAke2JhY2tlbmRDbGFzc05hbWV9OjpkaXNwYXRjaChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFN0cmluZyogZXhjZXB0aW9uKSIpOworICAgIHB1c2goQGJvZHksICJ7
Iik7CisgICAgcHVzaChAYm9keSwgIiAgICB0eXBlZGVmIHZvaWQgKCR7YmFja2VuZENsYXNzTmFt
ZX06OipDYWxsSGFuZGxlcikoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJncyk7Iik7Cisg
ICAgcHVzaChAYm9keSwgIiAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxlcj4g
RGlzcGF0Y2hNYXA7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KERpc3BhdGNoTWFwLCBkaXNwYXRjaE1hcCwgKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIGlm
IChkaXNwYXRjaE1hcC5pc0VtcHR5KCkpIHsiKTsKKyAgICBwdXNoKEBib2R5LCBtYXAoIiAgICAg
ICAgJF8iLCBAbWFwRW50cmllcykpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1
c2goQGJvZHksICIiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcGFyc2VkTWVzc2FnZSA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7Iik7
CisgICAgcHVzaChAYm9keSwgIiAgICBpZiAoIXBhcnNlZE1lc3NhZ2UpIHsiKTsKKyAgICBwdXNo
KEBib2R5LCAiICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsiKTsKKyAgICBwdXNoKEBib2R5
LCAiICAgICAgICAqZXhjZXB0aW9uID0gXCJFcnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4g
TWVzc2FnZSBzaG91bGQgYmUgaW4gSlNPTiBmb3JtYXQuXCI7Iik7CisgICAgcHVzaChAYm9keSwg
IiAgICAgICAgcmV0dXJuOyIpOworICAgIHB1c2goQGJvZHksICIgICAgfSIpOworICAgIHB1c2go
QGJvZHksICIiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4g
bWVzc2FnZUFycmF5ID0gcGFyc2VkTWVzc2FnZS0+YXNBcnJheSgpOyIpOworICAgIHB1c2goQGJv
ZHksICIgICAgaWYgKCFtZXNzYWdlQXJyYXkpIHsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICAqZXhj
ZXB0aW9uID0gXCJFcnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4gVGhlIG1lc3NhZ2Ugc2hv
dWxkIGJlIGEgSlNPTmlmaWVkIGFycmF5IG9mIGFyZ3VtZW50cy5cIjsiKTsKKyAgICBwdXNoKEBi
b2R5LCAiICAgICAgICByZXR1cm47Iik7CisgICAgcHVzaChAYm9keSwgIiAgICB9Iik7CisgICAg
cHVzaChAYm9keSwgIiIpOworICAgIHB1c2goQGJvZHksICIgICAgaWYgKCFtZXNzYWdlQXJyYXkt
Pmxlbmd0aCgpKSB7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Iik7CisgICAgcHVzaChAYm9keSwgIiAgICAgICAgKmV4Y2VwdGlvbiA9IFwiRXJyb3I6
IEludmFsaWQgbWVzc2FnZSBmb3JtYXQuIEVtcHR5IG1lc3NhZ2Ugd2FzIHJlY2VpdmVkLlwiOyIp
OworICAgIHB1c2goQGJvZHksICIgICAgICAgIHJldHVybjsiKTsKKyAgICBwdXNoKEBib2R5LCAi
ICAgIH0iKTsKKyAgICBwdXNoKEBib2R5LCAiIik7CisgICAgcHVzaChAYm9keSwgIiAgICBTdHJp
bmcgbWV0aG9kTmFtZTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIGlmICghbWVzc2FnZUFycmF5
LT5nZXQoMCktPmFzU3RyaW5nKCZtZXRob2ROYW1lKSkgeyIpOworICAgIHB1c2goQGJvZHksICIg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgICAg
ICpleGNlcHRpb24gPSBcIkVycm9yOiBJbnZhbGlkIG1lc3NhZ2UgZm9ybWF0LiBUaGUgZmlyc3Qg
ZWxlbWVudCBvZiB0aGUgbWVzc2FnZSBzaG91bGQgYmUgbWV0aG9kIG5hbWUuXCI7Iik7CisgICAg
cHVzaChAYm9keSwgIiAgICAgICAgcmV0dXJuOyIpOworICAgIHB1c2goQGJvZHksICIgICAgfSIp
OworICAgIHB1c2goQGJvZHksICIiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIEhhc2hNYXA8U3Ry
aW5nLCBDYWxsSGFuZGxlcj46Oml0ZXJhdG9yIGl0ID0gZGlzcGF0Y2hNYXAuZmluZChtZXRob2RO
YW1lKTsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgIGlmIChpdCA9PSBkaXNwYXRjaE1hcC5lbmQo
KSkgeyIpOworICAgIHB1c2goQGJvZHksICIgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyIp
OworICAgIHB1c2goQGJvZHksICIgICAgICAgIFN0cmluZzo6Zm9ybWF0KFwiRXJyb3I6IEludmFs
aWQgbWV0aG9kIG5hbWUuICclcycgd2Fzbid0IGZvdW5kLlwiLCBtZXRob2ROYW1lLnV0ZjgoKS5k
YXRhKCkpOyIpOworICAgIHB1c2goQGJvZHksICIgICAgICAgIHJldHVybjsiKTsKKyAgICBwdXNo
KEBib2R5LCAiICAgIH0iKTsKKyAgICBwdXNoKEBib2R5LCAiIik7CisgICAgcHVzaChAYm9keSwg
IiAgICAoKCp0aGlzKS4qaXQtPnNlY29uZCkobWVzc2FnZUFycmF5KTsiKTsKKyAgICBwdXNoKEBi
b2R5LCAifSIpOworICAgIHJldHVybiBAYm9keTsKK30KKwogc3ViIGdlbmVyYXRlSGVhZGVyCiB7
CiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwpAQCAtMjg0LDYgKzM5NiwxNSBAQCBzdWIgZmlu
aXNoCiAgICAgY2xvc2UoJEhFQURFUik7CiAgICAgdW5kZWYoJEhFQURFUik7CiAKKyAgICBvcGVu
KCRTT1VSQ0UsICI+JG91dHB1dERpci8kYmFja2VuZENsYXNzTmFtZS5jcHAiKSB8fCBkaWUgIkNv
dWxkbid0IG9wZW4gZmlsZSAkb3V0cHV0RGlyLyRiYWNrZW5kQ2xhc3NOYW1lLmNwcCI7CisgICAg
cHJpbnQgJFNPVVJDRSBqb2luKCJcbiIsIGdlbmVyYXRlU291cmNlKCRiYWNrZW5kQ2xhc3NOYW1l
LCBcJWJhY2tlbmRUeXBlcywgXEBiYWNrZW5kTWV0aG9kc0ltcGwpKTsKKyAgICBjbG9zZSgkU09V
UkNFKTsKKyAgICB1bmRlZigkU09VUkNFKTsKKworICAgIG9wZW4oJEhFQURFUiwgIj4kb3V0cHV0
SGVhZGVyc0Rpci8kYmFja2VuZENsYXNzTmFtZS5oIikgfHwgZGllICJDb3VsZG4ndCBvcGVuIGZp
bGUgJG91dHB1dEhlYWRlcnNEaXIvJGJhY2tlbmRDbGFzc05hbWUuaCI7CisgICAgcHJpbnQgJEhF
QURFUiBqb2luKCJcbiIsIGdlbmVyYXRlSGVhZGVyKCRiYWNrZW5kQ2xhc3NOYW1lLCBcJWJhY2tl
bmRUeXBlcywgJGJhY2tlbmRDb25zdHJ1Y3RvciwgXCViYWNrZW5kTWV0aG9kcywgJGJhY2tlbmRG
b290ZXIpKTsKKyAgICBjbG9zZSgkSEVBREVSKTsKKyAgICB1bmRlZigkSEVBREVSKTsKIH0KIAog
MTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMThiOTVh
Yi4uZjc0MmRmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmQuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckNTU1N0b3JlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKQEAgLTE5Miw2ICsxOTMsNyBAQCBJbnNwZWN0b3JDb250
cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCog
Y2xpZW50KQogICAgICwgbV9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1f
c2V0dGluZ3NMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2luc3BlY3RvckJhY2tlbmQoSW5zcGVjdG9y
QmFja2VuZDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cihuZXcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIobV9pbnNwZWN0b3JCYWNrZW5kLmdldCgp
KSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRIb3N0KEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRl
KHRoaXMpKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICwgbV9kZWJ1Z2dl
ckVuYWJsZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5k
ZXggNzZiODhmMS4uMTc2ZGQxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW5qZWN0
ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CiBjbGFzcyBJbnNwZWN0b3JCYWNr
ZW5kOworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JD
bGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDU1NTdG9yZTsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZTsKQEAgLTEyMCw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgfkluc3BlY3RvckNv
bnRyb2xsZXIoKTsKIAogICAgIEluc3BlY3RvckJhY2tlbmQqIGluc3BlY3RvckJhY2tlbmQoKSB7
IHJldHVybiBtX2luc3BlY3RvckJhY2tlbmQuZ2V0KCk7IH0KKyAgICBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciogaW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIoKSB7IHJldHVybiBtX2luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBp
bmplY3RlZFNjcmlwdEhvc3QoKSB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKTsg
fQogCiAgICAgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCk7CkBAIC0zOTUsNiArMzk3LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQ7CiAgICAgYm9v
bCBtX3NldHRpbmdzTG9hZGVkOwogICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kPiBtX2luc3Bl
Y3RvckJhY2tlbmQ7CisgICAgT3duUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+
IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmluZGV4IDkw
YTQwZjkuLmQ0ODhiNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAt
NDg0LDYgKzQ4NCwxNiBAQCBib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihkb3VibGUqKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1i
ZXIobG9uZyopIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rv
clZhbHVlOjphc051bWJlcih1bnNpZ25lZCBsb25nKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIGJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzU3RyaW5nKFN0cmluZyopIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTQwLDYgKzU1MCwyMyBAQCBib29sIEluc3BlY3RvckJh
c2ljVmFsdWU6OmFzTnVtYmVyKGRvdWJsZSogb3V0cHV0KSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCitib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGxvbmcqIG91dHB1dCkg
Y29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IFR5cGVEb3VibGUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8bG9uZz4obV9kb3VibGVWYWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIo
dW5zaWduZWQgbG9uZyogb3V0cHV0KSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gVHlwZURv
dWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPihtX2RvdWJsZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCiB2
b2lkIEluc3BlY3RvckJhc2ljVmFsdWU6OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBUeXBlQm9vbGVhbiB8fCB0eXBlKCkgPT0g
VHlwZURvdWJsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCmluZGV4IGEwYzBjMmQu
Ljk0MGJhYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC02OSw2ICs2OSw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2woYm9vbCogb3V0cHV0KSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBhc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYXNPYmplY3QoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IGFzQXJyYXkoKTsKQEAgLTEwNSw2ICsxMDcsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgYXNCb29sKGJvb2wqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGFzTnVtYmVyKGRvdWJsZSogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIo
dW5zaWduZWQgbG9uZyogb3V0cHV0KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpT
T04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA0OGViNGMwLi5lYzk1NTlmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMjIyLDcgKzIy
Miw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAodGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldCkgewogICAgICAgICAgICAgdmFyIGNhbGxJ
ZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKHNlbGVjdExhc3RTZWxlY3RlZE5vZGUuYmlu
ZCh0aGlzKSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlQnlQYXRoVG9G
cm9udGVuZChjYWxsSWQsIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQpOworICAgICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoY2FsbElkLCB0aGlzLl9z
ZWxlY3RlZFBhdGhPblJlc2V0LmpvaW4oIiwiKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgc2VsZWN0Tm9kZS5jYWxsKHRoaXMpOwogICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRQ
YXRoT25SZXNldDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDUxMWEzNGEuLjliZjU3ODAgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA3LTIyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5Lgor
CisgICAgICAgIFdlYkluc3BlY3RvcjogQ29kZUdlbmVyYXRvckluc3BlY3RvciB3YXMgZXh0ZW5k
ZWQgYW5kIG5vdyBpdCBjYW4KKyAgICAgICAgZ2VuZXJhdGUgSW5zcGVjdG9yQmFja2VkRGlzcGF0
Y2hlcidzIGNvZGUuIFRoaXMgZGlzcGF0Y2hlciB3aWxsCisgICAgICAgIHZhbGlkYXRlIGFuZCBk
aXNwYXRjaCBpbmNvbWluZyBpbnNwZWN0b3IgY29tbWFuZHMgb25seSBieSBuYXRpdmUKKyAgICAg
ICAgY29kZSB3aXRob3V0IHVzaW5nIGphdmFTY3JpcHQuIFRoYXQgaXMgbmVjZXNzYXJ5IHN0ZXAg
Zm9yCisgICAgICAgIFJlbW90ZURlYnVnZ2luZyBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI1ODgKKworICAgICAgICAqIHNyYy9Ub29s
c0FnZW50Lmg6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JDb250
cm9sbGVyKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoKKyAgICAgICAg
KiBzcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanM6CisgICAgICAgIChkZXZ0b29scy5J
bnNwZWN0b3JCYWNrZW5kSW1wbC5wcm90b3R5cGUuY2FsbEluc3BlY3RvckNvbnRyb2xsZXJfKToK
KwogMjAxMC0wNy0yMiAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9Ub29sc0FnZW50LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaAppbmRl
eCBjNzQ4YzhhLi5kODc4YWVhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1Rvb2xz
QWdlbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Rvb2xzQWdlbnQuaApAQCAtMzksOCAr
MzksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIEFQSSBmb3IgYXV4aWxpYXJ5IFVJIGZ1bmN0
aW9ucyBzdWNoIGFzIGRvbSBlbGVtZW50cyBoaWdobGlnaHRpbmcuCiAjZGVmaW5lIFRPT0xTX0FH
RU5UX1NUUlVDVChNRVRIT0QwLCBNRVRIT0QxLCBNRVRIT0QyLCBNRVRIT0QzLCBNRVRIT0Q0LCBN
RVRIT0Q1KSBcCiAgICAgLyogRGlzcGF0Y2hlcyBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgSW5zcGVj
dG9yQ29udHJvbGxlciBvYmplY3QgKi8gXAotICAgIE1FVEhPRDMoZGlzcGF0Y2hPbkluc3BlY3Rv
ckNvbnRyb2xsZXIsIGludCAvKiBjYWxsX2lkICovLCBcCi0gICAgICAgIFN0cmluZyAvKiBmdW5j
dGlvbl9uYW1lICovLCBTdHJpbmcgLyoganNvbl9hcmdzICovKSBcCisgICAgTUVUSE9EMihkaXNw
YXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlciwgaW50IC8qIGNhbGxfaWQgKi8sIFwKKyAgICAgICAg
U3RyaW5nIC8qIG1lc3NhZ2UgKi8pIFwKICAgICBcCiAgICAgLyogRGlzcGF0Y2hlcyBnaXZlbiBm
dW5jdGlvbiBvbiB0aGUgSW5qZWN0ZWRTY3JpcHQgb2JqZWN0ICovIFwKICAgICBNRVRIT0Q1KGRp
c3BhdGNoT25JbmplY3RlZFNjcmlwdCwgaW50IC8qIGNhbGxfaWQgKi8sIFwKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggMGQ4Y2JhZC4uNjIzOGRk
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5j
cHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yUmVzb3VyY2UuaCIKQEAgLTMwOCwxMyArMzA5LDExIEBAIHZvaWQgV2ViRGV2VG9vbHNB
Z2VudEltcGw6OmZvcmNlUmVwYWludCgpCiAgICAgbV9jbGllbnQtPmZvcmNlUmVwYWludCgpOwog
fQogCi12b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJv
bGxlcihpbnQgY2FsbElkLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5n
JiBqc29uQXJncykKK3ZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoT25JbnNwZWN0
b3JDb250cm9sbGVyKGludCBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBT
dHJpbmcgcmVzdWx0OwogICAgIFN0cmluZyBleGNlcHRpb247Ci0gICAgcmVzdWx0ID0gbV9kZWJ1
Z2dlckFnZW50SW1wbC0+ZXhlY3V0ZVV0aWxpdHlGdW5jdGlvbihtX3V0aWxpdHlDb250ZXh0LCBj
YWxsSWQsCi0gICAgICAgICJJbnNwZWN0b3JDb250cm9sbGVyRGlzcGF0Y2hlciIsIGZ1bmN0aW9u
TmFtZSwganNvbkFyZ3MsIGZhbHNlIC8qIGlzIHN5bmMgKi8sICZleGNlcHRpb24pOwotICAgIG1f
dG9vbHNBZ2VudERlbGVnYXRlU3R1Yi0+ZGlkRGlzcGF0Y2hPbihjYWxsSWQsIHJlc3VsdCwgZXhj
ZXB0aW9uKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKCktPmRpc3BhdGNoKG1lc3NhZ2UsICZleGNlcHRpb24pOworICAgIG1fdG9vbHNBZ2Vu
dERlbGVnYXRlU3R1Yi0+ZGlkRGlzcGF0Y2hPbihjYWxsSWQsICIiLCBleGNlcHRpb24pOwogfQog
CiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoaW50
IGNhbGxJZCwgaW50IGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTdHJpbmcmIGpzb25BcmdzLCBib29sIGFzeW5jKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IDEyZjUxZjkuLmJlYjVjZmEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfldlYkRldlRvb2xzQWdlbnRJbXBsKCk7CiAKICAgICAvLyBU
b29sc0FnZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9uSW5z
cGVjdG9yQ29udHJvbGxlcihpbnQgY2FsbElkLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGZ1bmN0
aW9uTmFtZSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBqc29uQXJncyk7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGludCBjYWxsSWQsIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoT25JbmplY3Rl
ZFNjcmlwdChpbnQgY2FsbElkLCBpbnQgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYganNvbkFyZ3MsIGJv
b2wgYXN5bmMpOwogCiAgICAgLy8gV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUgaW1wbGVtZW50YXRp
b24uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xs
ZXJJbXBsLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1w
bC5qcwppbmRleCBhNzk1ODkxLi4zMGVkZDllIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMKQEAgLTE1NCw3ICsxNTQsOCBAQCBkZXZ0
b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbC5wcm90b3R5cGUuaW5zdGFsbEluc3BlY3RvckNvbnRy
b2xsZXJEZWxlZ2F0ZV8gPSBmdQogZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwucHJvdG90
eXBlLmNhbGxJbnNwZWN0b3JDb250cm9sbGVyXyA9IGZ1bmN0aW9uKG1ldGhvZE5hbWUsIHZhcl9h
cmcpCiB7CiAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMsIDEpOwotICAgIFJlbW90ZVRvb2xzQWdlbnQuZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xs
ZXIoV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoZnVuY3Rpb24oKXt9KSwgbWV0aG9kTmFtZSwg
SlNPTi5zdHJpbmdpZnkoYXJncykpOworICAgIGFyZ3MudW5zaGlmdChtZXRob2ROYW1lKTsKKyAg
ICBSZW1vdGVUb29sc0FnZW50LmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKFdlYkluc3Bl
Y3Rvci5DYWxsYmFjay53cmFwKGZ1bmN0aW9uKCl7fSksIEpTT04uc3RyaW5naWZ5KGFyZ3MpKTsK
IH07CiAKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>