<?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>61070</bug_id>
          
          <creation_ts>2011-05-18 09:49:56 -0700</creation_ts>
          <short_desc>Web Inspector: support for emulating element&apos;s pseudo class state in styleRulesForElement()</short_desc>
          <delta_ts>2011-06-17 03:14:10 -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="Alexander Udalov">udalov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>405784</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Udalov">udalov</who>
    <bug_when>2011-05-18 09:49:56 -0700</bug_when>
    <thetext>This logic (patch to follow) is supposed to help implement this:
http://code.google.com/p/chromium/issues/detail?id=67871</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405786</commentid>
    <comment_count>1</comment_count>
      <attachid>93928</attachid>
    <who name="Alexander Udalov">udalov</who>
    <bug_when>2011-05-18 09:52:43 -0700</bug_when>
    <thetext>Created attachment 93928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405788</commentid>
    <comment_count>2</comment_count>
      <attachid>93928</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-05-18 09:59:08 -0700</bug_when>
    <thetext>Comment on attachment 93928
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=93928&amp;action=review

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Should be no OOPS here. I&apos;ll point you to the inspector tests offline so that it was covered.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:1994
&gt; +PassRefPtr&lt;CSSRuleList&gt; CSSStyleSelector::styleRulesForElement(Element* e, bool authorOnly, bool includeEmptyRules, CSSRuleFilter filter, unsigned emulateElementPseudoClass)

emulatePseudoClassMask ?

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2803
&gt; +                if (emulateElementPseudoClass != EmulateNone)

I&apos;d suggest

if (emulatePseudoClassMask &amp; EmulateFocus)
    return true;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405834</commentid>
    <comment_count>3</comment_count>
      <attachid>93937</attachid>
    <who name="Alexander Udalov">udalov</who>
    <bug_when>2011-05-18 10:52:55 -0700</bug_when>
    <thetext>Created attachment 93937
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405837</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-18 10:54:46 -0700</bug_when>
    <thetext>Attachment 93937 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSStyleSelector.h:138:  The parameter name &quot;filter&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/css/CSSStyleSelector.h:139:  The parameter name &quot;filter&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405843</commentid>
    <comment_count>5</comment_count>
      <attachid>93938</attachid>
    <who name="Alexander Udalov">udalov</who>
    <bug_when>2011-05-18 11:02:23 -0700</bug_when>
    <thetext>Created attachment 93938
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408762</commentid>
    <comment_count>6</comment_count>
      <attachid>94591</attachid>
    <who name="Alexander Udalov">udalov</who>
    <bug_when>2011-05-24 03:54:53 -0700</bug_when>
    <thetext>Created attachment 94591
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409639</commentid>
    <comment_count>7</comment_count>
      <attachid>94783</attachid>
    <who name="Alexander Udalov">udalov</who>
    <bug_when>2011-05-25 07:56:58 -0700</bug_when>
    <thetext>Created attachment 94783
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417282</commentid>
    <comment_count>8</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-06-08 09:17:16 -0700</bug_when>
    <thetext>According to dhyatt, &quot;looks ok although if possible might consider just doing a single check up front rather than adding code to the different cases&quot;.

I will take over the bug and put together an updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421878</commentid>
    <comment_count>9</comment_count>
      <attachid>97427</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-06-16 02:44:37 -0700</bug_when>
    <thetext>Created attachment 97427
[PATCH] Suggested solution, dhyatt&apos;s comment addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421882</commentid>
    <comment_count>10</comment_count>
      <attachid>97427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 02:51:13 -0700</bug_when>
    <thetext>Comment on attachment 97427
[PATCH] Suggested solution, dhyatt&apos;s comment addressed

Attachment 97427 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8883005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421886</commentid>
    <comment_count>11</comment_count>
      <attachid>97427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 02:57:13 -0700</bug_when>
    <thetext>Comment on attachment 97427
[PATCH] Suggested solution, dhyatt&apos;s comment addressed

Attachment 97427 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8880142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421887</commentid>
    <comment_count>12</comment_count>
      <attachid>97429</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-06-16 03:03:04 -0700</bug_when>
    <thetext>Created attachment 97429
[PATCH] Fix Chromium/Mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422016</commentid>
    <comment_count>13</comment_count>
      <attachid>97429</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-06-16 10:02:20 -0700</bug_when>
    <thetext>Comment on attachment 97429
[PATCH] Fix Chromium/Mac builds

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422522</commentid>
    <comment_count>14</comment_count>
      <attachid>97429</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-17 03:14:04 -0700</bug_when>
    <thetext>Comment on attachment 97429
[PATCH] Fix Chromium/Mac builds

Clearing flags on attachment: 97429

Committed r89132: &lt;http://trac.webkit.org/changeset/89132&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422523</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-17 03:14:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93928</attachid>
            <date>2011-05-18 09:52:43 -0700</date>
            <delta_ts>2011-05-18 10:52:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15561</size>
            <attacher name="Alexander Udalov">udalov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NzcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDUtMTggIEFsZXhhbmRl
ciBVZGFsb3YgIDx1ZGFsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgZm9yIGVtdWxh
dGluZyBlbGVtZW50J3MgcHNldWRvIGNsYXNzIHN0YXRlIGluIHN0eWxlUnVsZXNGb3JFbGVtZW50
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDcw
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppbml0
Rm9yU3R5bGVSZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0
eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKwogMjAxMS0wNS0xOCAgUHJhdGlrIFNv
bGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJl
cm5zdGVpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDg2NTY2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NzgsNiArODc4LDggQEAgaW5saW5lIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6aW5pdEZvclN0eQogICAgIG1fcnVsZUxpc3QgPSAwOwogCiAgICAgbV9mb250RGly
dHkgPSBmYWxzZTsKKworICAgIG1fZW11bGF0ZUVsZW1lbnRQc2V1ZG9DbGFzcyA9IEVtdWxhdGVO
b25lOwogfQogCiBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0
ZShOb2RlKiBub2RlKQpAQCAtMTk4OSwxMiArMTk5MSwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmNhY2hlQm9yZGVyQW5kQmFjCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBib29s
IGF1dGhvck9ubHksIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIENTU1J1bGVGaWx0ZXIgZmlsdGVy
KQorUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0Zv
ckVsZW1lbnQoRWxlbWVudCogZSwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1
bGVzLCBDU1NSdWxlRmlsdGVyIGZpbHRlciwgdW5zaWduZWQgZW11bGF0ZUVsZW1lbnRQc2V1ZG9D
bGFzcykKIHsKLSAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZSwgTk9QU0VV
RE8sIGF1dGhvck9ubHksIGluY2x1ZGVFbXB0eVJ1bGVzLCBmaWx0ZXIpOworICAgIHJldHVybiBw
c2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlLCBOT1BTRVVETywgYXV0aG9yT25seSwgaW5jbHVk
ZUVtcHR5UnVsZXMsIGZpbHRlciwgZW11bGF0ZUVsZW1lbnRQc2V1ZG9DbGFzcyk7CiB9CiAKLVBh
c3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNG
b3JFbGVtZW50KEVsZW1lbnQqIGUsIFBzZXVkb0lkIHBzZXVkb0lkLCBib29sIGF1dGhvck9ubHks
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIENTU1J1bGVGaWx0ZXIgZmlsdGVyKQorUGFzc1JlZlB0
cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQoRWxlbWVudCogZSwgUHNldWRvSWQgcHNldWRvSWQsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBp
bmNsdWRlRW1wdHlSdWxlcywgQ1NTUnVsZUZpbHRlciBmaWx0ZXIsIHVuc2lnbmVkIGVtdWxhdGVF
bGVtZW50UHNldWRvQ2xhc3MpCiB7CiAgICAgaWYgKCFlIHx8ICFlLT5kb2N1bWVudCgpLT5oYXZl
U3R5bGVzaGVldHNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMDAzLDYgKzIwMDUs
NyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yCiAKICAgICBpbml0
RWxlbWVudChlKTsKICAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKGUsIDAsIHBzZXVkb0lkKTsKKyAg
ICBtX2VtdWxhdGVFbGVtZW50UHNldWRvQ2xhc3MgPSBlbXVsYXRlRWxlbWVudFBzZXVkb0NsYXNz
OwogCiAgICAgaWYgKCFhdXRob3JPbmx5KSB7CiAgICAgICAgIGludCBmaXJzdFVBUnVsZSA9IC0x
LCBsYXN0VUFSdWxlID0gLTE7CkBAIC0yMDI3LDYgKzIwMzAsNyBAQCBQYXNzUmVmUHRyPENTU1J1
bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgfQogCiAgICAgbV9jaGVja2VyLm1fY29sbGVj
dFJ1bGVzT25seSA9IGZhbHNlOworICAgIG1fZW11bGF0ZUVsZW1lbnRQc2V1ZG9DbGFzcyA9IEVt
dWxhdGVOb25lOwogICAgCiAgICAgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQpAQCAt
MjA0OSw3ICsyMDUzLDcgQEAgaW5saW5lIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxl
YwogICAgIH0KIAogICAgIC8vIFNsb3cgcGF0aC4KLSAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0g
bV9jaGVja2VyLmNoZWNrU2VsZWN0b3IocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCAm
bV9zZWxlY3RvckF0dHJzLCBtX2R5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSwgc3R5bGUoKSwg
bV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMCk7CisgICAgU2Vs
ZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKHJ1bGVEYXRhLnNlbGVj
dG9yKCksIG1fZWxlbWVudCwgJm1fc2VsZWN0b3JBdHRycywgbV9keW5hbWljUHNldWRvLCBmYWxz
ZSwgZmFsc2UsIG1fZW11bGF0ZUVsZW1lbnRQc2V1ZG9DbGFzcywgc3R5bGUoKSwgbV9wYXJlbnRO
b2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMCk7CiAgICAgaWYgKG1hdGNoICE9
IFNlbGVjdG9yTWF0Y2hlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChtX2NoZWNr
ZXIubV9wc2V1ZG9TdHlsZSAhPSBOT1BTRVVETyAmJiBtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSAh
PSBtX2R5bmFtaWNQc2V1ZG8pCkBAIC0yMTc4LDcgKzIxODIsNyBAQCBib29sIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAvLyAqIFNlbGVjdG9yTWF0Y2hlcyAgICAgICAgIC0g
dGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzTG9j
YWxseSAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseSAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgZSBhbmQgYW55IHNp
Ymxpbmcgb3IgYW5jZXN0b3Igb2YgZQotQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBD
U1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9y
QXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wg
ZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSog
ZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRj
aCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2Vs
ZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVj
dG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJv
b2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBlbXVsYXRlRWxlbWVudFBzZXVkb0NsYXNzLCBS
ZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxl
KSBjb25zdAogewogI2lmIEVOQUJMRShTVkcpCiAgICAgLy8gU3BlYzogQ1NTMiBzZWxlY3RvcnMg
Y2Fubm90IGJlIGFwcGxpZWQgdG8gdGhlIChjb25jZXB0dWFsbHkpIGNsb25lZCBET00gdHJlZQpA
QCAtMjE4OCw3ICsyMTkyLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NT
dHlsZQogI2VuZGlmCiAKICAgICAvLyBmaXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBp
ZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRv
LCBpc1N1YlNlbGVjdG9yLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBh
cmVudFN0eWxlKSkKKyAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0
dHJzLCBkeW5hbWljUHNldWRvLCBpc1N1YlNlbGVjdG9yLCBlbmNvdW50ZXJlZExpbmssIGVtdWxh
dGVFbGVtZW50UHNldWRvQ2xhc3MsIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKSkK
ICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogCiAgICAgLy8gVGhlIHJlc3Qg
b2YgdGhlIHNlbGVjdG9ycyBoYXMgdG8gbWF0Y2gKQEAgLTIyMjIsNyArMjIyNiw3IEBAIENTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgICAgICAgICBpZiAo
IW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNl
bGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNr
U2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5j
b3VudGVyZWRMaW5rKTsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hl
Y2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBl
bmNvdW50ZXJlZExpbmssIGVtdWxhdGVFbGVtZW50UHNldWRvQ2xhc3MpOwogICAgICAgICAgICAg
ICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMjIzMyw3ICsyMjM3LDcgQEAgQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgaWYgKCFu
IHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9y
RmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
KTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRy
cywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8s
IGZhbHNlLCBlbmNvdW50ZXJlZExpbmssIGVtdWxhdGVFbGVtZW50UHNldWRvQ2xhc3MpOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAgICAg
ICB7CkBAIC0yMjQ5LDcgKzIyNTMsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNo
IENTU1N0eWxlCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5Owog
ICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAgICAgICAgIG1f
bWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBjaGVj
a1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVu
Y291bnRlcmVkTGluayk7IAorICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBl
LCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBl
bXVsYXRlRWxlbWVudFBzZXVkb0NsYXNzKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICAgICAgaWYgKCFtX2NvbGxlY3RSdWxl
c09ubHkgJiYgZS0+cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9k
ZSgpKSB7CkBAIC0yMjY1LDcgKzIyNjksNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1h
dGNoIENTU1N0eWxlCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9j
YWxseTsKICAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwogICAg
ICAgICAgICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVj
dG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAgICAg
ICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2Vs
ZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZW11bGF0
ZUVsZW1lbnRQc2V1ZG9DbGFzcyk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVj
dG9yRmFpbHNMb2NhbGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAg
ICAgICAgICB9OwpAQCAtMjI3NywxNCArMjI4MSwxNCBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3Rvck1hdGNoIENTU1N0eWxlCiAgICAgICAgICAgICBpZiAoKGVsZW1lbnRTdHlsZSB8fCBtX2Nv
bGxlY3RSdWxlc09ubHkpICYmIGR5bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgZHluYW1pY1Bz
ZXVkbyAhPSBTRUxFQ1RJT04gJiYKICAgICAgICAgICAgICAgICAhKChSZW5kZXJTY3JvbGxiYXI6
OnNjcm9sbGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFS
X0NPUk5FUiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIpICYmIHNlbC0+bV9tYXRjaCA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3Rv
ckZhaWxzQ29tcGxldGVseTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwg
ZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gY2hl
Y2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVu
Y291bnRlcmVkTGluaywgZW11bGF0ZUVsZW1lbnRQc2V1ZG9DbGFzcywgZWxlbWVudFN0eWxlLCBl
bGVtZW50UGFyZW50U3R5bGUpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNj
ZW5kYW50OgogICAgICAgICB7CiAgICAgICAgICAgICBOb2RlKiBzaGFkb3dIb3N0Tm9kZSA9IGUt
PnNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgICAgICAgICAgaWYgKHNoYWRvd0hvc3ROb2RlID09
IGUgfHwgIXNoYWRvd0hvc3ROb2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihzaGFkb3dIb3N0Tm9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNv
dW50ZXJlZExpbmspOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBlbXVs
YXRlRWxlbWVudFBzZXVkb0NsYXNzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjM1OCw3ICsy
MzYyLDcgQEAgc3RhdGljIGJvb2wgaHRtbEF0dHJpYnV0ZUhhc0Nhc2VJbnNlbnNpdAogICAgIHJl
dHVybiBpc1Bvc3NpYmxlSFRNTEF0dHIgJiYgaHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNT
ZXQtPmNvbnRhaW5zKGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAotYm9vbCBDU1NTdHls
ZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3Iq
IHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0
cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5j
b3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxl
bWVudFBhcmVudFN0eWxlKSBjb25zdAorYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFz
aFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWlj
UHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25l
ZCBlbXVsYXRlRWxlbWVudFBzZXVkb0NsYXNzLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBS
ZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewogICAgIEFTU0VSVChlKTsK
ICAgICBpZiAoIWUpCkBAIC0yNDU0LDcgKzI0NTgsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgLy8gdGhlIHBhcnNlciBlbmZvcmNl
cyB0aGF0IHRoaXMgbmV2ZXIgb2NjdXJzCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN1YlNlbC0+
cHNldWRvVHlwZSgpICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3QpOwogCi0gICAgICAgICAgICAg
ICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1p
Y1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJl
bnRTdHlsZSkpCisgICAgICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwg
ZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBl
bXVsYXRlRWxlbWVudFBzZXVkb0NsYXNzLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHls
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgaWYgKGR5bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgKFJlbmRlclNjcm9s
bGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JP
TExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikpIHsKQEAgLTI3NjMsNyAr
Mjc2Nyw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Fu
eToKICAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbC0+c2Vs
ZWN0b3JMaXN0KCktPmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlz
dDo6bmV4dChzZWxlY3RvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0
b3Ioc2VsZWN0b3IsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291
bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpID09IFNlbGVjdG9y
TWF0Y2hlcykKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc2VsZWN0b3Is
IGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGluaywg
ZW11bGF0ZUVsZW1lbnRQc2V1ZG9DbGFzcywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5
bGUpID09IFNlbGVjdG9yTWF0Y2hlcykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3OTYs
MTAgKzI4MDAsMTQgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6Ogog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvRm9jdXM6CisgICAgICAgICAgICAgICAgaWYgKGVtdWxhdGVFbGVt
ZW50UHNldWRvQ2xhc3MgIT0gRW11bGF0ZU5vbmUpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbXVsYXRlRWxlbWVudFBzZXVkb0NsYXNzICYgRW11bGF0ZUZvY3VzOwogICAgICAgICAgICAg
ICAgIGlmIChlICYmIGUtPmZvY3VzZWQoKSAmJiBlLT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGUt
PmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjogeworICAgICAgICAg
ICAgICAgIGlmIChlbXVsYXRlRWxlbWVudFBzZXVkb0NsYXNzICE9IEVtdWxhdGVOb25lKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZW11bGF0ZUVsZW1lbnRQc2V1ZG9DbGFzcyAmIEVtdWxh
dGVIb3ZlcjsKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhl
biBob3ZlciBzaG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9ycyB3aXRoIG5vCiAgICAgICAgICAgICAg
ICAgLy8gaHJlZiBhbmQgKjpob3ZlciBzaG91bGQgbm90IG1hdGNoIGFueXRoaW5nLiAgVGhpcyBp
cyBpbXBvcnRhbnQgZm9yIHNpdGVzIGxpa2Ugd3NqLmNvbS4KICAgICAgICAgICAgICAgICBpZiAo
bV9zdHJpY3RQYXJzaW5nIHx8IGlzU3ViU2VsZWN0b3IgfHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUt
Pmhhc1RhZ05hbWUoYVRhZykpIHx8IGUtPmlzTGluaygpKSB7CkBAIC0yODEzLDYgKzI4MjEsOCBA
QCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9BY3RpdmU6CisgICAgICAgICAgICAgICAgaWYgKGVtdWxhdGVFbGVtZW50UHNldWRvQ2xh
c3MgIT0gRW11bGF0ZU5vbmUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXVsYXRlRWxl
bWVudFBzZXVkb0NsYXNzICYgRW11bGF0ZUFjdGl2ZTsKICAgICAgICAgICAgICAgICAvLyBJZiB3
ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlbiA6YWN0aXZlIHNob3VsZCBuZXZlciBtYXRjaCBhbmNo
b3JzIHdpdGggbm8KICAgICAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmFjdGl2ZSBzaG91bGQg
bm90IG1hdGNoIGFueXRoaW5nLiAKICAgICAgICAgICAgICAgICBpZiAobV9zdHJpY3RQYXJzaW5n
IHx8IGlzU3ViU2VsZWN0b3IgfHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRh
ZykpIHx8IGUtPmlzTGluaygpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmgJKHJldmlzaW9uIDg2NTY2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDkgKzEyNywxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgUmVuZGVy
U3R5bGUqLCBjb25zdCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqLCBLZXlmcmFtZVZhbHVlJik7CiAK
ICAgICBwdWJsaWM6CisgICAgICAgIGVudW0gUHNldWRvQ2xhc3NFbXVsYXRpb25GbGFncyB7Cisg
ICAgICAgICAgICBFbXVsYXRlTm9uZSA9IDEgPDwgMCwKKyAgICAgICAgICAgIEVtdWxhdGVIb3Zl
ciA9IDEgPDwgMSwKKyAgICAgICAgICAgIEVtdWxhdGVGb2N1cyA9IDEgPDwgMiwKKyAgICAgICAg
ICAgIEVtdWxhdGVBY3RpdmUgPSAxIDw8IDMsCisgICAgICAgIH07CiAgICAgICAgIC8vIFRoZXNl
IG1ldGhvZHMgd2lsbCBnaXZlIGJhY2sgdGhlIHNldCBvZiBydWxlcyB0aGF0IG1hdGNoZWQgZm9y
IGEgZ2l2ZW4gZWxlbWVudCAob3IgYSBwc2V1ZG8tZWxlbWVudCkuCi0gICAgICAgIFBhc3NSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IHN0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBib29sIGF1dGhv
ck9ubHksIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSwgQ1NTUnVsZUZpbHRlciBmaWx0
ZXIgPSBBbGxDU1NSdWxlcyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHBzZXVk
b1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBQc2V1ZG9JZCwgYm9vbCBhdXRob3JPbmx5
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzID0gZmFsc2UsIENTU1J1bGVGaWx0ZXIgZmlsdGVyID0g
QWxsQ1NTUnVsZXMpOworICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBzdHlsZVJ1bGVz
Rm9yRWxlbWVudChFbGVtZW50KiwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1
bGVzID0gZmFsc2UsIENTU1J1bGVGaWx0ZXIgZmlsdGVyID0gQWxsQ1NTUnVsZXMsIHVuc2lnbmVk
IGVtdWxhdGVFbGVtZW50UHNldWRvQ2xhc3MgPSBFbXVsYXRlTm9uZSk7CisgICAgICAgIFBhc3NS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBQ
c2V1ZG9JZCwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzID0gZmFsc2Us
IENTU1J1bGVGaWx0ZXIgZmlsdGVyID0gQWxsQ1NTUnVsZXMsIHVuc2lnbmVkIGVtdWxhdGVFbGVt
ZW50UHNldWRvQ2xhc3MgPSBFbXVsYXRlTm9uZSk7CiAKICAgICAgICAgLy8gR2l2ZW4gYSBDU1Mg
a2V5d29yZCBpbiB0aGUgcmFuZ2UgKHh4LXNtYWxsIHRvIC13ZWJraXQteHh4LWxhcmdlKSwgdGhp
cyBmdW5jdGlvbiB3aWxsIHJldHVybgogICAgICAgICAvLyB0aGUgY29ycmVjdCBmb250IHNpemUg
c2NhbGVkIHJlbGF0aXZlIHRvIHRoZSB1c2VyJ3MgZGVmYXVsdCAobWVkaXVtKS4KQEAgLTI1Myw4
ICsyNTksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQq
LCBib29sIHN0cmljdFBhcnNpbmcpOwogCiAgICAgICAgICAgICBib29sIGNoZWNrU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgICAgICAgICBTZWxlY3Rvck1hdGNo
IGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlz
U3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogPSAwLCBSZW5k
ZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7Ci0gICAgICAgICAgICBib29s
IGNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29s
IGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSosIFJlbmRl
clN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0OworICAgICAgICAgICAgU2VsZWN0b3JN
YXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9v
bCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgdW5zaWduZWQgZW11bGF0ZUVs
ZW1lbnRQc2V1ZG9DbGFzcyA9IEVtdWxhdGVOb25lLCBSZW5kZXJTdHlsZSogPSAwLCBSZW5kZXJT
dHlsZSogZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7CisgICAgICAgICAgICBib29sIGNo
ZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlz
U3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBlbXVsYXRlRWxlbWVu
dFBzZXVkb0NsYXNzLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5
bGUpIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKENT
U1NlbGVjdG9yKiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8pIGNvbnN0OwogICAgICAgICAgICAg
c3RhdGljIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBF
bGVtZW50Kik7CiAKQEAgLTM0OSw2ICszNTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU1ZhbHVl
KiBtX2xpbmVIZWlnaHRWYWx1ZTsKICAgICAgICAgYm9vbCBtX2ZvbnREaXJ0eTsKICAgICAgICAg
Ym9vbCBtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlczsKKworICAgICAgICB1bnNpZ25lZCBtX2Vt
dWxhdGVFbGVtZW50UHNldWRvQ2xhc3M7IC8vIGVudW0gUHNldWRvQ2xhc3NFbXVsYXRpb25GbGFn
cwogICAgICAgICAKICAgICAgICAgUmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0
b3I7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1fc2VsZWN0b3JBdHRyczsK
</data>
<flag name="review"
          id="87157"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93937</attachid>
            <date>2011-05-18 10:52:55 -0700</date>
            <delta_ts>2011-05-18 11:02:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16031</size>
            <attacher name="Alexander Udalov">udalov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2Nzc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDUtMTggIEFsZXhhbmRl
ciBVZGFsb3YgIDx1ZGFsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgZm9yIGVtdWxh
dGluZyBlbGVtZW50J3MgcHNldWRvIGNsYXNzIHN0YXRlIGluIHN0eWxlUnVsZXNGb3JFbGVtZW50
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDcw
CisKKyAgICAgICAgVGhpcyBpcyBzdXBwb3NlZCB0byBoZWxwIGltcGxlbWVudCBhIGZlYXR1cmUg
aW4gdGhlIGluc3BlY3RvciB0byBsb29rIGF0IHN0eWxlIHJ1bGVzIG1hdGNoZWQgZm9yIGRpZmZl
cmVudCBzdGF0ZXMgb2YgYSBnaXZlbiBlbGVtZW50LiBJbnNwZWN0b3IgaXMgc3VwcG9zZWQgdG8g
cGFzcyBhIG1hc2sgb2YgRm9yY2VQc2V1ZG9DbGFzc0ZsYWdzIHRvIHN0eWxlUnVsZXNGb3JFbGVt
ZW50KCksIHNvIHRoYXQgaXQgd291bGQgZmlsdGVyIG9ubHkgcnVsZXMgc3RhdGUgb2Ygd2hpY2gg
KGEgY29sbGVjdGlvbiBvZiBwc2V1ZG8gY2xhc3NlcyBpbiBzZWxlY3RvcikgbWF0Y2hlcyB3aXRo
IGEgZ2l2ZW4gbWFzaywgaWdub3JpbmcgdGhlIHN0YXRlIG9mIHRoZSBlbGVtZW50IGl0c2VsZi4g
RG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzayBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXI7IGl0IGFs
d2F5cyBsb29rcyBhdCB0aGUgc3RhdGUgb2YgYSBnaXZlbiBlbGVtZW50IHRvIG1ha2UgYSBtYXRj
aC4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
OgorCiAyMDExLTA1LTE4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDg2NTY2KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzgsNiAr
ODc4LDggQEAgaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclN0eQogICAgIG1f
cnVsZUxpc3QgPSAwOwogCiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKKworICAgIG1fZm9yY2VQ
c2V1ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrOwogfQogCiBzdGF0aWMg
aW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0ZShOb2RlKiBub2RlKQpAQCAt
MTk4OSwxMiArMTk5MSwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNhY2hlQm9yZGVyQW5k
QmFjCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9y
OjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBib29sIGF1dGhvck9ubHksIGJvb2wg
aW5jbHVkZUVtcHR5UnVsZXMsIENTU1J1bGVGaWx0ZXIgZmlsdGVyKQorUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCog
ZSwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBDU1NSdWxlRmlsdGVy
IGZpbHRlciwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2spCiB7Ci0gICAgcmV0dXJuIHBz
ZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGUsIE5PUFNFVURPLCBhdXRob3JPbmx5LCBpbmNsdWRl
RW1wdHlSdWxlcywgZmlsdGVyKTsKKyAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQoZSwgTk9QU0VVRE8sIGF1dGhvck9ubHksIGluY2x1ZGVFbXB0eVJ1bGVzLCBmaWx0ZXIsIGZv
cmNlUHNldWRvQ2xhc3NNYXNrKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5
bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHNldWRv
SWQgcHNldWRvSWQsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgQ1NT
UnVsZUZpbHRlciBmaWx0ZXIpCitQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVj
dG9yOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9JZCBwc2V1
ZG9JZCwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBDU1NSdWxlRmls
dGVyIGZpbHRlciwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2spCiB7CiAgICAgaWYgKCFl
IHx8ICFlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0yMDAzLDYgKzIwMDUsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NT
dHlsZVNlbGVjdG9yCiAKICAgICBpbml0RWxlbWVudChlKTsKICAgICBpbml0Rm9yU3R5bGVSZXNv
bHZlKGUsIDAsIHBzZXVkb0lkKTsKKyAgICBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNrID0gZm9yY2VQ
c2V1ZG9DbGFzc01hc2s7CiAKICAgICBpZiAoIWF1dGhvck9ubHkpIHsKICAgICAgICAgaW50IGZp
cnN0VUFSdWxlID0gLTEsIGxhc3RVQVJ1bGUgPSAtMTsKQEAgLTIwMjcsNiArMjAzMCw3IEBAIFBh
c3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3IKICAgICB9CiAKICAgICBtX2No
ZWNrZXIubV9jb2xsZWN0UnVsZXNPbmx5ID0gZmFsc2U7CisgICAgbV9mb3JjZVBzZXVkb0NsYXNz
TWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2s7CiAgICAKICAgICByZXR1cm4gbV9ydWxl
TGlzdC5yZWxlYXNlKCk7CiB9CkBAIC0yMDQ5LDcgKzIwNTMsNyBAQCBpbmxpbmUgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjCiAgICAgfQogCiAgICAgLy8gU2xvdyBwYXRoLgotICAg
IFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX2NoZWNrZXIuY2hlY2tTZWxlY3RvcihydWxlRGF0YS5z
ZWxlY3RvcigpLCBtX2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1BzZXVkbywg
ZmFsc2UsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudE5vZGUgPyBtX3BhcmVudE5vZGUtPnJlbmRl
clN0eWxlKCkgOiAwKTsKKyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNr
U2VsZWN0b3IocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCAmbV9zZWxlY3RvckF0dHJz
LCBtX2R5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSwgbV9mb3JjZVBzZXVkb0NsYXNzTWFzaywg
c3R5bGUoKSwgbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMCk7
CiAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yTWF0Y2hlcykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSAhPSBOT1BTRVVETyAmJiBtX2NoZWNr
ZXIubV9wc2V1ZG9TdHlsZSAhPSBtX2R5bmFtaWNQc2V1ZG8pCkBAIC0yMTc4LDcgKzIxODIsNyBA
QCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAvLyAqIFNlbGVjdG9y
TWF0Y2hlcyAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVsZW1lbnQgZQogLy8g
KiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVs
ZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAtIHRoZSBzZWxlY3RvciBmYWls
cyBmb3IgZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQotQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
U2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlz
U3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0
eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NTU3R5bGVTZWxl
Y3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29s
IGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBmb3JjZVBzZXVk
b0NsYXNzTWFzaywgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVsZW1l
bnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIFNwZWM6IENT
UzIgc2VsZWN0b3JzIGNhbm5vdCBiZSBhcHBsaWVkIHRvIHRoZSAoY29uY2VwdHVhbGx5KSBjbG9u
ZWQgRE9NIHRyZWUKQEAgLTIxODgsNyArMjE5Miw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yTWF0Y2ggQ1NTU3R5bGUKICNlbmRpZgogCiAgICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRv
IG1hdGNoCi0gICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywg
ZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3RvciwgZW5jb3VudGVyZWRMaW5rLCBlbGVtZW50U3R5
bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwg
ZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3RvciwgZW5jb3VudGVy
ZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50
U3R5bGUpKQogICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAKICAgICAvLyBU
aGUgcmVzdCBvZiB0aGUgc2VsZWN0b3JzIGhhcyB0byBtYXRjaApAQCAtMjIyMiw3ICsyMjI2LDcg
QEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAg
ICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNo
ID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZh
bHNlLCBlbmNvdW50ZXJlZExpbmspOworICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0
Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywg
ZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOwogICAgICAgICAg
ICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMjIzMyw3ICsyMjM3LDcgQEAg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgaWYg
KCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JB
dHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CisgICAgICAgICAg
ICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1
ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAg
ewpAQCAtMjI0OSw3ICsyMjUzLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBD
U1NTdHlsZQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAg
ICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAgICBtX21h
dGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNv
dW50ZXJlZExpbmspOyAKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
c2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9y
Y2VQc2V1ZG9DbGFzc01hc2spOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgICAgICBpZiAoIW1fY29sbGVjdFJ1bGVzT25seSAm
JiBlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsK
QEAgLTIyNjUsNyArMjI2OSw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NT
U3R5bGUKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5Owog
ICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAg
ICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRy
cywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CisgICAgICAgICAgICAg
ICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0
dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0Ns
YXNzTWFzayk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFpbHNMb2Nh
bGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgICAgICAgICB9OwpA
QCAtMjI3NywxNCArMjI4MSwxNCBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENT
U1N0eWxlCiAgICAgICAgICAgICBpZiAoKGVsZW1lbnRTdHlsZSB8fCBtX2NvbGxlY3RSdWxlc09u
bHkpICYmIGR5bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgZHluYW1pY1BzZXVkbyAhPSBTRUxF
Q1RJT04gJiYKICAgICAgICAgICAgICAgICAhKChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZv
clN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBk
eW5hbWljUHNldWRvID09IFJFU0laRVIpICYmIHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxl
dGVseTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JB
dHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBlbGVtZW50U3R5bGUs
IGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rvcihz
ZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGlu
aywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxl
KTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoKICAgICAgICAg
ewogICAgICAgICAgICAgTm9kZSogc2hhZG93SG9zdE5vZGUgPSBlLT5zaGFkb3dBbmNlc3Rvck5v
ZGUoKTsKICAgICAgICAgICAgIGlmIChzaGFkb3dIb3N0Tm9kZSA9PSBlIHx8ICFzaGFkb3dIb3N0
Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZh
aWxzQ29tcGxldGVseTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oc2hh
ZG93SG9zdE5vZGUpOwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsKKyAg
ICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHlu
YW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2sp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzU4LDcgKzIzNjIsNyBAQCBzdGF0aWMgYm9vbCBo
dG1sQXR0cmlidXRlSGFzQ2FzZUluc2Vuc2l0CiAgICAgcmV0dXJuIGlzUG9zc2libGVIVE1MQXR0
ciAmJiBodG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlc1NldC0+Y29udGFpbnMoYXR0ci5sb2Nh
bE5hbWUoKS5pbXBsKCkpOwogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQ
c2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRlclN0
eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0
Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
Piogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxl
Y3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNr
LCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0
eWxlKSBjb25zdAogewogICAgIEFTU0VSVChlKTsKICAgICBpZiAoIWUpCkBAIC0yNDU0LDcgKzI0
NTgsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAg
ICAgICAgICAgLy8gdGhlIHBhcnNlciBlbmZvcmNlcyB0aGF0IHRoaXMgbmV2ZXIgb2NjdXJzCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHN1YlNlbC0+cHNldWRvVHlwZSgpICE9IENTU1NlbGVjdG9y
OjpQc2V1ZG9Ob3QpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1
YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRM
aW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAgICAgICAg
aWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1Bz
ZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVu
dFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljUHNldWRvICE9
IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVzb2x2ZSgp
IHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNldWRvID09
IFJFU0laRVIpKSB7CkBAIC0yNzYzLDcgKzI3NjcsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Bbnk6CiAgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxl
Y3Rvciogc2VsZWN0b3IgPSBzZWwtPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpOyBzZWxlY3Rvcjsg
c2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlLCBzZWxlY3RvckF0dHJzLCBk
eW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHlsZSwgZWxlbWVu
dFBhcmVudFN0eWxlKSA9PSBTZWxlY3Rvck1hdGNoZXMpCisgICAgICAgICAgICAgICAgICAgIGlm
IChjaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRv
LCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrLCBlbGVtZW50U3R5
bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkgPT0gU2VsZWN0b3JNYXRjaGVzKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjc5NiwxMCArMjgwMCwxNCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czoKKyAgICAgICAgICAg
ICAgICBpZiAoZm9yY2VQc2V1ZG9DbGFzc01hc2sgIT0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFz
aykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNlUHNldWRvQ2xhc3NNYXNrICYgRm9y
Y2VGb2N1czsKICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5mb2N1c2VkKCkgJiYgZS0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSAmJiBlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+
aXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvSG92ZXI6IHsKKyAgICAgICAgICAgICAgICBpZiAoZm9yY2VQc2V1ZG9DbGFzc01hc2sgIT0g
RG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZv
cmNlUHNldWRvQ2xhc3NNYXNrICYgRm9yY2VIb3ZlcjsKICAgICAgICAgICAgICAgICAvLyBJZiB3
ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlbiBob3ZlciBzaG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9y
cyB3aXRoIG5vCiAgICAgICAgICAgICAgICAgLy8gaHJlZiBhbmQgKjpob3ZlciBzaG91bGQgbm90
IG1hdGNoIGFueXRoaW5nLiAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHNpdGVzIGxpa2Ugd3NqLmNv
bS4KICAgICAgICAgICAgICAgICBpZiAobV9zdHJpY3RQYXJzaW5nIHx8IGlzU3ViU2VsZWN0b3Ig
fHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRhZykpIHx8IGUtPmlzTGluaygp
KSB7CkBAIC0yODEzLDYgKzI4MjEsOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
Q2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmU6CisgICAgICAgICAgICAgICAgaWYg
KGZvcmNlUHNldWRvQ2xhc3NNYXNrICE9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmb3JjZVBzZXVkb0NsYXNzTWFzayAmIEZvcmNlQWN0aXZl
OwogICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIDphY3Rp
dmUgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAgICAgICAgICAgIC8v
IGhyZWYgYW5kICo6YWN0aXZlIHNob3VsZCBub3QgbWF0Y2ggYW55dGhpbmcuIAogICAgICAgICAg
ICAgICAgIGlmIChtX3N0cmljdFBhcnNpbmcgfHwgaXNTdWJTZWxlY3RvciB8fCAoc2VsLT5oYXNU
YWcoKSAmJiAhZS0+aGFzVGFnTmFtZShhVGFnKSkgfHwgZS0+aXNMaW5rKCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gODY1NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcs
OSArMTI3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5
bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFdlYktpdENTU0tleWZyYW1l
UnVsZSosIEtleWZyYW1lVmFsdWUmKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBGb3Jj
ZVBzZXVkb0NsYXNzRmxhZ3MgeworICAgICAgICAgICAgRm9yY2VOb25lID0gMCwKKyAgICAgICAg
ICAgIERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2sgPSAxIDw8IDAsCisgICAgICAgICAgICBGb3Jj
ZUhvdmVyID0gMSA8PCAxLAorICAgICAgICAgICAgRm9yY2VGb2N1cyA9IDEgPDwgMiwKKyAgICAg
ICAgICAgIEZvcmNlQWN0aXZlID0gMSA8PCAzLAorICAgICAgICB9OwogICAgICAgICAvLyBUaGVz
ZSBtZXRob2RzIHdpbGwgZ2l2ZSBiYWNrIHRoZSBzZXQgb2YgcnVsZXMgdGhhdCBtYXRjaGVkIGZv
ciBhIGdpdmVuIGVsZW1lbnQgKG9yIGEgcHNldWRvLWVsZW1lbnQpLgotICAgICAgICBQYXNzUmVm
UHRyPENTU1J1bGVMaXN0PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgYm9vbCBhdXRo
b3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzID0gZmFsc2UsIENTU1J1bGVGaWx0ZXIgZmls
dGVyID0gQWxsQ1NTUnVsZXMpOwotICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBwc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIGJvb2wgYXV0aG9yT25s
eSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyA9IGZhbHNlLCBDU1NSdWxlRmlsdGVyIGZpbHRlciA9
IEFsbENTU1J1bGVzKTsKKyAgICAgICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gc3R5bGVSdWxl
c0ZvckVsZW1lbnQoRWxlbWVudCosIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcyA9IGZhbHNlLCBDU1NSdWxlRmlsdGVyIGZpbHRlciA9IEFsbENTU1J1bGVzLCB1bnNpZ25l
ZCBmb3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spOworICAg
ICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChF
bGVtZW50KiwgUHNldWRvSWQsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cyA9IGZhbHNlLCBDU1NSdWxlRmlsdGVyIGZpbHRlciA9IEFsbENTU1J1bGVzLCB1bnNpZ25lZCBm
b3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spOwogCiAgICAg
ICAgIC8vIEdpdmVuIGEgQ1NTIGtleXdvcmQgaW4gdGhlIHJhbmdlICh4eC1zbWFsbCB0byAtd2Vi
a2l0LXh4eC1sYXJnZSksIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4KICAgICAgICAgLy8gdGhl
IGNvcnJlY3QgZm9udCBzaXplIHNjYWxlZCByZWxhdGl2ZSB0byB0aGUgdXNlcidzIGRlZmF1bHQg
KG1lZGl1bSkuCkBAIC0yNTMsOCArMjYwLDggQEAgcHVibGljOgogICAgICAgICAgICAgU2VsZWN0
b3JDaGVja2VyKERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAogICAgICAgICAgICAg
Ym9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCopIGNvbnN0OwotICAgICAg
ICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCos
IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHlu
YW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVu
ZGVyU3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0
OwotICAgICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVu
dCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYg
ZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywg
UmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKKyAg
ICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1l
bnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQm
IGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmss
IHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFz
aywgUmVuZGVyU3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDAp
IGNvbnN0OworICAgICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwg
RWxlbWVudCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1
ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVk
TGluaywgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIFJlbmRlclN0eWxlKiwgUmVuZGVy
U3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3Q7CiAgICAgICAgICAgICBib29sIGNoZWNr
U2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVk
bykgY29uc3Q7CiAgICAgICAgICAgICBzdGF0aWMgYm9vbCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25z
dCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqKTsKIApAQCAtMzQ5LDYgKzM1Niw4IEBAIHB1
YmxpYzoKICAgICAgICAgQ1NTVmFsdWUqIG1fbGluZUhlaWdodFZhbHVlOwogICAgICAgICBib29s
IG1fZm9udERpcnR5OwogICAgICAgICBib29sIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzOwor
CisgICAgICAgIHVuc2lnbmVkIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2s7IC8vIGVudW0gRm9yY2VQ
c2V1ZG9DbGFzc0ZsYWdzCiAgICAgICAgIAogICAgICAgICBSZWZQdHI8Q1NTRm9udFNlbGVjdG9y
PiBtX2ZvbnRTZWxlY3RvcjsKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gbV9z
ZWxlY3RvckF0dHJzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93938</attachid>
            <date>2011-05-18 11:02:23 -0700</date>
            <delta_ts>2011-05-24 03:54:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16080</size>
            <attacher name="Alexander Udalov">udalov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2Nzc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDUtMTggIEFsZXhhbmRl
ciBVZGFsb3YgIDx1ZGFsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgZm9yIGVtdWxh
dGluZyBlbGVtZW50J3MgcHNldWRvIGNsYXNzIHN0YXRlIGluIHN0eWxlUnVsZXNGb3JFbGVtZW50
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDcw
CisKKyAgICAgICAgVGhpcyBpcyBzdXBwb3NlZCB0byBoZWxwIGltcGxlbWVudCBhIGZlYXR1cmUg
aW4gdGhlIGluc3BlY3RvciB0byBsb29rCisgICAgICAgIGF0IHN0eWxlIHJ1bGVzIG1hdGNoZWQg
Zm9yIGRpZmZlcmVudCBzdGF0ZXMgb2YgYSBnaXZlbiBlbGVtZW50LgorICAgICAgICBJbnNwZWN0
b3IgaXMgc3VwcG9zZWQgdG8gcGFzcyBhIG1hc2sgb2YgRm9yY2VQc2V1ZG9DbGFzc0ZsYWdzIHRv
CisgICAgICAgIHN0eWxlUnVsZXNGb3JFbGVtZW50KCksIHNvIHRoYXQgaXQgd291bGQgZmlsdGVy
IG9ubHkgcnVsZXMgc3RhdGUgb2YKKyAgICAgICAgd2hpY2ggKGEgY29sbGVjdGlvbiBvZiBwc2V1
ZG8gY2xhc3NlcyBpbiBzZWxlY3RvcikgbWF0Y2hlcyB3aXRoIGEgZ2l2ZW4KKyAgICAgICAgbWFz
aywgaWdub3JpbmcgdGhlIHN0YXRlIG9mIHRoZSBlbGVtZW50IGl0c2VsZi4KKyAgICAgICAgRG9O
b3RGb3JjZVBzZXVkb0NsYXNzTWFzayBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXI7IGl0IGFsd2F5
cyBsb29rcyBhdAorICAgICAgICB0aGUgc3RhdGUgb2YgYSBnaXZlbiBlbGVtZW50IHRvIG1ha2Ug
YSBtYXRjaC4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oOgorCiAyMDExLTA1LTE4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDg2NTY2KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NzgsNiArODc4LDggQEAgaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclN0eQog
ICAgIG1fcnVsZUxpc3QgPSAwOwogCiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKKworICAgIG1f
Zm9yY2VQc2V1ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrOwogfQogCiBz
dGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0ZShOb2RlKiBub2Rl
KQpAQCAtMTk4OSwxMiArMTk5MSwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNhY2hlQm9y
ZGVyQW5kQmFjCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNl
bGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBib29sIGF1dGhvck9ubHks
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIENTU1J1bGVGaWx0ZXIgZmlsdGVyKQorUGFzc1JlZlB0
cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxl
bWVudCogZSwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBDU1NSdWxl
RmlsdGVyIGZpbHRlciwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2spCiB7Ci0gICAgcmV0
dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGUsIE5PUFNFVURPLCBhdXRob3JPbmx5LCBp
bmNsdWRlRW1wdHlSdWxlcywgZmlsdGVyKTsKKyAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxlc0Zv
ckVsZW1lbnQoZSwgTk9QU0VVRE8sIGF1dGhvck9ubHksIGluY2x1ZGVFbXB0eVJ1bGVzLCBmaWx0
ZXIsIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4g
Q1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwg
UHNldWRvSWQgcHNldWRvSWQsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cywgQ1NTUnVsZUZpbHRlciBmaWx0ZXIpCitQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHls
ZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9J
ZCBwc2V1ZG9JZCwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBDU1NS
dWxlRmlsdGVyIGZpbHRlciwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2spCiB7CiAgICAg
aWYgKCFlIHx8ICFlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0yMDAzLDYgKzIwMDUsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBDU1NTdHlsZVNlbGVjdG9yCiAKICAgICBpbml0RWxlbWVudChlKTsKICAgICBpbml0Rm9yU3R5
bGVSZXNvbHZlKGUsIDAsIHBzZXVkb0lkKTsKKyAgICBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNrID0g
Zm9yY2VQc2V1ZG9DbGFzc01hc2s7CiAKICAgICBpZiAoIWF1dGhvck9ubHkpIHsKICAgICAgICAg
aW50IGZpcnN0VUFSdWxlID0gLTEsIGxhc3RVQVJ1bGUgPSAtMTsKQEAgLTIwMjcsNiArMjAzMCw3
IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3IKICAgICB9CiAKICAg
ICBtX2NoZWNrZXIubV9jb2xsZWN0UnVsZXNPbmx5ID0gZmFsc2U7CisgICAgbV9mb3JjZVBzZXVk
b0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2s7CiAgICAKICAgICByZXR1cm4g
bV9ydWxlTGlzdC5yZWxlYXNlKCk7CiB9CkBAIC0yMDQ5LDcgKzIwNTMsNyBAQCBpbmxpbmUgYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjCiAgICAgfQogCiAgICAgLy8gU2xvdyBwYXRo
LgotICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX2NoZWNrZXIuY2hlY2tTZWxlY3RvcihydWxl
RGF0YS5zZWxlY3RvcigpLCBtX2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1Bz
ZXVkbywgZmFsc2UsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudE5vZGUgPyBtX3BhcmVudE5vZGUt
PnJlbmRlclN0eWxlKCkgOiAwKTsKKyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2Vy
LmNoZWNrU2VsZWN0b3IocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCAmbV9zZWxlY3Rv
ckF0dHJzLCBtX2R5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSwgbV9mb3JjZVBzZXVkb0NsYXNz
TWFzaywgc3R5bGUoKSwgbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgp
IDogMCk7CiAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yTWF0Y2hlcykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmIChtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSAhPSBOT1BTRVVETyAmJiBt
X2NoZWNrZXIubV9wc2V1ZG9TdHlsZSAhPSBtX2R5bmFtaWNQc2V1ZG8pCkBAIC0yMTc4LDcgKzIx
ODIsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAvLyAqIFNl
bGVjdG9yTWF0Y2hlcyAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVsZW1lbnQg
ZQogLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3Ig
dGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAtIHRoZSBzZWxlY3Rv
ciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQotQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBi
b29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxl
bWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRv
LCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBmb3Jj
ZVBzZXVkb0NsYXNzTWFzaywgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUq
IGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIFNw
ZWM6IENTUzIgc2VsZWN0b3JzIGNhbm5vdCBiZSBhcHBsaWVkIHRvIHRoZSAoY29uY2VwdHVhbGx5
KSBjbG9uZWQgRE9NIHRyZWUKQEAgLTIxODgsNyArMjE5Miw3IEBAIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGUKICNlbmRpZgogCiAgICAgLy8gZmlyc3Qgc2VsZWN0b3Ig
aGFzIHRvIG1hdGNoCi0gICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JB
dHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3RvciwgZW5jb3VudGVyZWRMaW5rLCBlbGVt
ZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgaWYgKCFjaGVja09uZVNlbGVjdG9y
KHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3RvciwgZW5j
b3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50
UGFyZW50U3R5bGUpKQogICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAKICAg
ICAvLyBUaGUgcmVzdCBvZiB0aGUgc2VsZWN0b3JzIGhhcyB0byBtYXRjaApAQCAtMjIyMiw3ICsy
MjI2LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAg
ICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICAgICAgZSA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNo
IG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1
ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0
Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1Bz
ZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOwogICAg
ICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMjIzMyw3ICsyMjM3
LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAg
ICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2Vs
ZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CisgICAg
ICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFt
aWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAg
ICAgICAgewpAQCAtMjI0OSw3ICsyMjUzLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JN
YXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxs
eTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAg
ICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4g
Y2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNl
LCBlbmNvdW50ZXJlZExpbmspOyAKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNl
bCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGlu
aywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgICAgICBpZiAoIW1fY29sbGVjdFJ1bGVz
T25seSAmJiBlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2Rl
KCkpIHsKQEAgLTIyNjUsNyArMjI2OSw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0
Y2ggQ1NTU3R5bGUKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2Nh
bGx5OwogICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAg
ICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0
b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CisgICAgICAg
ICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxl
Y3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBz
ZXVkb0NsYXNzTWFzayk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFp
bHNMb2NhbGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgICAgICAg
ICB9OwpAQCAtMjI3NywxNCArMjI4MSwxNCBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1h
dGNoIENTU1N0eWxlCiAgICAgICAgICAgICBpZiAoKGVsZW1lbnRTdHlsZSB8fCBtX2NvbGxlY3RS
dWxlc09ubHkpICYmIGR5bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgZHluYW1pY1BzZXVkbyAh
PSBTRUxFQ1RJT04gJiYKICAgICAgICAgICAgICAgICAhKChSZW5kZXJTY3JvbGxiYXI6OnNjcm9s
bGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5F
UiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIpICYmIHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxz
Q29tcGxldGVseTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2Vs
ZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBlbGVtZW50
U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxl
Y3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRl
cmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVu
dFN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoKICAg
ICAgICAgewogICAgICAgICAgICAgTm9kZSogc2hhZG93SG9zdE5vZGUgPSBlLT5zaGFkb3dBbmNl
c3Rvck5vZGUoKTsKICAgICAgICAgICAgIGlmIChzaGFkb3dIb3N0Tm9kZSA9PSBlIHx8ICFzaGFk
b3dIb3N0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4oc2hhZG93SG9zdE5vZGUpOwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2Vs
LCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5r
KTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRy
cywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFz
c01hc2spOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzU4LDcgKzIzNjIsNyBAQCBzdGF0aWMg
Ym9vbCBodG1sQXR0cmlidXRlSGFzQ2FzZUluc2Vuc2l0CiAgICAgcmV0dXJuIGlzUG9zc2libGVI
VE1MQXR0ciAmJiBodG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlc1NldC0+Y29udGFpbnMoYXR0
ci5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBl
LCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJl
bmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUp
IGNvbnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNT
dWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xh
c3NNYXNrLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBh
cmVudFN0eWxlKSBjb25zdAogewogICAgIEFTU0VSVChlKTsKICAgICBpZiAoIWUpCkBAIC0yNDU0
LDcgKzI0NTgsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAg
ICAgICAgICAgICAgICAgLy8gdGhlIHBhcnNlciBlbmZvcmNlcyB0aGF0IHRoaXMgbmV2ZXIgb2Nj
dXJzCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN1YlNlbC0+cHNldWRvVHlwZSgpICE9IENTU1Nl
bGVjdG9yOjpQc2V1ZG9Ob3QpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3Vu
dGVyZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAg
ICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHlu
YW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywg
ZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljUHNl
dWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVz
b2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNl
dWRvID09IFJFU0laRVIpKSB7CkBAIC0yNzYzLDcgKzI3NjcsNyBAQCBib29sIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Bbnk6CiAgICAgICAgICAgICAgICAgZm9yIChD
U1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWwtPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpOyBzZWxl
Y3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlLCBzZWxlY3RvckF0
dHJzLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHlsZSwg
ZWxlbWVudFBhcmVudFN0eWxlKSA9PSBTZWxlY3Rvck1hdGNoZXMpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWlj
UHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrLCBlbGVt
ZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkgPT0gU2VsZWN0b3JNYXRjaGVzKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMjc5NiwxMCArMjgwMCwxNCBAQCBib29sIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czoKKyAgICAg
ICAgICAgICAgICBpZiAoZm9yY2VQc2V1ZG9DbGFzc01hc2sgIT0gRG9Ob3RGb3JjZVBzZXVkb0Ns
YXNzTWFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNlUHNldWRvQ2xhc3NNYXNr
ICYgRm9yY2VGb2N1czsKICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5mb2N1c2VkKCkgJiYg
ZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rp
b24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvSG92ZXI6IHsKKyAgICAgICAgICAgICAgICBpZiAoZm9yY2VQc2V1ZG9DbGFzc01h
c2sgIT0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZvcmNlUHNldWRvQ2xhc3NNYXNrICYgRm9yY2VIb3ZlcjsKICAgICAgICAgICAgICAgICAv
LyBJZiB3ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlbiBob3ZlciBzaG91bGQgbmV2ZXIgbWF0Y2gg
YW5jaG9ycyB3aXRoIG5vCiAgICAgICAgICAgICAgICAgLy8gaHJlZiBhbmQgKjpob3ZlciBzaG91
bGQgbm90IG1hdGNoIGFueXRoaW5nLiAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHNpdGVzIGxpa2Ug
d3NqLmNvbS4KICAgICAgICAgICAgICAgICBpZiAobV9zdHJpY3RQYXJzaW5nIHx8IGlzU3ViU2Vs
ZWN0b3IgfHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRhZykpIHx8IGUtPmlz
TGluaygpKSB7CkBAIC0yODEzLDYgKzI4MjEsOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmU6CisgICAgICAgICAgICAg
ICAgaWYgKGZvcmNlUHNldWRvQ2xhc3NNYXNrICE9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2sp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JjZVBzZXVkb0NsYXNzTWFzayAmIEZvcmNl
QWN0aXZlOwogICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVu
IDphY3RpdmUgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAgICAgICAg
ICAgIC8vIGhyZWYgYW5kICo6YWN0aXZlIHNob3VsZCBub3QgbWF0Y2ggYW55dGhpbmcuIAogICAg
ICAgICAgICAgICAgIGlmIChtX3N0cmljdFBhcnNpbmcgfHwgaXNTdWJTZWxlY3RvciB8fCAoc2Vs
LT5oYXNUYWcoKSAmJiAhZS0+aGFzVGFnTmFtZShhVGFnKSkgfHwgZS0+aXNMaW5rKCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gODY1NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjcsOSArMTI3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFdlYktpdENTU0tl
eWZyYW1lUnVsZSosIEtleWZyYW1lVmFsdWUmKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgZW51
bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgeworICAgICAgICAgICAgRm9yY2VOb25lID0gMCwKKyAg
ICAgICAgICAgIERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2sgPSAxIDw8IDAsCisgICAgICAgICAg
ICBGb3JjZUhvdmVyID0gMSA8PCAxLAorICAgICAgICAgICAgRm9yY2VGb2N1cyA9IDEgPDwgMiwK
KyAgICAgICAgICAgIEZvcmNlQWN0aXZlID0gMSA8PCAzLAorICAgICAgICB9OwogICAgICAgICAv
LyBUaGVzZSBtZXRob2RzIHdpbGwgZ2l2ZSBiYWNrIHRoZSBzZXQgb2YgcnVsZXMgdGhhdCBtYXRj
aGVkIGZvciBhIGdpdmVuIGVsZW1lbnQgKG9yIGEgcHNldWRvLWVsZW1lbnQpLgotICAgICAgICBQ
YXNzUmVmUHRyPENTU1J1bGVMaXN0PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgYm9v
bCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzID0gZmFsc2UsIENTU1J1bGVGaWx0
ZXIgZmlsdGVyID0gQWxsQ1NTUnVsZXMpOwotICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIGJvb2wgYXV0
aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyA9IGZhbHNlLCBDU1NSdWxlRmlsdGVyIGZp
bHRlciA9IEFsbENTU1J1bGVzKTsKKyAgICAgICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gc3R5
bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCosIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRl
RW1wdHlSdWxlcyA9IGZhbHNlLCBDU1NSdWxlRmlsdGVyID0gQWxsQ1NTUnVsZXMsIHVuc2lnbmVk
IGZvcmNlUHNldWRvQ2xhc3NNYXNrID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzayk7CisgICAg
ICAgIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVs
ZW1lbnQqLCBQc2V1ZG9JZCwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
ID0gZmFsc2UsIENTU1J1bGVGaWx0ZXIgPSBBbGxDU1NSdWxlcywgdW5zaWduZWQgZm9yY2VQc2V1
ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKIAogICAgICAgICAvLyBH
aXZlbiBhIENTUyBrZXl3b3JkIGluIHRoZSByYW5nZSAoeHgtc21hbGwgdG8gLXdlYmtpdC14eHgt
bGFyZ2UpLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCiAgICAgICAgIC8vIHRoZSBjb3JyZWN0
IGZvbnQgc2l6ZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBkZWZhdWx0IChtZWRpdW0p
LgpAQCAtMjUzLDggKzI2MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFNlbGVjdG9yQ2hlY2tl
cihEb2N1bWVudCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAgICAgIGJvb2wgY2hl
Y2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqKSBjb25zdDsKLSAgICAgICAgICAgIFNl
bGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBIYXNoU2V0
PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1
ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxl
KiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsKLSAgICAg
ICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQ
c2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRlclN0
eWxlKiwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3Q7CisgICAgICAgICAg
ICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgSGFz
aFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWlj
UHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25l
ZCBmb3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2ssIFJlbmRl
clN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsK
KyAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQq
LCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVu
c2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBl
bGVtZW50UGFyZW50U3R5bGUpIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBjaGVja1Njcm9sbGJh
clBzZXVkb0NsYXNzKENTU1NlbGVjdG9yKiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8pIGNvbnN0
OwogICAgICAgICAgICAgc3RhdGljIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqLCBjb25zdCBFbGVtZW50Kik7CiAKQEAgLTM0OSw2ICszNTYsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIENTU1ZhbHVlKiBtX2xpbmVIZWlnaHRWYWx1ZTsKICAgICAgICAgYm9vbCBtX2ZvbnRE
aXJ0eTsKICAgICAgICAgYm9vbCBtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlczsKKworICAgICAg
ICB1bnNpZ25lZCBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNrOyAvLyBlbnVtIEZvcmNlUHNldWRvQ2xh
c3NGbGFncwogICAgICAgICAKICAgICAgICAgUmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250
U2VsZWN0b3I7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1fc2VsZWN0b3JB
dHRyczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94591</attachid>
            <date>2011-05-24 03:54:53 -0700</date>
            <delta_ts>2011-05-25 07:56:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15678</size>
            <attacher name="Alexander Udalov">udalov</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cgICAocmV2aXNpb24gODcx
