<?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>81733</bug_id>
          
          <creation_ts>2012-03-20 20:50:00 -0700</creation_ts>
          <short_desc>Make Length Calculation functions non-inline</short_desc>
          <delta_ts>2012-03-22 11:11:18 -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>CSS</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="Joe Thomas">joethomas</reporter>
          <assigned_to name="Joe Thomas">joethomas</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>shanestephens</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>583754</commentid>
    <comment_count>0</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-20 20:50:00 -0700</bug_when>
    <thetext>Currently length calculation functions in LengthFunctions.h are inline. 

A decent rule of thumb is to not inline a function if it is more than 10 lines long. Also it&apos;s typically not cost effective to inline functions with loops or switch statements (Reference: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Inline_Functions). Each of these functions are expected to grow by 10 more line as part of bug 27160. 

Also for bug 27160, in order to calculate viewport size using RenderView class, the inclusion of RenderView.h in LengthFunctions.h cause circular dependency between headers and it fails to compile, so it&apos;s better to separate the implementation of these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583764</commentid>
    <comment_count>1</comment_count>
      <attachid>132961</attachid>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-20 20:59:43 -0700</bug_when>
    <thetext>Created attachment 132961
ProposedPatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583814</commentid>
    <comment_count>2</comment_count>
      <attachid>132971</attachid>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-20 22:15:45 -0700</bug_when>
    <thetext>Created attachment 132971
Patch-updated

Resubmitting the patch as the previous patch failed to apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583839</commentid>
    <comment_count>3</comment_count>
      <attachid>132971</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 23:09:22 -0700</bug_when>
    <thetext>Comment on attachment 132971
Patch-updated

Attachment 132971 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12035257

New failing tests:
fast/dom/error-to-string-stack-overflow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584108</commentid>
    <comment_count>4</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-21 07:18:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 132971 [details])
&gt; Attachment 132971 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/12035257
&gt; 
&gt; New failing tests:
&gt; fast/dom/error-to-string-stack-overflow.html

Looks like this test case is flaky. Bug 81740 also failed this test. I will re-submit the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584129</commentid>
    <comment_count>5</comment_count>
      <attachid>133040</attachid>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-21 07:53:16 -0700</bug_when>
    <thetext>Created attachment 133040
Patch

Patch resubmitting as the chromium test fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584167</commentid>
    <comment_count>6</comment_count>
      <attachid>133040</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 08:47:25 -0700</bug_when>
    <thetext>Comment on attachment 133040
Patch

Attachment 133040 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12035532

New failing tests:
fast/eventsource/eventsource-url-attribute.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584193</commentid>
    <comment_count>7</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-21 09:07:56 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 133040 [details])
&gt; Attachment 133040 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/12035532
&gt; 
&gt; New failing tests:
&gt; fast/eventsource/eventsource-url-attribute.html

