<?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>3869</bug_id>
          
          <creation_ts>2005-07-06 03:13:32 -0700</creation_ts>
          <short_desc>Should use HTML Image element inplace of JS Image object</short_desc>
          <delta_ts>2006-01-21 16:03:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://docs.sun.com/source/816-6408-10/image.htm#1193409</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>6519</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Samrod">samg0d</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>maksim</cc>
    
    <cc>swillison</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>14043</commentid>
    <comment_count>0</comment_count>
    <who name="Samrod">samg0d</who>
    <bug_when>2005-07-06 03:13:34 -0700</bug_when>
    <thetext>The URL provides documentation rather than an example.

The .complete image property always returns &quot;undefined&quot; regardless of image load
status.  Not sure how else to check image load status in WebKit/Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14063</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2005-07-06 13:56:59 -0700</bug_when>
    <thetext>This property is supported by both Internet Explorer and Mozilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14457</commentid>
    <comment_count>2</comment_count>
      <attachid>2931</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-07-12 12:38:51 -0700</bug_when>
    <thetext>Created attachment 2931
Implement image.complete

This patch implements image.complete in the same way as Image.complete (the
javascript image object) works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14635</commentid>
    <comment_count>3</comment_count>
      <attachid>2931</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-07-13 23:57:46 -0700</bug_when>
    <thetext>Comment on attachment 2931
Implement image.complete

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14637</commentid>
    <comment_count>4</comment_count>
      <attachid>2931</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-07-13 23:58:45 -0700</bug_when>
    <thetext>Comment on attachment 2931
Implement image.complete

oh, wait, almost forgot - this needs a layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14638</commentid>
    <comment_count>5</comment_count>
    <who name="Vicki Murley">vicki</who>
    <bug_when>2005-07-14 00:53:19 -0700</bug_when>
    <thetext>I think this is also in Radar as &lt;rdar://problem/3852987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14686</commentid>
    <comment_count>6</comment_count>
    <who name="Guillaume Outters">guillaume.outters</who>
    <bug_when>2005-07-15 05:22:03 -0700</bug_when>
    <thetext>Shouldn&apos;t a lot more code be shared between img HTML elements and JavaScript Image objects? While 
trying to do some king of image preloader, I found those pretty annoying differences:

- the &apos;complete&apos; property as explained in this bug.
- if you give a JS Image object an onload function, the &apos;this&apos; in this function will not be the Image, 
instead it is the container Window. On the other hand, the onload of a document.createElement(&apos;img&apos;) 
gets the correct &apos;this&apos;.

Last difference: after the image is loaded, the JS one gets a width and a height, while the DOM one gets 
none; I believe this could be considered an expected behavior (although different from Firefox), as for 
any DOM object not inserted in the rendering tree (temporary workaround for us JavaScript coders: on 
the DOM img onload, create a JS Image, set its src to this.src, and obtain its width and height. Quite 
ugly, isn&apos;t it?).

I haven&apos;t already looked at the code, so I&apos;m not sure if this is the right thing to do, but I think letting 
this as one bug (as opposed to creating one for each difference, particularly for the &apos;this&apos; problem) 
reflects the fact that JS and DOM should be unified, not patched separately. Severity increase anyone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15851</commentid>
    <comment_count>7</comment_count>
      <attachid>3225</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-08-04 09:06:20 -0700</bug_when>
    <thetext>Created attachment 3225
Use HTMLImageElementImpl instead of Image

Looking at Opera, Mozilla and MacIE, they all seem to create a HTML img element
instead of a custom Image object. Here&apos;s a patch that makes height and width
work better for img elements and replaces the custom Image object with
HTMLImageElementImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15856</commentid>
    <comment_count>8</comment_count>
      <attachid>3225</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-04 11:26:23 -0700</bug_when>
    <thetext>Comment on attachment 3225
Use HTMLImageElementImpl instead of Image

This is a change that has huge implications -- do we perhaps need more than
just the one layout test?

Looks great to me, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15976</commentid>
    <comment_count>9</comment_count>
    <who name="Maks Orlovich">maksim</who>
    <bug_when>2005-08-05 08:00:23 -0700</bug_when>
    <thetext>http://bugs.kde.org/show_bug.cgi?id=64702   
http://bugs.kde.org/show_bug.cgi?id=77085  
http://bugs.kde.org/show_bug.cgi?id=98461  
   
have some potential things that should be fixed by this switch; so might be a  
good source for testcases, and illustrate why it&apos;s overall a right thing.  
Anyway, thanks for doing this, I am probably gonna merge this patch (after  
some prerequisites are in)...  
  
   </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16325</commentid>
    <comment_count>10</comment_count>
      <attachid>3305</attachid>
    <who name="Maks Orlovich">maksim</who>
    <bug_when>2005-08-09 17:54:07 -0700</bug_when>
    <thetext>Created attachment 3305
one more test

Here is a test (khtmltests/regression/tests/ecma/image2.html) based on the
first 2 bugs linked above. This one clearly demonstrates why Image needs to be
a DOM element. 

(the third bug is broken due to ERROR_EVENT vs. KHTML_ERROR_EVENT weirdness)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16618</commentid>
    <comment_count>11</comment_count>
      <attachid>3225</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-14 00:09:04 -0700</bug_when>
    <thetext>Comment on attachment 3225
Use HTMLImageElementImpl instead of Image

This patch doesn&apos;t compile.

There are references to Image::info in kjs_events.cpp and kjs_html.cpp that
need to be converted to the new scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16619</commentid>
    <comment_count>12</comment_count>
      <attachid>3372</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-14 00:12:40 -0700</bug_when>
    <thetext>Created attachment 3372
updated cut at the patch, but still doesn&apos;t address use of Image::info

This is the patch as it stands right now in my tip of tree (I&apos;m about to roll
it out), in case that helps finishing the job.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28626</commentid>
    <comment_count>13</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-01-16 15:25:57 -0800</bug_when>
    <thetext>*** Bug 5367 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29059</commentid>
    <comment_count>14</comment_count>
      <attachid>5803</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-01-20 15:39:58 -0800</bug_when>
    <thetext>Created attachment 5803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29267</commentid>
    <comment_count>15</comment_count>
      <attachid>5803</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-21 10:59:30 -0800</bug_when>
    <thetext>Comment on attachment 5803
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29281</commentid>
    <comment_count>16</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-21 13:15:55 -0800</bug_when>
    <thetext>The patch seems to include some layout test results but not the actual tests. Make sure those get committed when landing please.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2931</attachid>
            <date>2005-07-12 12:38:51 -0700</date>
            <delta_ts>2005-08-04 09:06:20 -0700</delta_ts>
            <desc>Implement image.complete</desc>
            <filename>image-complete.diff</filename>
            <type>text/plain</type>
            <size>5164</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">PyAuRFNfU3RvcmUKPyAuZ2RiX2hpc3RvcnkKPyBmb28KPyBGb3J3YXJkaW5nSGVhZGVycy9taXNj
L2hhc2h0YWJsZS5oCj8ga2h0bWwvLkRTX1N0b3JlCj8ga2h0bWwvY3NzLy5EU19TdG9yZQo/IGxh
eW91dC10ZXN0cy8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvY3NzMS8uRFNfU3RvcmUKPyBsYXlv
dXQtdGVzdHMvY3NzMS9iYXNpYy8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvY3NzMS9jbGFzc2lm
aWNhdGlvbi8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvZmFzdC8uRFNfU3RvcmUKPyBsYXlvdXQt
dGVzdHMvZmFzdC9kb20vLkRTX1N0b3JlCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2Nzcy1kb20t
cmVhZC0yLWV4cGVjdGVkLnR4dAo/IGxheW91dC10ZXN0cy9mYXN0L2RvbS9jc3MtZG9tLXJlYWQt
Mi5odG1sCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2Nzcy1zdHlsZS1kZWNsYXJhdGlvbi1pdGVt
LWV4cGVjdGVkLnR4dAo/IGxheW91dC10ZXN0cy9mYXN0L2RvbS9jc3Mtc3R5bGUtZGVjbGFyYXRp
b24taXRlbS5odG1sCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2lkcwo/IGxheW91dC10ZXN0cy9m
YXN0L2pzL2xvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKPyBsYXlvdXQtdGVzdHMvZmFzdC9q
cy9sb2NhdGlvbi1hc3NpZ24uaHRtbAo/IGxheW91dC10ZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9u
ZXctbG9jYXRpb24uaHRtbApJbmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL0NoYW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NDEzCmRp
ZmYgLXUgLXIxLjQ0MTMgQ2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjAwNS8wNy8xMiAxODoxMzo0
NgkxLjQ0MTMKKysrIENoYW5nZUxvZwkyMDA1LzA3LzEyIDE5OjQwOjMwCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMDUtMDctMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQG1hYy5jb20+CisKKwkt
IEZpeGVzIDxodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTM4
Njk+CisJCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3QgY2FzZXMgYWRkZWQ6IChOT05FKQorCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfaHRtbC5j
cHA6CisgICAgICAgIChLSlM6OkhUTUxFbGVtZW50OjppbWFnZUdldHRlcik6CisgICAgICAgICog
a2h0bWwvZWNtYS9ranNfaHRtbC5oOgorCUV4cG9zZSBpbWFnZS5jb21wbGV0ZQorCQorICAgICAg
ICAoS0pTOjpIVE1MRWxlbWVudDo6KToKKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfaW1hZ2Vp
bXBsLmNwcDoKKyAgICAgICAgKEhUTUxJbWFnZUVsZW1lbnRJbXBsOjpjb21wbGV0ZSk6CisgICAg
ICAgICoga2h0bWwvaHRtbC9odG1sX2ltYWdlaW1wbC5oOgorCUltcGxlbWVudCBjb21wbGV0ZSgp
CisJCiAyMDA1LTA3LTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVGVzdCBjYXNlcyBtb2RpZmllZDoKSW5kZXg6IGtodG1sL2VjbWEva2pzX2h0bWwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2VjbWEva2pzX2h0
bWwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEyMgpkaWZmIC11IC1yMS4xMjIga2pzX2h0
bWwuY3BwCi0tLSBranNfaHRtbC5jcHAJMjAwNS8wNy8wOSAyMDoxOTowNQkxLjEyMgorKysga2pz
X2h0bWwuY3BwCTIwMDUvMDcvMTIgMTk6NDA6MzIKQEAgLTEwNzAsMTEgKzEwNzAsMTIgQEAKICAg
Zm9jdXMJCUtKUzo6SFRNTEVsZW1lbnQ6OkFuY2hvckZvY3VzCQlEb250RGVsZXRlfEZ1bmN0aW9u
IDAKICAgdG9TdHJpbmcgICAgICBLSlM6OkhUTUxFbGVtZW50OjpBbmNob3JUb1N0cmluZyAgICAg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCiBAZW5kCi1AYmVnaW4gSFRNTEltYWdlRWxlbWVudFRh
YmxlIDE0CitAYmVnaW4gSFRNTEltYWdlRWxlbWVudFRhYmxlIDE1CiAgIG5hbWUJCUtKUzo6SFRN
TEVsZW1lbnQ6OkltYWdlTmFtZQkJRG9udERlbGV0ZQogICBhbGlnbgkJS0pTOjpIVE1MRWxlbWVu
dDo6SW1hZ2VBbGlnbgkJRG9udERlbGV0ZQogICBhbHQJCUtKUzo6SFRNTEVsZW1lbnQ6OkltYWdl
QWx0CQlEb250RGVsZXRlCiAgIGJvcmRlcglLSlM6OkhUTUxFbGVtZW50OjpJbWFnZUJvcmRlcgkJ
RG9udERlbGV0ZQorICBjb21wbGV0ZSAgS0pTOjpIVE1MRWxlbWVudDo6SW1hZ2VDb21wbGV0ZSAg
ICAgRG9udERlbGV0ZQogICBoZWlnaHQJS0pTOjpIVE1MRWxlbWVudDo6SW1hZ2VIZWlnaHQJCURv
bnREZWxldGUKICAgaHNwYWNlCUtKUzo6SFRNTEVsZW1lbnQ6OkltYWdlSHNwYWNlCQlEb250RGVs
ZXRlCiAgIGlzTWFwCQlLSlM6OkhUTUxFbGVtZW50OjpJbWFnZUlzTWFwCQlEb250RGVsZXRlCkBA
IC0xODg1LDYgKzE4ODYsNyBAQAogICAgICAgICBjYXNlIEltYWdlQWxpZ246ICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKGltYWdlLmFsaWduKCkpOwogICAgICAgICBjYXNlIEltYWdlQWx0OiAgICAg
ICAgICAgICByZXR1cm4gU3RyaW5nKGltYWdlLmFsdCgpKTsKICAgICAgICAgY2FzZSBJbWFnZUJv
cmRlcjogICAgICAgICAgcmV0dXJuIE51bWJlcihpbWFnZS5ib3JkZXIoKSk7CisgICAgICAgIGNh
c2UgSW1hZ2VDb21wbGV0ZTogICAgICAgIHJldHVybiBCb29sZWFuKGltYWdlLmNvbXBsZXRlKCkp
OwogICAgICAgICBjYXNlIEltYWdlSGVpZ2h0OiAgICAgICAgICByZXR1cm4gTnVtYmVyKGltYWdl
LmhlaWdodCh0cnVlKSk7CiAgICAgICAgIGNhc2UgSW1hZ2VIc3BhY2U6ICAgICAgICAgIHJldHVy
biBOdW1iZXIoaW1hZ2UuaHNwYWNlKCkpOwogICAgICAgICBjYXNlIEltYWdlSXNNYXA6ICAgICAg
ICAgICByZXR1cm4gQm9vbGVhbihpbWFnZS5pc01hcCgpKTsKSW5kZXg6IGtodG1sL2VjbWEva2pz
X2h0bWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9lY21h
L2tqc19odG1sLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTAKZGlmZiAtdSAtcjEuNTAga2pz
X2h0bWwuaAotLS0ga2pzX2h0bWwuaAkyMDA1LzA3LzA5IDIwOjE5OjA1CTEuNTAKKysrIGtqc19o
dG1sLmgJMjAwNS8wNy8xMiAxOTo0MDozMgpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgICAg
IEFuY2hvclJldiwgQW5jaG9yVGFiSW5kZXgsIEFuY2hvclRhcmdldCwgQW5jaG9yVGV4dCwgQW5j
aG9yQmx1ciwgQW5jaG9yVG9TdHJpbmcsIAogICAgICAgICAgICBJbWFnZU5hbWUsIEltYWdlQWxp
Z24sIEltYWdlSHNwYWNlLCBJbWFnZVZzcGFjZSwgSW1hZ2VVc2VNYXAsIEltYWdlQWx0LAogICAg
ICAgICAgICBJbWFnZUxvd1NyYywgSW1hZ2VXaWR0aCwgSW1hZ2VJc01hcCwgSW1hZ2VCb3JkZXIs
IEltYWdlSGVpZ2h0LAotICAgICAgICAgICBJbWFnZUxvbmdEZXNjLCBJbWFnZVNyYywgSW1hZ2VY
LCBJbWFnZVksIE9iamVjdEhzcGFjZSwgT2JqZWN0SGVpZ2h0LCBPYmplY3RBbGlnbiwKKyAgICAg
ICAgICAgSW1hZ2VMb25nRGVzYywgSW1hZ2VTcmMsIEltYWdlWCwgSW1hZ2VZLCBJbWFnZUNvbXBs
ZXRlLCBPYmplY3RIc3BhY2UsIE9iamVjdEhlaWdodCwgT2JqZWN0QWxpZ24sCiAgICAgICAgICAg
IE9iamVjdEJvcmRlciwgT2JqZWN0Q29kZSwgT2JqZWN0VHlwZSwgT2JqZWN0VnNwYWNlLCBPYmpl
Y3RBcmNoaXZlLAogICAgICAgICAgICBPYmplY3REZWNsYXJlLCBPYmplY3RGb3JtLCBPYmplY3RD
b2RlQmFzZSwgT2JqZWN0Q29kZVR5cGUsIE9iamVjdERhdGEsCiAgICAgICAgICAgIE9iamVjdE5h
bWUsIE9iamVjdFN0YW5kYnksIE9iamVjdFRhYkluZGV4LCBPYmplY3RVc2VNYXAsIE9iamVjdFdp
ZHRoLCBPYmplY3RDb250ZW50RG9jdW1lbnQsCkluZGV4OiBraHRtbC9odG1sL2h0bWxfaW1hZ2Vp
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1s
L2h0bWxfaW1hZ2VpbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NApkaWZmIC11IC1y
MS40NCBodG1sX2ltYWdlaW1wbC5jcHAKLS0tIGh0bWxfaW1hZ2VpbXBsLmNwcAkyMDA1LzA3LzA5
IDIwOjE5OjEwCTEuNDQKKysrIGh0bWxfaW1hZ2VpbXBsLmNwcAkyMDA1LzA3LzEyIDE5OjQwOjMy
CkBAIC01MjksNiArNTI5LDEzIEBACiAgICAgcmV0dXJuIHk7CiB9CiAKK2Jvb2wgSFRNTEltYWdl
RWxlbWVudEltcGw6OmNvbXBsZXRlKCkgY29uc3QKK3sKKyAgICBDYWNoZWRJbWFnZSAqaW1nID0g
bV9pbWFnZUxvYWRlci5pbWFnZSgpOworICAgIAorICAgIHJldHVybiAhaW1nIHx8IGltZy0+c3Rh
dHVzKCkgPj0ga2h0bWw6OkNhY2hlZE9iamVjdDo6UGVyc2lzdGVudDsKK30KKwogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiBIVE1MTWFwRWxlbWVudEltcGw6OkhUTUxNYXBFbGVtZW50SW1wbChEb2N1
bWVudFB0ciAqZG9jKQpJbmRleDoga2h0bWwvaHRtbC9odG1sX2ltYWdlaW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbF9pbWFnZWltcGwu
aCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMgpkaWZmIC11IC1yMS4yMiBodG1sX2ltYWdlaW1w
bC5oCi0tLSBodG1sX2ltYWdlaW1wbC5oCTIwMDUvMDcvMDkgMjA6MTk6MTAJMS4yMgorKysgaHRt
bF9pbWFnZWltcGwuaAkyMDA1LzA3LzEyIDE5OjQwOjMyCkBAIC0xNDAsNyArMTQwLDggQEAKIAog
ICAgIGxvbmcgeCgpIGNvbnN0OwogICAgIGxvbmcgeSgpIGNvbnN0OwotCisgICAgYm9vbCBjb21w
bGV0ZSgpIGNvbnN0OworICAgIAogcHJvdGVjdGVkOgogICAgIEhUTUxJbWFnZUxvYWRlciBtX2lt
YWdlTG9hZGVyOwogICAgIERPTVN0cmluZyB1c2VtYXA7Cg==
</data>
<flag name="review"
          id="224"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3225</attachid>
            <date>2005-08-04 09:06:20 -0700</date>
            <delta_ts>2005-08-14 00:12:40 -0700</delta_ts>
            <desc>Use HTMLImageElementImpl instead of Image</desc>
            <filename>image-object.diff</filename>
            <type>text/plain</type>
            <size>11270</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">PyAuRFNfU3RvcmUKPyAuZ2RiX2hpc3RvcnkKPyBsYXlvdXQtdGVzdHMvLkRTX1N0b3JlCj8gbGF5