NDEpCisrKyBDaGFuZ2VMb2cgICAod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEx
LTA1LTI0ICBBbGV4YW5kZXIgVWRhbG92ICA8dWRhbG92QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
dXBwb3J0IGZvciBlbXVsYXRpbmcgZWxlbWVudCdzIHBzZXVkbyBjbGFzcyBzdGF0ZSBpbiBzdHls
ZVJ1bGVzRm9yRWxlbWVudCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA3MAorCisgICAgICAgIFRoaXMgaXMgc3VwcG9zZWQgdG8gaGVscCBpbXBs
ZW1lbnQgYSBmZWF0dXJlIGluIHRoZSBpbnNwZWN0b3IgdG8gbG9vaworICAgICAgICBhdCBzdHls
ZSBydWxlcyBtYXRjaGVkIGZvciBkaWZmZXJlbnQgc3RhdGVzIG9mIGEgZ2l2ZW4gZWxlbWVudC4K
KyAgICAgICAgSW5zcGVjdG9yIGlzIHN1cHBvc2VkIHRvIHBhc3MgYSBtYXNrIG9mIEZvcmNlUHNl
dWRvQ2xhc3NGbGFncyB0bworICAgICAgICBzdHlsZVJ1bGVzRm9yRWxlbWVudCgpLCBzbyB0aGF0
IGl0IHdvdWxkIGZpbHRlciBvbmx5IHJ1bGVzIHN0YXRlIG9mCisgICAgICAgIHdoaWNoIChhIGNv
bGxlY3Rpb24gb2YgcHNldWRvIGNsYXNzZXMgaW4gc2VsZWN0b3IpIG1hdGNoZXMgd2l0aCBhIGdp
dmVuCisgICAgICAgIG1hc2ssIGlnbm9yaW5nIHRoZSBzdGF0ZSBvZiB0aGUgZWxlbWVudCBpdHNl
bGYuCisgICAgICAgIERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2sgaXMgdGhlIGRlZmF1bHQgYmVo
YXZpb3VyOyBpdCBhbHdheXMgbG9va3MgYXQKKyAgICAgICAgdGhlIHN0YXRlIG9mIGEgZ2l2ZW4g
ZWxlbWVudCB0byBtYWtlIGEgbWF0Y2guCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppbml0Rm9yU3R5bGVS
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlUnVsZXNG
b3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0
eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKwogMjAxMS0wNS0yMyAgUGF2ZWwgUG9kaXZpbG92ICA8
cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlr
aGF0c2t5LgpJbmRleDogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcCAgICAocmV2aXNpb24gODcxNDEpCisrKyBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAgICAgKHdvcmtpbmcgY29weSkKQEAgLTg3OSw2ICs4NzksOCBAQAogICAg
IG1fcnVsZUxpc3QgPSAwOwogCiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKKworICAgIG1fZm9y
Y2VQc2V1ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrOwogfQogCiBzdGF0
aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0ZShOb2RlKiBub2RlKQpA
QCAtMTk5MCwxMiArMTk5MiwxMiBAQAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlz
dD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgYm9v
bCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBDU1NSdWxlRmlsdGVyIGZpbHRl
cikKK1Bhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlUnVsZXNG
b3JFbGVtZW50KEVsZW1lbnQqIGUsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcywgQ1NTUnVsZUZpbHRlciBmaWx0ZXIsIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNr
KQogewotICAgIHJldHVybiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlLCBOT1BTRVVETywg
YXV0aG9yT25seSwgaW5jbHVkZUVtcHR5UnVsZXMsIGZpbHRlcik7CisgICAgcmV0dXJuIHBzZXVk
b1N0eWxlUnVsZXNGb3JFbGVtZW50KGUsIE5PUFNFVURPLCBhdXRob3JPbmx5LCBpbmNsdWRlRW1w
dHlSdWxlcywgZmlsdGVyLCBmb3JjZVBzZXVkb0NsYXNzTWFzayk7CiB9CiAKLVBhc3NSZWZQdHI8
Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50
KEVsZW1lbnQqIGUsIFBzZXVkb0lkIHBzZXVkb0lkLCBib29sIGF1dGhvck9ubHksIGJvb2wgaW5j
bHVkZUVtcHR5UnVsZXMsIENTU1J1bGVGaWx0ZXIgZmlsdGVyKQorUGFzc1JlZlB0cjxDU1NSdWxl
TGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVu
dCogZSwgUHNldWRvSWQgcHNldWRvSWQsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRlRW1w
dHlSdWxlcywgQ1NTUnVsZUZpbHRlciBmaWx0ZXIsIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NN
YXNrKQogewogICAgIGlmICghZSB8fCAhZS0+ZG9jdW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjAwNCw2ICsyMDA2LDcgQEAKIAogICAgIGlu
aXRFbGVtZW50KGUpOwogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwgMCwgcHNldWRvSWQpOwor
ICAgIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2sgPSBmb3JjZVBzZXVkb0NsYXNzTWFzazsKIAogICAg
IGlmICghYXV0aG9yT25seSkgewogICAgICAgICBpbnQgZmlyc3RVQVJ1bGUgPSAtMSwgbGFzdFVB
UnVsZSA9IC0xOwpAQCAtMjAyOCw2ICsyMDMxLDcgQEAKICAgICB9CiAKICAgICBtX2NoZWNrZXIu
bV9jb2xsZWN0UnVsZXNPbmx5ID0gZmFsc2U7CisgICAgbV9mb3JjZVBzZXVkb0NsYXNzTWFzayA9
IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2s7CiAgICAKICAgICByZXR1cm4gbV9ydWxlTGlzdC5y
ZWxlYXNlKCk7CiB9CkBAIC0yMDUwLDcgKzIwNTQsNyBAQAogICAgIH0KIAogICAgIC8vIFNsb3cg
cGF0aC4KLSAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3Io
cnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCAmbV9zZWxlY3RvckF0dHJzLCBtX2R5bmFt
aWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSwgc3R5bGUoKSwgbV9wYXJlbnROb2RlID8gbV9wYXJlbnRO
b2RlLT5yZW5kZXJTdHlsZSgpIDogMCk7CisgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hl
Y2tlci5jaGVja1NlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCksIG1fZWxlbWVudCwgJm1fc2Vs
ZWN0b3JBdHRycywgbV9keW5hbWljUHNldWRvLCBmYWxzZSwgZmFsc2UsIG1fZm9yY2VQc2V1ZG9D
bGFzc01hc2ssIHN0eWxlKCksIG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5
bGUoKSA6IDApOwogICAgIGlmIChtYXRjaCAhPSBTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAobV9jaGVja2VyLm1fcHNldWRvU3R5bGUgIT0gTk9QU0VVRE8g
JiYgbV9jaGVja2VyLm1fcHNldWRvU3R5bGUgIT0gbV9keW5hbWljUHNldWRvKQpAQCAtMjE3OSw3
ICsyMTgzLDcgQEAKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgLSB0aGUgc2VsZWN0b3Ig
bWF0Y2hlcyB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgIC0gdGhl
IHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNDb21w
bGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvciBhbmNl
c3RvciBvZiBlCi1DU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVt
ZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRv
SWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExp
bmssIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50
U3R5bGUpIGNvbnN0CitDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBF
bGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNl
dWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJl
ZExpbmssIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrLCBSZW5kZXJTdHlsZSogZWxlbWVu
dFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewogI2lmIEVO
QUJMRShTVkcpCiAgICAgLy8gU3BlYzogQ1NTMiBzZWxlY3RvcnMgY2Fubm90IGJlIGFwcGxpZWQg
dG8gdGhlIChjb25jZXB0dWFsbHkpIGNsb25lZCBET00gdHJlZQpAQCAtMjE4OSw3ICsyMTkzLDcg
QEAKICNlbmRpZgogCiAgICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCi0gICAgaWYg
KCFjaGVja09uZVNlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywg
aXNTdWJTZWxlY3RvciwgZW5jb3VudGVyZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJl
bnRTdHlsZSkpCisgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRy
cywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3RvciwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBz
ZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAg
ICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGUg
c2VsZWN0b3JzIGhhcyB0byBtYXRjaApAQCAtMjIyMyw3ICsyMjI3LDcgQEAKICAgICAgICAgICAg
ICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgICAgIGUgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRj
aCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBm
YWxzZSwgZW5jb3VudGVyZWRMaW5rKTsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1h
dGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8s
IGZhbHNlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKICAgICAgICAg
ICAgICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgICAgIH0KQEAgLTIyMzQsNyArMjIzOCw3IEBA
CiAgICAgICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICBlID0gc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Io
c2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRM
aW5rKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JB
dHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9D
bGFzc01hc2spOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFk
amFjZW50OgogICAgICAgICB7CkBAIC0yMjUwLDcgKzIyNTQsNyBAQAogICAgICAgICAgICAgICAg
IHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obik7CiAgICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0g
ZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9y
QXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOyAKKyAgICAgICAg
ICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1Bz
ZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAg
ICAgICAgICBpZiAoIW1fY29sbGVjdFJ1bGVzT25seSAmJiBlLT5wYXJlbnROb2RlKCkgJiYgZS0+
cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsKQEAgLTIyNjYsNyArMjI3MCw3IEBACiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAg
ICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwogICAgICAgICAgICAgICAgIG1f
bWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rv
ck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFt
aWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAgICAgICAgICAgICAgIFNlbGVj
dG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHlu
YW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2sp
OwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfTsKQEAgLTIyNzgs
MTQgKzIyODIsMTQgQEAKICAgICAgICAgICAgIGlmICgoZWxlbWVudFN0eWxlIHx8IG1fY29sbGVj
dFJ1bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiBkeW5hbWljUHNldWRv
ICE9IFNFTEVDVElPTiAmJgogICAgICAgICAgICAgICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Ny
b2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09S
TkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFp
bHNDb21wbGV0ZWx5OwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1l
bnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1Nl
bGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3Vu
dGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFy
ZW50U3R5bGUpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50Ogog
ICAgICAgICB7CiAgICAgICAgICAgICBOb2RlKiBzaGFkb3dIb3N0Tm9kZSA9IGUtPnNoYWRvd0Fu
Y2VzdG9yTm9kZSgpOwogICAgICAgICAgICAgaWYgKHNoYWRvd0hvc3ROb2RlID09IGUgfHwgIXNo
YWRvd0hvc3ROb2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNl
bGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihzaGFkb3dIb3N0Tm9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rvcihz
ZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExp
bmspOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0
dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0Ns
YXNzTWFzayk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIzNTksNyArMjM2Myw3IEBACiAgICAg
cmV0dXJuIGlzUG9zc2libGVIVE1MQXR0ciAmJiBodG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmlidXRl
c1NldC0+Y29udGFpbnMoYXR0ci5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi1ib29sIENTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rv
ciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JB
dHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBl
bmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBl
bGVtZW50UGFyZW50U3R5bGUpIGNvbnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFt
aWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVuc2ln
bmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5k
ZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewogICAgIEFTU0VSVChlKTsKICAg
ICBpZiAoIWUpCkBAIC0yNDU1LDcgKzI0NTksNyBAQAogICAgICAgICAgICAgICAgIC8vIHRoZSBw
YXJzZXIgZW5mb3JjZXMgdGhhdCB0aGlzIG5ldmVyIG9jY3VycwogICAgICAgICAgICAgICAgIEFT
U0VSVChzdWJTZWwtPnBzZXVkb1R5cGUoKSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvTm90KTsKIAot
ICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzdWJTZWwsIGUsIHNlbGVjdG9y
QXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGluaywgZWxlbWVudFN0eWxl
LCBlbGVtZW50UGFyZW50U3R5bGUpKQorICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxl
Y3RvcihzdWJTZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291
bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBh
cmVudFN0eWxlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiAoUmVu
ZGVyU2Nyb2xsYmFyOjpzY3JvbGxiYXJGb3JTdHlsZVJlc29sdmUoKSB8fCBkeW5hbWljUHNldWRv
ID09IFNDUk9MTEJBUl9DT1JORVIgfHwgZHluYW1pY1BzZXVkbyA9PSBSRVNJWkVSKSkgewpAQCAt
Mjc2NCw3ICsyNzY4LDcgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueToKICAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVj
dG9yKiBzZWxlY3RvciA9IHNlbC0+c2VsZWN0b3JMaXN0KCktPmZpcnN0KCk7IHNlbGVjdG9yOyBz
ZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc2VsZWN0b3IsIGUsIHNlbGVjdG9yQXR0cnMsIGR5
bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50
UGFyZW50U3R5bGUpID09IFNlbGVjdG9yTWF0Y2hlcykKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGNoZWNrU2VsZWN0b3Ioc2VsZWN0b3IsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8s
IHRydWUsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHls
ZSwgZWxlbWVudFBhcmVudFN0eWxlKSA9PSBTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yNzg0LDYgKzI3ODgsOCBAQAogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gIW1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgorICAgICAgICAgICAg
ICAgIGlmIChmb3JjZVBzZXVkb0NsYXNzTWFzayAhPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNr
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBGb3Jj
ZVZpc2l0ZWQ7CiAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS0+aXNMaW5rKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjc5NywxMCArMjgwMywxNCBAQAogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
Rm9jdXM6CisgICAgICAgICAgICAgICAgaWYgKGZvcmNlUHNldWRvQ2xhc3NNYXNrICE9IERvTm90
Rm9yY2VQc2V1ZG9DbGFzc01hc2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JjZVBz
ZXVkb0NsYXNzTWFzayAmIEZvcmNlRm9jdXM7CiAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS0+
Zm9jdXNlZCgpICYmIGUtPmRvY3VtZW50KCktPmZyYW1lKCkgJiYgZS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+c2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyOiB7CisgICAgICAgICAgICAgICAgaWYgKGZvcmNl
UHNldWRvQ2xhc3NNYXNrICE9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmb3JjZVBzZXVkb0NsYXNzTWFzayAmIEZvcmNlSG92ZXI7CiAgICAg
ICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZW4gaG92ZXIgc2hvdWxk
IG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAgICAgICAgICAgIC8vIGhyZWYgYW5k
ICo6aG92ZXIgc2hvdWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gIFRoaXMgaXMgaW1wb3J0YW50IGZv
ciBzaXRlcyBsaWtlIHdzai5jb20uCiAgICAgICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFyc2lu
ZyB8fCBpc1N1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5oYXNUYWdOYW1lKGFU
YWcpKSB8fCBlLT5pc0xpbmsoKSkgewpAQCAtMjgxNCw2ICsyODI0LDggQEAKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0FjdGl2ZToKKyAgICAgICAgICAgICAgICBpZiAoZm9yY2VQc2V1ZG9DbGFzc01hc2sg
IT0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZvcmNlUHNldWRvQ2xhc3NNYXNrICYgRm9yY2VBY3RpdmU7CiAgICAgICAgICAgICAgICAgLy8g
SWYgd2UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZW4gOmFjdGl2ZSBzaG91bGQgbmV2ZXIgbWF0Y2gg
YW5jaG9ycyB3aXRoIG5vCiAgICAgICAgICAgICAgICAgLy8gaHJlZiBhbmQgKjphY3RpdmUgc2hv
dWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gCiAgICAgICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFy
c2luZyB8fCBpc1N1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5oYXNUYWdOYW1l
KGFUYWcpKSB8fCBlLT5pc0xpbmsoKSkgewpJbmRleDogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oICAocmV2aXNpb24gODcxNDEpCisr
KyBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oICAod29ya2luZyBjb3B5KQpAQCAtMTI3LDkgKzEyNywx
NyBAQAogICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvcktleWZyYW1lKGNv
bnN0IFJlbmRlclN0eWxlKiwgY29uc3QgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiwgS2V5ZnJhbWVW
YWx1ZSYpOwogCiAgICAgcHVibGljOgorICAgICAgICBlbnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFn
cyB7CisgICAgICAgICAgICBGb3JjZU5vbmUgPSAwLAorICAgICAgICAgICAgRG9Ob3RGb3JjZVBz
ZXVkb0NsYXNzTWFzayA9IDEgPDwgMCwKKyAgICAgICAgICAgIEZvcmNlSG92ZXIgPSAxIDw8IDEs
CisgICAgICAgICAgICBGb3JjZUZvY3VzID0gMSA8PCAyLAorICAgICAgICAgICAgRm9yY2VBY3Rp
dmUgPSAxIDw8IDMsCisgICAgICAgICAgICBGb3JjZVZpc2l0ZWQgPSAxIDw8IDQKKyAgICAgICAg
fTsKICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUgYmFjayB0aGUgc2V0IG9mIHJ1
bGVzIHRoYXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChvciBhIHBzZXVkby1lbGVtZW50
KS4KLSAgICAgICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gc3R5bGVSdWxlc0ZvckVsZW1lbnQo
RWxlbWVudCosIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyA9IGZhbHNl
LCBDU1NSdWxlRmlsdGVyIGZpbHRlciA9IEFsbENTU1J1bGVzKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxDU1NSdWxlTGlzdD4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCosIFBzZXVk
b0lkLCBib29sIGF1dGhvck9ubHksIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSwgQ1NT
UnVsZUZpbHRlciBmaWx0ZXIgPSBBbGxDU1NSdWxlcyk7CisgICAgICAgIFBhc3NSZWZQdHI8Q1NT
UnVsZUxpc3Q+IHN0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBib29sIGF1dGhvck9ubHks
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSwgQ1NTUnVsZUZpbHRlciA9IEFsbENTU1J1
bGVzLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFz
c01hc2spOworICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBwc2V1ZG9TdHlsZVJ1bGVz
Rm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNs
dWRlRW1wdHlSdWxlcyA9IGZhbHNlLCBDU1NSdWxlRmlsdGVyID0gQWxsQ1NTUnVsZXMsIHVuc2ln
bmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzayk7CiAK
ICAgICAgICAgLy8gR2l2ZW4gYSBDU1Mga2V5d29yZCBpbiB0aGUgcmFuZ2UgKHh4LXNtYWxsIHRv
IC13ZWJraXQteHh4LWxhcmdlKSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybgogICAgICAgICAv
LyB0aGUgY29ycmVjdCBmb250IHNpemUgc2NhbGVkIHJlbGF0aXZlIHRvIHRoZSB1c2VyJ3MgZGVm
YXVsdCAobWVkaXVtKS4KQEAgLTI1Myw4ICsyNjEsOCBAQAogICAgICAgICAgICAgU2VsZWN0b3JD
aGVja2VyKERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAogICAgICAgICAgICAgYm9v
bCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCopIGNvbnN0OwotICAgICAgICAg
ICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1p
Y1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVy
U3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0Owot
ICAgICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCos
IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHlu
YW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVu
ZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKKyAgICAg
ICAgICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQq
LCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVu
c2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzaywg
UmVuZGVyU3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNv
bnN0OworICAgICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxl
bWVudCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9J
ZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGlu
aywgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5
bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3Q7CiAgICAgICAgICAgICBib29sIGNoZWNrU2Ny
b2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykg
Y29uc3Q7CiAgICAgICAgICAgICBzdGF0aWMgYm9vbCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqKTsKIApAQCAtMzQ5LDYgKzM1Nyw4IEBACiAgICAg
ICAgIENTU1ZhbHVlKiBtX2xpbmVIZWlnaHRWYWx1ZTsKICAgICAgICAgYm9vbCBtX2ZvbnREaXJ0
eTsKICAgICAgICAgYm9vbCBtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlczsKKworICAgICAgICB1
bnNpZ25lZCBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNrOyAvLyBlbnVtIEZvcmNlUHNldWRvQ2xhc3NG
bGFncwogICAgICAgICAKICAgICAgICAgUmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2Vs
ZWN0b3I7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1fc2VsZWN0b3JBdHRy
czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94783</attachid>
            <date>2011-05-25 07:56:58 -0700</date>
            <delta_ts>2011-06-16 02:44:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16852</size>
            <attacher name="Alexander Udalov">udalov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDUtMjUgIEFsZXhhbmRl
ciBVZGFsb3YgIDx1ZGFsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgZm9yIGVtdWxh
dGluZyBlbGVtZW50J3MgcHNldWRvIGNsYXNzIHN0YXRlIGluIHN0eWxlUnVsZXNGb3JFbGVtZW50
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDcw
CisKKyAgICAgICAgVGhpcyBpcyBzdXBwb3NlZCB0byBoZWxwIGltcGxlbWVudCBhIGZlYXR1cmUg
aW4gdGhlIGluc3BlY3RvciB0byBsb29rCisgICAgICAgIGF0IHN0eWxlIHJ1bGVzIG1hdGNoZWQg
Zm9yIGRpZmZlcmVudCBzdGF0ZXMgb2YgYSBnaXZlbiBlbGVtZW50LgorICAgICAgICBJbnNwZWN0
b3IgaXMgc3VwcG9zZWQgdG8gcGFzcyBhIG1hc2sgb2YgRm9yY2VQc2V1ZG9DbGFzc0ZsYWdzIHRv
CisgICAgICAgIHN0eWxlUnVsZXNGb3JFbGVtZW50KCksIHNvIHRoYXQgaXQgd291bGQgZmlsdGVy
IG9ubHkgcnVsZXMgc3RhdGUgb2YKKyAgICAgICAgd2hpY2ggKGEgY29sbGVjdGlvbiBvZiBwc2V1
ZG8gY2xhc3NlcyBpbiBzZWxlY3RvcikgbWF0Y2hlcyB3aXRoIGEgZ2l2ZW4KKyAgICAgICAgbWFz
aywgaWdub3JpbmcgdGhlIHN0YXRlIG9mIHRoZSBlbGVtZW50IGl0c2VsZi4KKyAgICAgICAgRG9O
b3RGb3JjZVBzZXVkb0NsYXNzTWFzayBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXI7IGl0IGFsd2F5
cyBsb29rcyBhdAorICAgICAgICB0aGUgc3RhdGUgb2YgYSBnaXZlbiBlbGVtZW50IHRvIG1ha2Ug
YSBtYXRjaC4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oOgorCiAyMDExLTA1LTIzICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDg3MjkyKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04ODAsNiArODgwLDggQEAgaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclN0
eQogICAgIG1fcnVsZUxpc3QgPSAwOwogCiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKKworICAg
IG1fZm9yY2VQc2V1ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrOwogfQog
CiBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0ZShOb2RlKiBu
b2RlKQpAQCAtMTk5MSwxMiArMTk5MywxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNhY2hl
Qm9yZGVyQW5kQmFjCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHls
ZVNlbGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBib29sIGF1dGhvck9u
bHksIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIENTU1J1bGVGaWx0ZXIgZmlsdGVyKQorUGFzc1Jl
ZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQo
RWxlbWVudCogZSwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBDU1NS
dWxlRmlsdGVyIGZpbHRlciwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2spCiB7Ci0gICAg
cmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGUsIE5PUFNFVURPLCBhdXRob3JPbmx5
LCBpbmNsdWRlRW1wdHlSdWxlcywgZmlsdGVyKTsKKyAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxl
c0ZvckVsZW1lbnQoZSwgTk9QU0VVRE8sIGF1dGhvck9ubHksIGluY2x1ZGVFbXB0eVJ1bGVzLCBm
aWx0ZXIsIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlz
dD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCog
ZSwgUHNldWRvSWQgcHNldWRvSWQsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcywgQ1NTUnVsZUZpbHRlciBmaWx0ZXIpCitQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NT
dHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1
ZG9JZCBwc2V1ZG9JZCwgYm9vbCBhdXRob3JPbmx5LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBD
U1NSdWxlRmlsdGVyIGZpbHRlciwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2spCiB7CiAg
ICAgaWYgKCFlIHx8ICFlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0yMDA1LDYgKzIwMDcsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVM
aXN0PiBDU1NTdHlsZVNlbGVjdG9yCiAKICAgICBpbml0RWxlbWVudChlKTsKICAgICBpbml0Rm9y
U3R5bGVSZXNvbHZlKGUsIDAsIHBzZXVkb0lkKTsKKyAgICBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNr
ID0gZm9yY2VQc2V1ZG9DbGFzc01hc2s7CiAKICAgICBpZiAoIWF1dGhvck9ubHkpIHsKICAgICAg
ICAgaW50IGZpcnN0VUFSdWxlID0gLTEsIGxhc3RVQVJ1bGUgPSAtMTsKQEAgLTIwMjksNiArMjAz
Miw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3IKICAgICB9CiAK
ICAgICBtX2NoZWNrZXIubV9jb2xsZWN0UnVsZXNPbmx5ID0gZmFsc2U7CisgICAgbV9mb3JjZVBz
ZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2s7CiAgICAKICAgICByZXR1
cm4gbV9ydWxlTGlzdC5yZWxlYXNlKCk7CiB9CkBAIC0yMDUxLDcgKzIwNTUsNyBAQCBpbmxpbmUg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjCiAgICAgfQogCiAgICAgLy8gU2xvdyBw
YXRoLgotICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX2NoZWNrZXIuY2hlY2tTZWxlY3Rvcihy
dWxlRGF0YS5zZWxlY3RvcigpLCBtX2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1p
Y1BzZXVkbywgZmFsc2UsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudE5vZGUgPyBtX3BhcmVudE5v
ZGUtPnJlbmRlclN0eWxlKCkgOiAwKTsKKyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVj
a2VyLmNoZWNrU2VsZWN0b3IocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCAmbV9zZWxl
Y3RvckF0dHJzLCBtX2R5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSwgbV9mb3JjZVBzZXVkb0Ns
YXNzTWFzaywgc3R5bGUoKSwgbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHls
ZSgpIDogMCk7CiAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yTWF0Y2hlcykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmIChtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSAhPSBOT1BTRVVETyAm
JiBtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSAhPSBtX2R5bmFtaWNQc2V1ZG8pCkBAIC0yMTgwLDcg
KzIxODQsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAvLyAq
IFNlbGVjdG9yTWF0Y2hlcyAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVsZW1l
bnQgZQogLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBm
b3IgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAtIHRoZSBzZWxl
Y3RvciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQotQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRv
LCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSog
ZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNl
dDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNl
dWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBm
b3JjZVBzZXVkb0NsYXNzTWFzaywgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5
bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8v
IFNwZWM6IENTUzIgc2VsZWN0b3JzIGNhbm5vdCBiZSBhcHBsaWVkIHRvIHRoZSAoY29uY2VwdHVh
bGx5KSBjbG9uZWQgRE9NIHRyZWUKQEAgLTIxOTAsNyArMjE5NCw3IEBAIENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGUKICNlbmRpZgogCiAgICAgLy8gZmlyc3Qgc2VsZWN0
b3IgaGFzIHRvIG1hdGNoCi0gICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgZSwgc2VsZWN0
b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3RvciwgZW5jb3VudGVyZWRMaW5rLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3Rvciwg
ZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVt
ZW50UGFyZW50U3R5bGUpKQogICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAK
ICAgICAvLyBUaGUgcmVzdCBvZiB0aGUgc2VsZWN0b3JzIGhhcyB0byBtYXRjaApAQCAtMjIyNCw3
ICsyMjI4LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAg
ICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICAgICAg
ZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rvck1h
dGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQ
c2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAgICAgICAgICAgICAgIFNlbGVjdG9y
TWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1p
Y1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOwog
ICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMjIzNSw3ICsy
MjM5LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAg
ICAgICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
c2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7Cisg
ICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5
bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NNYXNr
KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoK
ICAgICAgICAgewpAQCAtMjI1MSw3ICsyMjU1LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9j
YWxseTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAg
ICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1
cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZh
bHNlLCBlbmNvdW50ZXJlZExpbmspOyAKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9y
KHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVk
TGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgICAgICBpZiAoIW1fY29sbGVjdFJ1
bGVzT25seSAmJiBlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnRO
b2RlKCkpIHsKQEAgLTIyNjcsNyArMjI3MSw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
TWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNM
b2NhbGx5OwogICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAg
ICAgICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2Vs
ZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CisgICAg
ICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3Jj
ZVBzZXVkb0NsYXNzTWFzayk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9y
RmFpbHNMb2NhbGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgICAg
ICAgICB9OwpAQCAtMjI3OSwxNCArMjI4MywxNCBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ck1hdGNoIENTU1N0eWxlCiAgICAgICAgICAgICBpZiAoKGVsZW1lbnRTdHlsZSB8fCBtX2NvbGxl
Y3RSdWxlc09ubHkpICYmIGR5bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgZHluYW1pY1BzZXVk
byAhPSBTRUxFQ1RJT04gJiYKICAgICAgICAgICAgICAgICAhKChSZW5kZXJTY3JvbGxiYXI6OnNj
cm9sbGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NP
Uk5FUiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIpICYmIHNlbC0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZh
aWxzQ29tcGxldGVseTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
c2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBlbGVt
ZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291
bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBh
cmVudFN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoK
ICAgICAgICAgewogICAgICAgICAgICAgTm9kZSogc2hhZG93SG9zdE5vZGUgPSBlLT5zaGFkb3dB
bmNlc3Rvck5vZGUoKTsKICAgICAgICAgICAgIGlmIChzaGFkb3dIb3N0Tm9kZSA9PSBlIHx8ICFz
aGFkb3dIb3N0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBT
ZWxlY3RvckZhaWxzQ29tcGxldGVseTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4oc2hhZG93SG9zdE5vZGUpOwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Io
c2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRM
aW5rKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JB
dHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9D
bGFzc01hc2spOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzYwLDcgKzIzNjQsNyBAQCBzdGF0
aWMgYm9vbCBodG1sQXR0cmlidXRlSGFzQ2FzZUluc2Vuc2l0CiAgICAgcmV0dXJuIGlzUG9zc2li
bGVIVE1MQXR0ciAmJiBodG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlc1NldC0+Y29udGFpbnMo
YXR0ci5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50
KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQm
IGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmss
IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5
bGUpIGNvbnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0
cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wg
aXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVuc2lnbmVkIGZvcmNlUHNldWRv
Q2xhc3NNYXNrLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVu
dFBhcmVudFN0eWxlKSBjb25zdAogewogICAgIEFTU0VSVChlKTsKICAgICBpZiAoIWUpCkBAIC0y
NDU2LDcgKzI0NjAsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6
CiAgICAgICAgICAgICAgICAgLy8gdGhlIHBhcnNlciBlbmZvcmNlcyB0aGF0IHRoaXMgbmV2ZXIg
b2NjdXJzCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN1YlNlbC0+cHNldWRvVHlwZSgpICE9IENT
U1NlbGVjdG9yOjpQc2V1ZG9Ob3QpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFjaGVja09uZVNl
bGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5j
b3VudGVyZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAg
ICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywg
ZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFz
aywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWlj
UHNldWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxl
UmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWlj
UHNldWRvID09IFJFU0laRVIpKSB7CkBAIC0yNzY1LDcgKzI3NjksNyBAQCBib29sIENTU1N0eWxl
U2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Bbnk6CiAgICAgICAgICAgICAgICAgZm9y
IChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWwtPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpOyBz
ZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlLCBzZWxlY3Rv
ckF0dHJzLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHls
ZSwgZWxlbWVudFBhcmVudFN0eWxlKSA9PSBTZWxlY3Rvck1hdGNoZXMpCisgICAgICAgICAgICAg
ICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5h
bWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkgPT0gU2VsZWN0b3JNYXRjaGVzKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc4MSwxMCArMjc4NSwxNCBAQCBib29sIENTU1N0eWxl
U2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgorICAg
ICAgICAgICAgICAgIGlmIChmb3JjZVBzZXVkb0NsYXNzTWFzayAhPSBEb05vdEZvcmNlUHNldWRv
Q2xhc3NNYXNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFzc01h
c2sgJiBGb3JjZUxpbms7CiAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS0+aXNMaW5rKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAhbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzczsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b1Zpc2l0ZWQ6CisgICAgICAgICAgICAgICAgaWYgKGZvcmNlUHNldWRvQ2xhc3NNYXNrICE9IERv
Tm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3Jj
ZVBzZXVkb0NsYXNzTWFzayAmIEZvcmNlVmlzaXRlZDsKICAgICAgICAgICAgICAgICBpZiAoZSAm
JiBlLT5pc0xpbmsoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fbWF0Y2hWaXNpdGVk
UHNldWRvQ2xhc3M7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzk4LDEwICsyODA2LDE0
IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0ZvY3VzOgorICAgICAgICAgICAgICAgIGlmIChmb3JjZVBzZXVkb0NsYXNzTWFzayAh
PSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Zm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBGb3JjZUZvY3VzOwogICAgICAgICAgICAgICAgIGlmIChl
ICYmIGUtPmZvY3VzZWQoKSAmJiBlLT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGUtPmRvY3VtZW50
KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjogeworICAgICAgICAgICAgICAgIGlm
IChmb3JjZVBzZXVkb0NsYXNzTWFzayAhPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBGb3JjZUhvdmVy
OwogICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVy
IHNob3VsZCBuZXZlciBtYXRjaCBhbmNob3JzIHdpdGggbm8KICAgICAgICAgICAgICAgICAvLyBo
cmVmIGFuZCAqOmhvdmVyIHNob3VsZCBub3QgbWF0Y2ggYW55dGhpbmcuICBUaGlzIGlzIGltcG9y
dGFudCBmb3Igc2l0ZXMgbGlrZSB3c2ouY29tLgogICAgICAgICAgICAgICAgIGlmIChtX3N0cmlj
dFBhcnNpbmcgfHwgaXNTdWJTZWxlY3RvciB8fCAoc2VsLT5oYXNUYWcoKSAmJiAhZS0+aGFzVGFn
TmFtZShhVGFnKSkgfHwgZS0+aXNMaW5rKCkpIHsKQEAgLTI4MTUsNiArMjgyNyw4IEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Fj
dGl2ZToKKyAgICAgICAgICAgICAgICBpZiAoZm9yY2VQc2V1ZG9DbGFzc01hc2sgIT0gRG9Ob3RG
b3JjZVBzZXVkb0NsYXNzTWFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNlUHNl
dWRvQ2xhc3NNYXNrICYgRm9yY2VBY3RpdmU7CiAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUg
aW4gcXVpcmtzIG1vZGUsIHRoZW4gOmFjdGl2ZSBzaG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9ycyB3
aXRoIG5vCiAgICAgICAgICAgICAgICAgLy8gaHJlZiBhbmQgKjphY3RpdmUgc2hvdWxkIG5vdCBt
YXRjaCBhbnl0aGluZy4gCiAgICAgICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFyc2luZyB8fCBp
c1N1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5oYXNUYWdOYW1lKGFUYWcpKSB8
fCBlLT5pc0xpbmsoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
CShyZXZpc2lvbiA4NzI5MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw5ICsxMjcsMTggQEAgcHVibGljOgogICAgICAgICBQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxl
KiwgY29uc3QgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiwgS2V5ZnJhbWVWYWx1ZSYpOwogCiAgICAg
cHVibGljOgorICAgICAgICBlbnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFncyB7CisgICAgICAgICAg
ICBGb3JjZU5vbmUgPSAwLAorICAgICAgICAgICAgRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzayA9
IDEgPDwgMCwKKyAgICAgICAgICAgIEZvcmNlSG92ZXIgPSAxIDw8IDEsCisgICAgICAgICAgICBG
b3JjZUZvY3VzID0gMSA8PCAyLAorICAgICAgICAgICAgRm9yY2VBY3RpdmUgPSAxIDw8IDMsCisg
ICAgICAgICAgICBGb3JjZUxpbmsgPSAxIDw8IDQsCisgICAgICAgICAgICBGb3JjZVZpc2l0ZWQg
PSAxIDw8IDUKKyAgICAgICAgfTsKICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUg
YmFjayB0aGUgc2V0IG9mIHJ1bGVzIHRoYXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChv
ciBhIHBzZXVkby1lbGVtZW50KS4KLSAgICAgICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gc3R5
bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCosIGJvb2wgYXV0aG9yT25seSwgYm9vbCBpbmNsdWRl
RW1wdHlSdWxlcyA9IGZhbHNlLCBDU1NSdWxlRmlsdGVyIGZpbHRlciA9IEFsbENTU1J1bGVzKTsK
LSAgICAgICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQoRWxlbWVudCosIFBzZXVkb0lkLCBib29sIGF1dGhvck9ubHksIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMgPSBmYWxzZSwgQ1NTUnVsZUZpbHRlciBmaWx0ZXIgPSBBbGxDU1NSdWxlcyk7CisgICAg
ICAgIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHN0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQq
LCBib29sIGF1dGhvck9ubHksIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSwgQ1NTUnVs
ZUZpbHRlciA9IEFsbENTU1J1bGVzLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFzayA9IERv
Tm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spOworICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIGJvb2wgYXV0
aG9yT25seSwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyA9IGZhbHNlLCBDU1NSdWxlRmlsdGVyID0g
QWxsQ1NTUnVsZXMsIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrID0gRG9Ob3RGb3JjZVBz
ZXVkb0NsYXNzTWFzayk7CiAKICAgICAgICAgLy8gR2l2ZW4gYSBDU1Mga2V5d29yZCBpbiB0aGUg
cmFuZ2UgKHh4LXNtYWxsIHRvIC13ZWJraXQteHh4LWxhcmdlKSwgdGhpcyBmdW5jdGlvbiB3aWxs
IHJldHVybgogICAgICAgICAvLyB0aGUgY29ycmVjdCBmb250IHNpemUgc2NhbGVkIHJlbGF0aXZl
IHRvIHRoZSB1c2VyJ3MgZGVmYXVsdCAobWVkaXVtKS4KQEAgLTI1Myw4ICsyNjIsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29sIHN0cmljdFBh
cnNpbmcpOwogCiAgICAgICAgICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBF
bGVtZW50KikgY29uc3Q7Ci0gICAgICAgICAgICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVj
dG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJv
b2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogPSAwLCBSZW5kZXJTdHlsZSogZWxlbWVu
dFBhcmVudFN0eWxlID0gMCkgY29uc3Q7Ci0gICAgICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0
b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNl
bGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3Is
IGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50
UGFyZW50U3R5bGUpIGNvbnN0OworICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVj
dG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBz
ZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9y
LCBib29sIGVuY291bnRlcmVkTGluaywgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2sgPSBE
b05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrLCBSZW5kZXJTdHlsZSogPSAwLCBSZW5kZXJTdHlsZSog
ZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7CisgICAgICAgICAgICBib29sIGNoZWNrT25l
U2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2Vs
ZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFz
aywgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsK
ICAgICAgICAgICAgIGJvb2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3Rvcios
IFBzZXVkb0lkJiBkeW5hbWljUHNldWRvKSBjb25zdDsKICAgICAgICAgICAgIHN0YXRpYyBib29s
IGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopOwog
CkBAIC0zNDksNiArMzU4LDggQEAgcHVibGljOgogICAgICAgICBDU1NWYWx1ZSogbV9saW5lSGVp
Z2h0VmFsdWU7CiAgICAgICAgIGJvb2wgbV9mb250RGlydHk7CiAgICAgICAgIGJvb2wgbV9tYXRj
aEF1dGhvckFuZFVzZXJTdHlsZXM7CisKKyAgICAgICAgdW5zaWduZWQgbV9mb3JjZVBzZXVkb0Ns
YXNzTWFzazsgLy8gZW51bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MKICAgICAgICAgCiAgICAgICAg
IFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOwogICAgICAgICBIYXNoU2V0
PEF0b21pY1N0cmluZ0ltcGwqPiBtX3NlbGVjdG9yQXR0cnM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97427</attachid>
            <date>2011-06-16 02:44:37 -0700</date>
            <delta_ts>2011-06-16 03:03:04 -0700</delta_ts>
            <desc>[PATCH] Suggested solution, dhyatt&apos;s comment addressed</desc>
            <filename>pseudo.patch</filename>
            <type>text/plain</type>
            <size>16056</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDgyNGY4NTAzN2U4MTM5MzI1MTA1MjliNmM1OTNmYzI2MDFhMGIyZWEKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgSnVuIDE1