Not related to my change. I think revision 111544 should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584232</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-21 09:41:27 -0700</bug_when>
    <thetext>Did you check svn history, why are these functions inline in the first place? Applying rules of thumb can be destructive if someone did actual research that showed the benefit of inlining these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584621</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-21 14:07:59 -0700</bug_when>
    <thetext>It is hard to say if inlining is helping or hurting here. It would be good to run some performance tests with and without the change. PerformanceTests/Layout/html5-full-render.html for example might be interesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584637</commentid>
    <comment_count>10</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-21 14:34:24 -0700</bug_when>
    <thetext>I checked the svn history (http://trac.webkit.org/browser/trunk/WebCore/khtml/misc/khtmllayout.h?rev=1326), and these Length calculation functions are copied from KDE project. These functions were in the same format then also (inline with swtich statement).

I will do the profiling today evening as Antti suggested and update the results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584966</commentid>
    <comment_count>11</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-21 21:46:38 -0700</bug_when>
    <thetext>I ran PerformanceTests/Parser/html5-full-render.html on Mac Snow-Leopard with and without the patch with webkit version 111625 and did not see much performance difference.

r111625 - {16156.0 ms, 16106.0 ms, 16130.5 ms, 16138.5 ms, 16142.0 ms, 16099.5 ms}   --  Average: 16129 ms.

r111625 with patch - {16192.0 ms, 16148.0 ms, 16115.0 ms, 16120.5 ms, 16145.0 ms
16146.0 ms}   --  Average: 16144 ms.

Since these functions are expected to grow again with the introduction of new units in bug 27160, it might be good idea to make these functions regular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585186</commentid>
    <comment_count>12</comment_count>
      <attachid>133040</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-22 05:59:39 -0700</bug_when>
    <thetext>Comment on attachment 133040
Patch

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

r=me, we can always roll out if the perf bots hate it. I think it should be ok though, these functions are pretty big for inlining.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Make Length Calculation functions regular.

Please make the title match the bug.

&gt; Source/WebCore/ChangeLog:6
&gt; +        Making the Length calculation functions regular and moving them to LengthFunctions.cpp file.

Some motivation and perf testing information here would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585424</commentid>
    <comment_count>13</comment_count>
      <attachid>133286</attachid>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-22 10:08:22 -0700</bug_when>
    <thetext>Created attachment 133286
Patch-BasedOn-ReviewComments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585494</commentid>
    <comment_count>14</comment_count>
      <attachid>133286</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 11:11:12 -0700</bug_when>
    <thetext>Comment on attachment 133286
Patch-BasedOn-ReviewComments

Clearing flags on attachment: 133286

Committed r111733: &lt;http://trac.webkit.org/changeset/111733&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585495</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 11:11:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132961</attachid>
            <date>2012-03-20 20:59:43 -0700</date>
            <delta_ts>2012-03-20 22:15:45 -0700</delta_ts>
            <desc>ProposedPatch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17326</size>
            <attacher name="Joe Thomas">joethomas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAzLTIwICBKb2UgVGhv
bWFzICA8am9ldGhvbWFzQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNYWtlIExlbmd0aCBDYWxj
dWxhdGlvbiBmdW5jdGlvbnMgcmVndWxhci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxNzMzCisKKyAgICAgICAgTWFraW5nIHRoZSBMZW5ndGggY2Fs
Y3VsYXRpb24gZnVuY3Rpb25zIHJlZ3VsYXIgYW5kIG1vdmluZyB0aGVtIHRvIExlbmd0aEZ1bmN0
aW9ucy5jcHAgZmlsZS4gICAgICAgIAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0
aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpt
aW1pbnVtVmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRWYWx1ZUZvckxlbmd0aCk6CisgICAgICAgICogY3Nz
L0xlbmd0aEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDMtMjAgIFcu
IEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gQ29udmVydCBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUgdG8gYSAyLUQgQmV6
aWVyIGZvciBiZXR0ZXIgY29udHJvbCBvZiBjdXJ2ZSBzaGFwZS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxMTE0NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBjc3MvQ1NTV3JhcFNoYXBlcy5jcHAKICAgICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAK
ICAgICBjc3MvRm9udFZhbHVlLmNwcAorICAgIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCiAgICAg
Y3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcAogICAgIGNzcy9NZWRpYUxpc3QuY3BwCiAgICAgY3Nz
L01lZGlhUXVlcnkuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlz
aW9uIDExMTQ2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTE2NDcsNiArMTY0Nyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaCBcCisJU291
cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nz
cy9MZW5ndGhGdW5jdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5h
bWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmggXApJbmRl
eDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMTE0NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCSh3b3JraW5nIGNvcHkpCkBAIC00NzUsNiArNDc1LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
Y3NzL0NTU1dyYXBTaGFwZXMuY3BwIFwKICAgICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAgXAog
ICAgIGNzcy9Gb250VmFsdWUuY3BwIFwKKyAgICBjc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcCBcCiAg
ICAgY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcCBcCiAgICAgY3NzL01lZGlhTGlzdC5jcHAgXAog
ICAgIGNzcy9NZWRpYVF1ZXJ5LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAx
MTE0NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTIzNTMsNiArMjM1Myw3IEBACiAgICAgICAgICAgICAnY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCcs
CiAgICAgICAgICAgICAnY3NzL0ZvbnRWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9Gb250
VmFsdWUuaCcsCisgICAgICAgICAgICAnY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAnLAogICAgICAg
ICAgICAgJ2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9NZWRp
YUZlYXR1cmVOYW1lcy5oJywKICAgICAgICAgICAgICdjc3MvTWVkaWFMaXN0LmNwcCcsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNp
b24gMTExNDY5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM2NDc0LDYgKzM2NDc0LDEwIEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xMZW5ndGhGdW5jdGlvbnMu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxj
c3NcTGVuZ3RoRnVuY3Rpb25zLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTExNDY5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC01OTYxLDYgKzU5NjEsNyBAQAogCQlFNEQ2ODc3NzBFRDdB
RTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDY4Nzc2MEVEN0FFM0QwMDZFQTk3OCAvKiBQ
dXJnZWFibGVCdWZmZXJNYWMuY3BwICovOyB9OwogCQlFNEQ2ODc3OTBFRDdBRTRGMDA2RUE5Nzgg
LyogUHVyZ2VhYmxlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmgg
Ki87IH07CiAJCUU1QkE3RDYzMTUxNDM3Q0EwMEZFMUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QkE3RDYyMTUx
NDM3Q0EwMEZFMUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNUNFOTZCQzE1MTk1MTAzMDA5RTNCNDUgLyog
TGVuZ3RoRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU1Q0U5NkJCMTUxOTUxMDMwMDlFM0I0NSAvKiBMZW5ndGhGdW5jdGlvbnMuY3Bw
ICovOyB9OwogCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMkJBODNCMDlB
MjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVENTAxREM2MEIyNDlGMjkwMEFFMThEOSAvKiBF
ZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICovOyB9OwogCQlFREUz
QTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xv
ck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMzA3OCw2ICsxMzA3OSw3IEBACiAJCUU0RDY4Nzc2MEVEN0FFM0QwMDZFQTk3OCAvKiBQdXJn
ZWFibGVCdWZmZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UHVyZ2VhYmxlQnVmZmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRE
Njg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZWFibGVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTVCQTdENjIxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZW5ndGhGdW5jdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTVDRTk2QkIxNTE5NTEwMzAwOUUzQjQ1IC8qIExl
bmd0aEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
ZW5ndGhGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDJCQTgz
QjA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGggPSBtYWMv
RWRpdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREUzQTRGRjBDN0E0
MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29sb3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDc3LDYgKzIw
NDc5LDcgQEAKIAkJCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3Mg
Ki8sCiAJCQkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUu
Y3NzICovLAogCQkJCTkzQ0E0Qzk5MDlERjkzRkEwMERGODY3NyAvKiBodG1sLmNzcyAqLywKKwkJ
CQlFNUNFOTZCQjE1MTk1MTAzMDA5RTNCNDUgLyogTGVuZ3RoRnVuY3Rpb25zLmNwcCAqLywKIAkJ
CQlFNUJBN0Q2MjE1MTQzN0NBMDBGRTFFM0YgLyogTGVuZ3RoRnVuY3Rpb25zLmggKi8sCiAJCQkJ
OTNDQTRDOUEwOURGOTNGQTAwREY4Njc3IC8qIG1ha2UtY3NzLWZpbGUtYXJyYXlzLnBsICovLAog
CQkJCTkzQ0E0QzlCMDlERjkzRkEwMERGODY3NyAvKiBtYWtlcHJvcC5wbCAqLywKQEAgLTIzODAz
LDYgKzIzODA2LDcgQEAKIAkJCQlBQkRERkU3QTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVu
dUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0NTQ0MjRGMTE5QjM2ODcwMDlCRTkxMiAvKiBS
ZW5kZXJNZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDNTJGRDYxNTEyOThEMjAwM0Y5MTRC
IC8qIFJlbmRlck11bHRpQ29sdW1uQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRTMyQjlD
MTUxN0MwQjIwMEY1NDJFQyAvKiBSZW5kZXJNdWx0aUNvbHVtblNldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFQTQ4ODAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMyQ0M4REYwRjMyODgxMDAwQTlERjI2IC8qIFJlbmRlck9iamVjdENoaWxk
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJl
bmRlck92ZXJmbG93LmggaW4gSGVhZGVycyAqLywKQEAgLTIzODEwLDYgKzIzODE0LDcgQEAKIAkJ
CQlBNDNCRjU5RDExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVBNTc0RjI1MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJRdW90ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRDcwQUQ2NTgxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkNFOTNGNDUxNTE3QzU2NzAwOENDRjc0IC8qIFJlbmRlclJl
Z2lvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURGRTMwQTE1Mzc2QjAwQjEyQTY4IC8q
IFJlbmRlclJlcGxhY2VkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4NDZENzBEQzY3QTM1MDAy
NkMzMDkgLyogUmVuZGVyUmVwbGljYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRUUxMDlB
RTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnkuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ2MDUsOCAr
MjQ2MTAsNiBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NB
dWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyog
WmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDRTMyQjlDMTUxN0MwQjIwMEY1NDJFQyAv
KiBSZW5kZXJNdWx0aUNvbHVtblNldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNFOTNGNDUxNTE3
QzU2NzAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjY5
MCw2ICsyNjY5Myw3IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdl
YkFyY2hpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVD
IC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBF
QUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU1Q0U5NkJD
MTUxOTUxMDMwMDlFM0I0NSAvKiBMZW5ndGhGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOENBREYyQUExMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJEYXRhYmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4QzBFMzM0QzEzOEE5MkM3MDA4REE5NEYgLyogTGV2ZWxEQlRyYW5zYWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThDMEUzMzRFMTM4QTkyQzcwMDhEQTk0RiAvKiBM
ZXZlbERCV3JpdGVCYXRjaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTQ3LDEyICsyNjk1MSwx
NCBAQAogCQkJCUFCRERGRTc5MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNDU0NDI0RTExOUIzNjg3MDA5QkU5MTIgLyogUmVuZGVyTWV0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0NTgyN0YxNTEyOTlDMTAwNjFBNTU2IC8qIFJl
bmRlck11bHRpQ29sdW1uQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNFMzJCOUUxNTE3
QzIyNzAwRjU0MkVDIC8qIFJlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRUE0ODdGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM2MEVGQjcwRjMzQTBFNzAwODEyQTkzIC8qIFJlbmRlck9iamVjdENoaWxk
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREVEMDBBMTUzMEM3MDBCMTJBNjggLyog
UmVuZGVyUGFydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDNCRjU5QzExNDkyOTI4MDBDNjQz
Q0EgLyogUmVuZGVyUHJvZ3Jlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUE1NzRGMjQxMzFE
QjkzOTAwNDcxQjg4IC8qIFJlbmRlclF1b3RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ3MEFE
NjU3MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkNFOTNGNDcxNTE3QzZENTAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODcxREZFMjBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBODQ2RDYwREM2N0EzNTAwMjZDMzA5IC8qIFJlbmRl
clJlcGxpY2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3OUZBRUQxMDlBRTM3NTAwREVENjU1
IC8qIFJlbmRlclJ1YnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzU5MCw4ICsyNzU5Niw2IEBA
CiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1Bv
bGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNFMzJCOUUxNTE3QzIyNzAwRjU0MkVDIC8qIFJl
bmRlck11bHRpQ29sdW1uU2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDRTkzRjQ3MTUxN0M2
RDUwMDhDQ0Y3NCAvKiBSZW5kZXJSZWdpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEyMSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAxMSBSaWsgQ2FiYW5pZXIgKGNhYmFuaWVy
QGFkb2JlLmNvbSkKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9y
b2xhIE1vYmlsaXR5LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiTGVuZ3Ro
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW50IG1pbWludW1WYWx1ZUZvckxlbmd0aChM
ZW5ndGggbGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpCit7
CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICAgICAg
cmV0dXJuIGxlbmd0aC52YWx1ZSgpOworICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgaWYgKHJv
dW5kUGVyY2VudGFnZXMpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihyb3Vu
ZChtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKSk7CisgICAgICAgIC8v
IERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBmbG9hdC4gSXQgaXMgbmVlZGVkIGZvciBy
b3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMgdGhhdCB1c2UgdGhlIEZQVSBzdGFjay4K
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGlt
dW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpKTsKKyAgICBjYXNlIENhbGN1bGF0
ZWQ6CisgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGltdW1W
YWx1ZSk7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFJlbGF0
aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgorICAgIGNh
c2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwor
fQorCitpbnQgdmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwg
Ym9vbCByb3VuZFBlcmNlbnRhZ2VzKQoreworICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewor
ICAgIGNhc2UgRml4ZWQ6CisgICAgY2FzZSBQZXJjZW50OgorICAgIGNhc2UgQ2FsY3VsYXRlZDoK
KyAgICAgICAgcmV0dXJuIG1pbWludW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1
ZSwgcm91bmRQZXJjZW50YWdlcyk7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gbWF4
aW11bVZhbHVlOworICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAg
Y2FzZSBNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxh
eW91dCBpcyBzdXBwb3J0ZWQgdGhpcyBjb3B5IG9mIGZsb2F0VmFsdWVGb3JMZW5ndGgoKSBjYW4g
YmUgcmVtb3ZlZC4gU2VlIGJ1ZyA3MTE0My4KK2Zsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoTGVu
Z3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBl
KCkpIHsKKyAgICBjYXNlIEZpeGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFs
dWUoKTsKKyAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7CisgICAgY2FzZSBB
dXRvOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7Cisg
ICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0
ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOyAgICAgICAgICAgICAgICAKKyAgICBjYXNlIFJlbGF0aXZl
OgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgorICAgIGNhc2Ug
VW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQor
CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgsIGZsb2F0IG1heGltdW1W
YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICBjYXNlIEZpeGVkOgor
ICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFsdWUoKTsKKyAgICBjYXNlIFBlcmNlbnQ6
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3Ro
LnBlcmNlbnQoKSAvIDEwMC4wZik7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7CisgICAgY2FzZSBDYWxjdWxhdGVkOgorICAg
ICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwor
ICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAgY2FzZSBNaW5JbnRy
aW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDExMTQ2OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsOTkgKzI0LDE0
IEBACiAjaWZuZGVmIExlbmd0aEZ1bmN0aW9uc19oCiAjZGVmaW5lIExlbmd0aEZ1bmN0aW9uc19o
CiAKLSNpbmNsdWRlICJMZW5ndGguaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUg
aW50IG1pbWludW1WYWx1ZUZvckxlbmd0aChMZW5ndGggbGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVl
LCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkKLXsKLSAgICBzd2l0Y2ggKGxlbmd0aC50
eXBlKCkpIHsKLSAgICBjYXNlIEZpeGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7
Ci0gICAgY2FzZSBQZXJjZW50OgotICAgICAgICBpZiAocm91bmRQZXJjZW50YWdlcykKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heGltdW1WYWx1ZSAqIGxlbmd0
aC5wZXJjZW50KCkgLyAxMDAuMGYpKTsKLSAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRy
YSBjYXN0IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRl
bCBtYWNoaW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNrLgotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNl
bnQoKSAvIDEwMC4wZikpOwotICAgIGNhc2UgQ2FsY3VsYXRlZDoKLSAgICAgICAgcmV0dXJuIGxl
bmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsKLSAgICBjYXNlIEF1dG86
Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5z
aWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlubGluZSBpbnQgdmFsdWVG
b3JMZW5ndGgoTGVuZ3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNl
bnRhZ2VzID0gZmFsc2UpCi17Ci0gICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2Fz
ZSBGaXhlZDoKLSAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAg
ICByZXR1cm4gbWltaW51bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCByb3Vu
ZFBlcmNlbnRhZ2VzKTsKLSAgICBjYXNlIEF1dG86Ci0gICAgICAgIHJldHVybiBtYXhpbXVtVmFs
dWU7Ci0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJpbnNpYzoKLSAgICBjYXNlIE1p
bkludHJpbnNpYzoKLSAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gMDsKLX0KLQotLy8gRklYTUU6IHdoZW4gc3VicGl4ZWwgbGF5b3V0IGlz
IHN1cHBvcnRlZCB0aGlzIGNvcHkgb2YgZmxvYXRWYWx1ZUZvckxlbmd0aCgpIGNhbiBiZSByZW1v
dmVkLiBTZWUgYnVnIDcxMTQzLgotaW5saW5lIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoTGVu
Z3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSkKLXsKLSAgICBzd2l0Y2ggKGxlbmd0aC50eXBl
KCkpIHsKLSAgICBjYXNlIEZpeGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFs
dWUoKTsKLSAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7Ci0gICAgY2FzZSBB
dXRvOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7Ci0g
ICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0
ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOyAgICAgICAgICAgICAgICAKLSAgICBjYXNlIFJlbGF0aXZl
OgotICAgIGNhc2UgSW50cmluc2ljOgotICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgIGNhc2Ug
VW5kZWZpbmVkOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQor
c3RydWN0IExlbmd0aDsKIAotaW5saW5lIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoTGVuZ3Ro
IGxlbmd0aCwgZmxvYXQgbWF4aW11bVZhbHVlKQotewotICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUo
KSkgewotICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAgIHJldHVybiBsZW5ndGguZ2V0RmxvYXRWYWx1
ZSgpOwotICAgIGNhc2UgUGVyY2VudDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PihtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKTsKLSAgICBjYXNlIEF1
dG86Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlKTsKLSAg
ICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRl
ZFZhbHVlKG1heGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJp
bnNpYzoKLSAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KK2ludCBtaW1pbnVtVmFsdWVG
b3JMZW5ndGgoTGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMg
PSBmYWxzZSk7CitpbnQgdmFsdWVGb3JMZW5ndGgoTGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBi
b29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KExlbmd0aCwgaW50IG1heGltdW1WYWx1ZSk7CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExl
bmd0aCwgZmxvYXQgbWF4aW11bVZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132971</attachid>
            <date>2012-03-20 22:15:45 -0700</date>
            <delta_ts>2012-03-21 07:53:16 -0700</delta_ts>
            <desc>Patch-updated</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18916</size>
            <attacher name="Joe Thomas">joethomas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAzLTIwICBKb2UgVGhv
bWFzICA8am9ldGhvbWFzQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNYWtlIExlbmd0aCBDYWxj
dWxhdGlvbiBmdW5jdGlvbnMgcmVndWxhci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxNzMzCisKKyAgICAgICAgTWFraW5nIHRoZSBMZW5ndGggY2Fs
Y3VsYXRpb24gZnVuY3Rpb25zIHJlZ3VsYXIgYW5kIG1vdmluZyB0aGVtIHRvIExlbmd0aEZ1bmN0
aW9ucy5jcHAgZmlsZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bWltaW51bVZh
bHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAqIGNzcy9MZW5ndGhG
dW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIwICBYaWFvbWVpIEpp
ICA8eGppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBpbnRyb2R1Y2VkIGluIHIxMTA5
NjUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTExNDkzKQorKysgU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCw2ICs0OTgsNyBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU1dyYXBTaGFwZXMuY3BwCiAgICAgY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuY3BwCiAgICAgY3NzL0ZvbnRWYWx1ZS5jcHAKKyAgICBjc3MvTGVu
Z3RoRnVuY3Rpb25zLmNwcAogICAgIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKICAgICBjc3Mv
TWVkaWFMaXN0LmNwcAogICAgIGNzcy9NZWRpYVF1ZXJ5LmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMTE0OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ3LDYgKzE2NDcsNyBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvRm9udFZhbHVlLmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmggXAogCVNvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YUZlYXR1cmVOYW1lcy5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTExNDkzKQorKysg
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNDc1LDYgKzQ3NSw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NXcmFwU2hhcGVzLmNwcCBcCiAgICAgY3NzL0Zv
bnRGZWF0dXJlVmFsdWUuY3BwIFwKICAgICBjc3MvRm9udFZhbHVlLmNwcCBcCisgICAgY3NzL0xl
bmd0aEZ1bmN0aW9ucy5jcHAgXAogICAgIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAgXAogICAg
IGNzcy9NZWRpYUxpc3QuY3BwIFwKICAgICBjc3MvTWVkaWFRdWVyeS5jcHAgXApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gMTExNDkzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMwLDYgKzI0MzAsNyBAQAogICAgICAgICAgICAgJ2Nz
cy9Gb250RmVhdHVyZVZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9Gb250VmFsdWUuY3BwJywK
ICAgICAgICAgICAgICdjc3MvRm9udFZhbHVlLmgnLAorICAgICAgICAgICAgJ2Nzcy9MZW5ndGhG
dW5jdGlvbnMuY3BwJywKICAgICAgICAgICAgICdjc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwJywK
ICAgICAgICAgICAgICdjc3MvTWVkaWFGZWF0dXJlTmFtZXMuaCcsCiAgICAgICAgICAgICAnY3Nz
L01lZGlhTGlzdC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDExMTQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQ3NCw2ICszNjQ3
NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxjc3NcTGVuZ3RoRnVuY3Rpb25zLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXExlbmd0aEZ1bmN0aW9ucy5oIgogCQkJCT4KIAkJCTwv
RmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDExMTQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTk2MSw2ICs1OTYx
LDcgQEAKIAkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMyNzk1NzBDRjk3NDE5
MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAqLzsgfTsKIAkJRTRENjg3NzcwRUQ3QUUzRDAwNkVB
OTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ2ODc3NjBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxl
QnVmZmVyTWFjLmNwcCAqLzsgfTsKIAkJRTRENjg3NzkwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdl
YWJsZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRENjg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oICovOyB9Owor
CQlFNTcyRDNDQzE1MTk4RjlDMDA1ODk2QTYgLyogTGVuZ3RoRnVuY3Rpb25zLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1NzJEM0NCMTUxOThGOUMw
MDU4OTZBNiAvKiBMZW5ndGhGdW5jdGlvbnMuY3BwICovOyB9OwogCQlFNUJBN0Q2MzE1MTQzN0NB
MDBGRTFFM0YgLyogTGVuZ3RoRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNUJBN0Q2MjE1MTQzN0NBMDBGRTFFM0YgLyogTGVuZ3RoRnVu
Y3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRUQyQkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDJCQTgzQjA5QTI0QjkxMDA2
QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFRDUwMURDNjBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUQ1MDFE
QzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLzsgfTsKQEAgLTEzMDc5LDYgKzEz
MDgwLDcgQEAKIAkJRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1lZGlhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0RDY4Nzc2MEVEN0FFM0QwMDZFQTk3OCAvKiBQdXJnZWFibGVC
dWZmZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVyZ2Vh
YmxlQnVmZmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRENjg3Nzgw
RUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQdXJnZWFibGVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTU3MkQzQ0IxNTE5OEY5QzAwNTg5NkE2IC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZW5ndGhGdW5jdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNUJBN0Q2MjE1MTQzN0NBMDBGRTFFM0YgLyog
TGVuZ3RoRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlbmd0
aEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDJCQTgzQjA5QTI0
QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRG9jdW1lbnRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGggPSBtYWMvRWRpdG9y
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2NDIsNyArMTM2NDQsNyBA
QAogCQkJCTFBRTgyRUM5MENBQUUxNzcwMDIyMzdBRSAvKiBzdG9yYWdlICovLAogCQkJCUIyMjI3
N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCiAJCQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1
N0ZCIC8qIHRlc3RpbmcgKi8sCi0JCQkJRkQzMTVGQTIxMkIwMjVCMTAwQzFBMzU5IC8qIHdlYmF1
ZGlvICovLAorCQkJCUZEMzE1RkEyMTJCMDI1QjEwMEMxQTM1OSAvKiBNb2R1bGVzL3dlYmF1ZGlv
ICovLAogCQkJCTJFNDM0NjMxMEY1NDZBNjgwMEIwRjFCQSAvKiB3b3JrZXJzICovLAogCQkJCUUx
RjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwgKi8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAw
MEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLywKQEAgLTE5MjY4LDggKzE5MjcwLDggQEAKIAkJ
CQk5MzBGQzY4OTEwNzJCOTI4MDA0NTI5M0UgLyogVGV4dFJlbmRlcmluZ01vZGUuaCAqLywKIAkJ
CQkzNzZEQ0NFMDEzQjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8sCiAJCQkJQTgyNEI0
NjQwRTJFRjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCAqLywKLQkJCQkzN0MyOEE2NzEwRjY1OUND
MDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oICovLAogCQkJCTFBRjg5QTQxMTUxOEZE
RUEwMEU1NDdCNSAvKiBUaWxlZEJhY2tpbmcuaCAqLywKKwkJCQkzN0MyOEE2NzEwRjY1OUNDMDA4
Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oICovLAogCQkJCUU0QUZDRkE0MERBRjI5QTMw
MEY1RjU1QyAvKiBVbml0QmV6aWVyLmggKi8sCiAJCQkJOTM5QjAyRUMwRUEyREJDNDAwQzU0NTcw
IC8qIFdpZHRoSXRlcmF0b3IuY3BwICovLAogCQkJCTkzOUIwMkVEMEVBMkRCQzQwMEM1NDU3MCAv
KiBXaWR0aEl0ZXJhdG9yLmggKi8sCkBAIC0yMDQ4MCw2ICsyMDQ4Miw3IEBACiAJCQkJQ0Q0RTBB
RkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovLAogCQkJCUNEQkQ5M0JBMTMz
M0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLywKIAkJCQk5M0NBNEM5
OTA5REY5M0ZBMDBERjg2NzcgLyogaHRtbC5jc3MgKi8sCisJCQkJRTU3MkQzQ0IxNTE5OEY5QzAw
NTg5NkE2IC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJRTVCQTdENjIxNTE0MzdDQTAw
RkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5oICovLAogCQkJCTkzQ0E0QzlBMDlERjkzRkEwMERG
ODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5QjA5REY5M0ZB
MDBERjg2NzcgLyogbWFrZXByb3AucGwgKi8sCkBAIC0yMTE2OSw3ICsyMTE3Miw3IEBACiAJCQlw
YXRoID0gb3BlbmdsOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJRkQzMTVG
QTIxMkIwMjVCMTAwQzFBMzU5IC8qIHdlYmF1ZGlvICovID0geworCQlGRDMxNUZBMjEyQjAyNUIx
MDBDMUEzNTkgLyogTW9kdWxlcy93ZWJhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJRkQ1Njg2QzcxM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVk
aW9EZWNvZGVyLmNwcCAqLywKQEAgLTIzODA2LDYgKzIzODA5LDcgQEAKIAkJCQlBQkRERkU3QTBB
NUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0
NTQ0MjRGMTE5QjM2ODcwMDlCRTkxMiAvKiBSZW5kZXJNZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNDNTJGRDYxNTEyOThEMjAwM0Y5MTRCIC8qIFJlbmRlck11bHRpQ29sdW1uQmxvY2suaCBp
biBIZWFkZXJzICovLAorCQkJCUJDRTMyQjlDMTUxN0MwQjIwMEY1NDJFQyAvKiBSZW5kZXJNdWx0
aUNvbHVtblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4ODAwOTdEOTMwMjAwOTRDOUU0
IC8qIFJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyQ0M4REYwRjMyODgxMDAw
QTlERjI2IC8qIFJlbmRlck9iamVjdENoaWxkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNG
QTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVhZGVycyAqLywK
QEAgLTIzODEzLDYgKzIzODE3LDcgQEAKIAkJCQlBNDNCRjU5RDExNDkyOTI4MDBDNjQzQ0EgLyog
UmVuZGVyUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVBNTc0RjI1MTMxREI5MzkwMDQ3
MUI4OCAvKiBSZW5kZXJRdW90ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDcwQUQ2NTgxM0UxMzQy
QjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNFOTNGNDUx
NTE3QzU2NzAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTg3MURGRTMwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0E4NDZENzBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQ3OUZBRUUxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnkuaCBp
biBIZWFkZXJzICovLApAQCAtMjQ0MDYsNiArMjQ0MTEsNyBAQAogCQkJCUUxRkY1N0EzMEYwMTI1
NUIwMDg5MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxODVC
Q0YyOTBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUE3MTYwQjE0OUJDNERCMDAxNkVDMTkgLyogVGlsZUNhY2hlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxQUY4OUE0MjE1MThGREVBMDBFNTQ3QjUgLyogVGlsZWRCYWNraW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0OTg3NzBGMzEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjU1QjNEREMxMjUxRjEyRDAwM0VGMjY5IC8qIFRpbWVJbnB1dFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGlu
ZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ2MDgsOSArMjQ2MTQsNiBAQAog
CQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBp
biBIZWFkZXJzICovLAotCQkJCUJDRTMyQjlDMTUxN0MwQjIwMEY1NDJFQyAvKiBSZW5kZXJNdWx0
aUNvbHVtblNldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNFOTNGNDUxNTE3QzU2NzAwOENDRjc0
IC8qIFJlbmRlclJlZ2lvblNldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFGODlBNDIxNTE4RkRF
QTAwRTU0N0I1IC8qIFRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjY5NCw2ICsy
NjY5Nyw3IEBACiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hp
dmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExl
Z2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2
MDA3RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU1NzJEM0NDMTUxOThG
OUMwMDU4OTZBNiAvKiBMZW5ndGhGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOENB
REYyQUExMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4QzBFMzM0QzEzOEE5MkM3MDA4REE5NEYgLyogTGV2ZWxEQlRyYW5zYWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCThDMEUzMzRFMTM4QTkyQzcwMDhEQTk0RiAvKiBMZXZlbERC
V3JpdGVCYXRjaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTUxLDEyICsyNjk1NSwxNCBAQAog
CQkJCUFCRERGRTc5MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNDU0NDI0RTExOUIzNjg3MDA5QkU5MTIgLyogUmVuZGVyTWV0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0NTgyN0YxNTEyOTlDMTAwNjFBNTU2IC8qIFJlbmRlck11
bHRpQ29sdW1uQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNFMzJCOUUxNTE3QzIyNzAw
RjU0MkVDIC8qIFJlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RUE0ODdGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM2MEVGQjcwRjMzQTBFNzAwODEyQTkzIC8qIFJlbmRlck9iamVjdENoaWxkTGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREVEMDBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVy
UGFydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDNCRjU5QzExNDkyOTI4MDBDNjQzQ0EgLyog
UmVuZGVyUHJvZ3Jlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUE1NzRGMjQxMzFEQjkzOTAw
NDcxQjg4IC8qIFJlbmRlclF1b3RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ3MEFENjU3MTNF
MTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNF
OTNGNDcxNTE3QzZENTAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODcxREZFMjBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBODQ2RDYwREM2N0EzNTAwMjZDMzA5IC8qIFJlbmRlclJlcGxp
Y2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3OUZBRUQxMDlBRTM3NTAwREVENjU1IC8qIFJl
bmRlclJ1YnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzU5NCw4ICsyNzYwMCw2IEBACiAJCQkJ
RTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJQkNFMzJCOUUxNTE3QzIyNzAwRjU0MkVDIC8qIFJlbmRlck11
bHRpQ29sdW1uU2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDRTkzRjQ3MTUxN0M2RDUwMDhD
Q0Y3NCAvKiBSZW5kZXJSZWdpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMSBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICAgIENvcHlyaWdodCAoQykgMjAxMSBSaWsgQ2FiYW5pZXIgKGNhYmFuaWVyQGFkb2Jl
LmNvbSkKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiTGVuZ3RoLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW50IG1pbWludW1WYWx1ZUZvckxlbmd0aChMZW5ndGgg
bGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpCit7CisgICAg
c3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgcmV0dXJu
IGxlbmd0aC52YWx1ZSgpOworICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgaWYgKHJvdW5kUGVy
Y2VudGFnZXMpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZChtYXhp
bXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKSk7CisgICAgICAgIC8vIERvbid0
IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBmbG9hdC4gSXQgaXMgbmVlZGVkIGZvciByb3VuZGlu
ZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMgdGhhdCB1c2UgdGhlIEZQVSBzdGFjay4KKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1
ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpKTsKKyAgICBjYXNlIENhbGN1bGF0ZWQ6Cisg
ICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7
CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFJlbGF0aXZlOgor
ICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgorICAgIGNhc2UgVW5k
ZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitp
bnQgdmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCBy
b3VuZFBlcmNlbnRhZ2VzKQoreworICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgeworICAgIGNh
c2UgRml4ZWQ6CisgICAgY2FzZSBQZXJjZW50OgorICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAg
ICAgcmV0dXJuIG1pbWludW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgcm91
bmRQZXJjZW50YWdlcyk7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gbWF4aW11bVZh
bHVlOworICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAgY2FzZSBN
aW5JbnRyaW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxheW91dCBp
cyBzdXBwb3J0ZWQgdGhpcyBjb3B5IG9mIGZsb2F0VmFsdWVGb3JMZW5ndGgoKSBjYW4gYmUgcmVt
b3ZlZC4gU2VlIGJ1ZyA3MTE0My4KK2Zsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxl
bmd0aCwgaW50IG1heGltdW1WYWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsK
KyAgICBjYXNlIEZpeGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFsdWUoKTsK
KyAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4
aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7CisgICAgY2FzZSBBdXRvOgor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7CisgICAgY2Fz
ZSBDYWxjdWxhdGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1
ZShtYXhpbXVtVmFsdWUpOyAgICAgICAgICAgICAgICAKKyAgICBjYXNlIFJlbGF0aXZlOgorICAg
IGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgorICAgIGNhc2UgVW5kZWZp
bmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitmbG9h
dCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgsIGZsb2F0IG1heGltdW1WYWx1ZSkK
K3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICBjYXNlIEZpeGVkOgorICAgICAg
ICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFsdWUoKTsKKyAgICBjYXNlIFBlcmNlbnQ6CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNl
bnQoKSAvIDEwMC4wZik7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7CisgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICBy
ZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOworICAgIGNh
c2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAgY2FzZSBNaW5JbnRyaW5zaWM6
CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDExMTQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9MZW5ndGhGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsOTkgKzI0LDE0IEBACiAj
aWZuZGVmIExlbmd0aEZ1bmN0aW9uc19oCiAjZGVmaW5lIExlbmd0aEZ1bmN0aW9uc19oCiAKLSNp
bmNsdWRlICJMZW5ndGguaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgaW50IG1p
bWludW1WYWx1ZUZvckxlbmd0aChMZW5ndGggbGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBib29s
IHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkKLXsKLSAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkp
IHsKLSAgICBjYXNlIEZpeGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7Ci0gICAg
Y2FzZSBQZXJjZW50OgotICAgICAgICBpZiAocm91bmRQZXJjZW50YWdlcykKLSAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJj
ZW50KCkgLyAxMDAuMGYpKTsKLSAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0
IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNo
aW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNrLgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAv
IDEwMC4wZikpOwotICAgIGNhc2UgQ2FsY3VsYXRlZDoKLSAgICAgICAgcmV0dXJuIGxlbmd0aC5u
b25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsKLSAgICBjYXNlIEF1dG86Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5zaWM6Ci0g
ICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlubGluZSBpbnQgdmFsdWVGb3JMZW5n
dGgoTGVuZ3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2Vz
ID0gZmFsc2UpCi17Ci0gICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2FzZSBGaXhl
ZDoKLSAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAgICByZXR1
cm4gbWltaW51bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCByb3VuZFBlcmNl
bnRhZ2VzKTsKLSAgICBjYXNlIEF1dG86Ci0gICAgICAgIHJldHVybiBtYXhpbXVtVmFsdWU7Ci0g
ICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJpbnNpYzoKLSAgICBjYXNlIE1pbkludHJp
bnNpYzoKLSAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotLy8gRklYTUU6IHdoZW4gc3VicGl4ZWwgbGF5b3V0IGlzIHN1cHBv
cnRlZCB0aGlzIGNvcHkgb2YgZmxvYXRWYWx1ZUZvckxlbmd0aCgpIGNhbiBiZSByZW1vdmVkLiBT
ZWUgYnVnIDcxMTQzLgotaW5saW5lIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxl
bmd0aCwgaW50IG1heGltdW1WYWx1ZSkKLXsKLSAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsK
LSAgICBjYXNlIEZpeGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFsdWUoKTsK
LSAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4
aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7Ci0gICAgY2FzZSBBdXRvOgot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7Ci0gICAgY2Fz
ZSBDYWxjdWxhdGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1
ZShtYXhpbXVtVmFsdWUpOyAgICAgICAgICAgICAgICAKLSAgICBjYXNlIFJlbGF0aXZlOgotICAg
IGNhc2UgSW50cmluc2ljOgotICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgIGNhc2UgVW5kZWZp
bmVkOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQorc3RydWN0
IExlbmd0aDsKIAotaW5saW5lIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxlbmd0
aCwgZmxvYXQgbWF4aW11bVZhbHVlKQotewotICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewot
ICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAgIHJldHVybiBsZW5ndGguZ2V0RmxvYXRWYWx1ZSgpOwot
ICAgIGNhc2UgUGVyY2VudDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhp
bXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKTsKLSAgICBjYXNlIEF1dG86Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlKTsKLSAgICBjYXNl
IENhbGN1bGF0ZWQ6Ci0gICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVl
KG1heGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJpbnNpYzoK
LSAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KK2ludCBtaW1pbnVtVmFsdWVGb3JMZW5n
dGgoTGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxz
ZSk7CitpbnQgdmFsdWVGb3JMZW5ndGgoTGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBib29sIHJv
dW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0
aCwgaW50IG1heGltdW1WYWx1ZSk7CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCwg
ZmxvYXQgbWF4aW11bVZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>
<flag name="commit-queue"
          id="136798"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133040</attachid>
            <date>2012-03-21 07:53:16 -0700</date>
            <delta_ts>2012-03-22 10:08:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18962</size>
            <attacher name="Joe Thomas">joethomas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTUzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAzLTIxICBKb2UgVGhv
bWFzICA8am9ldGhvbWFzQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNYWtlIExlbmd0aCBDYWxj
dWxhdGlvbiBmdW5jdGlvbnMgcmVndWxhci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxNzMzCisKKyAgICAgICAgTWFraW5nIHRoZSBMZW5ndGggY2Fs
Y3VsYXRpb24gZnVuY3Rpb25zIHJlZ3VsYXIgYW5kIG1vdmluZyB0aGVtIHRvIExlbmd0aEZ1bmN0
aW9ucy5jcHAgZmlsZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bWltaW51bVZh
bHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAqIGNzcy9MZW5ndGhG
dW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBUYWthc2hpIFRv
eW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFtX
ZWJTb2NrZXRdIHByb3ZpZGUgV2ViRnJhbWVDbGllbnQgd2l0aCBhIGNoYW5jZSBvZgpJbmRleDog
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExMTUzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00OTksNiArNDk5LDcgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIGNzcy9DU1NXcmFwU2hhcGVzLmNwcAogICAgIGNzcy9Gb250RmVhdHVy
ZVZhbHVlLmNwcAogICAgIGNzcy9Gb250VmFsdWUuY3BwCisgICAgY3NzL0xlbmd0aEZ1bmN0aW9u
cy5jcHAKICAgICBjc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwCiAgICAgY3NzL01lZGlhTGlzdC5j
cHAKICAgICBjc3MvTWVkaWFRdWVyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkocmV2aXNpb24gMTExNTM3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTY0Nyw2ICsxNjQ3LDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFGZWF0dXJlTmFtZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFt
ZXMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDExMTUzNykKKysrIFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw2ICs0NzUsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBjc3MvQ1NTV3JhcFNoYXBlcy5jcHAgXAogICAgIGNzcy9Gb250RmVhdHVyZVZh
bHVlLmNwcCBcCiAgICAgY3NzL0ZvbnRWYWx1ZS5jcHAgXAorICAgIGNzcy9MZW5ndGhGdW5jdGlv
bnMuY3BwIFwKICAgICBjc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwIFwKICAgICBjc3MvTWVkaWFM
aXN0LmNwcCBcCiAgICAgY3NzL01lZGlhUXVlcnkuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHJldmlzaW9uIDExMTUzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQzMCw2ICsyNDMwLDcgQEAKICAgICAgICAgICAgICdjc3MvRm9udEZlYXR1
cmVWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvRm9udFZhbHVlLmNwcCcsCiAgICAgICAgICAg
ICAnY3NzL0ZvbnRWYWx1ZS5oJywKKyAgICAgICAgICAgICdjc3MvTGVuZ3RoRnVuY3Rpb25zLmNw
cCcsCiAgICAgICAgICAgICAnY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcCcsCiAgICAgICAgICAg
ICAnY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgnLAogICAgICAgICAgICAgJ2Nzcy9NZWRpYUxpc3Qu
Y3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCShyZXZpc2lvbiAxMTE1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY0NzQsNiArMzY0NzQsMTAgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXExlbmd0
aEZ1bmN0aW9ucy5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGNzc1xMZW5ndGhGdW5jdGlvbnMuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxMTE1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU5NjEsNiArNTk2MSw3IEBACiAJCUU0
QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8q
IFJlbmRlck1lZGlhLmggKi87IH07CiAJCUU0RDY4Nzc3MEVEN0FFM0QwMDZFQTk3OCAvKiBQdXJn
ZWFibGVCdWZmZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5j
cHAgKi87IH07CiAJCUU0RDY4Nzc5MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDY4Nzc4
MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXIuaCAqLzsgfTsKKwkJRTU3MkQzQ0Mx
NTE5OEY5QzAwNTg5NkE2IC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTcyRDNDQjE1MTk4RjlDMDA1ODk2QTYgLyog
TGVuZ3RoRnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJRTVCQTdENjMxNTE0MzdDQTAwRkUxRTNGIC8q
IExlbmd0aEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTVCQTdENjIxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVEMkJBODND
MDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUQyQkE4M0IwOUEyNEI5MTAwNkMwQUM0IC8qIERv
Y3VtZW50TWFya2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRUQ1MDFEQzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkw
MEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi87IH07CkBAIC0xMzA3OSw2ICsxMzA4MCw3IEBACiAJ
CUU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNEQ2ODc3NjBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1cmdlYWJsZUJ1ZmZlck1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RDY4Nzc4MEVEN0FFNEYwMDZF
QTk3OCAvKiBQdXJnZWFibGVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHVyZ2VhYmxlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU1NzJE
M0NCMTUxOThGOUMwMDU4OTZBNiAvKiBMZW5ndGhGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVuZ3RoRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTVCQTdENjIxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZW5ndGhGdW5jdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUQyQkE4M0IwOUEyNEI5MTAwNkMwQUM0
IC8qIERvY3VtZW50TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERv
Y3VtZW50TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVENTAxREM1MEIy
NDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gRWRpdG9yTWFjLm1tOyBwYXRoID0gbWFjL0VkaXRvck1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNjQyLDcgKzEzNjQ0LDcgQEAKIAkJCQkxQUU4
MkVDOTBDQUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLywKIAkJCQlCMjIyNzdDQTBEMDBCRjFF
MDA3MUI3ODIgLyogc3ZnICovLAogCQkJCTQxN0RBNENEMTM3MzQyMDQwMDdDNTdGQiAvKiB0ZXN0
aW5nICovLAotCQkJCUZEMzE1RkEyMTJCMDI1QjEwMEMxQTM1OSAvKiB3ZWJhdWRpbyAqLywKKwkJ
CQlGRDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogTW9kdWxlcy93ZWJhdWRpbyAqLywKIAkJCQky
RTQzNDYzMTBGNTQ2QTY4MDBCMEYxQkEgLyogd29ya2VycyAqLywKIAkJCQlFMUYwNDI0MzA5ODM5
Mzg5MDA2Njk0RUEgLyogeG1sICovLAogCQkJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBE
ZXJpdmVkIFNvdXJjZXMgKi8sCkBAIC0xOTI2OCw4ICsxOTI3MCw4IEBACiAJCQkJOTMwRkM2ODkx
MDcyQjkyODAwNDUyOTNFIC8qIFRleHRSZW5kZXJpbmdNb2RlLmggKi8sCiAJCQkJMzc2RENDRTAx
M0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovLAogCQkJCUE4MjRCNDY0MEUyRUYyRUEw
MDgxQTdCNyAvKiBUZXh0UnVuLmggKi8sCi0JCQkJMzdDMjhBNjcxMEY2NTlDQzAwOEM3ODEzIC8q
IFR5cGVzZXR0aW5nRmVhdHVyZXMuaCAqLywKIAkJCQkxQUY4OUE0MTE1MThGREVBMDBFNTQ3QjUg
LyogVGlsZWRCYWNraW5nLmggKi8sCisJCQkJMzdDMjhBNjcxMEY2NTlDQzAwOEM3ODEzIC8qIFR5
cGVzZXR0aW5nRmVhdHVyZXMuaCAqLywKIAkJCQlFNEFGQ0ZBNDBEQUYyOUEzMDBGNUY1NUMgLyog
VW5pdEJlemllci5oICovLAogCQkJCTkzOUIwMkVDMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0
ZXJhdG9yLmNwcCAqLywKIAkJCQk5MzlCMDJFRDBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVy
YXRvci5oICovLApAQCAtMjA0ODAsNiArMjA0ODIsNyBAQAogCQkJCUNENEUwQUZBMTFGN0JDMjcw
MDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLywKIAkJCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcw
RTMgLyogZnVsbHNjcmVlblF1aWNrVGltZS5jc3MgKi8sCiAJCQkJOTNDQTRDOTkwOURGOTNGQTAw
REY4Njc3IC8qIGh0bWwuY3NzICovLAorCQkJCUU1NzJEM0NCMTUxOThGOUMwMDU4OTZBNiAvKiBM
ZW5ndGhGdW5jdGlvbnMuY3BwICovLAogCQkJCUU1QkE3RDYyMTUxNDM3Q0EwMEZFMUUzRiAvKiBM
ZW5ndGhGdW5jdGlvbnMuaCAqLywKIAkJCQk5M0NBNEM5QTA5REY5M0ZBMDBERjg2NzcgLyogbWFr
ZS1jc3MtZmlsZS1hcnJheXMucGwgKi8sCiAJCQkJOTNDQTRDOUIwOURGOTNGQTAwREY4Njc3IC8q
IG1ha2Vwcm9wLnBsICovLApAQCAtMjExNjksNyArMjExNzIsNyBAQAogCQkJcGF0aCA9IG9wZW5n
bDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUZEMzE1RkEyMTJCMDI1QjEw
MEMxQTM1OSAvKiB3ZWJhdWRpbyAqLyA9IHsKKwkJRkQzMTVGQTIxMkIwMjVCMTAwQzFBMzU5IC8q
IE1vZHVsZXMvd2ViYXVkaW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUZENTY4NkM3MTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5j
cHAgKi8sCkBAIC0yMzgwNiw2ICsyMzgwOSw3IEBACiAJCQkJQUJEREZFN0EwQTVDNkU3MDAwQTNF
MTFEIC8qIFJlbmRlck1lbnVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDU0NDI0RjExOUIz
Njg3MDA5QkU5MTIgLyogUmVuZGVyTWV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzUyRkQ2
MTUxMjk4RDIwMDNGOTE0QiAvKiBSZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQ0UzMkI5QzE1MTdDMEIyMDBGNTQyRUMgLyogUmVuZGVyTXVsdGlDb2x1bW5TZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODgwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkNDOERGMEYzMjg4MTAwMEE5REYyNiAvKiBS
ZW5kZXJPYmplY3RDaGlsZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkE5MzA4MTAzMzMx
OTMwMDdCMjVEMSAvKiBSZW5kZXJPdmVyZmxvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzgxMyw2
ICsyMzgxNyw3IEBACiAJCQkJQTQzQkY1OUQxMTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dy
ZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QTU3NEYyNTEzMURCOTM5MDA0NzFCODggLyogUmVu
ZGVyUXVvdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ3MEFENjU4MTNFMTM0MkIwMDVCNTBCNCAv
KiBSZW5kZXJSZWdpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRTkzRjQ1MTUxN0M1NjcwMDhD
Q0Y3NCAvKiBSZW5kZXJSZWdpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERkUzMEEx
NTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJSZXBsYWNlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNB
ODQ2RDcwREM2N0EzNTAwMjZDMzA5IC8qIFJlbmRlclJlcGxpY2EuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NzlGQUVFMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmggaW4gSGVhZGVycyAq
LywKQEAgLTI0NDA2LDYgKzI0NDExLDcgQEAKIAkJCQlFMUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIg
LyogVGhyZWFkR2xvYmFsRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTg1QkNGMjkwRjMyNzlD
RTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNzE2MEIx
NDlCQzREQjAwMTZFQzE5IC8qIFRpbGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFGODlB
NDIxNTE4RkRFQTAwRTU0N0I1IC8qIFRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDk4NzcwRjMxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY1NUIzRERDMTI1MUYxMkQwMDNFRjI2OSAvKiBUaW1lSW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NjA4LDkgKzI0NjE0LDYgQEAKIAkJCQlFMUJFNTEy
RTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQ0UzMkI5QzE1MTdDMEIyMDBGNTQyRUMgLyogUmVuZGVyTXVsdGlDb2x1bW5TZXQu
aCBpbiBIZWFkZXJzICovLAotCQkJCUJDRTkzRjQ1MTUxN0M1NjcwMDhDQ0Y3NCAvKiBSZW5kZXJS
ZWdpb25TZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBRjg5QTQyMTUxOEZERUEwMEU1NDdCNSAv
KiBUaWxlZEJhY2tpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjY2OTQsNiArMjY2OTcsNyBAQAog
CQkJCTUxMkREOEY0MEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNo
aXZlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNjVCRUEwRUFDREYxNjAwN0U0NTMzIC8q
IExlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNTcyRDNDQzE1MTk4RjlDMDA1ODk2QTYg
LyogTGVuZ3RoRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThDQURGMkFBMTM1QzdC
MzYwMDlFRjQzRiAvKiBMZXZlbERCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEMw
RTMzNEMxMzhBOTJDNzAwOERBOTRGIC8qIExldmVsREJUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4QzBFMzM0RTEzOEE5MkM3MDA4REE5NEYgLyogTGV2ZWxEQldyaXRlQmF0Y2gu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjk1MSwxMiArMjY5NTUsMTQgQEAKIAkJCQlBQkRERkU3
OTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTQ1NDQyNEUxMTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNDU4MjdGMTUxMjk5QzEwMDYxQTU1NiAvKiBSZW5kZXJNdWx0aUNvbHVtbkJs
b2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDRTMyQjlFMTUxN0MyMjcwMEY1NDJFQyAvKiBS
ZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3RjA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBF
RkI3MEYzM0EwRTcwMDgxMkE5MyAvKiBSZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTg3MURFRDAwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlclBhcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTQzQkY1OUMxMTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dy
ZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVBNTc0RjI0MTMxREI5MzkwMDQ3MUI4OCAvKiBS
ZW5kZXJRdW90ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENzBBRDY1NzEzRTEzNDJCMDA1QjUw
QjQgLyogUmVuZGVyUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDRTkzRjQ3MTUxN0M2
RDUwMDhDQ0Y3NCAvKiBSZW5kZXJSZWdpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3
MURGRTIwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDQTg0NkQ2MERDNjdBMzUwMDI2QzMwOSAvKiBSZW5kZXJSZXBsaWNhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0NzlGQUVEMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjc1OTQsOCArMjc2MDAsNiBAQAogCQkJCUUxQkU1MTJEMENG
NkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUJDRTMyQjlFMTUxN0MyMjcwMEY1NDJFQyAvKiBSZW5kZXJNdWx0aUNvbHVtblNl
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQ0U5M0Y0NzE1MTdDNkQ1MDA4Q0NGNzQgLyogUmVu
ZGVyUmVnaW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0xlbmd0aEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0xl
bmd0aEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTGVu
Z3RoRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTEgUmlrIENhYmFuaWVyIChjYWJhbmllckBhZG9iZS5jb20pCisgICAg
Q29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMZW5ndGhGdW5jdGlvbnMuaCIKKworI2luY2x1ZGUgIkxlbmd0aC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2ludCBtaW1pbnVtVmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxlbmd0aCwgaW50
IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKQoreworICAgIHN3aXRjaCAobGVu
Z3RoLnR5cGUoKSkgeworICAgIGNhc2UgRml4ZWQ6CisgICAgICAgIHJldHVybiBsZW5ndGgudmFs
dWUoKTsKKyAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgIGlmIChyb3VuZFBlcmNlbnRhZ2VzKQor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocm91bmQobWF4aW11bVZhbHVlICog
bGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZikpOworICAgICAgICAvLyBEb24ndCByZW1vdmUgdGhl
IGV4dHJhIGNhc3QgdG8gZmxvYXQuIEl0IGlzIG5lZWRlZCBmb3Igcm91bmRpbmcgb24gMzItYml0
IEludGVsIG1hY2hpbmVzIHRoYXQgdXNlIHRoZSBGUFUgc3RhY2suCisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUgKiBsZW5ndGgu
cGVyY2VudCgpIC8gMTAwLjBmKSk7CisgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICByZXR1
cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOworICAgIGNhc2Ug
QXV0bzoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBSZWxhdGl2ZToKKyAgICBjYXNlIElu
dHJpbnNpYzoKKyAgICBjYXNlIE1pbkludHJpbnNpYzoKKyAgICBjYXNlIFVuZGVmaW5lZDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IHZhbHVlRm9y
TGVuZ3RoKExlbmd0aCBsZW5ndGgsIGludCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50
YWdlcykKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICBjYXNlIEZpeGVkOgor
ICAgIGNhc2UgUGVyY2VudDoKKyAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAgIHJldHVybiBt
aW1pbnVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHJvdW5kUGVyY2VudGFn
ZXMpOworICAgIGNhc2UgQXV0bzoKKyAgICAgICAgcmV0dXJuIG1heGltdW1WYWx1ZTsKKyAgICBj
YXNlIFJlbGF0aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2lj
OgorICAgIGNhc2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiAwOworfQorCisvLyBGSVhNRTogd2hlbiBzdWJwaXhlbCBsYXlvdXQgaXMgc3VwcG9ydGVk
IHRoaXMgY29weSBvZiBmbG9hdFZhbHVlRm9yTGVuZ3RoKCkgY2FuIGJlIHJlbW92ZWQuIFNlZSBi
dWcgNzExNDMuCitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgsIGludCBt
YXhpbXVtVmFsdWUpCit7CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBG
aXhlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC5nZXRGbG9hdFZhbHVlKCk7CisgICAgY2FzZSBQ
ZXJjZW50OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAq
IGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpOworICAgIGNhc2UgQXV0bzoKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUpOworICAgIGNhc2UgQ2FsY3VsYXRl
ZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZh
bHVlKTsgICAgICAgICAgICAgICAgCisgICAgY2FzZSBSZWxhdGl2ZToKKyAgICBjYXNlIEludHJp
bnNpYzoKKyAgICBjYXNlIE1pbkludHJpbnNpYzoKKyAgICBjYXNlIFVuZGVmaW5lZDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZmxvYXQgZmxvYXRWYWx1
ZUZvckxlbmd0aChMZW5ndGggbGVuZ3RoLCBmbG9hdCBtYXhpbXVtVmFsdWUpCit7CisgICAgc3dp
dGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgcmV0dXJuIGxl
bmd0aC5nZXRGbG9hdFZhbHVlKCk7CisgICAgY2FzZSBQZXJjZW50OgorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAu
MGYpOworICAgIGNhc2UgQXV0bzoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Piht
YXhpbXVtVmFsdWUpOworICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0
aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsKKyAgICBjYXNlIFJlbGF0aXZl
OgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgorICAgIGNhc2Ug
VW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3Ro
RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0
aW9ucy5oCShyZXZpc2lvbiAxMTE1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDk5ICsyNCwxNCBAQAogI2lmbmRlZiBMZW5n
dGhGdW5jdGlvbnNfaAogI2RlZmluZSBMZW5ndGhGdW5jdGlvbnNfaAogCi0jaW5jbHVkZSAiTGVu
Z3RoLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIGludCBtaW1pbnVtVmFsdWVG
b3JMZW5ndGgoTGVuZ3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNl
bnRhZ2VzID0gZmFsc2UpCi17Ci0gICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2Fz
ZSBGaXhlZDoKLSAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOwotICAgIGNhc2UgUGVyY2Vu
dDoKLSAgICAgICAgaWYgKHJvdW5kUGVyY2VudGFnZXMpCi0gICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50Pihyb3VuZChtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAw
LjBmKSk7Ci0gICAgICAgIC8vIERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBmbG9hdC4g
SXQgaXMgbmVlZGVkIGZvciByb3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMgdGhhdCB1
c2UgdGhlIEZQVSBzdGFjay4KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpKTsK
LSAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3Vs
YXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBBdXRvOgotICAgICAgICByZXR1cm4g
MDsKLSAgICBjYXNlIFJlbGF0aXZlOgotICAgIGNhc2UgSW50cmluc2ljOgotICAgIGNhc2UgTWlu
SW50cmluc2ljOgotICAgIGNhc2UgVW5kZWZpbmVkOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgaW50IHZhbHVlRm9yTGVuZ3RoKExlbmd0aCBs
ZW5ndGgsIGludCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKQot
ewotICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAgIGNhc2UgRml4ZWQ6Ci0gICAgY2Fz
ZSBQZXJjZW50OgotICAgIGNhc2UgQ2FsY3VsYXRlZDoKLSAgICAgICAgcmV0dXJuIG1pbWludW1W
YWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgcm91bmRQZXJjZW50YWdlcyk7Ci0g
ICAgY2FzZSBBdXRvOgotICAgICAgICByZXR1cm4gbWF4aW11bVZhbHVlOwotICAgIGNhc2UgUmVs
YXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAg
Y2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLS8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBzdXBwb3J0ZWQgdGhpcyBj
b3B5IG9mIGZsb2F0VmFsdWVGb3JMZW5ndGgoKSBjYW4gYmUgcmVtb3ZlZC4gU2VlIGJ1ZyA3MTE0
My4KLWlubGluZSBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgsIGludCBt
YXhpbXVtVmFsdWUpCi17Ci0gICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAgY2FzZSBG
aXhlZDoKLSAgICAgICAgcmV0dXJuIGxlbmd0aC5nZXRGbG9hdFZhbHVlKCk7Ci0gICAgY2FzZSBQ
ZXJjZW50OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAq
IGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpOwotICAgIGNhc2UgQXV0bzoKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUpOwotICAgIGNhc2UgQ2FsY3VsYXRl
ZDoKLSAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZh
bHVlKTsgICAgICAgICAgICAgICAgCi0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNlIEludHJp
bnNpYzoKLSAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KK3N0cnVjdCBMZW5ndGg7CiAK
LWlubGluZSBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgsIGZsb2F0IG1h
eGltdW1WYWx1ZSkKLXsKLSAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICBjYXNlIEZp
eGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFsdWUoKTsKLSAgICBjYXNlIFBl
cmNlbnQ6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICog
bGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7Ci0gICAgY2FzZSBBdXRvOgotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBDYWxjdWxhdGVk
OgotICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFs
dWUpOwotICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgY2FzZSBN
aW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIDA7Ci19CitpbnQgbWltaW51bVZhbHVlRm9yTGVuZ3RoKExlbmd0aCwg
aW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworaW50IHZh
bHVlRm9yTGVuZ3RoKExlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRh
Z2VzID0gZmFsc2UpOworZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChMZW5ndGgsIGludCBtYXhp
bXVtVmFsdWUpOworZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChMZW5ndGgsIGZsb2F0IG1heGlt
dW1WYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>
<flag name="review"
          id="136891"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="136892"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133286</attachid>
            <date>2012-03-22 10:08:22 -0700</date>
            <delta_ts>2012-03-22 11:11:12 -0700</delta_ts>
            <desc>Patch-BasedOn-ReviewComments</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14921</size>
            <attacher name="Joe Thomas">joethomas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTIyICBKb2UgVGhv
bWFzICA8am9ldGhvbWFzQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNYWtlIExlbmd0aCBDYWxj
dWxhdGlvbiBmdW5jdGlvbnMgbm9uLWlubGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3MzMKKworICAgICAgICBDdXJyZW50bHkgbGVuZ3RoIGNh
bGN1bGF0aW9uIGZ1bmN0aW9ucyBpbiBMZW5ndGhGdW5jdGlvbnMuaCBhcmUgaW5saW5lLiBUaGVz
ZSBmdW5jdGlvbnMgYXJlIHByZXR0eSBiaWcgdG8gYmUgaW5saW5lLgorICAgICAgICBBbmQgdGhl
c2UgZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0byBncm93IGFnYWluIHdoZW4gbmV3IGxlbmd0aCB1
bml0cyB3aWxsIGJlIGludHJvZHVjZWQgaW4gYnVnIDI3MTYwLgorCisgICAgICAgIEEgZGVjZW50
IHJ1bGUgb2YgdGh1bWIgaXMgdG8gbm90IGlubGluZSBhIGZ1bmN0aW9uIGlmIGl0IGlzIG1vcmUg
dGhhbiAxMCBsaW5lcyBsb25nLiBBbHNvIGl0J3MgdHlwaWNhbGx5IG5vdCBjb3N0IGVmZmVjdGl2
ZSB0byBpbmxpbmUKKyAgICAgICAgZnVuY3Rpb25zIHdpdGggbG9vcHMgb3Igc3dpdGNoIHN0YXRl
bWVudHMuIChSZWZlcmVuY2U6IGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sI0lubGluZV9GdW5jdGlvbnMpLgorCisgICAgICAgIFJh
biBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9odG1sNS1mdWxsLXJlbmRlci5odG1sIG9uIE1hYyBT
bm93LUxlb3BhcmQgd2l0aCBhbmQgd2l0aG91dCB0aGUgcGF0Y2ggYW5kIGRpZCBub3Qgc2VlIG11
Y2ggcGVyZm9ybWFuY2UgZGlmZmVyZW5jZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9MZW5ndGhG
dW5jdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltaW51bVZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAq
IGNzcy9MZW5ndGhGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIy
ICBLcmlzdMOzZiBLb3N6dHnDsyAgPGtrcmlzdG9mQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAg
ICBbUXRdIEZpeCBRdCBtaW5pbWFsIGJ1aWxkIGFmdGVyIHIxMTE2OTIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMTE3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDk5LDYgKzQ5OSw3IEBAIFNFVChXZWJDb3JlX1NPVVJD
RVMKICAgICBjc3MvQ1NTV3JhcFNoYXBlcy5jcHAKICAgICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5j
cHAKICAgICBjc3MvRm9udFZhbHVlLmNwcAorICAgIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCiAg
ICAgY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcAogICAgIGNzcy9NZWRpYUxpc3QuY3BwCiAgICAg
Y3NzL01lZGlhUXVlcnkuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDExMTcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTE2NDcsNiArMTY0Nyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaCBcCisJ
U291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9MZW5ndGhGdW5jdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVy
ZU5hbWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmggXApJ
bmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMTE3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00NzUsNiArNDc1LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgY3NzL0NTU1dyYXBTaGFwZXMuY3BwIFwKICAgICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAg
XAogICAgIGNzcy9Gb250VmFsdWUuY3BwIFwKKyAgICBjc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcCBc
CiAgICAgY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcCBcCiAgICAgY3NzL01lZGlhTGlzdC5jcHAg
XAogICAgIGNzcy9NZWRpYVF1ZXJ5LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biAxMTE3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTI0MzAsNiArMjQzMCw3IEBACiAgICAgICAgICAgICAnY3NzL0ZvbnRGZWF0dXJlVmFsdWUu
aCcsCiAgICAgICAgICAgICAnY3NzL0ZvbnRWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9G
b250VmFsdWUuaCcsCisgICAgICAgICAgICAnY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAnLAogICAg
ICAgICAgICAgJ2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9N
ZWRpYUZlYXR1cmVOYW1lcy5oJywKICAgICAgICAgICAgICdjc3MvTWVkaWFMaXN0LmNwcCcsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2
aXNpb24gMTExNzA5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2NDc0LDYgKzM2NDc0LDEwIEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xMZW5ndGhGdW5jdGlv
bnMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxjc3NcTGVuZ3RoRnVuY3Rpb25zLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTExNzA5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01OTY1LDYgKzU5NjUsNyBAQAogCQlFNEMyNzk1OTBD
Rjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJN
ZWRpYS5oICovOyB9OwogCQlFNEQ2ODc3NzBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVm
ZmVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0RDY4Nzc2MEVEN0FFM0QwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXJNYWMuY3BwICovOyB9
OwogCQlFNEQ2ODc3OTBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ2ODc3ODBFRDdBRTRG
MDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggKi87IH07CisJCUU1NUY0OTdBMTUxQjg4ODAw
MEJCNjdEQiAvKiBMZW5ndGhGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTU1RjQ5NzkxNTFCODg4MDAwQkI2N0RCIC8qIExlbmd0aEZ1
bmN0aW9ucy5jcHAgKi87IH07CiAJCUU1QkE3RDYzMTUxNDM3Q0EwMEZFMUUzRiAvKiBMZW5ndGhG
dW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU1QkE3RDYyMTUxNDM3Q0EwMEZFMUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFRDJCQTgzQzA5QTI0Qjkx
MDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1h
cmtlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUVENTAxREM2MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkg
LyogRWRpdG9yTWFjLm1tICovOyB9OwpAQCAtMTMwODYsNiArMTMwODcsNyBAQAogCQlFNEMyNzk1
NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyTWVkaWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXJnZWFibGVCdWZmZXJNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyog
UHVyZ2VhYmxlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmdl
YWJsZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNTVGNDk3OTE1MUI4
ODgwMDBCQjY3REIgLyogTGVuZ3RoRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExlbmd0aEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU1QkE3RDYyMTUxNDM3Q0EwMEZFMUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVuZ3RoRnVuY3Rpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1
bWVudE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1h
cmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDUwMURDNTBCMjQ5RjI5MDBB
RTE4RDkgLyogRWRpdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IEVkaXRvck1hYy5tbTsgcGF0aCA9IG1hYy9FZGl0b3JNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ5MCw2ICsyMDQ5Miw3IEBACiAJCQkJQ0Q0RTBBRkExMUY3
QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovLAogCQkJCUNEQkQ5M0JBMTMzM0JENEIw
MDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLywKIAkJCQk5M0NBNEM5OTA5REY5
M0ZBMDBERjg2NzcgLyogaHRtbC5jc3MgKi8sCisJCQkJRTU1RjQ5NzkxNTFCODg4MDAwQkI2N0RC
IC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJRTVCQTdENjIxNTE0MzdDQTAwRkUxRTNG
IC8qIExlbmd0aEZ1bmN0aW9ucy5oICovLAogCQkJCTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAv
KiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2
NzcgLyogbWFrZXByb3AucGwgKi8sCkBAIC0yNzYxMCw2ICsyNzYxMyw3IEBACiAJCQkJQkNFOTNG
NDcxNTE3QzZENTAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzkzRTVGRjE1MUE5OUYyMDAwNjZGMDYgLyogQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5MzkzRTYwNDE1MUE5QTE4MDAwNjZGMDYgLyogU3R5bGVDYWNoZWRJ
bWFnZVNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNTVGNDk3QTE1MUI4ODgwMDBCQjY3REIg
LyogTGVuZ3RoRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjEgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgICAg
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUmlrIENhYmFuaWVyIChjYWJhbmllckBhZG9iZS5jb20p
CisgICAgQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0
eSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKKworI2luY2x1ZGUgIkxlbmd0aC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2ludCBtaW1pbnVtVmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxlbmd0
aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKQoreworICAgIHN3aXRj
aCAobGVuZ3RoLnR5cGUoKSkgeworICAgIGNhc2UgRml4ZWQ6CisgICAgICAgIHJldHVybiBsZW5n
dGgudmFsdWUoKTsKKyAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgIGlmIChyb3VuZFBlcmNlbnRh
Z2VzKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocm91bmQobWF4aW11bVZh
bHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZikpOworICAgICAgICAvLyBEb24ndCByZW1v
dmUgdGhlIGV4dHJhIGNhc3QgdG8gZmxvYXQuIEl0IGlzIG5lZWRlZCBmb3Igcm91bmRpbmcgb24g
MzItYml0IEludGVsIG1hY2hpbmVzIHRoYXQgdXNlIHRoZSBGUFUgc3RhY2suCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUgKiBs
ZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKSk7CisgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAg
ICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOworICAg
IGNhc2UgQXV0bzoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBSZWxhdGl2ZToKKyAgICBj
YXNlIEludHJpbnNpYzoKKyAgICBjYXNlIE1pbkludHJpbnNpYzoKKyAgICBjYXNlIFVuZGVmaW5l
ZDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IHZh
bHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgsIGludCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcykKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICBjYXNlIEZp
eGVkOgorICAgIGNhc2UgUGVyY2VudDoKKyAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAgIHJl
dHVybiBtaW1pbnVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHJvdW5kUGVy
Y2VudGFnZXMpOworICAgIGNhc2UgQXV0bzoKKyAgICAgICAgcmV0dXJuIG1heGltdW1WYWx1ZTsK
KyAgICBjYXNlIFJlbGF0aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50
cmluc2ljOgorICAgIGNhc2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiAwOworfQorCisvLyBGSVhNRTogd2hlbiBzdWJwaXhlbCBsYXlvdXQgaXMgc3Vw
cG9ydGVkIHRoaXMgY29weSBvZiBmbG9hdFZhbHVlRm9yTGVuZ3RoKCkgY2FuIGJlIHJlbW92ZWQu
IFNlZSBidWcgNzExNDMuCitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgs
IGludCBtYXhpbXVtVmFsdWUpCit7CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAg
Y2FzZSBGaXhlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC5nZXRGbG9hdFZhbHVlKCk7CisgICAg
Y2FzZSBQZXJjZW50OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1W
YWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpOworICAgIGNhc2UgQXV0bzoKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUpOworICAgIGNhc2UgQ2Fs
Y3VsYXRlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4
aW11bVZhbHVlKTsgICAgICAgICAgICAgICAgCisgICAgY2FzZSBSZWxhdGl2ZToKKyAgICBjYXNl
IEludHJpbnNpYzoKKyAgICBjYXNlIE1pbkludHJpbnNpYzoKKyAgICBjYXNlIFVuZGVmaW5lZDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZmxvYXQgZmxv
YXRWYWx1ZUZvckxlbmd0aChMZW5ndGggbGVuZ3RoLCBmbG9hdCBtYXhpbXVtVmFsdWUpCit7Cisg
ICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgcmV0
dXJuIGxlbmd0aC5nZXRGbG9hdFZhbHVlKCk7CisgICAgY2FzZSBQZXJjZW50OgorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkg
LyAxMDAuMGYpOworICAgIGNhc2UgQXV0bzoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihtYXhpbXVtVmFsdWUpOworICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgcmV0dXJu
IGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsKKyAgICBjYXNlIFJl
bGF0aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgorICAg
IGNhc2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAw
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0
aEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxMTE3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTGVu
Z3RoRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDk5ICsyNCwxNCBAQAogI2lmbmRl
ZiBMZW5ndGhGdW5jdGlvbnNfaAogI2RlZmluZSBMZW5ndGhGdW5jdGlvbnNfaAogCi0jaW5jbHVk
ZSAiTGVuZ3RoLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIGludCBtaW1pbnVt
VmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3Vu
ZFBlcmNlbnRhZ2VzID0gZmFsc2UpCi17Ci0gICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0g
ICAgY2FzZSBGaXhlZDoKLSAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOwotICAgIGNhc2Ug
UGVyY2VudDoKLSAgICAgICAgaWYgKHJvdW5kUGVyY2VudGFnZXMpCi0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZChtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgp
IC8gMTAwLjBmKSk7Ci0gICAgICAgIC8vIERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBm
bG9hdC4gSXQgaXMgbmVlZGVkIGZvciByb3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMg
dGhhdCB1c2UgdGhlIEZQVSBzdGFjay4KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAu
MGYpKTsKLSAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFu
Q2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBBdXRvOgotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBjYXNlIFJlbGF0aXZlOgotICAgIGNhc2UgSW50cmluc2ljOgotICAgIGNh
c2UgTWluSW50cmluc2ljOgotICAgIGNhc2UgVW5kZWZpbmVkOgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgaW50IHZhbHVlRm9yTGVuZ3RoKExl
bmd0aCBsZW5ndGgsIGludCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZh
bHNlKQotewotICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewotICAgIGNhc2UgRml4ZWQ6Ci0g
ICAgY2FzZSBQZXJjZW50OgotICAgIGNhc2UgQ2FsY3VsYXRlZDoKLSAgICAgICAgcmV0dXJuIG1p
bWludW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgcm91bmRQZXJjZW50YWdl
cyk7Ci0gICAgY2FzZSBBdXRvOgotICAgICAgICByZXR1cm4gbWF4aW11bVZhbHVlOwotICAgIGNh
c2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgY2FzZSBNaW5JbnRyaW5zaWM6
Ci0gICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLS8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBzdXBwb3J0ZWQg
dGhpcyBjb3B5IG9mIGZsb2F0VmFsdWVGb3JMZW5ndGgoKSBjYW4gYmUgcmVtb3ZlZC4gU2VlIGJ1
ZyA3MTE0My4KLWlubGluZSBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgs
IGludCBtYXhpbXVtVmFsdWUpCi17Ci0gICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Ci0gICAg
Y2FzZSBGaXhlZDoKLSAgICAgICAgcmV0dXJuIGxlbmd0aC5nZXRGbG9hdFZhbHVlKCk7Ci0gICAg
Y2FzZSBQZXJjZW50OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1W
YWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpOwotICAgIGNhc2UgQXV0bzoKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUpOwotICAgIGNhc2UgQ2Fs
Y3VsYXRlZDoKLSAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4
aW11bVZhbHVlKTsgICAgICAgICAgICAgICAgCi0gICAgY2FzZSBSZWxhdGl2ZToKLSAgICBjYXNl
IEludHJpbnNpYzoKLSAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICBjYXNlIFVuZGVmaW5lZDoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KK3N0cnVjdCBMZW5n
dGg7CiAKLWlubGluZSBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKExlbmd0aCBsZW5ndGgsIGZs
b2F0IG1heGltdW1WYWx1ZSkKLXsKLSAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICBj
YXNlIEZpeGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFsdWUoKTsKLSAgICBj
YXNlIFBlcmNlbnQ6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZh
bHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7Ci0gICAgY2FzZSBBdXRvOgotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7Ci0gICAgY2FzZSBDYWxj
dWxhdGVkOgotICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhp
bXVtVmFsdWUpOwotICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAg
Y2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19CitpbnQgbWltaW51bVZhbHVlRm9yTGVuZ3RoKExl
bmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOwor
aW50IHZhbHVlRm9yTGVuZ3RoKExlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBl
cmNlbnRhZ2VzID0gZmFsc2UpOworZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChMZW5ndGgsIGlu
dCBtYXhpbXVtVmFsdWUpOworZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChMZW5ndGgsIGZsb2F0
IG1heGltdW1WYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>