b3V0LXRlc3RzL2VkaXRpbmcvLkRTX1N0b3JlCj8gbGF5b3V0LXRlc3RzL2VkaXRpbmcvaW5zZXJ0
aW5nLy5EU19TdG9yZQo/IGxheW91dC10ZXN0cy9mYXN0L2RvbS9pbWFnZS1vYmplY3QtZXhwZWN0
ZWQudHh0Cj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2ltYWdlLW9iamVjdC5odG1sCj8gbGF5b3V0
LXRlc3RzL2Zhc3QvdG9rZW5pemVyL3NjcmlwdC1hZnRlci1mcmFtZXNldC1leHBlY3RlZC50eHQK
PyBsYXlvdXQtdGVzdHMvZmFzdC90b2tlbml6ZXIvc2NyaXB0LWFmdGVyLWZyYW1lc2V0Lmh0bWwK
SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9D
aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDUyMApkaWZmIC11IC1wIC1yMS40NTIw
IENoYW5nZUxvZwotLS0gQ2hhbmdlTG9nCTQgQXVnIDIwMDUgMDI6MDI6MTQgLTAwMDAJMS40NTIw
CisrKyBDaGFuZ2VMb2cJNCBBdWcgMjAwNSAxNjowNDoyMSAtMDAwMApAQCAtMSwzICsxLDM5IEBA
CisyMDA1LTA4LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBtYWMuY29tPgorCisJLSBG
aXhlcyA8aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0zODY5
PgorCQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
IGNhc2VzIGFkZGVkOiAKKwkqIGxheW91dC10ZXN0cy9mYXN0L2RvbS9pbWFnZS1vYmplY3QuaHRt
bDogQWRkZWQuCisJKiBsYXlvdXQtdGVzdHMvZmFzdC9kb20vaW1hZ2Utb2JqZWN0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19odG1sLmNwcDoKKyAgICAg
ICAgKEtKUzo6SFRNTEVsZW1lbnQ6OmltYWdlR2V0dGVyKToKKwlBZGQgY29tcGxldGUuCisJCisg
ICAgICAgIChLSlM6OkltYWdlQ29uc3RydWN0b3JJbXA6OmNvbnN0cnVjdCk6CisJQ3JlYXRlIGEg
SFRNTEltYWdlRWxlbWVudEltcGwuCisKKwlSZW1vdmUgdGhlIEltYWdlIGltcGxlbWVudGF0aW9u
LgorCQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2h0bWwuaDoKKyAgICAgICAgKEtKUzo6SFRN
TEVsZW1lbnQ6Oik6CisJQWRkIEltYWdlQ29tcGxldGUuIAorCisJUmVtb3ZlIEltYWdlIGNsYXNz
IGRlY2xhcmF0aW9uLgorCQorICAgICAgICAqIGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3Bw
OgorICAgICAgICAoSFRNTEltYWdlRWxlbWVudEltcGw6OndpZHRoKToKKyAgICAgICAgKEhUTUxJ
bWFnZUVsZW1lbnRJbXBsOjpoZWlnaHQpOgorCUlmIHRoZSBpbWFnZSBpcyBsb2FkZWQsIHVzZSBp
dHMgc2l6ZS4KKwkKKyAgICAgICAgKEhUTUxJbWFnZUVsZW1lbnRJbXBsOjpjb21wbGV0ZSk6CisJ
TmV3IGZ1bmN0aW9uLgorCQorICAgICAgICAqIGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuaDoK
KwlBZGQgY29tcGxldGUgZGVjbGFyYXRpb24uCisJCiAyMDA1LTA4LTAzICBWaWNraSBNdXJsZXkg
IDx2aWNraUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBhbmQgSHlhdHQu
CkluZGV4OiBraHRtbC9lY21hL2tqc19odG1sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViQ29yZS9raHRtbC9lY21hL2tqc19odG1sLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xMzEKZGlmZiAtdSAtcCAtcjEuMTMxIGtqc19odG1sLmNwcAotLS0ga2h0bWwvZWNtYS9r
anNfaHRtbC5jcHAJMSBBdWcgMjAwNSAwOTowNjozMyAtMDAwMAkxLjEzMQorKysga2h0bWwvZWNt
YS9ranNfaHRtbC5jcHAJNCBBdWcgMjAwNSAxNjowNDoyMSAtMDAwMApAQCAtMTA5MywxMSArMTA5
MywxMiBAQCBjb25zdCBIVE1MRWxlbWVudDo6QWNjZXNzb3JzKiBIVE1MRWxlbWVuCiAgIGZvY3Vz
CQlLSlM6OkhUTUxFbGVtZW50OjpBbmNob3JGb2N1cwkJRG9udERlbGV0ZXxGdW5jdGlvbiAwCiAg
IHRvU3RyaW5nICAgICAgS0pTOjpIVE1MRWxlbWVudDo6QW5jaG9yVG9TdHJpbmcgICAgICAgIERv
bnREZWxldGV8RnVuY3Rpb24gMAogQGVuZAotQGJlZ2luIEhUTUxJbWFnZUVsZW1lbnRUYWJsZSAx
NAorQGJlZ2luIEhUTUxJbWFnZUVsZW1lbnRUYWJsZSAxNQogICBuYW1lCQlLSlM6OkhUTUxFbGVt
ZW50OjpJbWFnZU5hbWUJCURvbnREZWxldGUKICAgYWxpZ24JCUtKUzo6SFRNTEVsZW1lbnQ6Oklt
YWdlQWxpZ24JCURvbnREZWxldGUKICAgYWx0CQlLSlM6OkhUTUxFbGVtZW50OjpJbWFnZUFsdAkJ
RG9udERlbGV0ZQogICBib3JkZXIJS0pTOjpIVE1MRWxlbWVudDo6SW1hZ2VCb3JkZXIJCURvbnRE
ZWxldGUKKyAgY29tcGxldGUgIEtKUzo6SFRNTEVsZW1lbnQ6OkltYWdlQ29tcGxldGUgICAgIERv
bnREZWxldGUKICAgaGVpZ2h0CUtKUzo6SFRNTEVsZW1lbnQ6OkltYWdlSGVpZ2h0CQlEb250RGVs
ZXRlCiAgIGhzcGFjZQlLSlM6OkhUTUxFbGVtZW50OjpJbWFnZUhzcGFjZQkJRG9udERlbGV0ZQog
ICBpc01hcAkJS0pTOjpIVE1MRWxlbWVudDo6SW1hZ2VJc01hcAkJRG9udERlbGV0ZQpAQCAtMTky
Myw2ICsxOTI0LDcgQEAgVmFsdWUgSFRNTEVsZW1lbnQ6OmltYWdlR2V0dGVyKEV4ZWNTdGF0ZQog
ICAgICAgICBjYXNlIEltYWdlQWxpZ246ICAgICAgICAgICByZXR1cm4gU3RyaW5nKGltYWdlLmFs
aWduKCkpOwogICAgICAgICBjYXNlIEltYWdlQWx0OiAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
KGltYWdlLmFsdCgpKTsKICAgICAgICAgY2FzZSBJbWFnZUJvcmRlcjogICAgICAgICAgcmV0dXJu
IE51bWJlcihpbWFnZS5ib3JkZXIoKSk7CisgICAgICAgIGNhc2UgSW1hZ2VDb21wbGV0ZTogICAg
ICAgIHJldHVybiBCb29sZWFuKGltYWdlLmNvbXBsZXRlKCkpOwogICAgICAgICBjYXNlIEltYWdl
SGVpZ2h0OiAgICAgICAgICByZXR1cm4gTnVtYmVyKGltYWdlLmhlaWdodCh0cnVlKSk7CiAgICAg
ICAgIGNhc2UgSW1hZ2VIc3BhY2U6ICAgICAgICAgIHJldHVybiBOdW1iZXIoaW1hZ2UuaHNwYWNl
KCkpOwogICAgICAgICBjYXNlIEltYWdlSXNNYXA6ICAgICAgICAgICByZXR1cm4gQm9vbGVhbihp
bWFnZS5pc01hcCgpKTsKQEAgLTM2NTYsMTMyICszNjU4LDE4IEBAIE9iamVjdCBJbWFnZUNvbnN0
cnVjdG9ySW1wOjpjb25zdHJ1Y3QoRXgKICAgICAgICAgaGVpZ2h0ID0gaC50b0ludDMyKGV4ZWMp
OwogICAgIH0KICAgICAgICAgCi0gICAgT2JqZWN0IHJlc3VsdChuZXcgSW1hZ2UobV9kb2MuZ2V0
KCksIHdpZHRoU2V0LCB3aWR0aCwgaGVpZ2h0U2V0LCBoZWlnaHQpKTsKLSAgCi0gICAgLyogVE9E
TzogZG8gd2UgbmVlZCBhIHByb3RvdHlwZSA/ICovCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Y29uc3QgQ2xhc3NJbmZvIEtKUzo6SW1hZ2U6OmluZm8gPSB7ICJJbWFnZSIsIDAsICZJbWFnZVRh
YmxlLCAwIH07Ci0KLS8qIFNvdXJjZSBmb3IgSW1hZ2VUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJs
ZXMiIHRvIHJlZ2VuZXJhdGUuCi1AYmVnaW4gSW1hZ2VUYWJsZSA2Ci0gIHNyYwkJSW1hZ2U6OlNy
YwkJRG9udERlbGV0ZQotICBjb21wbGV0ZQlJbWFnZTo6Q29tcGxldGUJCURvbnREZWxldGV8UmVh
ZE9ubHkKLSAgb25sb2FkICAgICAgICBJbWFnZTo6T25Mb2FkICAgICAgICAgICBEb250RGVsZXRl
Ci0gIHdpZHRoICAgICAgICAgSW1hZ2U6OldpZHRoICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQotICBoZWlnaHQgICAgICAgIEltYWdlOjpIZWlnaHQgICAgICAgICAgIERvbnREZWxldGV8
UmVhZE9ubHkKLUBlbmQKLSovCi0KLWJvb2wgSW1hZ2U6OmdldE93blByb3BlcnR5KEV4ZWNTdGF0
ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBWYWx1ZSAmcmVzdWx0KSBj
b25zdAotewotICByZXR1cm4gbG9va3VwR2V0T3duVmFsdWU8SW1hZ2UsRE9NT2JqZWN0PihleGVj
LCBwcm9wZXJ0eU5hbWUsICZJbWFnZVRhYmxlLCB0aGlzLCByZXN1bHQpOwotfQotCi1WYWx1ZSBJ
bWFnZTo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKiwgaW50IHRva2VuKSBjb25zdAotewot
ICBzd2l0Y2ggKHRva2VuKSB7Ci0gIGNhc2UgU3JjOgotICAgIHJldHVybiBTdHJpbmcoc3JjKTsK
LSAgY2FzZSBDb21wbGV0ZToKLSAgICByZXR1cm4gQm9vbGVhbighaW1nIHx8IGltZy0+c3RhdHVz
KCkgPj0ga2h0bWw6OkNhY2hlZE9iamVjdDo6UGVyc2lzdGVudCk7Ci0gIGNhc2UgT25Mb2FkOgot
ICAgIGlmIChvbkxvYWRMaXN0ZW5lciAmJiBvbkxvYWRMaXN0ZW5lci0+bGlzdGVuZXJPYmpJbXAo
KSkgewotICAgICAgcmV0dXJuIG9uTG9hZExpc3RlbmVyLT5saXN0ZW5lck9iaigpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICByZXR1cm4gTnVsbCgpOwotICAgIH0KLSAgY2FzZSBXaWR0aDogeworICAg
IEhUTUxJbWFnZUVsZW1lbnRJbXBsICppbWFnZSA9IG5ldyBIVE1MSW1hZ2VFbGVtZW50SW1wbCAo
bV9kb2MuZ2V0KCktPmRvY1B0cigpKTsKKyAgICAKICAgICBpZiAod2lkdGhTZXQpCi0gICAgICAg
IHJldHVybiBOdW1iZXIod2lkdGgpOwotICAgIGludCB3ID0gMDsKLSAgICBpZiAoaW1nKSB7Ci0g
ICAgICBRU2l6ZSBzaXplID0gaW1nLT5waXhtYXBfc2l6ZSgpOwotICAgICAgaWYgKHNpemUuaXNW
YWxpZCgpKQotICAgICAgICB3ID0gc2l6ZS53aWR0aCgpOwotICAgIH0KLSAgICByZXR1cm4gTnVt
YmVyKHcpOwotICB9Ci0gIGNhc2UgSGVpZ2h0OiB7CisgICAgICAgIGltYWdlLT5zZXRXaWR0aCh3
aWR0aCk7CiAgICAgaWYgKGhlaWdodFNldCkKLSAgICAgICAgcmV0dXJuIE51bWJlcihoZWlnaHQp
OwotICAgIGludCBoID0gMDsKLSAgICBpZiAoaW1nKSB7Ci0gICAgICBRU2l6ZSBzaXplID0gaW1n
LT5waXhtYXBfc2l6ZSgpOwotICAgICAgaWYgKHNpemUuaXNWYWxpZCgpKQotICAgICAgICBoID0g
c2l6ZS5oZWlnaHQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIE51bWJlcihoKTsKLSAgfQotICBkZWZh
dWx0OgotICAgIGtkV2FybmluZygpIDw8ICJJbWFnZTo6Z2V0VmFsdWVQcm9wZXJ0eSB1bmhhbmRs
ZWQgdG9rZW4gIiA8PCB0b2tlbiA8PCBlbmRsOwotICAgIHJldHVybiBWYWx1ZSgpOwotICB9Ci19
Ci0KLXZvaWQgSW1hZ2U6OnB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnBy
b3BlcnR5TmFtZSwgY29uc3QgVmFsdWUmIHZhbHVlLCBpbnQgYXR0cikKLXsKLSAgbG9va3VwUHV0
PEltYWdlLERPTU9iamVjdD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgJkltYWdl
VGFibGUsIHRoaXMgKTsKLX0KLQotdm9pZCBJbWFnZTo6cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3Rh
dGUgKmV4ZWMsIGludCB0b2tlbiwgY29uc3QgVmFsdWUmIHZhbHVlLCBpbnQgLyphdHRyKi8pCi17
Ci0gIHN3aXRjaCh0b2tlbikgewotICBjYXNlIFNyYzoKLSAgewotICAgIFN0cmluZyBzdHIgPSB2
YWx1ZS50b1N0cmluZyhleGVjKTsKLSAgICBzcmMgPSBzdHIudmFsdWUoKTsKLSAgICBpZiAoIGlt
ZyApIGltZy0+ZGVyZWYodGhpcyk7Ci0gICAgaW1nID0gZG9jID8gZG9jLT5kb2NMb2FkZXIoKS0+
cmVxdWVzdEltYWdlKCBzcmMuc3RyaW5nKCkgKSA6IDA7Ci0gICAgaWYgKCBpbWcgKSBpbWctPnJl
Zih0aGlzKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIE9uTG9hZDoKLSAgICBvbkxvYWRMaXN0
ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmdldEpTRXZlbnRMaXN0ZW5lcih2
YWx1ZSwgdHJ1ZSk7Ci0gICAgaWYgKG9uTG9hZExpc3RlbmVyKSBvbkxvYWRMaXN0ZW5lci0+cmVm
KCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgV2lkdGg6Ci0gICAgd2lkdGhTZXQgPSB0cnVlOwotICAg
IHdpZHRoID0gdmFsdWUudG9JbnQzMihleGVjKTsKLSAgICBicmVhazsKLSAgY2FzZSBIZWlnaHQ6
Ci0gICAgaGVpZ2h0U2V0ID0gdHJ1ZTsKLSAgICBoZWlnaHQgPSB2YWx1ZS50b0ludDMyKGV4ZWMp
OwotICAgIGJyZWFrOwotICBkZWZhdWx0OgotICAgIGtkV2FybmluZygpIDw8ICJIVE1MRG9jdW1l
bnQ6OnB1dFZhbHVlUHJvcGVydHkgdW5oYW5kbGVkIHRva2VuICIgPDwgdG9rZW4gPDwgZW5kbDsK
LSAgfQotfQotCi12b2lkIEltYWdlOjpub3RpZnlGaW5pc2hlZChraHRtbDo6Q2FjaGVkT2JqZWN0
ICopCi17Ci0gIGlmIChvbkxvYWRMaXN0ZW5lciAmJiBkb2MtPnBhcnQoKSkgewotICAgIGludCBp
Z25vcmVFeGNlcHRpb247Ci0gICAgRXZlbnRJbXBsICpldiA9IGRvYy0+Y3JlYXRlRXZlbnQoIkhU
TUxFdmVudHMiLCBpZ25vcmVFeGNlcHRpb24pOwotICAgIGV2LT5yZWYoKTsKLSAgICBldi0+aW5p
dEV2ZW50KCJsb2FkIiwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgb25Mb2FkTGlzdGVuZXItPmhhbmRsZUV2
ZW50SW1wbChldiwgdHJ1ZSk7Ci0gICAgZXYtPmRlcmVmKCk7Ci0gIH0KLX0KLQotSW1hZ2U6Oklt
YWdlKERvY3VtZW50SW1wbCAqZCwgYm9vbCB3cywgaW50IHcsIGJvb2wgaHMsIGludCBoKQotICA6
IGRvYyhkKSwgaW1nKDApLCBvbkxvYWRMaXN0ZW5lcigwKQotewotICAgICAgd2lkdGhTZXQgPSB3
czsKLSAgICAgIHdpZHRoID0gdzsKLSAgICAgIGhlaWdodFNldCA9IGhzOwotICAgICAgaGVpZ2h0
ID0gaDsKLX0KLQotSW1hZ2U6On5JbWFnZSgpCi17Ci0gIGlmICggaW1nICkgaW1nLT5kZXJlZih0
aGlzKTsKLSAgaWYgKCBvbkxvYWRMaXN0ZW5lciApIG9uTG9hZExpc3RlbmVyLT5kZXJlZigpOwor
ICAgICAgICBpbWFnZS0+c2V0SGVpZ2h0KGhlaWdodCk7CisgICAgCisgICAgT2JqZWN0IHJlc3Vs
dChnZXRET01Ob2RlKGV4ZWMsIGltYWdlKS0+YXNPYmplY3QoKSk7CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vIENvbnRleHQyRCBPYmplY3Qg
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIElNUExFTUVOVF9QUk9UT0ZVTkMoQ29udGV4dDJE
RnVuY3Rpb24pCkluZGV4OiBraHRtbC9lY21hL2tqc19odG1sLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvZWNtYS9ranNfaHRtbC5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjUzCmRpZmYgLXUgLXAgLXIxLjUzIGtqc19odG1sLmgKLS0tIGtodG1sL2VjbWEv
a2pzX2h0bWwuaAkyNSBKdWwgMjAwNSAyMjoxNzoxOSAtMDAwMAkxLjUzCisrKyBraHRtbC9lY21h
L2tqc19odG1sLmgJNCBBdWcgMjAwNSAxNjowNDoyMiAtMDAwMApAQCAtMjQ3LDcgKzI0Nyw3IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgICAgICBBbmNob3JQb3J0LCBBbmNob3JQYXRoTmFtZSwg
QW5jaG9ySGFzaCwgQW5jaG9yU2VhcmNoLCBBbmNob3JOYW1lLAogICAgICAgICAgICBBbmNob3JS
ZXYsIEFuY2hvclRhYkluZGV4LCBBbmNob3JUYXJnZXQsIEFuY2hvclRleHQsIEFuY2hvckJsdXIs
IEFuY2hvclRvU3RyaW5nLCAKICAgICAgICAgICAgSW1hZ2VOYW1lLCBJbWFnZUFsaWduLCBJbWFn
ZUhzcGFjZSwgSW1hZ2VWc3BhY2UsIEltYWdlVXNlTWFwLCBJbWFnZUFsdCwKLSAgICAgICAgICAg
SW1hZ2VMb3dTcmMsIEltYWdlV2lkdGgsIEltYWdlSXNNYXAsIEltYWdlQm9yZGVyLCBJbWFnZUhl
aWdodCwKKyAgICAgICAgICAgSW1hZ2VMb3dTcmMsIEltYWdlV2lkdGgsIEltYWdlSXNNYXAsIElt
YWdlQm9yZGVyLCBJbWFnZUNvbXBsZXRlLCBJbWFnZUhlaWdodCwKICAgICAgICAgICAgSW1hZ2VM
b25nRGVzYywgSW1hZ2VTcmMsIEltYWdlWCwgSW1hZ2VZLCBPYmplY3RIc3BhY2UsIE9iamVjdEhl
aWdodCwgT2JqZWN0QWxpZ24sCiAgICAgICAgICAgIE9iamVjdEJvcmRlciwgT2JqZWN0Q29kZSwg
T2JqZWN0VHlwZSwgT2JqZWN0VnNwYWNlLCBPYmplY3RBcmNoaXZlLAogICAgICAgICAgICBPYmpl
Y3REZWNsYXJlLCBPYmplY3RGb3JtLCBPYmplY3RDb2RlQmFzZSwgT2JqZWN0Q29kZVR5cGUsIE9i
amVjdERhdGEsCkluZGV4OiBraHRtbC9odG1sL2h0bWxfaW1hZ2VpbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaW1hZ2VpbXBsLmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40OApkaWZmIC11IC1wIC1yMS40OCBodG1sX2ltYWdl
aW1wbC5jcHAKLS0tIGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCTMwIEp1bCAyMDA1IDAy
OjMzOjE3IC0wMDAwCTEuNDgKKysrIGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCTQgQXVn
IDIwMDUgMTY6MDQ6MjIgLTAwMDAKQEAgLTI5OCw2ICsyOTgsMTEgQEAgbG9uZyBIVE1MSW1hZ2VF
bGVtZW50SW1wbDo6d2lkdGgoYm9vbCBpZwogCWlmIChvaykgewogCSAgcmV0dXJuIHdpZHRoOwog
CX0KKyAgICAKKyAgICAvLyBpZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkLCB1c2UgaXRzIHdp
ZHRoCisgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpKSB7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlTG9hZGVyLmltYWdlKCktPnZhbGlkX3JlY3QoKS53aWR0aCgpOworICAgIH0K
ICAgICB9CiAKICAgICBET006OkRvY3VtZW50SW1wbCogZG9jaW1wbCA9IGdldERvY3VtZW50KCk7
CkBAIC0zMjUsNiArMzMwLDEyIEBAIGxvbmcgSFRNTEltYWdlRWxlbWVudEltcGw6OmhlaWdodChi
b29sIGkKIAlpZiAob2spIHsKIAkgIHJldHVybiBoZWlnaHQ7CiAJfQorICAgIAorICAgIC8vIGlm
IHRoZSBpbWFnZSBoYXMgYmVlbiBsb2FkZWQsIHVzZSBpdHMgaGVpZ2h0CisgICAgaWYgKG1faW1h
Z2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpKSB7CisgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVy
LmltYWdlKCktPnZhbGlkX3JlY3QoKS5oZWlnaHQoKTsKKyAgICB9CisgICAgCiAgICAgfQogCiAg
ICAgRE9NOjpEb2N1bWVudEltcGwqIGRvY2ltcGwgPSBnZXREb2N1bWVudCgpOwpAQCAtNDg4LDYg
KzQ5OSwxMyBAQCBsb25nIEhUTUxJbWFnZUVsZW1lbnRJbXBsOjp5KCkgY29uc3QKICAgICByZXR1
cm4geTsKIH0KIAorYm9vbCBIVE1MSW1hZ2VFbGVtZW50SW1wbDo6Y29tcGxldGUoKSBjb25zdAor
eworICAgIENhY2hlZEltYWdlICppbWcgPSBtX2ltYWdlTG9hZGVyLmltYWdlKCk7CisgICAgCisg
ICAgcmV0dXJuICFpbWcgfHwgaW1nLT5zdGF0dXMoKSA+PSBraHRtbDo6Q2FjaGVkT2JqZWN0OjpQ
ZXJzaXN0ZW50OworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhUTUxNYXBFbGVtZW50SW1w
bDo6SFRNTE1hcEVsZW1lbnRJbXBsKERvY3VtZW50UHRyICpkb2MpCkluZGV4OiBraHRtbC9odG1s
L2h0bWxfaW1hZ2VpbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUv
a2h0bWwvaHRtbC9odG1sX2ltYWdlaW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI0CmRp
ZmYgLXUgLXAgLXIxLjI0IGh0bWxfaW1hZ2VpbXBsLmgKLS0tIGtodG1sL2h0bWwvaHRtbF9pbWFn
ZWltcGwuaAkyMCBKdWwgMjAwNSAwMjozNTozMSAtMDAwMAkxLjI0CisrKyBraHRtbC9odG1sL2h0
bWxfaW1hZ2VpbXBsLmgJNCBBdWcgMjAwNSAxNjowNDoyMiAtMDAwMApAQCAtMTQyLDYgKzE0Miw3
IEBAIHB1YmxpYzoKICAgICBsb25nIHgoKSBjb25zdDsKICAgICBsb25nIHkoKSBjb25zdDsKIAor
ICAgIGJvb2wgY29tcGxldGUoKSBjb25zdDsKIHByb3RlY3RlZDoKICAgICBIVE1MSW1hZ2VMb2Fk
ZXIgbV9pbWFnZUxvYWRlcjsKICAgICBET01TdHJpbmcgdXNlbWFwOwotLS0gL2Rldi9udWxsCTIw
MDUtMDgtMDQgMTg6MDI6MDMuMDAwMDAwMDAwICswMjAwCisrKyBsYXlvdXQtdGVzdHMvZmFzdC9k
b20vaW1hZ2Utb2JqZWN0Lmh0bWwJMjAwNS0wOC0wNCAxNzo0NzowNi4wMDAwMDAwMDAgKzAyMDAK
QEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1
ZyhzdHIpIHsKKwlsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisJbGkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisJZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZCgp
IHsKKwlkZWJ1ZygnbG9hZGVkIScpOworCWRlYnVnKCdjb21wbGV0ZTogJyArIHRoaXMuY29tcGxl
dGUpOworCWRlYnVnKCd3aWR0aDogJyArIHRoaXMud2lkdGgpOworCWRlYnVnKCdoZWlnaHQ6ICcg
KyB0aGlzLmhlaWdodCk7CisJCisJaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAJCWxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgCX0KK30KKworZnVuY3Rp
b24gcnVuVGVzdHMoKSB7CisJaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAJ
CWxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgCQlsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgIAl9CisKKwlhID0gbmV3IEltYWdlKCk7CisJYS5vbmxv
YWQ9bG9hZGVkOworCWEuc3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIjsKKwlkZWJ1ZygnY29tcGxl
dGU6ICcgKyBhLmNvbXBsZXRlKTsKKwlkZWJ1Zygnd2lkdGg6ICcgKyBhLndpZHRoKTsKKwlkZWJ1
ZygnaGVpZ2h0OiAnICsgYS5oZWlnaHQpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9uTG9hZD0icnVuVGVzdHMoKSI+CitUaGlzIHRlc3RzIHRoYXQgbG9hZGluZyBpbWFnZXMgdXNp
bmcgdGhlIEltYWdlIG9iamVjdCB3b3Jrcy4gSWYgdGhlIHRlc3QgaXMgc3VjY2Vzc2Z1bCwgdGhl
IHdpZHRoIGFuZCBoZWlnaHQgc2hvdWxkIGZpcnN0IGJlIDAgYW5kIGNvbXBsZXRlIHNob3VsZCBi
ZSBmYWxzZS4gV2hlbiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkLCBjb21wbGV0ZSBzaG91bGQg
YmUgdHJ1ZSBhbmQgd2lkdGggYW5kIGhlaWdodCBzaG91bGQgaGF2ZSB0aGUgd2lkdGggYW5kIGhl
aWdodCBvZiB0aGUgbG9hZGVkIGltYWdlLgorPHVsIGlkPSJjb25zb2xlIj4KKzwvdWw+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="313"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3305</attachid>
            <date>2005-08-09 17:54:07 -0700</date>
            <delta_ts>2006-01-20 06:12:35 -0800</delta_ts>
            <desc>one more test</desc>
            <filename>image2.html</filename>
            <type>text/html</type>
            <size>470</size>
            <attacher name="Maks Orlovich">maksim</attacher>
            
              <data encoding="base64">PCEtLSBCYXNlZCBvbiBidWdzICM2NDcwMiwgIzc3MDg1IC0tPgo8ZGl2IGlkPSJtYWluIj48L2Rp