IDIwOjU4OjMwIDIwMTEgKzA0MDAKCiAgICBQc2V1ZG8KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdlOGE4Yy4u
NTFmMjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDExLTA2LTE2ICBBbGV4YW5k
ZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBmb3IgZW11
bGF0aW5nIGVsZW1lbnQncyBwc2V1ZG8gY2xhc3Mgc3RhdGUgaW4gc3R5bGVSdWxlc0ZvckVsZW1l
bnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEw
NzAKKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgc2xpZ2h0IHJld29yayBvZiBhIHNvbHV0aW9u
IGJ5IEFsZXhhbmRlciBVZGFsb3YuCisgICAgICAgIEl0IGlzIHN1cHBvc2VkIHRvIGhlbHAgaW1w
bGVtZW50IGEgZmVhdHVyZSBpbiBXZWIgSW5zcGVjdG9yIHRvIGV4YW1pbmUKKyAgICAgICAgc3R5
bGUgcnVsZXMgbWF0Y2hlZCBmb3IgZGlmZmVyZW50IHN0YXRlcyBvZiBhIGdpdmVuIGVsZW1lbnQu
CisgICAgICAgIFdlYiBJbnNwZWN0b3IgaXMgc3VwcG9zZWQgdG8gcGFzcyBhIG1hc2sgb2YgRm9y
Y2VQc2V1ZG9DbGFzc0ZsYWdzIHRvCisgICAgICAgIHN0eWxlUnVsZXNGb3JFbGVtZW50KCksIHNv
IHRoYXQgaXQgd2lsbCBmaWx0ZXIgb25seSB0aGUgcnVsZXMgd2hvc2Ugc3RhdGUKKyAgICAgICAg
KGEgc2V0IG9mIHBzZXVkbyBjbGFzc2VzIGluIHRoZWlyIHNlbGVjdG9ycykgbWF0Y2hlcyBhIGdp
dmVuCisgICAgICAgIG1hc2ssIGlnbm9yaW5nIHRoZSBzdGF0ZSBvZiB0aGUgZWxlbWVudCBpdHNl
bGYuCisgICAgICAgIERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2sgaXMgdGhlIGRlZmF1bHQgYmVo
YXZpb3VyOyBpdCBhbHdheXMgZXhhbWluZXMKKyAgICAgICAgdGhlIHN0YXRlIG9mIGEgZ2l2ZW4g
ZWxlbWVudCB0byBtYWtlIGEgbWF0Y2guCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBwcm92aWRl
ZCBpbiBhIHN1YnNlcXVlbnQgV2ViIEluc3BlY3RvciBjaGFuZ2UgZW1wbG95aW5nIHRoaXMgZnVu
Y3Rpb25hbGl0eS4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oOgorCiAyMDExLTA2LTE2ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA5YTVjMGNkLi44NzU5ZjIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04ODQsNiArODg0LDggQEAgaW5s
aW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiBl
LCBSZW5kZXJTdHlsZSogcGFyZW4KICAgICBtX3J1bGVMaXN0ID0gMDsKIAogICAgIG1fZm9udERp
cnR5ID0gZmFsc2U7CisKKyAgICBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNrID0gRG9Ob3RGb3JjZVBz
ZXVkb0NsYXNzTWFzazsKIH0KIAogc3RhdGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcqIGxp
bmtBdHRyaWJ1dGUoTm9kZSogbm9kZSkKQEAgLTIwMTgsMTIgKzIwMjAsMTIgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjpjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKQogICAgIH0KIH0KIAotUGFz
c1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1l
bnQoRWxlbWVudCogZSwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCitQYXNzUmVmUHRyPENTU1J1
bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBl
LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2sp
CiB7Ci0gICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGUsIE5PUFNFVURPLCBy
dWxlc1RvSW5jbHVkZSk7CisgICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGUs
IE5PUFNFVURPLCBydWxlc1RvSW5jbHVkZSwgZm9yY2VQc2V1ZG9DbGFzc01hc2spOwogfQogCi1Q
YXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZVJ1bGVz
Rm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5zaWduZWQgcnVsZXNU
b0luY2x1ZGUpCitQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5z
aWduZWQgcnVsZXNUb0luY2x1ZGUsIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrKQogewog
ICAgIGlmICghZSB8fCAhZS0+ZG9jdW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMjAzMiw2ICsyMDM0LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxl
TGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVu
dCogZSwKIAogICAgIGluaXRFbGVtZW50KGUpOwogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwg
MCwgcHNldWRvSWQpOworICAgIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2sgPSBmb3JjZVBzZXVkb0Ns
YXNzTWFzazsKIAogICAgIGlmIChydWxlc1RvSW5jbHVkZSAmIFVBQW5kVXNlckNTU1J1bGVzKSB7
CiAgICAgICAgIGludCBmaXJzdFVBUnVsZSA9IC0xLCBsYXN0VUFSdWxlID0gLTE7CkBAIC0yMDU2
LDYgKzIwNTksNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpw
c2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLAogICAgIH0KIAogICAgIG1fY2hl
Y2tlci5tX2NvbGxlY3RSdWxlc09ubHkgPSBmYWxzZTsKKyAgICBtX2ZvcmNlUHNldWRvQ2xhc3NN
YXNrID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzazsKICAgIAogICAgIHJldHVybiBtX3J1bGVM
aXN0LnJlbGVhc2UoKTsKIH0KQEAgLTIwNzgsNyArMjA4Miw3IEBAIGlubGluZSBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAg
IH0KIAogICAgIC8vIFNsb3cgcGF0aC4KLSAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVj
a2VyLmNoZWNrU2VsZWN0b3IocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBtX2R5bmFt
aWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSwgc3R5bGUoKSwgbV9wYXJlbnROb2RlID8gbV9wYXJlbnRO
b2RlLT5yZW5kZXJTdHlsZSgpIDogMCk7CisgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hl
Y2tlci5jaGVja1NlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCksIG1fZWxlbWVudCwgbV9keW5h
bWljUHNldWRvLCBmYWxzZSwgZmFsc2UsIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2ssIHN0eWxlKCks
IG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDApOwogICAgIGlm
IChtYXRjaCAhPSBTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAobV9jaGVja2VyLm1fcHNldWRvU3R5bGUgIT0gTk9QU0VVRE8gJiYgbV9jaGVja2VyLm1fcHNl
dWRvU3R5bGUgIT0gbV9keW5hbWljUHNldWRvKQpAQCAtMjIwNyw3ICsyMjExLDcgQEAgYm9vbCBD
U1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVja1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWwKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgLSB0aGUgc2Vs
ZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAg
IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFp
bHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBv
ciBhbmNlc3RvciBvZiBlCi1DU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxl
U2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2Vs
LCBFbGVtZW50KiBlLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9y
LCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVy
U3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKK0NTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBi
b29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBmb3JjZVBz
ZXVkb0NsYXNzTWFzaywgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVs
ZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIFNwZWM6
IENTUzIgc2VsZWN0b3JzIGNhbm5vdCBiZSBhcHBsaWVkIHRvIHRoZSAoY29uY2VwdHVhbGx5KSBj
bG9uZWQgRE9NIHRyZWUKQEAgLTIyMTcsNyArMjIyMSw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yCiAjZW5kaWYKIAogICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRjaAotICAgIGlm
ICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGlzU3ViU2VsZWN0b3Is
IGVuY291bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQorICAg
IGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGlzU3ViU2VsZWN0
b3IsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwg
ZWxlbWVudFBhcmVudFN0eWxlKSkKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5
OwogCiAgICAgLy8gVGhlIHJlc3Qgb2YgdGhlIHNlbGVjdG9ycyBoYXMgdG8gbWF0Y2gKQEAgLTIy
NTEsNyArMjI1NSw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yCiAgICAgICAgICAgICAgICAg
aWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKICAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBj
aGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGlu
ayk7CisgICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Io
c2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVk
b0NsYXNzTWFzayk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFpbHNM
b2NhbGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgICAgICAgICB9
CkBAIC0yMjYyLDcgKzIyNjYsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcgogICAgICAgICAg
ICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHlu
YW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CisgICAgICAgICAgICByZXR1cm4g
Y2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExp
bmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgewpAQCAtMjI3OCw3ICsyMjgyLDcgQEAg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IKICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JG
YWlsc0xvY2FsbHk7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwog
ICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwotICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5j
b3VudGVyZWRMaW5rKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
ZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01h
c2spOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNl
bnQ6CiAgICAgICAgICAgICBpZiAoIW1fY29sbGVjdFJ1bGVzT25seSAmJiBlLT5wYXJlbnROb2Rl
KCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsKQEAgLTIyOTQsNyArMjI5
OCw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG4pOwogICAgICAgICAgICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3Mg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxl
Y3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAg
ICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
ZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01h
c2spOwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfTsKQEAgLTIz
MDYsMTQgKzIzMTAsMTQgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHls
ZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IKICAgICAgICAgICAgIGlm
ICgoZWxlbWVudFN0eWxlIHx8IG1fY29sbGVjdFJ1bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAh
PSBOT1BTRVVETyAmJiBkeW5hbWljUHNldWRvICE9IFNFTEVDVElPTiAmJgogICAgICAgICAgICAg
ICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHlu
YW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpF
UikgJiYgc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwotICAgICAgICAgICAgcmV0
dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJl
ZExpbmssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKTsKKyAgICAgICAgICAgIHJl
dHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVy
ZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50
U3R5bGUpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAg
ICAgICB7CiAgICAgICAgICAgICBOb2RlKiBzaGFkb3dIb3N0Tm9kZSA9IGUtPnNoYWRvd0FuY2Vz
dG9yTm9kZSgpOwogICAgICAgICAgICAgaWYgKHNoYWRvd0hvc3ROb2RlID09IGUgfHwgIXNoYWRv
d0hvc3ROb2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihzaGFkb3dIb3N0Tm9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWws
IGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAgICAgICAgICAg
cmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3Vu
dGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzayk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTIzODcsNyArMjM5MSw3IEBAIHN0YXRpYyBib29sIGh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5z
aXRpdmVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyKQogICAgIHJldHVybiBpc1Bvc3Np
YmxlSFRNTEF0dHIgJiYgaHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQtPmNvbnRhaW5z
KGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVu
dCogZSwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBl
bmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBl
bGVtZW50UGFyZW50U3R5bGUpIGNvbnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBQ
c2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRl
cmVkTGluaywgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIFJlbmRlclN0eWxlKiBlbGVt
ZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGUpOwogICAgIGlmICghZSkKQEAgLTI0ODEsNyArMjQ4NSw3IEBAIGJvb2wgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9y
KiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgLy8gdGhlIHBhcnNlciBlbmZvcmNlcyB0aGF0
IHRoaXMgbmV2ZXIgb2NjdXJzCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN1YlNlbC0+cHNldWRv
VHlwZSgpICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3QpOwogCi0gICAgICAgICAgICAgICAgaWYg
KCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3Vu
dGVyZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAg
ICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgZHluYW1pY1BzZXVkbywgdHJ1
ZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBl
bGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljUHNldWRvICE9IE5PUFNFVURP
ICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFt
aWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIp
KSB7CkBAIC0yNDkyLDkgKzI0OTYsMjcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWUKICAgICAg
ICAgICAgIGlmIChzZWwtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvV2luZG93
SW5hY3RpdmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICFtX2RvY3VtZW50LT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5pc0FjdGl2ZSgpOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAg
ICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUgPSBzZWwtPnBzZXVkb1R5cGUo
KTsKKworICAgICAgICAvLyBDaGVjayBmb3JjZWQgcHNldWRvIGNsYXNzIG1hc2sgZmlyc3QuCisg
ICAgICAgIGlmIChmb3JjZVBzZXVkb0NsYXNzTWFzayAhPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NN
YXNrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHBzZXVkb1R5cGUpIHsKKyAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNl
UHNldWRvQ2xhc3NNYXNrICYgRm9yY2VMaW5rOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvVmlzaXRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFz
c01hc2sgJiBGb3JjZVZpc2l0ZWQ7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9Gb2N1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBG
b3JjZUZvY3VzOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNlUHNldWRvQ2xhc3NNYXNrICYgRm9yY2VIb3ZlcjsK
KyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FjdGl2ZToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBGb3JjZUFjdGl2ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorIAogICAgICAgICAvLyBOb3JtYWwgZWxlbWVudCBwc2V1ZG8gY2xh
c3MgY2hlY2tpbmcuCi0gICAgICAgIHN3aXRjaCAoc2VsLT5wc2V1ZG9UeXBlKCkpIHsKKyAgICAg
ICAgc3dpdGNoIChwc2V1ZG9UeXBlKSB7CiAgICAgICAgICAgICAvLyBQc2V1ZG8gY2xhc3NlczoK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdDoKICAgICAgICAgICAgICAg
ICBicmVhazsgLy8gQWxyZWFkeSBoYW5kbGVkIHVwIGFib3ZlLgpAQCAtMjc5MCw3ICsyODEyLDcg
QEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWUKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueToKICAgICAgICAgICAgICAgICBmb3Ig
KENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbC0+c2VsZWN0b3JMaXN0KCktPmZpcnN0KCk7IHNl
bGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc2VsZWN0b3IsIGUsIGR5bmFtaWNQ
c2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50
U3R5bGUpID09IFNlbGVjdG9yTWF0Y2hlcykKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNr
U2VsZWN0b3Ioc2VsZWN0b3IsIGUsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGlu
aywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxl
KSA9PSBTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCAxMGEyNjQ1Li43MWM3YzVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTEzMCw2ICsxMzAsMTYgQEAgcHVibGljOgog
ICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJl
bmRlclN0eWxlKiwgY29uc3QgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiwgS2V5ZnJhbWVWYWx1ZSYp
OwogCiAgICAgcHVibGljOgorICAgICAgICBlbnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFncyB7Cisg
ICAgICAgICAgICBGb3JjZU5vbmUgPSAwLAorICAgICAgICAgICAgRG9Ob3RGb3JjZVBzZXVkb0Ns
YXNzTWFzayA9IDEgPDwgMCwKKyAgICAgICAgICAgIEZvcmNlSG92ZXIgPSAxIDw8IDEsCisgICAg
ICAgICAgICBGb3JjZUZvY3VzID0gMSA8PCAyLAorICAgICAgICAgICAgRm9yY2VBY3RpdmUgPSAx
IDw8IDMsCisgICAgICAgICAgICBGb3JjZUxpbmsgPSAxIDw8IDQsCisgICAgICAgICAgICBGb3Jj
ZVZpc2l0ZWQgPSAxIDw8IDUKKyAgICAgICAgfTsKKwogICAgICAgICAvLyBUaGVzZSBtZXRob2Rz
IHdpbGwgZ2l2ZSBiYWNrIHRoZSBzZXQgb2YgcnVsZXMgdGhhdCBtYXRjaGVkIGZvciBhIGdpdmVu
IGVsZW1lbnQgKG9yIGEgcHNldWRvLWVsZW1lbnQpLgogICAgICAgICBlbnVtIENTU1J1bGVGaWx0
ZXIgewogICAgICAgICAgICAgVUFBbmRVc2VyQ1NTUnVsZXMgICA9IDEgPDwgMSwKQEAgLTEzOSw4
ICsxNDksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBbGxCdXRFbXB0eUNTU1J1bGVzID0gVUFB
bmRVc2VyQ1NTUnVsZXMgfCBBdXRob3JDU1NSdWxlcyB8IENyb3NzT3JpZ2luQ1NTUnVsZXMsCiAg
ICAgICAgICAgICBBbGxDU1NSdWxlcyAgICAgICAgID0gQWxsQnV0RW1wdHlDU1NSdWxlcyB8IEVt
cHR5Q1NTUnVsZXMsCiAgICAgICAgIH07Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+
IHN0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9
IEFsbEJ1dEVtcHR5Q1NTUnVsZXMpOwotICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBw
c2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIHVuc2lnbmVkIHJ1
bGVzVG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7CisgICAgICAgIFBhc3NSZWZQdHI8
Q1NTUnVsZUxpc3Q+IHN0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCB1bnNpZ25lZCBydWxl
c1RvSW5jbHVkZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMsIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xh
c3NNYXNrID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzayk7CisgICAgICAgIFBhc3NSZWZQdHI8
Q1NTUnVsZUxpc3Q+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBQc2V1ZG9J
ZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzLCB1bnNpZ25l
ZCBmb3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spOwogCiAg
ICAgICAgIC8vIEdpdmVuIGEgQ1NTIGtleXdvcmQgaW4gdGhlIHJhbmdlICh4eC1zbWFsbCB0byAt
d2Via2l0LXh4eC1sYXJnZSksIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4KICAgICAgICAgLy8g
dGhlIGNvcnJlY3QgZm9udCBzaXplIHNjYWxlZCByZWxhdGl2ZSB0byB0aGUgdXNlcidzIGRlZmF1
bHQgKG1lZGl1bSkuCkBAIC0yNjUsOCArMjc1LDggQEAgcHVibGljOgogICAgICAgICAgICAgU2Vs
ZWN0b3JDaGVja2VyKERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAogICAgICAgICAg
ICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCopIGNvbnN0OwotICAg
ICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVu
dCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5j
b3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogPSAwLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVu
dFN0eWxlID0gMCkgY29uc3Q7Ci0gICAgICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoQ1NT
U2VsZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJT
ZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUq
IGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3Q7CisgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIGNo
ZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1
ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVuc2lnbmVkIGZv
cmNlUHNldWRvQ2xhc3NNYXNrID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzaywgUmVuZGVyU3R5
bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0OworICAg
ICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIFBz
ZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVy
ZWRMaW5rLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgUmVuZGVyU3R5bGUqLCBSZW5k
ZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKICAgICAgICAgICAgIGJvb2wgY2hl
Y2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3RvciosIFBzZXVkb0lkJiBkeW5hbWljUHNl
dWRvKSBjb25zdDsKICAgICAgICAgICAgIHN0YXRpYyBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopOwogCkBAIC0zNjMsNiArMzczLDcgQEAg
cHVibGljOgogICAgICAgICBDU1NWYWx1ZSogbV9saW5lSGVpZ2h0VmFsdWU7CiAgICAgICAgIGJv
b2wgbV9mb250RGlydHk7CiAgICAgICAgIGJvb2wgbV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXM7
CisgICAgICAgIHVuc2lnbmVkIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2s7IC8vIGVudW0gRm9yY2VQ
c2V1ZG9DbGFzc0ZsYWdzCiAgICAgICAgIAogICAgICAgICBSZWZQdHI8Q1NTRm9udFNlbGVjdG9y
PiBtX2ZvbnRTZWxlY3RvcjsKICAgICAgICAgVmVjdG9yPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKj4gbV9hZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNsczsK
</data>
<flag name="commit-queue"
          id="91374"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97429</attachid>
            <date>2011-06-16 03:03:04 -0700</date>
            <delta_ts>2011-06-17 03:14:04 -0700</delta_ts>
            <desc>[PATCH] Fix Chromium/Mac builds</desc>
            <filename>pseudo.patch</filename>
            <type>text/plain</type>
            <size>16102</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGI4NzE1Mjk5ZjhlZDMwMWNhN2ZjNTZhYjk3NjdhNDJiZGEyYWZiNDkKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgSnVuIDE1