dj4KCgo8c2NyaXB0Pgp2YXIgaW1nID0gbmV3IEltYWdlKCk7IAppbWcuc3JjICAgICAgICAgICA9
ICJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtD
QUlBQUFEJTJGZ0FJREFBQUFORWxFUVZSNG5PM0JBUTBBQUFEQ29QZFBiUTQzb0FBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWZneDFsQUFCcUZEeU9RQUFBQUJKUlU1RXJrSmdn
ZyUzRCUzRCI7CmltZy5zdHlsZS5wYWRkaW5nID0gIjEwcHgiOyAKaW1nLnN0eWxlLmJhY2tncm91
bmRDb2xvciA9ICJncmVlbiI7Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbiIpLmFwcGVu
ZENoaWxkKGltZyk7Cjwvc2NyaXB0PgpZb3Ugc2hvdWxkIHNlZSBhIGJsYWNrIHNxdWFyZSB3aXRo
IGdyZWVuIGJvcmRlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3372</attachid>
            <date>2005-08-14 00:12:40 -0700</date>
            <delta_ts>2006-01-20 15:39:58 -0800</delta_ts>
            <desc>updated cut at the patch, but still doesn&apos;t address use of Image::info</desc>
            <filename>PartialImagePatch.txt</filename>
            <type>text/plain</type>
            <size>12988</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9D
aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDU2NQpkaWZmIC1wIC11IC1yMS40NTY1
IENoYW5nZUxvZwotLS0gQ2hhbmdlTG9nCTEyIEF1ZyAyMDA1IDIyOjQzOjM2IC0wMDAwCTEuNDU2
NQorKysgQ2hhbmdlTG9nCTE0IEF1ZyAyMDA1IDA3OjEyOjQwIC0wMDAwCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMDUtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQG1hYy5jb20+CisKKwkt
IEZpeGVzIDxodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTM4
Njk+CisJCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3QgY2FzZXMgYWRkZWQ6IAorCSogbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2ltYWdlLW9iamVjdC5o
dG1sOiBBZGRlZC4KKwkqIGxheW91dC10ZXN0cy9mYXN0L2RvbS9pbWFnZS1vYmplY3QtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKworICAgICAgICAqIGtodG1sL2VjbWEva2pzX2h0bWwuY3BwOgorICAg
ICAgICAoS0pTOjpIVE1MRWxlbWVudDo6aW1hZ2VHZXR0ZXIpOgorCUFkZCBjb21wbGV0ZS4KKwkK
KyAgICAgICAgKEtKUzo6SW1hZ2VDb25zdHJ1Y3RvckltcDo6Y29uc3RydWN0KToKKwlDcmVhdGUg
YSBIVE1MSW1hZ2VFbGVtZW50SW1wbC4KKworCVJlbW92ZSB0aGUgSW1hZ2UgaW1wbGVtZW50YXRp
b24uCisJCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfaHRtbC5oOgorCUFkZCBJbWFnZUNvbXBs
ZXRlLiAKKworCVJlbW92ZSBJbWFnZSBjbGFzcyBkZWNsYXJhdGlvbi4KKwkKKyAgICAgICAgKiBr
aHRtbC9odG1sL2h0bWxfaW1hZ2VpbXBsLmNwcDoKKyAgICAgICAgKEhUTUxJbWFnZUVsZW1lbnRJ
bXBsOjp3aWR0aCk6CisgICAgICAgIChIVE1MSW1hZ2VFbGVtZW50SW1wbDo6aGVpZ2h0KToKKwlJ
ZiB0aGUgaW1hZ2UgaXMgbG9hZGVkLCB1c2UgaXRzIHNpemUuCisJCisgICAgICAgIChIVE1MSW1h
Z2VFbGVtZW50SW1wbDo6Y29tcGxldGUpOgorCU5ldyBmdW5jdGlvbi4KKwkKKyAgICAgICAgKiBr
aHRtbC9odG1sL2h0bWxfaW1hZ2VpbXBsLmg6CisJQWRkIGNvbXBsZXRlIGRlY2xhcmF0aW9uLgor
CQogMjAwNS0wOC0xMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IGFkZWxlLgpJbmRleDoga2h0bWwvZWNtYS9ranNfZXZlbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9lY21hL2tqc19ldmVu
dHMuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjU0CmRpZmYgLXAgLXUgLXIxLjU0IGtodG1s
L2VjbWEva2pzX2V2ZW50cy5jcHAKLS0tIGtodG1sL2VjbWEva2pzX2V2ZW50cy5jcHAJOCBBdWcg
MjAwNSAwNDowNzo0MSAtMDAwMAkxLjU0CisrKyBraHRtbC9lY21hL2tqc19ldmVudHMuY3BwCTE0
IEF1ZyAyMDA1IDA3OjEyOjQxIC0wMDAwCkBAIC0xOCwxMCArMTgsMTMgQEAKICAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCiAgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJv
c3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogICovCi0jaW5jbHVkZSAia2h0bWxfcGFydC5oIgot
I2luY2x1ZGUgImtqc193aW5kb3cuaCIKKwogI2luY2x1ZGUgImtqc19ldmVudHMuaCIKKwogI2lu
Y2x1ZGUgImtqc19ldmVudHMubHV0LmgiCisKKyNpbmNsdWRlICJraHRtbF9wYXJ0LmgiCisjaW5j
bHVkZSAia2pzX3dpbmRvdy5oIgogI2luY2x1ZGUgImtqc192aWV3cy5oIgogI2luY2x1ZGUgImtq
c19wcm94eS5oIgogI2luY2x1ZGUgInhtbC9kb21fbm9kZWltcGwuaCIKSW5kZXg6IGtodG1sL2Vj
bWEva2pzX2V2ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2to
dG1sL2VjbWEva2pzX2V2ZW50cy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMwCmRpZmYgLXAg
LXUgLXIxLjMwIGtodG1sL2VjbWEva2pzX2V2ZW50cy5oCi0tLSBraHRtbC9lY21hL2tqc19ldmVu
dHMuaAk4IEF1ZyAyMDA1IDA0OjA3OjQxIC0wMDAwCTEuMzAKKysrIGtodG1sL2VjbWEva2pzX2V2
ZW50cy5oCTE0IEF1ZyAyMDA1IDA3OjEyOjQxIC0wMDAwCkBAIC0xOSwxMyArMTksMTIgQEAKICAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN
QSAgMDIxMTEtMTMwNyAgVVNBCiAgKi8KIAotI2lmbmRlZiBfS0pTX0VWRU5UU19IXwotI2RlZmlu
ZSBfS0pTX0VWRU5UU19IXworI2lmbmRlZiBLSlNfRVZFTlRTX0gKKyNkZWZpbmUgS0pTX0VWRU5U
U19ICiAKLSNpbmNsdWRlICJranNfZG9tLmgiCiAjaW5jbHVkZSAia2pzX2h0bWwuaCIKLQogI2lu
Y2x1ZGUgImRvbS9kb20yX2V2ZW50cy5oIgorI2luY2x1ZGUgPGtqcy9wcm90ZWN0ZWRfb2JqZWN0
Lmg+CiAKIG5hbWVzcGFjZSBET00gewogICAgIGNsYXNzIENsaXBib2FyZEltcGw7CkluZGV4OiBr
aHRtbC9lY21hL2tqc19odG1sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
Q29yZS9raHRtbC9lY21hL2tqc19odG1sLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMzMK
ZGlmZiAtcCAtdSAtcjEuMTMzIGtodG1sL2VjbWEva2pzX2h0bWwuY3BwCi0tLSBraHRtbC9lY21h
L2tqc19odG1sLmNwcAk4IEF1ZyAyMDA1IDA0OjA3OjQxIC0wMDAwCTEuMTMzCisrKyBraHRtbC9l
Y21hL2tqc19odG1sLmNwcAkxNCBBdWcgMjAwNSAwNzoxMjo0NiAtMDAwMApAQCAtMTA3LDcgKzEw
Nyw2IEBAIHVzaW5nIERPTTo6SFRNTE1hcEVsZW1lbnRJbXBsOwogdXNpbmcgRE9NOjpIVE1MTWVu
dUVsZW1lbnRJbXBsOwogdXNpbmcgRE9NOjpIVE1MTWV0YUVsZW1lbnRJbXBsOwogdXNpbmcgRE9N
OjpIVE1MTW9kRWxlbWVudEltcGw7Ci11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcg
RE9NOjpIVE1MT0xpc3RFbGVtZW50SW1wbDsKIHVzaW5nIERPTTo6SFRNTE9iamVjdEVsZW1lbnRJ
bXBsOwogdXNpbmcgRE9NOjpIVE1MT3B0R3JvdXBFbGVtZW50SW1wbDsKQEAgLTEzNSw2ICsxMzQs
OCBAQCB1c2luZyBET006OlRleHRJbXBsOwogdXNpbmcga2h0bWw6OlJlbmRlckNhbnZhc0ltYWdl
OwogdXNpbmcga2h0bWw6OlNoYXJlZFB0cjsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
KwogI2luY2x1ZGUgImtqc19odG1sLmx1dC5oIgogCiBuYW1lc3BhY2UgS0pTIHsKQEAgLTEwNTYs
MTEgKzEwNTcsMTIgQEAgY29uc3QgSFRNTEVsZW1lbnQ6OkFjY2Vzc29ycyogSFRNTEVsZW1lbgog
ICBmb2N1cwkJS0pTOjpIVE1MRWxlbWVudDo6QW5jaG9yRm9jdXMJCURvbnREZWxldGV8RnVuY3Rp
b24gMAogICB0b1N0cmluZyAgICAgIEtKUzo6SFRNTEVsZW1lbnQ6OkFuY2hvclRvU3RyaW5nICAg
ICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKIEBlbmQKLUBiZWdpbiBIVE1MSW1hZ2VFbGVtZW50
VGFibGUgMTQKK0BiZWdpbiBIVE1MSW1hZ2VFbGVtZW50VGFibGUgMTUKICAgbmFtZQkJS0pTOjpI
VE1MRWxlbWVudDo6SW1hZ2VOYW1lCQlEb250RGVsZXRlCiAgIGFsaWduCQlLSlM6OkhUTUxFbGVt
ZW50OjpJbWFnZUFsaWduCQlEb250RGVsZXRlCiAgIGFsdAkJS0pTOjpIVE1MRWxlbWVudDo6SW1h
Z2VBbHQJCURvbnREZWxldGUKICAgYm9yZGVyCUtKUzo6SFRNTEVsZW1lbnQ6OkltYWdlQm9yZGVy
CQlEb250RGVsZXRlCisgIGNvbXBsZXRlICBLSlM6OkhUTUxFbGVtZW50OjpJbWFnZUNvbXBsZXRl
ICAgICBEb250RGVsZXRlCiAgIGhlaWdodAlLSlM6OkhUTUxFbGVtZW50OjpJbWFnZUhlaWdodAkJ
RG9udERlbGV0ZQogICBoc3BhY2UJS0pTOjpIVE1MRWxlbWVudDo6SW1hZ2VIc3BhY2UJCURvbnRE
ZWxldGUKICAgaXNNYXAJCUtKUzo6SFRNTEVsZW1lbnQ6OkltYWdlSXNNYXAJCURvbnREZWxldGUK
QEAgLTE5NDIsNiArMTk0NCw3IEBAIFZhbHVlSW1wICpIVE1MRWxlbWVudDo6aW1hZ2VHZXR0ZXIo
RXhlY1MKICAgICAgICAgY2FzZSBJbWFnZUFsaWduOiAgICAgICAgICAgcmV0dXJuIFN0cmluZyhp
bWFnZS5hbGlnbigpKTsKICAgICAgICAgY2FzZSBJbWFnZUFsdDogICAgICAgICAgICAgcmV0dXJu
IFN0cmluZyhpbWFnZS5hbHQoKSk7CiAgICAgICAgIGNhc2UgSW1hZ2VCb3JkZXI6ICAgICAgICAg
IHJldHVybiBOdW1iZXIoaW1hZ2UuYm9yZGVyKCkpOworICAgICAgICBjYXNlIEltYWdlQ29tcGxl
dGU6ICAgICAgICByZXR1cm4gQm9vbGVhbihpbWFnZS5jb21wbGV0ZSgpKTsKICAgICAgICAgY2Fz
ZSBJbWFnZUhlaWdodDogICAgICAgICAgcmV0dXJuIE51bWJlcihpbWFnZS5oZWlnaHQodHJ1ZSkp
OwogICAgICAgICBjYXNlIEltYWdlSHNwYWNlOiAgICAgICAgICByZXR1cm4gTnVtYmVyKGltYWdl
LmhzcGFjZSgpKTsKICAgICAgICAgY2FzZSBJbWFnZUlzTWFwOiAgICAgICAgICAgcmV0dXJuIEJv
b2xlYW4oaW1hZ2UuaXNNYXAoKSk7CkBAIC0zNjIxLDEzMSArMzYyNCwxNCBAQCBPYmplY3RJbXAg
KkltYWdlQ29uc3RydWN0b3JJbXA6OmNvbnN0cnVjCiAgICAgICAgIGhlaWdodCA9IGgtPnRvSW50
MzIoZXhlYyk7CiAgICAgfQogICAgICAgICAKLSAgICBPYmplY3RJbXAgKnJlc3VsdChuZXcgSW1h
Z2UobV9kb2MuZ2V0KCksIHdpZHRoU2V0LCB3aWR0aCwgaGVpZ2h0U2V0LCBoZWlnaHQpKTsKLSAg
Ci0gICAgLyogVE9ETzogZG8gd2UgbmVlZCBhIHByb3RvdHlwZSA/ICovCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEtKUzo6SW1hZ2U6OmluZm8gPSB7ICJJbWFnZSIs
IDAsICZJbWFnZVRhYmxlLCAwIH07Ci0KLS8qIFNvdXJjZSBmb3IgSW1hZ2VUYWJsZS4gVXNlICJt
YWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCi1AYmVnaW4gSW1hZ2VUYWJsZSA2Ci0gIHNy
YwkJSW1hZ2U6OlNyYwkJRG9udERlbGV0ZQotICBjb21wbGV0ZQlJbWFnZTo6Q29tcGxldGUJCURv
bnREZWxldGV8UmVhZE9ubHkKLSAgb25sb2FkICAgICAgICBJbWFnZTo6T25Mb2FkICAgICAgICAg
ICBEb250RGVsZXRlCi0gIHdpZHRoICAgICAgICAgSW1hZ2U6OldpZHRoICAgICAgICAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQotICBoZWlnaHQgICAgICAgIEltYWdlOjpIZWlnaHQgICAgICAgICAg
IERvbnREZWxldGV8UmVhZE9ubHkKLUBlbmQKLSovCi0KLWJvb2wgSW1hZ2U6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQotewotICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEltYWdl
LERPTU9iamVjdD4oZXhlYywgJkltYWdlVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
Ci19Ci0KLVZhbHVlSW1wICpJbWFnZTo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKiwgaW50
IHRva2VuKSBjb25zdAotewotICBzd2l0Y2ggKHRva2VuKSB7Ci0gIGNhc2UgU3JjOgotICAgIHJl
dHVybiBTdHJpbmcoc3JjKTsKLSAgY2FzZSBDb21wbGV0ZToKLSAgICByZXR1cm4gQm9vbGVhbigh
aW1nIHx8IGltZy0+c3RhdHVzKCkgPj0ga2h0bWw6OkNhY2hlZE9iamVjdDo6UGVyc2lzdGVudCk7
Ci0gIGNhc2UgT25Mb2FkOgotICAgIGlmIChvbkxvYWRMaXN0ZW5lciAmJiBvbkxvYWRMaXN0ZW5l
ci0+bGlzdGVuZXJPYmpJbXAoKSkgewotICAgICAgcmV0dXJuIG9uTG9hZExpc3RlbmVyLT5saXN0
ZW5lck9iaigpOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gTnVsbCgpOwotICAgIH0KLSAg
Y2FzZSBXaWR0aDogeworICAgIEhUTUxJbWFnZUVsZW1lbnRJbXBsICppbWFnZSA9IG5ldyBIVE1M
SW1hZ2VFbGVtZW50SW1wbChtX2RvYy5nZXQoKS0+ZG9jUHRyKCkpOwogICAgIGlmICh3aWR0aFNl
dCkKLSAgICAgICAgcmV0dXJuIE51bWJlcih3aWR0aCk7Ci0gICAgaW50IHcgPSAwOwotICAgIGlm
IChpbWcpIHsKLSAgICAgIFFTaXplIHNpemUgPSBpbWctPnBpeG1hcF9zaXplKCk7Ci0gICAgICBp
ZiAoc2l6ZS5pc1ZhbGlkKCkpCi0gICAgICAgIHcgPSBzaXplLndpZHRoKCk7Ci0gICAgfQotICAg
IHJldHVybiBOdW1iZXIodyk7Ci0gIH0KLSAgY2FzZSBIZWlnaHQ6IHsKKyAgICAgICAgaW1hZ2Ut
PnNldFdpZHRoKHdpZHRoKTsKICAgICBpZiAoaGVpZ2h0U2V0KQotICAgICAgICByZXR1cm4gTnVt
YmVyKGhlaWdodCk7Ci0gICAgaW50IGggPSAwOwotICAgIGlmIChpbWcpIHsKLSAgICAgIFFTaXpl
IHNpemUgPSBpbWctPnBpeG1hcF9zaXplKCk7Ci0gICAgICBpZiAoc2l6ZS5pc1ZhbGlkKCkpCi0g
ICAgICAgIGggPSBzaXplLmhlaWdodCgpOwotICAgIH0KLSAgICByZXR1cm4gTnVtYmVyKGgpOwot
ICB9Ci0gIGRlZmF1bHQ6Ci0gICAga2RXYXJuaW5nKCkgPDwgIkltYWdlOjpnZXRWYWx1ZVByb3Bl
cnR5IHVuaGFuZGxlZCB0b2tlbiAiIDw8IHRva2VuIDw8IGVuZGw7Ci0gICAgcmV0dXJuIE5VTEw7
Ci0gIH0KLX0KLQotdm9pZCBJbWFnZTo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRp
ZmllciAmcHJvcGVydHlOYW1lLCBWYWx1ZUltcCAqdmFsdWUsIGludCBhdHRyKQotewotICBsb29r
dXBQdXQ8SW1hZ2UsRE9NT2JqZWN0PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCAm
SW1hZ2VUYWJsZSwgdGhpcyApOworICAgICAgICBpbWFnZS0+c2V0SGVpZ2h0KGhlaWdodCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE9iamVjdEltcCAqPihnZXRET01Ob2RlKGV4ZWMsIGltYWdl
KSk7CiB9CiAKLXZvaWQgSW1hZ2U6OnB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCBp
bnQgdG9rZW4sIFZhbHVlSW1wICp2YWx1ZSwgaW50IC8qYXR0ciovKQotewotICBzd2l0Y2godG9r
ZW4pIHsKLSAgY2FzZSBTcmM6Ci0gIHsKLSAgICBzcmMgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYyk7
Ci0gICAgaWYgKCBpbWcgKSBpbWctPmRlcmVmKHRoaXMpOwotICAgIGltZyA9IGRvYyA/IGRvYy0+
ZG9jTG9hZGVyKCktPnJlcXVlc3RJbWFnZSggc3JjLnN0cmluZygpICkgOiAwOwotICAgIGlmICgg
aW1nICkgaW1nLT5yZWYodGhpcyk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBPbkxvYWQ6Ci0g
ICAgb25Mb2FkTGlzdGVuZXIgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU0V2
ZW50TGlzdGVuZXIodmFsdWUsIHRydWUpOwotICAgIGlmIChvbkxvYWRMaXN0ZW5lcikgb25Mb2Fk
TGlzdGVuZXItPnJlZigpOwotICAgIGJyZWFrOwotICBjYXNlIFdpZHRoOgotICAgIHdpZHRoU2V0
ID0gdHJ1ZTsKLSAgICB3aWR0aCA9IHZhbHVlLT50b0ludDMyKGV4ZWMpOwotICAgIGJyZWFrOwot
ICBjYXNlIEhlaWdodDoKLSAgICBoZWlnaHRTZXQgPSB0cnVlOwotICAgIGhlaWdodCA9IHZhbHVl
LT50b0ludDMyKGV4ZWMpOwotICAgIGJyZWFrOwotICBkZWZhdWx0OgotICAgIGtkV2FybmluZygp
IDw8ICJIVE1MRG9jdW1lbnQ6OnB1dFZhbHVlUHJvcGVydHkgdW5oYW5kbGVkIHRva2VuICIgPDwg
dG9rZW4gPDwgZW5kbDsKLSAgfQotfQotCi12b2lkIEltYWdlOjpub3RpZnlGaW5pc2hlZChraHRt
bDo6Q2FjaGVkT2JqZWN0ICopCi17Ci0gIGlmIChvbkxvYWRMaXN0ZW5lciAmJiBkb2MtPnBhcnQo
KSkgewotICAgIGludCBpZ25vcmVFeGNlcHRpb247Ci0gICAgRXZlbnRJbXBsICpldiA9IGRvYy0+
Y3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiLCBpZ25vcmVFeGNlcHRpb24pOwotICAgIGV2LT5yZWYo
KTsKLSAgICBldi0+aW5pdEV2ZW50KCJsb2FkIiwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgb25Mb2FkTGlz
dGVuZXItPmhhbmRsZUV2ZW50SW1wbChldiwgdHJ1ZSk7Ci0gICAgZXYtPmRlcmVmKCk7Ci0gIH0K
LX0KLQotSW1hZ2U6OkltYWdlKERvY3VtZW50SW1wbCAqZCwgYm9vbCB3cywgaW50IHcsIGJvb2wg
aHMsIGludCBoKQotICA6IGRvYyhkKSwgaW1nKDApLCBvbkxvYWRMaXN0ZW5lcigwKQotewotICAg
ICAgd2lkdGhTZXQgPSB3czsKLSAgICAgIHdpZHRoID0gdzsKLSAgICAgIGhlaWdodFNldCA9IGhz
OwotICAgICAgaGVpZ2h0ID0gaDsKLX0KLQotSW1hZ2U6On5JbWFnZSgpCi17Ci0gIGlmICggaW1n
ICkgaW1nLT5kZXJlZih0aGlzKTsKLSAgaWYgKCBvbkxvYWRMaXN0ZW5lciApIG9uTG9hZExpc3Rl
bmVyLT5kZXJlZigpOwotfQotCi0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gQ29udGV4dDJEIE9i
amVjdCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogSU1QTEVNRU5UX1BST1RPRlVOQyhDb250
ZXh0MkRGdW5jdGlvbikKSW5kZXg6IGtodG1sL2VjbWEva2pzX2h0bWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9lY21hL2tqc19odG1sLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNTUKZGlmZiAtcCAtdSAtcjEuNTUga2h0bWwvZWNtYS9ranNfaHRtbC5o
Ci0tLSBraHRtbC9lY21hL2tqc19odG1sLmgJOCBBdWcgMjAwNSAwNDowNzo0MSAtMDAwMAkxLjU1
CisrKyBraHRtbC9lY21hL2tqc19odG1sLmgJMTQgQXVnIDIwMDUgMDc6MTI6NDcgLTAwMDAKQEAg
LTI0OCw3ICsyNDgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICAgQW5jaG9yUG9ydCwg
QW5jaG9yUGF0aE5hbWUsIEFuY2hvckhhc2gsIEFuY2hvclNlYXJjaCwgQW5jaG9yTmFtZSwKICAg
ICAgICAgICAgQW5jaG9yUmV2LCBBbmNob3JUYWJJbmRleCwgQW5jaG9yVGFyZ2V0LCBBbmNob3JU
ZXh0LCBBbmNob3JCbHVyLCBBbmNob3JUb1N0cmluZywgCiAgICAgICAgICAgIEltYWdlTmFtZSwg
SW1hZ2VBbGlnbiwgSW1hZ2VIc3BhY2UsIEltYWdlVnNwYWNlLCBJbWFnZVVzZU1hcCwgSW1hZ2VB
bHQsCi0gICAgICAgICAgIEltYWdlTG93U3JjLCBJbWFnZVdpZHRoLCBJbWFnZUlzTWFwLCBJbWFn
ZUJvcmRlciwgSW1hZ2VIZWlnaHQsCisgICAgICAgICAgIEltYWdlTG93U3JjLCBJbWFnZVdpZHRo
LCBJbWFnZUlzTWFwLCBJbWFnZUJvcmRlciwgSW1hZ2VDb21wbGV0ZSwgSW1hZ2VIZWlnaHQsCiAg
ICAgICAgICAgIEltYWdlTG9uZ0Rlc2MsIEltYWdlU3JjLCBJbWFnZVgsIEltYWdlWSwgT2JqZWN0
SHNwYWNlLCBPYmplY3RIZWlnaHQsIE9iamVjdEFsaWduLAogICAgICAgICAgICBPYmplY3RCb3Jk
ZXIsIE9iamVjdENvZGUsIE9iamVjdFR5cGUsIE9iamVjdFZzcGFjZSwgT2JqZWN0QXJjaGl2ZSwK
ICAgICAgICAgICAgT2JqZWN0RGVjbGFyZSwgT2JqZWN0Rm9ybSwgT2JqZWN0Q29kZUJhc2UsIE9i
amVjdENvZGVUeXBlLCBPYmplY3REYXRhLApJbmRleDoga2h0bWwvaHRtbC9odG1sX2ltYWdlaW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvaHRtbC9o
dG1sX2ltYWdlaW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDgKZGlmZiAtcCAtdSAt
cjEuNDgga2h0bWwvaHRtbC9odG1sX2ltYWdlaW1wbC5jcHAKLS0tIGtodG1sL2h0bWwvaHRtbF9p
bWFnZWltcGwuY3BwCTMwIEp1bCAyMDA1IDAyOjMzOjE3IC0wMDAwCTEuNDgKKysrIGtodG1sL2h0
bWwvaHRtbF9pbWFnZWltcGwuY3BwCTE0IEF1ZyAyMDA1IDA3OjEyOjQ3IC0wMDAwCkBAIC0yOTgs
NiArMjk4LDExIEBAIGxvbmcgSFRNTEltYWdlRWxlbWVudEltcGw6OndpZHRoKGJvb2wgaWcKIAlp
ZiAob2spIHsKIAkgIHJldHVybiB3aWR0aDsKIAl9CisgICAgCisgICAgLy8gaWYgdGhlIGltYWdl
IGhhcyBiZWVuIGxvYWRlZCwgdXNlIGl0cyB3aWR0aAorICAgIGlmIChtX2ltYWdlTG9hZGVyLmlt
YWdlQ29tcGxldGUoKSkgeworICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT52
YWxpZF9yZWN0KCkud2lkdGgoKTsKKyAgICB9CiAgICAgfQogCiAgICAgRE9NOjpEb2N1bWVudElt
cGwqIGRvY2ltcGwgPSBnZXREb2N1bWVudCgpOwpAQCAtMzI1LDYgKzMzMCwxMiBAQCBsb25nIEhU
TUxJbWFnZUVsZW1lbnRJbXBsOjpoZWlnaHQoYm9vbCBpCiAJaWYgKG9rKSB7CiAJICByZXR1cm4g
aGVpZ2h0OwogCX0KKyAgICAKKyAgICAvLyBpZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkLCB1
c2UgaXRzIGhlaWdodAorICAgIGlmIChtX2ltYWdlTG9hZGVyLmltYWdlQ29tcGxldGUoKSkgewor
ICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT52YWxpZF9yZWN0KCkuaGVpZ2h0
KCk7CisgICAgfQorICAgIAogICAgIH0KIAogICAgIERPTTo6RG9jdW1lbnRJbXBsKiBkb2NpbXBs
ID0gZ2V0RG9jdW1lbnQoKTsKQEAgLTQ4OCw2ICs0OTksMTMgQEAgbG9uZyBIVE1MSW1hZ2VFbGVt
ZW50SW1wbDo6eSgpIGNvbnN0CiAgICAgcmV0dXJuIHk7CiB9CiAKK2Jvb2wgSFRNTEltYWdlRWxl
bWVudEltcGw6OmNvbXBsZXRlKCkgY29uc3QKK3sKKyAgICBDYWNoZWRJbWFnZSAqaW1nID0gbV9p
bWFnZUxvYWRlci5pbWFnZSgpOworICAgIAorICAgIHJldHVybiAhaW1nIHx8IGltZy0+c3RhdHVz
KCkgPj0ga2h0bWw6OkNhY2hlZE9iamVjdDo6UGVyc2lzdGVudDsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBIVE1MTWFwRWxlbWVudEltcGw6OkhUTUxNYXBFbGVtZW50SW1wbChEb2N1bWVu
dFB0ciAqZG9jKQpJbmRleDoga2h0bWwvaHRtbC9odG1sX2ltYWdlaW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuaCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNApkaWZmIC1wIC11IC1yMS4yNCBraHRtbC9odG1sL2h0
bWxfaW1hZ2VpbXBsLmgKLS0tIGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuaAkyMCBKdWwgMjAw
NSAwMjozNTozMSAtMDAwMAkxLjI0CisrKyBraHRtbC9odG1sL2h0bWxfaW1hZ2VpbXBsLmgJMTQg
QXVnIDIwMDUgMDc6MTI6NDcgLTAwMDAKQEAgLTE0Miw2ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAg
bG9uZyB4KCkgY29uc3Q7CiAgICAgbG9uZyB5KCkgY29uc3Q7CiAKKyAgICBib29sIGNvbXBsZXRl
KCkgY29uc3Q7CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7
CiAgICAgRE9NU3RyaW5nIHVzZW1hcDsKSW5kZXg6IGxheW91dC10ZXN0cy9mYXN0L2RvbS9pbWFn
ZS1vYmplY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBsYXlvdXQtdGVzdHMvZmFzdC9kb20v
aW1hZ2Utb2JqZWN0Lmh0bWwKZGlmZiAtTiBsYXlvdXQtdGVzdHMvZmFzdC9kb20vaW1hZ2Utb2Jq
ZWN0Lmh0bWwKLS0tIGxheW91dC10ZXN0cy9mYXN0L2RvbS9pbWFnZS1vYmplY3QuaHRtbAkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBsYXlvdXQtdGVzdHMvZmFzdC9kb20vaW1hZ2Utb2Jq
ZWN0Lmh0bWwJMTQgQXVnIDIwMDUgMDc6MTI6NTUgLTAwMDAKQEAgLTAsMCArMSw0MiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKKwlsaSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisJbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoc3RyKSk7CisJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBl
bmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZCgpIHsKKwlkZWJ1ZygnbG9hZGVkIScp
OworCWRlYnVnKCdjb21wbGV0ZTogJyArIHRoaXMuY29tcGxldGUpOworCWRlYnVnKCd3aWR0aDog
JyArIHRoaXMud2lkdGgpOworCWRlYnVnKCdoZWlnaHQ6ICcgKyB0aGlzLmhlaWdodCk7CisJCisJ
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAJCWxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgCX0KK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisJaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAJCWxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgCQlsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgIAl9CisKKwlhID0gbmV3IEltYWdlKCk7CisJYS5vbmxvYWQ9bG9hZGVkOworCWEuc3JjPSJy
ZXNvdXJjZXMvYXBwbGUuZ2lmIjsKKwlkZWJ1ZygnY29tcGxldGU6ICcgKyBhLmNvbXBsZXRlKTsK
KwlkZWJ1Zygnd2lkdGg6ICcgKyBhLndpZHRoKTsKKwlkZWJ1ZygnaGVpZ2h0OiAnICsgYS5oZWln
aHQpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdHMoKSI+
CitUaGlzIHRlc3RzIHRoYXQgbG9hZGluZyBpbWFnZXMgdXNpbmcgdGhlIEltYWdlIG9iamVjdCB3
b3Jrcy4gSWYgdGhlIHRlc3QgaXMgc3VjY2Vzc2Z1bCwgdGhlIHdpZHRoIGFuZCBoZWlnaHQgc2hv
dWxkIGZpcnN0IGJlIDAgYW5kIGNvbXBsZXRlIHNob3VsZCBiZSBmYWxzZS4gV2hlbiB0aGUgaW1h
Z2UgaGFzIGJlZW4gbG9hZGVkLCBjb21wbGV0ZSBzaG91bGQgYmUgdHJ1ZSBhbmQgd2lkdGggYW5k
IGhlaWdodCBzaG91bGQgaGF2ZSB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgbG9hZGVkIGlt
YWdlLgorPHVsIGlkPSJjb25zb2xlIj4KKzwvdWw+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5803</attachid>
            <date>2006-01-20 15:39:58 -0800</date>
            <delta_ts>2006-01-21 10:59:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>image-element.txt</filename>
            <type>text/plain</type>
            <size>19912</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMjY3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShhcmJl
dHNrb3BpYSkKQEAgLTEsMyArMSwxNyBAQAorMjAwNi0wMS0yMCAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAbWFjLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtIHRlc3RzIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hv
d19idWcuY2dpP2lkPTM4NjkKKyAgICAgICAgU2hvdWxkIHVzZSBIVE1MIEltYWdlIGVsZW1lbnQg
aW5zdGVhZCBvZiBKUyBJbWFnZSBvYmplY3QKKworICAgICAgICAqIGZhc3QvZG9tL2ltYWdlLW9i
amVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2ltYWdlLW9iamVj
dC1pbi1jYW52YXMtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L2ltYWdlLW9iamVjdC1pbi1jYW52YXMtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9pbWFnZS1vYmplY3QtaW4tY2FudmFzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vaW1hZ2Utb2JqZWN0LWluLWNhbnZhcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9pbWFnZS1vYmplY3QuaHRtbDogQWRkZWQuCisKIDIwMDYtMDEtMjAgIE1h
Y2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICAtIGFkZGVkIHRlc3Qg
Y2FzZSBmb3IgYSBwYXJzaW5nIGJ1ZyB0aGF0IHdhcyBmaXhlZCBpbiBkaWZmZXJlbnQgd2F5cyBp
biBLSlMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ltYWdlLW9iamVjdC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaW1hZ2Utb2JqZWN0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ltYWdlLW9iamVj
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyB0
aGF0IHRoZSBJbWFnZSBKYXZhU2NyaXB0IG9iamVjdCB3b3JrcyBhcyBleHBlY3RlZC4gSWYgdGhl
IHRlc3QgaXMgc3VjY2Vzc2Z1bCwgdGhlIHRlc3QgIlNVQ0NFU1MiIHNob3VsZCBiZSBzaG93biBi
ZWxvdy4KKworU1VDQ0VTUyEKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaW1hZ2Utb2Jq
ZWN0LWluLWNhbnZhcy1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogV2ViQ29yZS9raHRt
bC9odG1sL2h0bWxfaW1hZ2VpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2h0
bWwvaHRtbF9pbWFnZWltcGwuY3BwCShyZXZpc2lvbiAxMjI2NykKKysrIFdlYkNvcmUva2h0bWwv
aHRtbC9odG1sX2ltYWdlaW1wbC5jcHAJKGFyYmV0c2tvcGlhKQpAQCAtMjY0LDYgKzI2NCwxMCBA
QCBpbnQgSFRNTEltYWdlRWxlbWVudEltcGw6OndpZHRoKGJvb2wgaWduCiAgICAgICAgIGludCB3
aWR0aCA9IGdldEF0dHJpYnV0ZSh3aWR0aEF0dHIpLnFzdHJpbmcoKS50b0ludCgmb2spOwogICAg
ICAgICBpZiAob2spCiAgICAgICAgICAgICByZXR1cm4gd2lkdGg7CisgICAgICAgIAorICAgICAg
ICAvLyBpZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkLCB1c2UgaXRzIHdpZHRoCisgICAgICAg
IGlmIChtX2ltYWdlTG9hZGVyLmltYWdlQ29tcGxldGUoKSkKKyAgICAgICAgICAgIHJldHVybiBt
X2ltYWdlTG9hZGVyLmltYWdlKCktPnZhbGlkX3JlY3QoKS53aWR0aCgpOwogICAgIH0KIAogICAg
IGlmIChEb2N1bWVudEltcGwqIGRvYyA9IGdldERvY3VtZW50KCkpIHsKQEAgLTI4NCw2ICsyODgs
MTAgQEAgaW50IEhUTUxJbWFnZUVsZW1lbnRJbXBsOjpoZWlnaHQoYm9vbCBpZwogICAgICAgICBp
bnQgaGVpZ2h0ID0gZ2V0QXR0cmlidXRlKGhlaWdodEF0dHIpLnFzdHJpbmcoKS50b0ludCgmb2sp
OwogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0OworICAgICAgICAK
KyAgICAgICAgLy8gaWYgdGhlIGltYWdlIGhhcyBiZWVuIGxvYWRlZCwgdXNlIGl0cyBoZWlnaHQK
KyAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2UoKS0+dmFsaWRfcmVjdCgpLmhlaWdodCgpOyAgICAg
ICAgCiAgICAgfQogCiAgICAgaWYgKERvY3VtZW50SW1wbCogZG9jID0gZ2V0RG9jdW1lbnQoKSkg
ewpAQCAtNDM0LDYgKzQ0MiwxMSBAQCBpbnQgSFRNTEltYWdlRWxlbWVudEltcGw6OnkoKSBjb25z
dAogICAgIHJldHVybiB5OwogfQogCitib29sIEhUTUxJbWFnZUVsZW1lbnRJbXBsOjpjb21wbGV0
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpOwor
fQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhUTUxNYXBFbGVtZW50SW1wbDo6SFRNTE1hcEVs
ZW1lbnRJbXBsKERvY3VtZW50SW1wbCAqZG9jKQpJbmRleDogV2ViQ29yZS9raHRtbC9odG1sL2h0
bWxfaW1hZ2VpbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaW1h
Z2VpbXBsLmgJKHJldmlzaW9uIDEyMjY3KQorKysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaW1h
Z2VpbXBsLmgJKGFyYmV0c2tvcGlhKQpAQCAtMTM3LDYgKzEzNyw4IEBAIHB1YmxpYzoKICAgICBp
bnQgeCgpIGNvbnN0OwogICAgIGludCB5KCkgY29uc3Q7CiAKKyAgICBib29sIGNvbXBsZXRlKCkg
Y29uc3Q7CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlTG9hZGVyIG1faW1hZ2VMb2Fk
ZXI7CiAgICAgRE9NU3RyaW5nIHVzZW1hcDsKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNf
ZXZlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX2V2ZW50cy5j
cHAJKHJldmlzaW9uIDEyMjY3KQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc19ldmVudHMuY3Bw
CShhcmJldHNrb3BpYSkKQEAgLTI2LDE4ICsyNiwyMSBAQAogI2luY2x1ZGUgImtqc193aW5kb3cu
aCIKICNpbmNsdWRlICJranNfdmlld3MuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKKyNpbmNs
dWRlICJodG1sL2h0bWxfaW1hZ2VpbXBsLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRJbXBsLmgiCiAj
aW5jbHVkZSAieG1sL2RvbTJfZXZlbnRzaW1wbC5oIgogI2luY2x1ZGUgInhtbC9kb20yX3ZpZXdz
aW1wbC5oIgogI2luY2x1ZGUgInhtbC9FdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAicmVuZGVyaW5n
L3JlbmRlcl9vYmplY3QuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgImh0
bWxuYW1lcy5oIgogCiAjaW5jbHVkZSA8a2RlYnVnLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBET007
CiB1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBraHRtbDsKK3Vz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIG5hbWVzcGFjZSBLSlMgewogCkBAIC0xMTMxLDI0
ICsxMTM0LDE5IEBAIEpTVmFsdWUgKkNsaXBib2FyZFByb3RvRnVuYzo6Y2FsbEFzRnVuY3QKIAog
ICAgICAgICAgICAgLy8gU2VlIGlmIHRoZXkgcGFzc2VkIHVzIGEgbm9kZQogICAgICAgICAgICAg
Tm9kZUltcGwgKm5vZGUgPSB0b05vZGUoYXJnc1swXSk7Ci0gICAgICAgICAgICBpZiAobm9kZSkg
ewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2ItPmNsaXBib2FyZC0+c2V0RHJhZ0ltYWdlRWxlbWVudChub2RlLCBJbnRQ
b2ludCh4LHkpKTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgInNldERyYWdJbWFn
ZUZyb21FbGVtZW50OiBJbnZhbGlkIGZpcnN0IGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTZWUgaWYgdGhleSBwYXNzZWQgdXMg
YW4gSW1hZ2Ugb2JqZWN0Ci0gICAgICAgICAgICBKU09iamVjdCAqbyA9IHN0YXRpY19jYXN0PEpT
T2JqZWN0Kj4oYXJnc1swXSk7Ci0gICAgICAgICAgICBpZiAoby0+aXNPYmplY3QoKSAmJiBvLT5p
bmhlcml0cygmSW1hZ2U6OmluZm8pKSB7Ci0gICAgICAgICAgICAgICAgSW1hZ2UgKkpTSW1hZ2Ug
PSBzdGF0aWNfY2FzdDxJbWFnZSo+KG8pOwotICAgICAgICAgICAgICAgIGNiLT5jbGlwYm9hcmQt
PnNldERyYWdJbWFnZShKU0ltYWdlLT5pbWFnZSgpLT5waXhtYXAoKSwgSW50UG9pbnQoeCx5KSk7
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgInNldERy
YWdJbWFnZUZyb21FbGVtZW50OiBJbnZhbGlkIGZpcnN0IGFyZ3VtZW50Iik7CisKKyAgICAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxFbGVtZW50SW1wbCo+KG5vZGUpLT5oYXNMb2NhbE5hbWUoaW1n
VGFnKSAmJiAKKyAgICAgICAgICAgICAgICAhbm9kZS0+aW5Eb2N1bWVudCgpKQorICAgICAgICAg
ICAgICAgIGNiLT5jbGlwYm9hcmQtPnNldERyYWdJbWFnZShzdGF0aWNfY2FzdDxIVE1MSW1hZ2VF
bGVtZW50SW1wbCo+KG5vZGUpLT5waXhtYXAoKSwgSW50UG9pbnQoeCwgeSkpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGNiLT5jbGlwYm9hcmQtPnNldERyYWdJbWFnZUVsZW1l
bnQobm9kZSwgSW50UG9pbnQoeCwgeSkpOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQogICAg
IH0KICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9r
anNfaHRtbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19odG1sLmNw
cAkocmV2aXNpb24gMTIyNjcpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuY3BwCShh
cmJldHNrb3BpYSkKQEAgLTk5OSw2ICs5OTksNyBAQCBjb25zdCBIVE1MRWxlbWVudDo6QWNjZXNz
b3JzKiBIVE1MRWxlbWVuCiAgIGFsaWduICAgICAgICAgS0pTOjpIVE1MRWxlbWVudDo6SW1hZ2VB
bGlnbiAgICAgICAgICAgIERvbnREZWxldGUKICAgYWx0ICAgICAgICAgICBLSlM6OkhUTUxFbGVt
ZW50OjpJbWFnZUFsdCAgICAgICAgICAgICAgRG9udERlbGV0ZQogICBib3JkZXIgICAgICAgIEtK
Uzo6SFRNTEVsZW1lbnQ6OkltYWdlQm9yZGVyICAgICAgICAgICBEb250RGVsZXRlCisgIGNvbXBs
ZXRlICAgICAgS0pTOjpIVE1MRWxlbWVudDo6SW1hZ2VDb21wbGV0ZSAgICAgICAgIERvbnREZWxl
dGV8UmVhZE9ubHkKICAgaGVpZ2h0ICAgICAgICBLSlM6OkhUTUxFbGVtZW50OjpJbWFnZUhlaWdo
dCAgICAgICAgICAgRG9udERlbGV0ZQogICBoc3BhY2UgICAgICAgIEtKUzo6SFRNTEVsZW1lbnQ6
OkltYWdlSHNwYWNlICAgICAgICAgICBEb250RGVsZXRlCiAgIGlzTWFwICAgICAgICAgS0pTOjpI
VE1MRWxlbWVudDo6SW1hZ2VJc01hcCAgICAgICAgICAgIERvbnREZWxldGUKQEAgLTE4ODMsNiAr
MTg4NCw3IEBAIEpTVmFsdWUgKkhUTUxFbGVtZW50OjppbWFnZUdldHRlcihFeGVjU3QKICAgICAg
ICAgY2FzZSBJbWFnZUFsaWduOiAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGltYWdlLmFsaWdu
KCkpOwogICAgICAgICBjYXNlIEltYWdlQWx0OiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmco
aW1hZ2UuYWx0KCkpOwogICAgICAgICBjYXNlIEltYWdlQm9yZGVyOiAgICAgICAgICByZXR1cm4g
anNOdW1iZXIoaW1hZ2UuYm9yZGVyKCkpOworICAgICAgICBjYXNlIEltYWdlQ29tcGxldGU6ICAg
ICAgICByZXR1cm4ganNCb29sZWFuKGltYWdlLmNvbXBsZXRlKCkpOwogICAgICAgICBjYXNlIElt
YWdlSGVpZ2h0OiAgICAgICAgICByZXR1cm4ganNOdW1iZXIoaW1hZ2UuaGVpZ2h0KHRydWUpKTsK
ICAgICAgICAgY2FzZSBJbWFnZUhzcGFjZTogICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGltYWdl
LmhzcGFjZSgpKTsKICAgICAgICAgY2FzZSBJbWFnZUlzTWFwOiAgICAgICAgICAgcmV0dXJuIGpz
Qm9vbGVhbihpbWFnZS5pc01hcCgpKTsKQEAgLTM1NDMsMTMxICszNTQ1LDE2IEBAIEpTT2JqZWN0
ICpJbWFnZUNvbnN0cnVjdG9ySW1wOjpjb25zdHJ1Y3QKICAgICAgICAgaGVpZ2h0ID0gaC0+dG9J
bnQzMihleGVjKTsKICAgICB9CiAgICAgICAgIAotICAgIEpTT2JqZWN0ICpyZXN1bHQobmV3IElt
YWdlKG1fZG9jLmdldCgpLCB3aWR0aFNldCwgd2lkdGgsIGhlaWdodFNldCwgaGVpZ2h0KSk7Ci0g
IAotICAgIC8qIFRPRE86IGRvIHdlIG5lZWQgYSBwcm90b3R5cGUgPyAqLwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLWNvbnN0IENsYXNzSW5mbyBLSlM6OkltYWdlOjppbmZvID0geyAiSW1hZ2Ui
LCAwLCAmSW1hZ2VUYWJsZSwgMCB9OwotCi0vKiBTb3VyY2UgZm9yIEltYWdlVGFibGUuIFVzZSAi
bWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgotQGJlZ2luIEltYWdlVGFibGUgNgotICBz
cmMgICAgICAgICAgIEltYWdlOjpTcmMgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgY29tcGxl
dGUgICAgICBJbWFnZTo6Q29tcGxldGUgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG9u
bG9hZCAgICAgICAgSW1hZ2U6Ok9uTG9hZCAgICAgICAgICAgRG9udERlbGV0ZQotICB3aWR0aCAg
ICAgICAgIEltYWdlOjpXaWR0aCAgICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgaGVp
Z2h0ICAgICAgICBJbWFnZTo6SGVpZ2h0ICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci1A
ZW5kCi0qLwotCi1ib29sIEltYWdlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsK
LSAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxJbWFnZSxET01PYmplY3Q+KGV4ZWMsICZJbWFn
ZVRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1KU1ZhbHVlICpJbWFnZTo6
Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKiwgaW50IHRva2VuKSBjb25zdAotewotICBzd2l0
Y2ggKHRva2VuKSB7Ci0gIGNhc2UgU3JjOgotICAgIHJldHVybiBqc1N0cmluZyhkb2MgPyBkb2Mt
PmNvbXBsZXRlVVJMKHNyYy5kb21TdHJpbmcoKSkgOiBzcmMpOwotICBjYXNlIENvbXBsZXRlOgot
ICAgIHJldHVybiBqc0Jvb2xlYW4oIWltZyB8fCBpbWctPnN0YXR1cygpID49IGtodG1sOjpDYWNo
ZWRPYmplY3Q6OlBlcnNpc3RlbnQpOwotICBjYXNlIE9uTG9hZDoKLSAgICBpZiAob25Mb2FkTGlz
dGVuZXIgJiYgb25Mb2FkTGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpIHsKLSAgICAgIHJldHVybiBv
bkxvYWRMaXN0ZW5lci0+bGlzdGVuZXJPYmooKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJu
IGpzTnVsbCgpOwotICAgIH0KLSAgY2FzZSBXaWR0aDogeworICAgIEhUTUxJbWFnZUVsZW1lbnRJ
bXBsICpyZXN1bHQgPSBuZXcgSFRNTEltYWdlRWxlbWVudEltcGwobV9kb2MuZ2V0KCkpOworICAg
IAogICAgIGlmICh3aWR0aFNldCkKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHdpZHRoKTsKLSAg
ICBpbnQgdyA9IDA7Ci0gICAgaWYgKGltZykgewotICAgICAgSW50U2l6ZSBzaXplID0gaW1nLT5w
aXhtYXBfc2l6ZSgpOwotICAgICAgaWYgKHNpemUuaXNWYWxpZCgpKQotICAgICAgICB3ID0gc2l6
ZS53aWR0aCgpOwotICAgIH0KLSAgICByZXR1cm4ganNOdW1iZXIodyk7Ci0gIH0KLSAgY2FzZSBI
ZWlnaHQ6IHsKKyAgICAgICAgcmVzdWx0LT5zZXRXaWR0aCh3aWR0aCk7CiAgICAgaWYgKGhlaWdo
dFNldCkKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGhlaWdodCk7Ci0gICAgaW50IGggPSAwOwot
ICAgIGlmIChpbWcpIHsKLSAgICAgIEludFNpemUgc2l6ZSA9IGltZy0+cGl4bWFwX3NpemUoKTsK
LSAgICAgIGlmIChzaXplLmlzVmFsaWQoKSkKLSAgICAgICAgaCA9IHNpemUuaGVpZ2h0KCk7Ci0g
ICAgfQotICAgIHJldHVybiBqc051bWJlcihoKTsKLSAgfQotICBkZWZhdWx0OgotICAgIGtkV2Fy
bmluZygpIDw8ICJJbWFnZTo6Z2V0VmFsdWVQcm9wZXJ0eSB1bmhhbmRsZWQgdG9rZW4gIiA8PCB0
b2tlbiA8PCBlbmRsOwotICAgIHJldHVybiBOVUxMOwotICB9Ci19Ci0KLXZvaWQgSW1hZ2U6OnB1
dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSwgSlNWYWx1
ZSAqdmFsdWUsIGludCBhdHRyKQotewotICBsb29rdXBQdXQ8SW1hZ2UsRE9NT2JqZWN0PihleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCAmSW1hZ2VUYWJsZSwgdGhpcyApOwotfQotCi12
b2lkIEltYWdlOjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuLCBK
U1ZhbHVlICp2YWx1ZSwgaW50IC8qYXR0ciovKQotewotICBzd2l0Y2godG9rZW4pIHsKLSAgY2Fz
ZSBTcmM6Ci0gIHsKLSAgICBzcmMgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYyk7Ci0gICAgaWYgKCBp
bWcgKSBpbWctPmRlcmVmKHRoaXMpOwotICAgIGltZyA9IGRvYyA/IGRvYy0+ZG9jTG9hZGVyKCkt
PnJlcXVlc3RJbWFnZSggc3JjLmRvbVN0cmluZygpICkgOiAwOwotICAgIGlmICggaW1nICkgaW1n
LT5yZWYodGhpcyk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBPbkxvYWQ6Ci0gICAgb25Mb2Fk
TGlzdGVuZXIgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU0V2ZW50TGlzdGVu
ZXIodmFsdWUsIHRydWUpOwotICAgIGlmIChvbkxvYWRMaXN0ZW5lcikgb25Mb2FkTGlzdGVuZXIt
PnJlZigpOwotICAgIGJyZWFrOwotICBjYXNlIFdpZHRoOgotICAgIHdpZHRoU2V0ID0gdHJ1ZTsK
LSAgICB3aWR0aCA9IHZhbHVlLT50b0ludDMyKGV4ZWMpOwotICAgIGJyZWFrOwotICBjYXNlIEhl
aWdodDoKLSAgICBoZWlnaHRTZXQgPSB0cnVlOwotICAgIGhlaWdodCA9IHZhbHVlLT50b0ludDMy
KGV4ZWMpOwotICAgIGJyZWFrOwotICBkZWZhdWx0OgotICAgIGtkV2FybmluZygpIDw8ICJIVE1M
RG9jdW1lbnQ6OnB1dFZhbHVlUHJvcGVydHkgdW5oYW5kbGVkIHRva2VuICIgPDwgdG9rZW4gPDwg
ZW5kbDsKLSAgfQotfQotCi12b2lkIEltYWdlOjpub3RpZnlGaW5pc2hlZChraHRtbDo6Q2FjaGVk
T2JqZWN0ICopCi17Ci0gIGlmIChvbkxvYWRMaXN0ZW5lciAmJiBkb2MtPmZyYW1lKCkpIHsKLSAg
ICBpbnQgaWdub3JlRXhjZXB0aW9uOwotICAgIEV2ZW50SW1wbCAqZXYgPSBkb2MtPmNyZWF0ZUV2
ZW50KCJIVE1MRXZlbnRzIiwgaWdub3JlRXhjZXB0aW9uKTsKLSAgICBldi0+cmVmKCk7Ci0gICAg
ZXYtPmluaXRFdmVudChsb2FkRXZlbnQsIHRydWUsIHRydWUpOwotICAgIG9uTG9hZExpc3RlbmVy
LT5oYW5kbGVFdmVudEltcGwoZXYsIHRydWUpOwotICAgIGV2LT5kZXJlZigpOwotICB9Ci19Ci0K
LUltYWdlOjpJbWFnZShEb2N1bWVudEltcGwgKmQsIGJvb2wgd3MsIGludCB3LCBib29sIGhzLCBp
bnQgaCkKLSAgOiBkb2MoZCksIGltZygwKSwgb25Mb2FkTGlzdGVuZXIoMCkKLXsKLSAgICAgIHdp
ZHRoU2V0ID0gd3M7Ci0gICAgICB3aWR0aCA9IHc7Ci0gICAgICBoZWlnaHRTZXQgPSBoczsKLSAg
ICAgIGhlaWdodCA9IGg7Ci19Ci0KLUltYWdlOjp+SW1hZ2UoKQotewotICBpZiAoIGltZyApIGlt
Zy0+ZGVyZWYodGhpcyk7Ci0gIGlmICggb25Mb2FkTGlzdGVuZXIgKSBvbkxvYWRMaXN0ZW5lci0+
ZGVyZWYoKTsKKyAgICAgICAgcmVzdWx0LT5zZXRIZWlnaHQoaGVpZ2h0KTsKKyAgICAKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihnZXRET01Ob2RlKGV4ZWMsIHJlc3VsdCkpOwog
fQogCi0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gQ29udGV4dDJEIE9iamVjdCAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KIAogS0pTX0lNUExFTUVOVF9QUk9UT0ZVTkMoQ29udGV4dDJERnVuY3Rp
b24pCkBAIC00MTk4LDIxICs0MDg1LDggQEAgSlNWYWx1ZSAqS0pTOjpDb250ZXh0MkRGdW5jdGlv
bjo6Y2FsbEFzRgogICAgICAgICAgICAgUVBpeG1hcCBwaXhtYXA7CiAgICAgICAgICAgICBDR0Nv
bnRleHRSZWYgc291cmNlQ29udGV4dCA9IDA7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8v
IENoZWNrIGZvciBKYXZhU2NyaXB0IEltYWdlLCA8aW1nPiBvciA8Y2FudmFzPi4KLSAgICAgICAg
ICAgIGlmIChvLT5pbmhlcml0cygmSW1hZ2U6OmluZm8pKSB7Ci0gICAgICAgICAgICAgICAgSW1h
Z2UgKmkgPSBzdGF0aWNfY2FzdDxJbWFnZSo+KG8pOwotICAgICAgICAgICAgICAgIGtodG1sOjpD
YWNoZWRJbWFnZSAqY2kgPSBpLT5pbWFnZSgpOwotICAgICAgICAgICAgICAgIGlmIChjaSkgewot
ICAgICAgICAgICAgICAgICAgICBwaXhtYXAgPSBjaS0+cGl4bWFwKCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBObyBp
bWFnZS4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHcgPSBwaXhtYXAud2lkdGgoKTsKLSAgICAgICAg
ICAgICAgICBoID0gcGl4bWFwLmhlaWdodCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSBpZiAoby0+aW5oZXJpdHMoJktKUzo6SFRNTEVsZW1lbnQ6OmltZ19pbmZvKSl7CisgICAg
ICAgICAgICAvLyBDaGVjayBmb3IgPGltZz4gb3IgPGNhbnZhcz4uCisgICAgICAgICAgICBpZiAo
by0+aW5oZXJpdHMoJktKUzo6SFRNTEVsZW1lbnQ6OmltZ19pbmZvKSl7CiAgICAgICAgICAgICAg
ICAgTm9kZUltcGwgKm4gPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCAqPihhcmdzWzBdKS0+aW1w
bCgpOwogICAgICAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnRJbXBsICplID0gc3RhdGljX2Nh
c3Q8SFRNTEltYWdlRWxlbWVudEltcGwqPihuKTsKICAgICAgICAgICAgICAgICBwaXhtYXAgPSBl
LT5waXhtYXAoKTsKQEAgLTQzMTIsOSArNDE4NiwxMiBAQCBKU1ZhbHVlICpLSlM6OkNvbnRleHQy
REZ1bmN0aW9uOjpjYWxsQXNGCiAgICAgICAgICAgICBpZiAoYXJncy5zaXplKCkgIT0gMTApCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOwogICAg
ICAgICAgICAgSlNPYmplY3QgKm8gPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGFyZ3NbMF0pOwot
ICAgICAgICAgICAgaWYgKCFvLT5pc09iamVjdCgpIHx8ICFvLT5pbmhlcml0cygmSW1hZ2U6Omlu
Zm8pKQorICAgICAgICAgICAgaWYgKCFvLT5pbmhlcml0cygmS0pTOjpIVE1MRWxlbWVudDo6aW1n
X2luZm8pKQogICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJv
cik7Ci0gICAgICAgICAgICBJbWFnZSAqaSA9IHN0YXRpY19jYXN0PEltYWdlKj4obyk7CisgICAg
ICAgICAgICBOb2RlSW1wbCAqbiA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+KGFyZ3NbMF0p
LT5pbXBsKCk7CisgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50SW1wbCAqZSA9IHN0YXRpY19j
YXN0PEhUTUxJbWFnZUVsZW1lbnRJbXBsKj4obik7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IFFQaXhtYXAgcGl4bWFwID0gZS0+cGl4bWFwKCk7CiAgICAgICAgICAgICBmbG9hdCBzeCA9IGFy
Z3NbMV0tPnRvTnVtYmVyKGV4ZWMpOwogICAgICAgICAgICAgZmxvYXQgc3kgPSBhcmdzWzJdLT50
b051bWJlcihleGVjKTsKICAgICAgICAgICAgIGZsb2F0IHN3ID0gYXJnc1szXS0+dG9OdW1iZXIo
ZXhlYyk7CkBAIC00MzI0LDE4ICs0MjAxLDE1IEBAIEpTVmFsdWUgKktKUzo6Q29udGV4dDJERnVu
Y3Rpb246OmNhbGxBc0YKICAgICAgICAgICAgIGZsb2F0IGR3ID0gYXJnc1s3XS0+dG9OdW1iZXIo
ZXhlYyk7CiAgICAgICAgICAgICBmbG9hdCBkaCA9IGFyZ3NbOF0tPnRvTnVtYmVyKGV4ZWMpOwog
ICAgICAgICAgICAgUVN0cmluZyBjb21wb3NpdGVPcGVyYXRvciA9IGFyZ3NbOV0tPnRvU3RyaW5n
KGV4ZWMpLnFzdHJpbmcoKS5sb3dlcigpOwotICAgICAgICAgICAga2h0bWw6OkNhY2hlZEltYWdl
ICpjaSA9IGktPmltYWdlKCk7Ci0gICAgICAgICAgICBpZiAoY2kpIHsKLSAgICAgICAgICAgICAg
ICBRUGl4bWFwIHBpeG1hcCA9IGNpLT5waXhtYXAoKTsKLSAgICAgICAgICAgICAgICBRUGFpbnRl
ciBwOworICAgICAgICAgICAgCisgICAgICAgICAgICBRUGFpbnRlciBwOwogCi0gICAgICAgICAg
ICAgICAgcC5kcmF3RmxvYXRQaXhtYXAgKGR4LCBkeSwgZHcsIGRoLCBwaXhtYXAsIHN4LCBzeSwg
c3csIHNoLCBRUGFpbnRlcjo6Y29tcG9zaXRlT3BlcmF0b3JGcm9tU3RyaW5nKGNvbXBvc2l0ZU9w
ZXJhdG9yKSwgZHJhd2luZ0NvbnRleHQpOworICAgICAgICAgICAgcC5kcmF3RmxvYXRQaXhtYXAg
KGR4LCBkeSwgZHcsIGRoLCBwaXhtYXAsIHN4LCBzeSwgc3csIHNoLCBRUGFpbnRlcjo6Y29tcG9z
aXRlT3BlcmF0b3JGcm9tU3RyaW5nKGNvbXBvc2l0ZU9wZXJhdG9yKSwgZHJhd2luZ0NvbnRleHQp
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0T2JqZWN0LT5f
bmVlZHNGbHVzaFJhc3RlckNhY2hlKQotICAgICAgICAgICAgICAgICAgICBwaXhtYXAuZmx1c2hS
YXN0ZXJDYWNoZSgpOworICAgICAgICAgICAgaWYgKGNvbnRleHRPYmplY3QtPl9uZWVkc0ZsdXNo
UmFzdGVyQ2FjaGUpCisgICAgICAgICAgICAgICAgcGl4bWFwLmZsdXNoUmFzdGVyQ2FjaGUoKTsK
IAotICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0ltYWdlVXBkYXRlKCk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNJbWFnZVVwZGF0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0MkQ6OlNl
dEFscGhhOiB7CkBAIC00MzgxLDcgKzQyNTUsNyBAQCBKU1ZhbHVlICpLSlM6OkNvbnRleHQyREZ1
bmN0aW9uOjpjYWxsQXNGCiAgICAgICAgICAgICBpZiAoYXJncy5zaXplKCkgIT0gMikKICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7CiAgICAgICAg
ICAgICBKU09iamVjdCAqbyA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oYXJnc1swXSk7Ci0gICAg
ICAgICAgICBpZiAoIW8tPmlzT2JqZWN0KCkgfHwgIW8tPmluaGVyaXRzKCZJbWFnZTo6aW5mbykp
CisgICAgICAgICAgICBpZiAoIW8tPmluaGVyaXRzKCZLSlM6OkhUTUxFbGVtZW50OjppbWdfaW5m
bykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsK
ICAgICAgICAgICAgIGludCByZXBldGl0aW9uVHlwZSA9IEltYWdlUGF0dGVybjo6UmVwZWF0Owog
ICAgICAgICAgICAgRE9NU3RyaW5nIHJlcGV0aXRpb25TdHJpbmcgPSBhcmdzWzFdLT50b1N0cmlu
ZyhleGVjKS5kb21TdHJpbmcoKS5sb3dlcigpOwpAQCAtNDM5MSw3ICs0MjY1LDggQEAgSlNWYWx1
ZSAqS0pTOjpDb250ZXh0MkRGdW5jdGlvbjo6Y2FsbEFzRgogICAgICAgICAgICAgICAgIHJlcGV0
aXRpb25UeXBlID0gSW1hZ2VQYXR0ZXJuOjpSZXBlYXRZOwogICAgICAgICAgICAgZWxzZSBpZiAo
cmVwZXRpdGlvblN0cmluZyA9PSAibm8tcmVwZWF0IikKICAgICAgICAgICAgICAgICByZXBldGl0
aW9uVHlwZSA9IEltYWdlUGF0dGVybjo6Tm9SZXBlYXQ7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IEltYWdlUGF0dGVybihzdGF0aWNfY2FzdDxJbWFnZSo+KG8pLCByZXBldGl0aW9uVHlwZSk7Cisg
ICAgICAgICAgICBOb2RlSW1wbCAqbiA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+KGFyZ3Nb
MF0pLT5pbXBsKCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IEltYWdlUGF0dGVybihzdGF0aWNf
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50SW1wbCAqPihuKS0+cGl4bWFwKCksIHJlcGV0aXRpb25UeXBl
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtNTE5NCwyOSArNTA2OSwyNiBAQCBzdGF0
aWMgdm9pZCBkcmF3UGF0dGVybiAodm9pZCAqIGluZm8sIENHCiBDR1BhdHRlcm5DYWxsYmFja3Mg
cGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgZHJhd1BhdHRlcm4sIE5VTEwgfTsKICNlbmRpZgogCi1J
bWFnZVBhdHRlcm46OkltYWdlUGF0dGVybihJbWFnZSAqaSwgaW50IHJlcGV0aXRpb25UeXBlKQor
SW1hZ2VQYXR0ZXJuOjpJbWFnZVBhdHRlcm4oY29uc3QgUVBpeG1hcCYgcGl4bWFwLCBpbnQgcmVw
ZXRpdGlvblR5cGUpCiAgICAgOl9ydygwKSwgX3JoKDApCiB7Ci0gICAga2h0bWw6OkNhY2hlZElt
YWdlICpjaSA9IGktPmltYWdlKCk7Ci0gICAgaWYgKGNpKSB7Ci0gICAgICAgIF9waXhtYXAgPSBj
aS0+cGl4bWFwKCk7Ci0gICAgICAgIGZsb2F0IHcgPSBfcGl4bWFwLndpZHRoKCk7Ci0gICAgICAg
IGZsb2F0IGggPSBfcGl4bWFwLmhlaWdodCgpOworICAgIF9waXhtYXAgPSBwaXhtYXA7CisgICAg
ZmxvYXQgdyA9IF9waXhtYXAud2lkdGgoKTsKKyAgICBmbG9hdCBoID0gX3BpeG1hcC5oZWlnaHQo
KTsKICNpZiBfX0FQUExFX18KLSAgICAgICAgX2JvdW5kcyA9IENHUmVjdE1ha2UgKDAsIDAsIHcs
IGgpOworICAgIF9ib3VuZHMgPSBDR1JlY3RNYWtlICgwLCAwLCB3LCBoKTsKICNlbmRpZgotICAg
ICAgICBpZiAocmVwZXRpdGlvblR5cGUgPT0gUmVwZWF0KSB7Ci0gICAgICAgICAgICBfcncgPSB3
OyBfcmggPSBoOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHJlcGV0aXRpb25UeXBlID09
IFJlcGVhdFgpIHsKLSAgICAgICAgICAgIF9ydyA9IHc7IF9yaCA9IDA7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAocmVwZXRpdGlvblR5cGUgPT0gUmVwZWF0WSkgewotICAgICAgICAgICAg
X3J3ID0gMDsgX3JoID0gaDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChyZXBldGl0aW9u
VHlwZSA9PSBOb1JlcGVhdCkgewotICAgICAgICAgICAgX3J3ID0gMDsgX3JoID0gMDsKLSAgICAg
ICAgfQorICAgIGlmIChyZXBldGl0aW9uVHlwZSA9PSBSZXBlYXQpIHsKKyAgICAgICAgX3J3ID0g
dzsgX3JoID0gaDsKKyAgICB9CisgICAgZWxzZSBpZiAocmVwZXRpdGlvblR5cGUgPT0gUmVwZWF0
WCkgeworICAgICAgICBfcncgPSB3OyBfcmggPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChyZXBl
dGl0aW9uVHlwZSA9PSBSZXBlYXRZKSB7CisgICAgICAgIF9ydyA9IDA7IF9yaCA9IGg7CisgICAg
fQorICAgIGVsc2UgaWYgKHJlcGV0aXRpb25UeXBlID09IE5vUmVwZWF0KSB7CisgICAgICAgIF9y
dyA9IDA7IF9yaCA9IDA7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pz
X2h0bWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuaAkocmV2
aXNpb24gMTIyNjcpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuaAkoYXJiZXRza29w
aWEpCkBAIC0yNDksNyArMjQ5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgICAgIEFuY2hv
clBvcnQsIEFuY2hvclBhdGhOYW1lLCBBbmNob3JIYXNoLCBBbmNob3JTZWFyY2gsIEFuY2hvck5h
bWUsCiAgICAgICAgICAgIEFuY2hvclJldiwgQW5jaG9yVGFiSW5kZXgsIEFuY2hvclRhcmdldCwg
QW5jaG9yVGV4dCwgQW5jaG9yQmx1ciwgQW5jaG9yVG9TdHJpbmcsIAogICAgICAgICAgICBJbWFn
ZU5hbWUsIEltYWdlQWxpZ24sIEltYWdlSHNwYWNlLCBJbWFnZVZzcGFjZSwgSW1hZ2VVc2VNYXAs
IEltYWdlQWx0LAotICAgICAgICAgICBJbWFnZUxvd1NyYywgSW1hZ2VXaWR0aCwgSW1hZ2VJc01h
cCwgSW1hZ2VCb3JkZXIsIEltYWdlSGVpZ2h0LAorICAgICAgICAgICBJbWFnZUxvd1NyYywgSW1h
Z2VXaWR0aCwgSW1hZ2VJc01hcCwgSW1hZ2VCb3JkZXIsIEltYWdlSGVpZ2h0LCBJbWFnZUNvbXBs
ZXRlLAogICAgICAgICAgICBJbWFnZUxvbmdEZXNjLCBJbWFnZVNyYywgSW1hZ2VYLCBJbWFnZVks
IE9iamVjdEhzcGFjZSwgT2JqZWN0SGVpZ2h0LCBPYmplY3RBbGlnbiwKICAgICAgICAgICAgT2Jq
ZWN0Qm9yZGVyLCBPYmplY3RDb2RlLCBPYmplY3RUeXBlLCBPYmplY3RWc3BhY2UsIE9iamVjdEFy
Y2hpdmUsCiAgICAgICAgICAgIE9iamVjdERlY2xhcmUsIE9iamVjdEZvcm0sIE9iamVjdENvZGVC
YXNlLCBPYmplY3RDb2RlVHlwZSwgT2JqZWN0RGF0YSwKQEAgLTM2MywzMyArMzYzLDYgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgUmVmUHRyPERPTTo6RG9jdW1lbnRJbXBsPiBtX2RvYzsKICAgfTsK
IAotICBjbGFzcyBJbWFnZSA6IHB1YmxpYyBET01PYmplY3QsIHB1YmxpYyBraHRtbDo6Q2FjaGVk
T2JqZWN0Q2xpZW50IHsKLSAgcHVibGljOgotICAgIEltYWdlKERPTTo6RG9jdW1lbnRJbXBsICpk
LCBib29sIHdzLCBpbnQgdywgYm9vbCBocywgaW50IGgpOwotICAgIH5JbWFnZSgpOwotICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU1ZhbHVlICpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNT
dGF0ZSAqZXhlYywgaW50IHRva2VuKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNT
dGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1
ZSwgaW50IGF0dHIgPSBOb25lKTsKLSAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRl
ICpleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUgKnZhbHVlLCBpbnQgLyphdHRyKi8pOwotICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoa2h0bWw6OkNhY2hlZE9iamVjdCAqKTsKLSAgICB2aXJ0dWFsIGJv
b2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSAqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9
Ci0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwotICAgIGVudW0geyBTcmMsIENvbXBs
ZXRlLCBPbkxvYWQsIFdpZHRoLCBIZWlnaHQgfTsKLSAgICAKLSAgICBraHRtbDo6Q2FjaGVkSW1h
Z2UqIGltYWdlKCkgeyByZXR1cm4gaW1nOyB9Ci0gICAgCi0gIHByaXZhdGU6Ci0gICAgVVN0cmlu
ZyBzcmM7Ci0gICAgUUd1YXJkZWRQdHI8RE9NOjpEb2N1bWVudEltcGw+IGRvYzsKLSAgICBraHRt
bDo6Q2FjaGVkSW1hZ2UqIGltZzsKLSAgICBKU0Fic3RyYWN0RXZlbnRMaXN0ZW5lciAqb25Mb2Fk
TGlzdGVuZXI7Ci0gICAgYm9vbCB3aWR0aFNldDsKLSAgICBib29sIGhlaWdodFNldDsKLSAgICBp
bnQgd2lkdGg7Ci0gICAgaW50IGhlaWdodDsKLSAgfTsKLQogICAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vIENvbnRleHQyRCBPYmplY3QgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgIGNsYXNzIENv
bnRleHQyRCA6IHB1YmxpYyBET01PYmplY3QgewogICBmcmllbmQgY2xhc3MgQ29udGV4dDJERnVu
Y3Rpb247CkBAIC01NDIsNyArNTE1LDcgQEAgcHJpdmF0ZTogICAgCiAKICAgY2xhc3MgSW1hZ2VQ
YXR0ZXJuIDogcHVibGljIERPTU9iamVjdCB7CiAgIHB1YmxpYzoKLSAgICBJbWFnZVBhdHRlcm4o
SW1hZ2UgKmksIGludCB0eXBlKTsKKyAgICBJbWFnZVBhdHRlcm4oY29uc3QgUVBpeG1hcCYgcGl4
bWFwLCBpbnQgcmVwZXRpdGlvblR5cGUpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU1ZhbHVlICpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRp
ZmllciAmcHJvcGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIgPSBOb25lKTsKSW5k
ZXg6IFdlYkNvcmUvbWFudWFsLXRlc3RzL2RyYWctaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL21hbnVhbC10ZXN0cy9kcmFnLWltYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hbnVhbC10ZXN0cy9kcmFnLWltYWdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5z
aXRpb25hbC8vRU4iCisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5k
dGQiPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKKyAg
ICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykKKyAgICBjLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0ciArICdcbicpKTsKK30KKwordmFyIGkg
PSBuZXcgSW1hZ2UoKQoraS5zcmMgPSJyZXNvdXJjZXMvd2Via2l0LWJhY2tncm91bmQucG5nIjsK
KworZnVuY3Rpb24gZHJhZ1N0YXJ0SGFuZGxlcigpIHsgIAorICAgIGV2ZW50LmRhdGFUcmFuc2Zl
ci5zZXREcmFnSW1hZ2UoaSwgMTAsIDEwKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3RzKCk7Ij4KKzxwPlRoaXMgdGVzdHMgdGhhdCBzZXR0aW5nIHRoZSBk
cmFnIGltYWdlIHdvcmtzLiBJZiB0aGlzIGlzIHN1Y2Nlc3NmdWwsIHRoZSBkcmFnIGljb24gd2hl
biBkcmFnZ2luZyB0aGUgdGV4dCBiZWxvdyBhcm91bmQgc2hvdWxkIGxvb2sgbGlrZSB0aGUgaW1h
Z2UgYmVsb3cuPC9wPgorPGltZyBzcmM9InJlc291cmNlcy93ZWJraXQtYmFja2dyb3VuZC5wbmci
PgorPGRpdiBvbmRyYWdzdGFydD0iZHJhZ1N0YXJ0SGFuZGxlcigpIiBzdHlsZT0iLWtodG1sLXVz
ZXItc2VsZWN0Om5vbmU7IC1raHRtbC11c2VyLWRyYWc6ZWxlbWVudDsiPlRyeSBkcmFnZ2luZyBt
ZSBhcm91bmQhPC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj4KKzwvcHJlPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvcmVzb3VyY2VzL3dlYmtpdC1iYWNrZ3Jv
dW5kLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Cg==
</data>
<flag name="review"
          id="1338"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>