IDIwOjU4OjMwIDIwMTEgKzA0MDAKCiAgICBQc2V1ZG8KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdlOGE4Yy4u
NTFmMjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDExLTA2LTE2ICBBbGV4YW5k
ZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBmb3IgZW11
bGF0aW5nIGVsZW1lbnQncyBwc2V1ZG8gY2xhc3Mgc3RhdGUgaW4gc3R5bGVSdWxlc0ZvckVsZW1l
bnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEw
NzAKKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgc2xpZ2h0IHJld29yayBvZiBhIHNvbHV0aW9u
IGJ5IEFsZXhhbmRlciBVZGFsb3YuCisgICAgICAgIEl0IGlzIHN1cHBvc2VkIHRvIGhlbHAgaW1w
bGVtZW50IGEgZmVhdHVyZSBpbiBXZWIgSW5zcGVjdG9yIHRvIGV4YW1pbmUKKyAgICAgICAgc3R5
bGUgcnVsZXMgbWF0Y2hlZCBmb3IgZGlmZmVyZW50IHN0YXRlcyBvZiBhIGdpdmVuIGVsZW1lbnQu
CisgICAgICAgIFdlYiBJbnNwZWN0b3IgaXMgc3VwcG9zZWQgdG8gcGFzcyBhIG1hc2sgb2YgRm9y
Y2VQc2V1ZG9DbGFzc0ZsYWdzIHRvCisgICAgICAgIHN0eWxlUnVsZXNGb3JFbGVtZW50KCksIHNv
IHRoYXQgaXQgd2lsbCBmaWx0ZXIgb25seSB0aGUgcnVsZXMgd2hvc2Ugc3RhdGUKKyAgICAgICAg
KGEgc2V0IG9mIHBzZXVkbyBjbGFzc2VzIGluIHRoZWlyIHNlbGVjdG9ycykgbWF0Y2hlcyBhIGdp
dmVuCisgICAgICAgIG1hc2ssIGlnbm9yaW5nIHRoZSBzdGF0ZSBvZiB0aGUgZWxlbWVudCBpdHNl
bGYuCisgICAgICAgIERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2sgaXMgdGhlIGRlZmF1bHQgYmVo
YXZpb3VyOyBpdCBhbHdheXMgZXhhbWluZXMKKyAgICAgICAgdGhlIHN0YXRlIG9mIGEgZ2l2ZW4g
ZWxlbWVudCB0byBtYWtlIGEgbWF0Y2guCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBwcm92aWRl
ZCBpbiBhIHN1YnNlcXVlbnQgV2ViIEluc3BlY3RvciBjaGFuZ2UgZW1wbG95aW5nIHRoaXMgZnVu
Y3Rpb25hbGl0eS4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oOgorCiAyMDExLTA2LTE2ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA5YTVjMGNkLi5kNTJkYTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04ODQsNiArODg0LDggQEAgaW5s
aW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiBl
LCBSZW5kZXJTdHlsZSogcGFyZW4KICAgICBtX3J1bGVMaXN0ID0gMDsKIAogICAgIG1fZm9udERp
cnR5ID0gZmFsc2U7CisKKyAgICBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNrID0gRG9Ob3RGb3JjZVBz
ZXVkb0NsYXNzTWFzazsKIH0KIAogc3RhdGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcqIGxp
bmtBdHRyaWJ1dGUoTm9kZSogbm9kZSkKQEAgLTIwMTgsMTIgKzIwMjAsMTIgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjpjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKQogICAgIH0KIH0KIAotUGFz
c1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1l
bnQoRWxlbWVudCogZSwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCitQYXNzUmVmUHRyPENTU1J1
bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBl
LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2sp
CiB7Ci0gICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGUsIE5PUFNFVURPLCBy
dWxlc1RvSW5jbHVkZSk7CisgICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGUs
IE5PUFNFVURPLCBydWxlc1RvSW5jbHVkZSwgZm9yY2VQc2V1ZG9DbGFzc01hc2spOwogfQogCi1Q
YXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZVJ1bGVz
Rm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5zaWduZWQgcnVsZXNU
b0luY2x1ZGUpCitQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5z
aWduZWQgcnVsZXNUb0luY2x1ZGUsIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrKQogewog
ICAgIGlmICghZSB8fCAhZS0+ZG9jdW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMjAzMiw2ICsyMDM0LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxl
TGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVu
dCogZSwKIAogICAgIGluaXRFbGVtZW50KGUpOwogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwg
MCwgcHNldWRvSWQpOworICAgIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2sgPSBmb3JjZVBzZXVkb0Ns
YXNzTWFzazsKIAogICAgIGlmIChydWxlc1RvSW5jbHVkZSAmIFVBQW5kVXNlckNTU1J1bGVzKSB7
CiAgICAgICAgIGludCBmaXJzdFVBUnVsZSA9IC0xLCBsYXN0VUFSdWxlID0gLTE7CkBAIC0yMDU2
LDYgKzIwNTksNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpw
c2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLAogICAgIH0KIAogICAgIG1fY2hl
Y2tlci5tX2NvbGxlY3RSdWxlc09ubHkgPSBmYWxzZTsKKyAgICBtX2ZvcmNlUHNldWRvQ2xhc3NN
YXNrID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzazsKICAgIAogICAgIHJldHVybiBtX3J1bGVM
aXN0LnJlbGVhc2UoKTsKIH0KQEAgLTIwNzgsNyArMjA4Miw3IEBAIGlubGluZSBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAg
IH0KIAogICAgIC8vIFNsb3cgcGF0aC4KLSAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVj
a2VyLmNoZWNrU2VsZWN0b3IocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBtX2R5bmFt
aWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSwgc3R5bGUoKSwgbV9wYXJlbnROb2RlID8gbV9wYXJlbnRO
b2RlLT5yZW5kZXJTdHlsZSgpIDogMCk7CisgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hl
Y2tlci5jaGVja1NlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCksIG1fZWxlbWVudCwgbV9keW5h
bWljUHNldWRvLCBmYWxzZSwgZmFsc2UsIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2ssIHN0eWxlKCks
IG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDApOwogICAgIGlm
IChtYXRjaCAhPSBTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAobV9jaGVja2VyLm1fcHNldWRvU3R5bGUgIT0gTk9QU0VVRE8gJiYgbV9jaGVja2VyLm1fcHNl
dWRvU3R5bGUgIT0gbV9keW5hbWljUHNldWRvKQpAQCAtMjIwNyw3ICsyMjExLDcgQEAgYm9vbCBD
U1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVja1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWwKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgLSB0aGUgc2Vs
ZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAg
IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFp
bHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBv
ciBhbmNlc3RvciBvZiBlCi1DU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxl
U2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2Vs
LCBFbGVtZW50KiBlLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9y
LCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVy
U3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKK0NTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBi
b29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBmb3JjZVBz
ZXVkb0NsYXNzTWFzaywgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVs
ZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIFNwZWM6
IENTUzIgc2VsZWN0b3JzIGNhbm5vdCBiZSBhcHBsaWVkIHRvIHRoZSAoY29uY2VwdHVhbGx5KSBj
bG9uZWQgRE9NIHRyZWUKQEAgLTIyMTcsNyArMjIyMSw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yCiAjZW5kaWYKIAogICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRjaAotICAgIGlm
ICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGlzU3ViU2VsZWN0b3Is
IGVuY291bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQorICAg
IGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGlzU3ViU2VsZWN0
b3IsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwg
ZWxlbWVudFBhcmVudFN0eWxlKSkKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5
OwogCiAgICAgLy8gVGhlIHJlc3Qgb2YgdGhlIHNlbGVjdG9ycyBoYXMgdG8gbWF0Y2gKQEAgLTIy
NTEsNyArMjI1NSw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yCiAgICAgICAgICAgICAgICAg
aWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKICAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBj
aGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGlu
ayk7CisgICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Io
c2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVk
b0NsYXNzTWFzayk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFpbHNM
b2NhbGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgICAgICAgICB9
CkBAIC0yMjYyLDcgKzIyNjYsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcgogICAgICAgICAg
ICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHlu
YW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CisgICAgICAgICAgICByZXR1cm4g
Y2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExp
bmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgewpAQCAtMjI3OCw3ICsyMjgyLDcgQEAg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IKICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JG
YWlsc0xvY2FsbHk7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwog
ICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwotICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5j
b3VudGVyZWRMaW5rKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
ZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01h
c2spOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNl
bnQ6CiAgICAgICAgICAgICBpZiAoIW1fY29sbGVjdFJ1bGVzT25seSAmJiBlLT5wYXJlbnROb2Rl
KCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsKQEAgLTIyOTQsNyArMjI5
OCw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG4pOwogICAgICAgICAgICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3Mg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxl
Y3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAg
ICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
ZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01h
c2spOwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfTsKQEAgLTIz
MDYsMTQgKzIzMTAsMTQgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHls
ZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IKICAgICAgICAgICAgIGlm
ICgoZWxlbWVudFN0eWxlIHx8IG1fY29sbGVjdFJ1bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAh
PSBOT1BTRVVETyAmJiBkeW5hbWljUHNldWRvICE9IFNFTEVDVElPTiAmJgogICAgICAgICAgICAg
ICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHlu
YW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpF
UikgJiYgc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwotICAgICAgICAgICAgcmV0
dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJl
ZExpbmssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKTsKKyAgICAgICAgICAgIHJl
dHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVy
ZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50
U3R5bGUpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAg
ICAgICB7CiAgICAgICAgICAgICBOb2RlKiBzaGFkb3dIb3N0Tm9kZSA9IGUtPnNoYWRvd0FuY2Vz
dG9yTm9kZSgpOwogICAgICAgICAgICAgaWYgKHNoYWRvd0hvc3ROb2RlID09IGUgfHwgIXNoYWRv
d0hvc3ROb2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihzaGFkb3dIb3N0Tm9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWws
IGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAgICAgICAgICAg
cmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3Vu
dGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzayk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTIzODcsNyArMjM5MSw3IEBAIHN0YXRpYyBib29sIGh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5z
aXRpdmVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyKQogICAgIHJldHVybiBpc1Bvc3Np
YmxlSFRNTEF0dHIgJiYgaHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQtPmNvbnRhaW5z
KGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVu
dCogZSwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBl
bmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBl
bGVtZW50UGFyZW50U3R5bGUpIGNvbnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBQ
c2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRl
cmVkTGluaywgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIFJlbmRlclN0eWxlKiBlbGVt
ZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGUpOwogICAgIGlmICghZSkKQEAgLTI0ODEsNyArMjQ4NSw3IEBAIGJvb2wgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9y
KiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgLy8gdGhlIHBhcnNlciBlbmZvcmNlcyB0aGF0
IHRoaXMgbmV2ZXIgb2NjdXJzCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN1YlNlbC0+cHNldWRv
VHlwZSgpICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3QpOwogCi0gICAgICAgICAgICAgICAgaWYg
KCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3Vu
dGVyZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAg
ICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgZHluYW1pY1BzZXVkbywgdHJ1
ZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBl
bGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljUHNldWRvICE9IE5PUFNFVURP
ICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFt
aWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIp
KSB7CkBAIC0yNDkyLDkgKzI0OTYsMjkgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWUKICAgICAg
ICAgICAgIGlmIChzZWwtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvV2luZG93
SW5hY3RpdmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICFtX2RvY3VtZW50LT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5pc0FjdGl2ZSgpOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAg
ICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUgPSBzZWwtPnBzZXVkb1R5cGUo
KTsKKworICAgICAgICAvLyBDaGVjayBmb3JjZWQgcHNldWRvIGNsYXNzIG1hc2sgZmlyc3QuCisg
ICAgICAgIGlmIChmb3JjZVBzZXVkb0NsYXNzTWFzayAhPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NN
YXNrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHBzZXVkb1R5cGUpIHsKKyAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNl
UHNldWRvQ2xhc3NNYXNrICYgRm9yY2VMaW5rOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvVmlzaXRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFz
c01hc2sgJiBGb3JjZVZpc2l0ZWQ7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9Gb2N1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBG
b3JjZUZvY3VzOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNlUHNldWRvQ2xhc3NNYXNrICYgRm9yY2VIb3ZlcjsK
KyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FjdGl2ZToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBGb3JjZUFjdGl2ZTsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAKICAgICAgICAgLy8gTm9ybWFsIGVsZW1lbnQgcHNldWRvIGNsYXNzIGNoZWNraW5n
LgotICAgICAgICBzd2l0Y2ggKHNlbC0+cHNldWRvVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAo
cHNldWRvVHlwZSkgewogICAgICAgICAgICAgLy8gUHNldWRvIGNsYXNzZXM6CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3Q6CiAgICAgICAgICAgICAgICAgYnJlYWs7IC8v
IEFscmVhZHkgaGFuZGxlZCB1cCBhYm92ZS4KQEAgLTI3OTAsNyArMjgxNCw3IEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVj
dG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9Bbnk6CiAgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rv
ciogc2VsZWN0b3IgPSBzZWwtPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpOyBzZWxlY3Rvcjsgc2Vs
ZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlLCBkeW5hbWljUHNldWRvLCB0cnVl
LCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKSA9PSBT
ZWxlY3Rvck1hdGNoZXMpCisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNl
bGVjdG9yLCBlLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNl
dWRvQ2xhc3NNYXNrLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkgPT0gU2VsZWN0
b3JNYXRjaGVzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmgKaW5kZXggMTBhMjY0NS4uNzFjN2M1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCkBAIC0xMzAsNiArMTMwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSos
IGNvbnN0IFdlYktpdENTU0tleWZyYW1lUnVsZSosIEtleWZyYW1lVmFsdWUmKTsKIAogICAgIHB1
YmxpYzoKKyAgICAgICAgZW51bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgeworICAgICAgICAgICAg
Rm9yY2VOb25lID0gMCwKKyAgICAgICAgICAgIERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2sgPSAx
IDw8IDAsCisgICAgICAgICAgICBGb3JjZUhvdmVyID0gMSA8PCAxLAorICAgICAgICAgICAgRm9y
Y2VGb2N1cyA9IDEgPDwgMiwKKyAgICAgICAgICAgIEZvcmNlQWN0aXZlID0gMSA8PCAzLAorICAg
ICAgICAgICAgRm9yY2VMaW5rID0gMSA8PCA0LAorICAgICAgICAgICAgRm9yY2VWaXNpdGVkID0g
MSA8PCA1CisgICAgICAgIH07CisKICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUg
YmFjayB0aGUgc2V0IG9mIHJ1bGVzIHRoYXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChv
ciBhIHBzZXVkby1lbGVtZW50KS4KICAgICAgICAgZW51bSBDU1NSdWxlRmlsdGVyIHsKICAgICAg
ICAgICAgIFVBQW5kVXNlckNTU1J1bGVzICAgPSAxIDw8IDEsCkBAIC0xMzksOCArMTQ5LDggQEAg
cHVibGljOgogICAgICAgICAgICAgQWxsQnV0RW1wdHlDU1NSdWxlcyA9IFVBQW5kVXNlckNTU1J1
bGVzIHwgQXV0aG9yQ1NTUnVsZXMgfCBDcm9zc09yaWdpbkNTU1J1bGVzLAogICAgICAgICAgICAg
QWxsQ1NTUnVsZXMgICAgICAgICA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMgfCBFbXB0eUNTU1J1bGVz
LAogICAgICAgICB9OwotICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBzdHlsZVJ1bGVz
Rm9yRWxlbWVudChFbGVtZW50KiwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0
eUNTU1J1bGVzKTsKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gcHNldWRvU3R5bGVS
dWxlc0ZvckVsZW1lbnQoRWxlbWVudCosIFBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVk
ZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMpOworICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUg
PSBBbGxCdXRFbXB0eUNTU1J1bGVzLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFzayA9IERv
Tm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spOworICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIHVuc2lnbmVk
IHJ1bGVzVG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcywgdW5zaWduZWQgZm9yY2VQc2V1
ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKIAogICAgICAgICAvLyBH
aXZlbiBhIENTUyBrZXl3b3JkIGluIHRoZSByYW5nZSAoeHgtc21hbGwgdG8gLXdlYmtpdC14eHgt
bGFyZ2UpLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCiAgICAgICAgIC8vIHRoZSBjb3JyZWN0
IGZvbnQgc2l6ZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBkZWZhdWx0IChtZWRpdW0p
LgpAQCAtMjY1LDggKzI3NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFNlbGVjdG9yQ2hlY2tl
cihEb2N1bWVudCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAgICAgIGJvb2wgY2hl
Y2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqKSBjb25zdDsKLSAgICAgICAgICAgIFNl
bGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBQc2V1ZG9J
ZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGlu
aywgUmVuZGVyU3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDAp
IGNvbnN0OwotICAgICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwg
RWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJv
b2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50UGFy
ZW50U3R5bGUpIGNvbnN0OworICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiwgRWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlz
U3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0Ns
YXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2ssIFJlbmRlclN0eWxlKiA9IDAsIFJl
bmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsKKyAgICAgICAgICAgIGJv
b2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBQc2V1ZG9JZCYgZHlu
YW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgdW5z
aWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIGVs
ZW1lbnRQYXJlbnRTdHlsZSkgY29uc3Q7CiAgICAgICAgICAgICBib29sIGNoZWNrU2Nyb2xsYmFy
UHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7
CiAgICAgICAgICAgICBzdGF0aWMgYm9vbCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NTZWxl
Y3RvciosIGNvbnN0IEVsZW1lbnQqKTsKIApAQCAtMzYzLDYgKzM3Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgQ1NTVmFsdWUqIG1fbGluZUhlaWdodFZhbHVlOwogICAgICAgICBib29sIG1fZm9udERp
cnR5OwogICAgICAgICBib29sIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzOworICAgICAgICB1
bnNpZ25lZCBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNrOyAvLyBlbnVtIEZvcmNlUHNldWRvQ2xhc3NG
bGFncwogICAgICAgICAKICAgICAgICAgUmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2Vs
ZWN0b3I7CiAgICAgICAgIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+IG1fYWRk
aXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>