.github/000077500000000000000000000000001517747421500124335ustar00rootroot00000000000000.github/workflows/000077500000000000000000000000001517747421500144705ustar00rootroot00000000000000.github/workflows/build.yml000066400000000000000000000016761517747421500163240ustar00rootroot00000000000000# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: build on: schedule: - cron: '0 0 1 * *' push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: ['lts/*'] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - run: npm i -g grunt-cli - run: npm install - run: grunt .gitignore000066400000000000000000000003401517747421500130600ustar00rootroot00000000000000/build /node_modules /*.log .idea/workspace.xml .idea/tasks.xml .idea/profiles_settings.xml .idea/inspectionProfiles/Project_Default.xml .idea/inspectionProfiles/profiles_settings.xml node_modules/.yarn-integrity /release.npmignore000066400000000000000000000002631517747421500130730ustar00rootroot00000000000000/.idea /artifacts /assets /build /test /node_modules /*.iml /*.ipr /*.iws /.travis.yml /.scrutinizer.yml /Gruntfile.js /*.lock *.log /corifeus-boot.json /release /.github /.vscode.vscode/000077500000000000000000000000001517747421500124345ustar00rootroot00000000000000.vscode/launch.json000066400000000000000000000011111517747421500145730ustar00rootroot00000000000000{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "outputCapture": "std", "name": "Launch Test", "skipFiles": [ "/**" ], "cwd": "${workspaceRoot}", "program": "./test/test.js" }, ] }Gruntfile.js000066400000000000000000000004231517747421500133670ustar00rootroot00000000000000module.exports = (grunt) => { const builder = require(`corifeus-builder`); const loader = new builder.loader(grunt); loader.js({ replacer: { type: 'p3x', }, }); grunt.registerTask('default', builder.config.task.build.js); };LICENSE000066400000000000000000000020131517747421500120740ustar00rootroot00000000000000MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.README.md000066400000000000000000000331771517747421500123650ustar00rootroot00000000000000[//]: #@corifeus-header [![NPM](https://img.shields.io/npm/v/p3x-html-pdf.svg)](https://www.npmjs.com/package/p3x-html-pdf) [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://paypal.me/patrikx3) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Corifeus @ Facebook](https://img.shields.io/badge/Facebook-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) [![Uptime Robot ratio (30 days)](https://img.shields.io/uptimerobot/ratio/m780749701-41bcade28c1ea8154eda7cca.svg)](https://stats.uptimerobot.com/9ggnzcWrw) # 📃 Generates PDF from HTML with custom headers and footers with wkhtmltopdf v2025.4.126 🌌 **Bugs are evident™ - MATRIX️** 🚧 **This project is under active development!** 📢 **We welcome your feedback and contributions.** ### NodeJS LTS is supported ### 🛠️ Built on NodeJs version ```txt v22.13.0 ``` # 📝 Description [//]: #@corifeus-header:end **p3x-html-pdf** is a Node.js package that generates PDFs from HTML with custom headers and footers using `wkhtmltopdf`. It is a robust tool for creating professional-grade PDFs with features like: - 📜 **Dynamic Headers and Footers**: Add placeholders for page numbers, dates, and more. - 🛠️ **Customizable Layouts**: Configure margins, orientation, and paper size. - ⚡ **Async/Await Support**: Modern JavaScript compatibility for efficient workflows. - 🔄 **Dynamic Content**: Render data-driven tables and content dynamically. --- ## 🚀 Installation Install via Yarn: ```bash yarn add p3x-html-pdf ``` Or install via npm: ```bash npm install p3x-html-pdf ``` Import in your project: ```javascript const { generate } = require('p3x-html-pdf'); ``` --- ## 🛠️ Features - 📜 **Custom Headers and Footers**: Create professional headers and footers with dynamic placeholders. - 🔀 **Flexible Page Settings**: Set paper size, orientation, margins, and more. - ⚡ **Async/Await Support**: Fully compatible with modern JavaScript workflows. - 📊 **Dynamic Tables and Content**: Generate tables and other dynamic HTML content easily. --- ## 📖 Usage Example ```javascript const { generate } = require('p3x-html-pdf'); const path = require('path'); (async () => { const options = { settings: { save: true, template: { format: 'A4', orientation: 'portrait', marginLeft: 10, marginRight: 10, }, html: `

Header Content

Content

This is a test PDF document.

Header 1 Header 2 Header 3
Data 1 Data 2 Data 3
Data 4 Data 5 Data 6
`, }, title: 'Sample PDF', saveFile: path.resolve(__dirname, 'output.pdf'), }; try { await generate(options); console.log('✅ PDF generated successfully!'); // or options.save = false const buffer = await generate(options); } catch (err) { console.error('❌ Error generating PDF:', err); } })(); ``` --- ## 🔧 Configuration ### Options - **Settings** - `save`: If false, it returns as a buffer. - `template.format`: Page size, e.g., `A4`, `Letter`. - `template.orientation`: Page orientation (`portrait` or `landscape`). - `template.marginLeft`, `template.marginRight`: Margins in mm. - `template.copies`: Copies to generate. - `template.fixedWidth` and `template.fixedHeight`: If above zero, generates in millimeters. - `html`: HTML content with placeholders. - **title**: PDF document title. - **saveFile**: Path for saving the PDF. - **base** The HTML base href is other then current directory, it can be online as well. - **css**: Customize the CSS for serving, by default it is in `src/ng-html-template.css` - **jquery**: The latest that works with webkit is jQuery v1.12.4 - **javascriptDelay**: The delay before the PDF is generated as default is 1000 ms. For more options, check the official [wkhtmltopdf usage guide](https://wkhtmltopdf.org/usage/wkhtmltopdf.txt). Unfortunately the version latest HTTS is not working, so it is better to use inline images or using HTTP as that is dated but with HTTP in local filesystem is perfect. --- ## 🌟 Placeholders You can use placeholders in your HTML for dynamic data (only these, but it is enough, the rest you can generate in HTML): - `${page}`: Current page. - `${pages}`: Total pages. Example: ```html ``` --- ## 📊 Advanced Features - **Debugging**: Use `debug: true` to enable detailed logs. - **Header/Footer Templates**: Create rich HTML templates for headers/footers. - **Dynamic Content**: Inject dynamic tables, invoices, or other content into the PDF. --- ## 🌍 Architecture `p3x-html-pdf` works seamlessly on Linux and Windows. ### ARM64 Support If `os.arch() === 'arm64'`, the package automatically sets the `wkhtmltopdf` path to `/usr/local/bin/wkhtmltopdf-arm64`. Download the binary manually and place it there: [wkhtmltopdf-arm64 binary](https://github.com/houseoftech/wkhtmltopdf-arm64/raw/refs/heads/master/bin/wkhtmltopdf-arm64). --- ## 🖼️ Example Output Check out an example output PDF: [Example PDF](https://cdn.corifeus.com/git/html-pdf/assets/test-output.pdf). ![Example Output](https://cdn.corifeus.com/git/html-pdf/assets/test-output.png) --- ## 🔬 Legacy Rendering with Webkit This library uses `wkhtmltopdf`, which relies on an older version of Webkit. As such, it does not support modern CSS features like `flexbox`. Instead, older solutions such as `float` and `table`-based layouts must be used for alignment. While these approaches are not modern, they are efficient and compatible with the rendering engine. For instance, the following layout works seamlessly: ```html
Header Logo

P3X HTML Invoice

Generated: 2023-10-01

``` --- ## Node.js Test Example The `node ./test/test.js` script demonstrates how to generate the example PDF: ```javascript const { generate } = require('../src/index'); const path = require('path'); const fs = require('fs'); (async () => { try { const outputPath = path.resolve(__dirname, '..', 'test-output.pdf'); if (fs.existsSync(outputPath)) { fs.unlinkSync(outputPath); } const options = { settings: { save: true, template: { format: 'A4', orientation: 'portrait', marginLeft: 10, marginRight: 10, }, html: '

Hello PDF

', }, title: 'Test PDF', saveFile: outputPath, }; await generate(options); console.log('PDF generated!'); } catch (error) { console.error('Error:', error); } })(); ``` --- # Puppeteer vs. p3x-html-pdf: Resource Usage and Features Comparison When deciding between **Puppeteer** and **p3x-html-pdf**, it's essential to understand their differences in resource usage and capabilities. ## Technology Difference - **p3x-html-pdf** is built on **wkhtmltopdf**, which uses the WebKit rendering engine. It's lightweight and optimized for HTML-to-PDF tasks. - **Puppeteer** launches a full **Chrome/Chromium** instance, consuming more CPU and memory, even in headless mode. ## Resource Usage Comparison | Feature | p3x-html-pdf (wkhtmltopdf) | Puppeteer (Chrome/Chromium) | |------------------------|---------------------------------------------|------------------------------------------| | **Memory Usage** | Low | High | | **CPU Usage** | Low | High | | **Startup Time** | Fast | Slower due to browser launch | | **Dynamic Content** | Limited support for JavaScript | Full support for JavaScript | | **Rendering Accuracy** | Basic CSS and HTML support | Pixel-perfect rendering with modern web standards | | **Flexibility** | Headers, footers, scripts (older JS versions) | Highly customizable (headers, footers, scripts) | | **Scalability** | Suitable for lightweight tasks and servers | Better for advanced use cases and large-scale rendering | | **File Size** | Smaller binary for wkhtmltopdf dependency | Puppeteer requires downloading Chromium (~100MB) | ## Trade-offs ### p3x-html-pdf (wkhtmltopdf) - **Pros:** - Lightweight and uses fewer resources. - Faster startup time. - Ideal for static HTML content with minimal JavaScript or CSS. - **Cons:** - Limited support for modern web standards and advanced JavaScript. - Basic rendering capabilities. ### Puppeteer - **Pros:** - Full support for dynamic content, advanced JavaScript, and modern web standards. - Highly customizable headers, footers, and PDF options. - Pixel-perfect rendering accuracy. - **Cons:** - Consumes more CPU and memory. - Slower startup time due to launching a full Chrome/Chromium instance. ## When to Use Each ### Use **p3x-html-pdf (wkhtmltopdf)**: - When your content is **static** or doesn’t rely on modern web technologies. - When resource efficiency is a priority (e.g., on resource-constrained servers). ### Use **Puppeteer**: - When your content is **dynamic** or relies heavily on JavaScript and CSS. - When rendering accuracy, modern web technology support, or customization is critical. ## Conclusion - **p3x-html-pdf** (wkhtmltopdf) is a better fit for lightweight tasks with simple requirements. - **Puppeteer** excels in advanced and dynamic use cases but comes with higher resource costs. --- **Happy PDF Generating!** 🎉 [//]: #@corifeus-footer --- ## 🚀 Quick and Affordable Web Development Services If you want to quickly and affordably develop your next digital project, visit [corifeus.eu](https://corifeus.eu) for expert solutions tailored to your needs. --- ## 🌐 Powerful Online Networking Tool Discover the powerful and free online networking tool at [network.corifeus.com](https://network.corifeus.com). **🆓 Free** Designed for professionals and enthusiasts, this tool provides essential features for network analysis, troubleshooting, and management. Additionally, it offers tools for: - 📡 Monitoring TCP, HTTP, and Ping to ensure optimal network performance and reliability. - 📊 Status page management to track uptime, performance, and incidents in real time with customizable dashboards. All these features are completely free to use. --- ## ❤️ Support Our Open-Source Project If you appreciate our work, consider ⭐ starring this repository or 💰 making a donation to support server maintenance and ongoing development. Your support means the world to us—thank you! --- ### 🌍 About My Domains All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](https://corifeus.eu), and [corifeus.com](https://corifeus.com), are developed in my spare time. While you may encounter minor errors, the sites are generally stable and fully functional. --- ### 📈 Versioning Policy **Version Structure:** We follow a **Major.Minor.Patch** versioning scheme: - **Major:** 📅 Corresponds to the current year. - **Minor:** 🌓 Set as 4 for releases from January to June, and 10 for July to December. - **Patch:** 🔧 Incremental, updated with each build. **🚨 Important Changes:** Any breaking changes are prominently noted in the readme to keep you informed. --- [**P3X-HTML-PDF**](https://corifeus.com/html-pdf) Build v2025.4.126 [![NPM](https://img.shields.io/npm/v/p3x-html-pdf.svg)](https://www.npmjs.com/package/p3x-html-pdf) [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) [//]: #@corifeus-footer:end assets/000077500000000000000000000000001517747421500123755ustar00rootroot00000000000000assets/test-output.pdf000066400000000000000000000702101517747421500154050ustar00rootroot00000000000000%PDF-1.4 1 0 obj << /Title (P3X-HTML-PDF Detailed Invoice 1/16/2025, 6:23:32 AM) /Creator (wkhtmltopdf 0.12.4) /Producer (Qt 4.8.7) /CreationDate (D:20250116062333+01'00') >> endobj 3 0 obj << /Type /ExtGState /SA true /SM 0.02 /ca 1.0 /CA 1.0 /AIS false /SMask /None>> endobj 4 0 obj [/Pattern /DeviceRGB] endobj 8 0 obj [0 /XYZ 28.5000000 728.750000 0] endobj 9 0 obj << /Type /XObject /Subtype /Image /Width 256 /Height 256 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 10 0 R /Filter /FlateDecode >> stream xG]sJ&$$I$$L2$$d2GLL2L$I2III$$ɕ\ۗs=_uy+)*ld7a+@l [&l g%`z25:"<;a@1[_2Țc@ցDe>ցÃl3[ />V?tg[ Yswcl-Tqg3y{;~lD8Ni>V47z&{^]bq'J,(z%m"=;zQ6؊O1lEN<bkrG +59H^}ևA%cr8[cogmتřg}V!jU`rc/N0GxE=*V%?^leJ o\Y6-kg9@݁,lqItBϰ }[puz-O0)uܳ+醜=[`_!ïG s-P(_u3֌P(eS r-Q )8Y[@rWy0F<;-RA@ Had|gk{aNse "Y [ ObD1.P= V*{Ɔ E2xYsY-Uc@**?N XhɬWhɬWhȬWhGZ2 Z2 `X1*ʇXEtfB*9lŶYCТȱwC#dͬl#U>rMƎ0 - ThYN懟Jf\Jf@;lPˬRhYCB5 Fzf(r[ȬkȬnoL{acK* -2|[G3 [e3aNfA6|X/NfSVܳms?-ٗB7'$w~fP' r^w*)_s2F3Y-st^f R ,ӫj0ш<nff)3t9 j\̪Evz]wȬZlƝ#APf:]x!VΫjQ riZmqQ0Y!Z-yHI%ن:x qȫEQWrb(42[$KoYASy{"<0Ɗ m1?Omaw6Lbȫd܀u ?Vk;TJtȐWI3}VvS+7pKV:gȸDэ`wݖ赉RG[l6{= B_Zl [(B9oxR 0݇(;kuք-R ϝRlyɵQ >GJ7q֣c&h9M ߥ,MкَG}->v_6`L$JtP/Rl$9UlV'mT{Bj:ڋƨyLjweGвڎ*[y|aU1aL|I6 RtTY'O_*xԗHQeF :RhWwSŽUW/wG!-h1I|ȫ$~*0uq$:d'Qf">*0q4:*0S/JGF 2U`(騂hC^Q5t:(-uTA)|SꨂhQ&Rc0C^%F )X%ƒVGF ZU`'QтXGە:X먂sScI b>*0a:\쨂n Q7Jʂ$;Ŏ*0UPwf;Ѣ >Z endstream endobj 10 0 obj 2381 endobj 11 0 obj << /Type /XObject /Subtype /Image /Width 256 /Height 256 /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 9 0 R /Length 12 0 R /Filter /FlateDecode >> stream xn8s 3,w/q(9MҤAIy@Aʐ᝗(̫ROPf5>0~x>1ZoLؚéJ? vt]絍֝ږ~Gnnp>`76Cy˱Wl1&:u1=1OxR.vyc֥ `u>ϴϞpp99k/욓8-3v{;~:m_I6Ɵ~vK{3O~x_V6]lߎ_.)F7Ɵ.< gGYR?1CoK?)8vd#"2{gҏ J)qik;"1<;"Yť;g*Ġ|kS,/پ]#uұ/ݫ?hKuƟ@$=n)&Cϣoy~z>ϥNbv+_GhaJҟNGM~hq2vɯ |w?qZrUCDy|1?"En1ݞM oN~qh wW5~8^}y~" m@bKV}nj۟|'dҏ<<Mo 4@}r:V7'm!ԋ(ً9<AaCȰEKo t8/tmBJD/iWbP#C>"jEd !ANs-"$ؽ!u[u Ǥu `$#K#cpk-.uC=|]y3~TԽrͰeNo@_{1~(?9y%-P29tgGO(m E fS_4<$y|-=(HxN'Ɵ v};8&Fݯ !fB)אe㇭1sӢ,T/aY؟R}ߗ~\oE_ܞD'lx8xS,l->Zf8'G_pHƿԭ8;Kx/!yڬ]5o3M\瀌!lA1ٿX#.>lNS"[Kϛ[w"7Xl2?t 8vPM15ǣ Vr~& ϑL/oy+v:ϣ r~HW/@rVQ;`n>ﴉXUސT-kdǠВux>(Pؿ5+[{^F:vo5]ו-*+{ ҟV"ҿ.Xwi-ni](4ΩzsBP &krVҹ1L"EԚ^Ť]C@._V! rmJa@zH EvFX|I7=hu~J)FX|bz|TNΑx܋5Nt+Jd'ILNQvƕ){+* ;UTS&;s1N_8EjMgH=q6rY.m{t?^ՙjOJrWOJr¤|ad ARʗ BѨi{q=u#-eFl7HrA / 60 ]T(t]'N2i#8m=O mk<sڛ~ۅ-ZWi9)glC4&Qv؇a+UŵW"z6o\m* }6؎CigkH3j -A.6'P'p<~t(B: ARٮ (DF ?b.egK;E$J1.#e$DA(G̞Ɩ?5xBY gSz`.\Z;Xócdbv8!Ԁpn,Nu 7y|)dlߘՐ^/jǏҟ`*?}ނ}%Zl VolG&MӱukEnPZ[ڢF6%=P%2k5<UrܫDW2俗Яr_x8_.kMr TLXGvk S76z6{:R U#[T2g%K: c\QnyXOw-r- -ܞS]8!㇠ .8sB+8m|&n<Qp-Kx>F٠)/ᇶx h)^?)~qgxa*r hY6k6_F}.4K0wNl~h)ȼqg }( 0hzqDFR7M ,@>Nc<7z's"1~kOݩK?8՞to`'\/`. ->+ x>S=[2qBTok0Fqî9M tP)r834lC$L`]t3.lK;Q`o}װͭ +N} {/oqs&'T~ۅ=T:LIxᇝ>f]"z6x {>S1gS`~a,=kNr ^J?&D}|q>}>%9?Գ3ᔤzk'd&5sa$H^YY\5QG|bo1~$.Ta1 endstream endobj 12 0 obj 3873 endobj 5 0 obj << /Type /Page /Parent 2 0 R /Contents 13 0 R /Resources 15 0 R /Annots 16 0 R /MediaBox [0 0 595 842] >> endobj 15 0 obj << /ColorSpace << /PCSp 4 0 R /CSp /DeviceRGB /CSpg /DeviceGray >> /ExtGState << /GSa 3 0 R >> /Pattern << >> /Font << /F6 6 0 R /F7 7 0 R >> /XObject << /Im11 11 0 R >> >> endobj 16 0 obj [ ] endobj 13 0 obj << /Length 14 0 R /Filter /FlateDecode >> stream x]o6+t= IÀ6ib@v1tz?">@#[yz$b}s_ۍoPwەozؼټi6}?m&vJU߷~+"~~㥯cҶ/?_6Z +beͻOm=DPJ+-s]^U_\Q+ƺ7n Ub])+m*U/JEEX٤( Kѹ&U K{T$'͓.Dz$;`@".zJXQ0u!Uiiwe)IFLE KH:v\*"H&aC:{h*"HaE:~t*"HaE6@  tsUB̧؇tsUB̧؋tsUB̧lsJN`.Jr`.Jrz`.Jrs`.|B3*T@$Ѱg, hؓTS{\D4yKTytAT A2<{jj O=sI5]'ϞJKelP%|J}Hg0P%|JHg0P%|ʹf0LA>[QUDLDÞ.H&a\RMqA$Ѱg.F"R s-c*!Hg\RMqA$ɳg. 3TS|Bɝ O  O  O9 )'1y>*h3TS{\D4K=.d"%HD`BelP%| K=.d>%tA2{jj""SO(+}\@)!\@)"\@)"\"2;oGTA2 {jj =sI5]LDÞH,@ O=sI5]̧.HS`\RMMDd $w2 \>>3 \>^3 \>\d3KD`&GD+z<^D=[B55f!U@VKznR$D`RMMYg =IQBB%{Tjj-7%u_W_X,nsUJVwV W]̜rCuTwllTʊG=R=:2P<`iM>Һ\7i`vWw(ףܿ=㟟MOMԞ &kjk\{>wN4Z4 e\5P',uK{K`Gq_}[O1Wi]> u`\tGkn)%,5. Gx[pvQg 1\E50 g Yk#G%=w>P5k蛴nnuN7IV95"c\5[%yiVn\];g+X{^Ǽ>K֊ݮtrkޱk36ϻqHmfA(rvV LbO{чm1Ss :&p qI|οTN5+o8Y9xAZB4g&c]XcP5nYy+Yhz _Z欜d<raMnJiҬT#_Qr$ dxx⥙͙룁ru1:r~=fpk:B'_HjzW۠z#Ddrd gh$C˅h&]-@ 7ֱ#uv|u䱣Q|a}a!uF b)_XK:234|)_g5ܪ^gt01$&=vI ޜ3X4taf@to:fdo%/Lߌ>X/iS& $Q]b&2y [+7WbcKpDLaƁ @kgOɃq-1|֓(9gW5ZGd` ikcK/Lc<3гN 8h``.'LQEdSP&?|XXSޒ0vq4|=$#o ɷ(f\`2gdx0ҹi0+Pp5K&Bu;x65 2b_pЏ]#`d\w-#OLY{ja.]1/}VT~ Z6}_l>WէK}aF {]v25u9F}uݽUud1%=]og74~:w]%4{l3YZf b1RmKޛ[t5pyh1+jx;X`iϮge;"n7,òde,| }+,X rkKBbhc0d"4ΝV'fOX 1.32!reL`~Y<7aoOO.??4_&͔Ua;](d%X>mwȚ!j_ <6M/ yV endstream endobj 14 0 obj 2603 endobj 18 0 obj [1 /XYZ 28.5000000 728.750000 0] endobj 19 0 obj << /Type /Annot /Subtype /Link /Rect [276.750000 636.500000 345 645.500000 ] /Border [0 0 0] /A << /Type /Action /S /URI /URI (mailto:support@p3x.com) >> >> endobj 17 0 obj << /Type /Page /Parent 2 0 R /Contents 20 0 R /Resources 22 0 R /Annots 23 0 R /MediaBox [0 0 595 842] >> endobj 22 0 obj << /ColorSpace << /PCSp 4 0 R /CSp /DeviceRGB /CSpg /DeviceGray >> /ExtGState << /GSa 3 0 R >> /Pattern << >> /Font << /F6 6 0 R /F7 7 0 R >> /XObject << /Im11 11 0 R >> >> endobj 23 0 obj [ 19 0 R ] endobj 20 0 obj << /Length 21 0 R /Filter /FlateDecode >> stream x[K6W`eIE7)CpAȡHڒ[ (8 %rl~mu?MmB;vپyl}1UO??Lo.u_5NG-L8jF\J%LF]DBlO^xHyrO~ӬZ&"Oekmޱ͇߳FV+͠ "^nɀmr8BDhލ Bq<HoL>x l=*)r{ ο*xޠ*pLh d@rFO[Z6D}R-&?أOsi5$YB(DMYOVRy&8a>^ko ;:rk(^)Bu֥.lɱĂ&Rxm^8B!k|bP"! yg χb]ْ8-S(΄ŖX&tT0uH&n&A줟/I/"p G O"E_oۼo_`^ȼ@45LIVpN ΏQuHUyM^VuqM$1D;L;)x.[r G3C줟Kz%XKO"z|7lKFPBo9%T+׈&rOIG<J@%PM0Ք M!&dd8&nL)"@R=:Yd ڐ[AKA71h YC줟RRS< O"b n:r|WpC 40)!(Q<փvlcqˑfu&iQrolk S -N h/r hmxQPw{!KV%Z=B%P%lD2xx$+'/;8U-{k&Ol3P@u8lC67%$|i!)xB>}ۀPwsL3-m\:{r <ݗ/*qЭwۭ I/zqi>lטdu|y'7Vq{} 8mH h&'ӃRo]SAmzҳRבi}q il[l;q'cM*ȒlO5hͧF:)؝PR(T ˎEĠhv s8trElrNVYD=qmң>*tf B<8^:c8bs >gv&M=%a)%JC(( dH2=`UtVfjnzx1%76En:H>sm \2.^C*?_6T@!SH^'%4,kc/n endstream endobj 21 0 obj 1591 endobj 25 0 obj [2 /XYZ 28.5000000 728.750000 0] endobj 26 0 obj << /__WKANCHOR_2 8 0 R /__WKANCHOR_4 18 0 R /__WKANCHOR_6 25 0 R >> endobj 28 0 obj <> endobj 29 0 obj <> endobj 30 0 obj <> endobj 27 0 obj <> endobj 31 0 obj << /Type /Catalog /Pages 2 0 R /Outlines 27 0 R /PageMode /UseOutlines /Dests 26 0 R >> endobj 24 0 obj << /Type /Page /Parent 2 0 R /Contents 32 0 R /Resources 34 0 R /Annots 35 0 R /MediaBox [0 0 595 842] >> endobj 34 0 obj << /ColorSpace << /PCSp 4 0 R /CSp /DeviceRGB /CSpg /DeviceGray >> /ExtGState << /GSa 3 0 R >> /Pattern << >> /Font << /F6 6 0 R /F7 7 0 R >> /XObject << /Im11 11 0 R >> >> endobj 35 0 obj [ ] endobj 32 0 obj << /Length 33 0 R /Filter /FlateDecode >> stream xYK0WT׏ !vj% Њ.T{NdvWRkwlxؓWMlLpgDx3isn >~'RG8R Z J6;Qm1ov "ڨW%;$u츃qTJR6jbɱ}lRKK [K 5rX;mSuMɚx?X;~KNv00 (!)qBs+LGn$IhI*#ŸQ_ݧ_8)yj\Sn fDh}v00CqjOy)y?RA+`>Xډ sﲀ: +uѼZ&Ws',t(8w*w"CP<4ߛ-JWRU">m/1-?9%xޓ=Pϖ!eМC ˜'1)~%OD lFGGsBFDUbdK@qvNlĒ-}6 endstream endobj 33 0 obj 1017 endobj 36 0 obj << /Type /FontDescriptor /FontName /QKBAAA+NimbusSans-Regular /Flags 4 /FontBBox [-210 -299 1032 1075 ] /ItalicAngle 0 /Ascent 729 /Descent -271 /CapHeight 729 /StemV 50 /FontFile2 37 0 R >> endobj 37 0 obj << /Length1 7376 /Length 40 0 R /Filter /FlateDecode >> stream xYy\SW羗I"DdId"+,BD֢KVDkEbJ贶ui]j[a8ggL<~羄.̃ǻ={ B ypd- kl~Qيwqe⵴iׄUUL dZ3TXYSenjױ(yLCȔ_o.i'&RCC+17(bvA$Bxrzыnfd^yi$x om1!ř<Ÿ ֫j߆IP_ߏ7NΚJ\'c0JR^RT&nϨ/x -3hAdG-^Q5>צ" 1 %H9puNBkj:l|5-FCu&.T!U**FTaRi cǾTqwN=edͫ,^ t@reΧTXk*<'}|kjL|_lZ{$jJ O(u9Ҧzgtd [&0ޜ6=pE8JAKSpCw|>b {rȈx ,:Jea #&Dc4q-.n@Sz/SVehvZφܼO22v}aH%{)p$#fwǨHĽqg ]r|vrS;C϶G sPZ.:+n#0xO(X-qW 6G؆RCP"1?U6Q1-TɇL{Eӟz=C5x>tAm\lm㨲HSe=}n+#Y5Y`Άq%qt"~x7akQFor>Χ a$_Qir"l:$Z9Ȑ=qô8>38S&NK'~޴L[k򙉺%UCps+^Z⒛;K% ]am[L*8Жm{b2 Oܤ ]_ -77 x)X19 {?n8#7>ڮٮ܃ĨJ~F(.m;wVWxjfN6΄|( ;.;<@@8WBv"BF-IwPW/+OXؙ,NйWcTT?l d`);6L5U6-=; ß?( ,+N7Ayq3y"wP: )ӼXsیGkjlug  ƲM9ZmNd>>{o͂Ee]q4/GGa.ZmbZ,ۈI 1" ??TxHEA \"R&sE]Qڻz'F-NϬkt^E-k=N>h ܰjvJ*,0> (\ޒM6.j]mh?_8w,:Q7c? ȉE0ȉN>,k$tj,/D[I 0,hHLdd4872p[9{7@T}w=pswns$A$C>1Lɔ AU(tZ(<=[ݾv.ڛNu/c+dnֱFG'-&NS<4Š \3L1-<}\<45+V6A_ 7h}/V=}`Ԗ"p`(S ]Sgk^JnV+oޣ?j95u[m51X\]̛ݹ~ot=bAڇ4@/K_-:,u;٢eng ݓ\ɫTnD>RIDdň6_%5ZetoquDc =\Jp\ gGfMZ*;{uA[آR((P +{uM35Z3c=pV p*}P˝^znc\H)~?7 ȻkD~vR,_IzwOϩXi paZ2r{|̚cuKzByw/?uZj^@dXf-/=xo۶afW0f"sX sx{RLvQQ/*pQ聭{v HOm Y]j<\y ~&g/@aBxe msx[֣+g[z.nId,2q""T!~d.v|4dȉ):, >:xuZψ>Zb{beW49YuWBΫB߶󅊥=XAjɚCF7.4ؘؚ B`b&GKr% fGя: HNi ֹuϝ⻟|~-PM? _Doph;l_=o6t5%xukc{K>ZM=P^5B6XTEfk-|⮽§z6Z.uG&!p +=\RhMIlș4U/qjP ɥ}}}pGm"e~VGz3v$jdrWsn͈Iddˮ.^>Xg>Ց 2yt>:/ِv#g-yi I889E<Z;vXyvxFb~`6WV8iӎ%͡*߾}F:[E~3y5wQ﷕UF3W89ԽǺ`+|@EߚT5||U\;_~0vcg-дҵ\Y,ftI)j 9#g\6IׄK/B Dü#3괿S,6YNUgə3^gҼIJqj&1vs-U\V`4Ǟ6V@l3%4GNXj6MnnlFg9n,45[X[8Wu\B}q뾩btܘ #oЉ: rm}@$e7 FxvxbQ. .hxN,.Vے?⭞T'VDΝX|x=DMk`Jٰo.O:~qyUB-He'$I>=91̑\&F݁|yBONx']^|&ӄw&O9߿C^^lL5G6y c0\f~cNR{wb"y0O',nUZF@ȭrqx=9_$z6ɇR_iL&Uޕ}¹tiu9U1ic19>رcVsgbeLj__ȱ ?=M19JRmp%h?uζ5;<%[mMlsӜm@-!a-m3r YzkCueUWXHRWBycue6VZuMF%u9͵% 891 Ֆ:!!Q&Շ"Bꉕ4 ڕ #!$+g/+7^$Fq~#W3cW9f\g{GRm%br/ 'eiv>D:-"km` endstream endobj 40 0 obj 5489 endobj 38 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /NimbusSans-Regular /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 36 0 R /CIDToGIDMap /Identity /W [0 [276 606 552 220 496 276 552 496 552 496 552 716 552 276 330 552 552 552 220 552 276 496 276 662 662 552 552 552 662 552 552 716 552 552 716 552 662 552 606 772 552 716 552 276 496 662 552 826 716 772 276 276 552 276 826 496 552 1007 496 276 936 662 ] ] >> endobj 39 0 obj << /Length 791 >> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange <0000> endcodespacerange 2 beginbfrange <0000> <0000> <0000> <0001> <003D> [<0054> <0068> <0069> <0073> <0020> <006E> <0076> <006F> <0063> <0065> <0077> <0061> <0074> <0072> <0075> <0064> <0067> <006C> <0070> <0066> <0079> <002E> <0050> <0041> <0031> <0024> <0030> <0042> <0032> <0034> <0043> <0033> <0039> <0044> <0036> <0045> <0035> <0046> <0047> <0037> <0048> <0038> <0049> <004A> <004B> <004C> <004D> <004E> <004F> <003A> <002F> <0062> <002C> <006D> <006B> <0071> <0040> <0078> <0021> <0057> <0053> ] endbfrange endcmap CMapName currentdict /CMap defineresource pop end end endstream endobj 7 0 obj << /Type /Font /Subtype /Type0 /BaseFont /NimbusSans-Regular /Encoding /Identity-H /DescendantFonts [38 0 R] /ToUnicode 39 0 R>> endobj 41 0 obj << /Type /FontDescriptor /FontName /QPBAAA+NimbusSans-Bold /Flags 4 /FontBBox [-188 -307 1069 1070 ] /ItalicAngle 0 /Ascent 729 /Descent -271 /CapHeight 729 /StemV 69 /FontFile2 42 0 R >> endobj 42 0 obj << /Length1 5784 /Length 45 0 R /Filter /FlateDecode >> stream xX XSWk %DHbBGP0(" "E@Um~V:S۩/tږ\vz[v3]$*oYgֿB%"BϾuGdz}@XLu\'2 c:9(?c?qk~s  MΪGدhDbH>!1lj(+a礩DDҗp-F+T4#w7WI4Ds??pQ`$ GeoC tlZk,H=s9J^%Rk7!릑\sxu oy[/EוD-hE"-밇_1&o"nCHw@ERmp#!> (bVUIjHvؔ* | @ZݮӝYT O\WD/Fro ||$+=RܩC4@ECɀoowl֘pOxinS!j `~@쥣yV V6gB"r ^j+f=7 ?ti*_n2gہN;ߓp}x(Ӏ*427ٙfJ"2?~ty* X\nV &loh l<Ï0::OȚz։]DzJ0nE%b ;q Fz:l=AUO1`+`>H{bMox_$耐MpB/hͩޜش +BolD~O C2sO#yO`:Ec޷ӫr%kd&ĎW>j /h拀yHC5"-bVHB[i(UZ췆v&gLaj[IA3lqJgi~I0v; ZBfIup*OΌ߽4Vve3e3G2wHd^ܿ*1qUIgHr99rwτ8+JUD[?a_d\`w/Qt:9wSv$b1̛1 aBfc ZR({е$iomm.6{ew7x9g !Bx|RD7G1 9)@>WPil?~nV{]E")0O gd%Jk)Y]kw[}^ zb>'WR~V/Nл1v=tb)$6WvTu8ŽcK ~:C\Da @vļ#Q^E"' ܎ /֞v1?\_̞tDڹTǘPФ"$6!- 'ƻ$G-<*+3k)z}w=14`ުSbD Y1b @xR1I*8;7НO<;hyw`A% ,ϴ: (?^nYd#snY~tXĥd7nX]l+[ nxhAIܟ?l?:|kV|Ģf|P$\|״^ PJlVcIs槬X@Z .*J ̀"%U%~\Hh1zD<"pL)kjXzX;!10<~mgHE`) *ߔdrSx|߾rί}cc7#q6ټ eTz q82UiDņ!Vzip*{66v ;sv k2Ň% #1Ld?!~8lwfÓVC1I<}k7:8;puFXBTP11lps"R< :zUZ&4&cq1y€Mz6v K]oOuEs-Jq_c961[W{޳r;瘤788nhei{^"as?}y(AaXmqћ,T;* KU)1,?,"/zUfջϸjG;Sa}M"fbƁ[]: Kgr5-Efn.u[p} #vg7jcIHHl.WD,hkDazܞTXbZTq2>o^UqUzyGYhw#j7 z?{zQggR|3k~8?$=j3F>zU QV_92&|_y+d[؉,Z=XS'y nE*%n,e($KG һG6֣uδG@MLQ돶P}c쥾}^6hOxNA D+3w6[fU:kݬ !Peх!>rq AE006q<3^Պv_=?!=XS5^izN^"~dJ'io?) (ޟPÄM0ͤ{uo92g묑ٮ/㿑s#> >EҒk"}@:QR(gm8`ܨe/^6?P0\[lX_8l:?aOW'H J;X0#daGuts_LxMWi`oR:JR58H1ʴ=r:2,R ϫsOv;{8\{&ˊsX)J@D&>;>G,H%]R$=&}AV6˺ee0"y,|_~q]@.ڔpfx"2}m1@-!sI;% |mJd0hY)̇J_[;EDF.[nj^_[Cc6h5;ԍ[5hnjܸuY_9BX1X6MLm\ު1EEGBBĴAYFV7iBzRK> /FontDescriptor 41 0 R /CIDToGIDMap /Identity /W [0 [276 276 606 552 606 276 552 552 276 716 330 882 772 606 552 552 662 386 606 276 662 606 552 552 552 552 276 662 716 330 552 882 330 552 552 552 552 662 716 826 606 606 330 606 716 552 ] ] >> endobj 44 0 obj << /Length 679 >> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange <0000> endcodespacerange 2 beginbfrange <0000> <0000> <0000> <0001> <002D> [<0049> <006E> <0076> <006F> <0069> <0063> <0065> <0020> <0043> <0074> <006D> <0051> <0075> <0061> <0079> <0050> <0072> <0054> <006C> <0053> <0062> <0024> <0033> <0039> <0030> <002E> <0056> <0041> <0028> <0032> <0025> <0029> <0037> <0038> <0034> <0036> <0058> <0048> <004D> <004C> <0064> <0066> <0046> <004E> <0073> ] endbfrange endcmap CMapName currentdict /CMap defineresource pop end end endstream endobj 6 0 obj << /Type /Font /Subtype /Type0 /BaseFont /NimbusSans-Bold /Encoding /Identity-H /DescendantFonts [43 0 R] /ToUnicode 44 0 R>> endobj 2 0 obj << /Type /Pages /Kids [ 5 0 R 17 0 R 24 0 R ] /Count 3 /ProcSet [/PDF /Text /ImageB /ImageC] >> endobj xref 0 46 0000000000 65535 f 0000000009 00000 n 0000027696 00000 n 0000000265 00000 n 0000000360 00000 n 0000007103 00000 n 0000027555 00000 n 0000021664 00000 n 0000000397 00000 n 0000000448 00000 n 0000003002 00000 n 0000003023 00000 n 0000007082 00000 n 0000007433 00000 n 0000010112 00000 n 0000007224 00000 n 0000007413 00000 n 0000010361 00000 n 0000010133 00000 n 0000010185 00000 n 0000010699 00000 n 0000012366 00000 n 0000010483 00000 n 0000010672 00000 n 0000013095 00000 n 0000012387 00000 n 0000012439 00000 n 0000012928 00000 n 0000012523 00000 n 0000012651 00000 n 0000012808 00000 n 0000012991 00000 n 0000013426 00000 n 0000014519 00000 n 0000013217 00000 n 0000013406 00000 n 0000014540 00000 n 0000014753 00000 n 0000020354 00000 n 0000020821 00000 n 0000020333 00000 n 0000021808 00000 n 0000022018 00000 n 0000026425 00000 n 0000026824 00000 n 0000026404 00000 n trailer << /Size 46 /Info 1 0 R /Root 31 0 R >> startxref 27808 %%EOF assets/test-output.png000066400000000000000000002400571517747421500154300ustar00rootroot00000000000000PNG  IHDR)BPsBITOtEXtSoftwaregnome-screenshot> IDATxg@W7ґ^XQ+ !{5jXb/``A)((H.l{?w]DTXO̙3pyڰb1#v}MrP7 oA@ސ!yC  9(rP7 oA@ސ!yC  9(rP7 oA@ސ!yC  9(rP7 oA@ސ!mrss޽(?}S߁T 9hcz6mZiӦcrC,?|%;OBwm#QYYyٷWO_#$䠍Ajj]ܼVcǎ@u6lb{HH4h @uXbcTQQqB7?{ႍM}hm ee5U՟<=@II볧OB!f6l1@ m`D"ѳ'O>5%iӪU+10Cڐ9}\.٩r*SSz m0~cw!fO6B0<}t׎?޽}+$w}X ߻J߫ߗ%uH__WC]?|_.KRpΟo`_/| )X1nWY_'MD/<4DxOH$=zhWRbR :@vNEE'>"$e%Y.ߗM7>~ ,fG6M΁" X2dofD6mx.e v!.TTT^}9Yj A_VV։cޗ/_*/^IGa[`u9h}Bݺ5m|b;AP(|p;?[@`zu@CZ?|Oz}R,YDF9h=ˆǏª`2rw̅FI+Hۯ|766tY] 7h._>r,++Z (42A$++C~׮ܜ40CZb۷owl"~f&Immm.[;M =ں+59Nsi(0z=|ǫlɓXG/u%5%e{}z={6Ūr'{m QVjkkEl䠵KǏ9EKuС~ M999{vyÿo5dpѣJ$h!n }R$}]%}.bEzhZ |G6o-##+QVV^ji-}B\'{/r66zK-B_7IMImӦ[[3JT9~ouH@@5x<Ϲs)/ƪ8i3{Q+4AXvv֞n޸Yz;2}·WP "۷2EThjjSGWVjh(Tee;wܵ;5%V*p8sرcЀ S'O:V#\\ƎW"@>/#-헵>}* kN333+V >#(0pڔ)AAA***uPhI>.ܷUPP0ѣOX'@Âj矊ZXIR,]aаD"=_Lt,b},kI L6N2U H*CݧnKÂTH$z^}R+Vnu*;;YjjgϞݵkWG }lZG""""&9C;r8p2..7Y3t94qNNNӦM#p܇޼yS$y{{w-000882i$^tiɒ%,kݺu&M 0`@VV˗ !gVXQZZJ;B7ݣ(U>===77W__׭Gk֬r7A_VٳZ.dҥuQ9|;::m''Ȥ(|N__儐֭[_YYYqqqɓϝ;?VVVB֭[!nݚҢLRLMM޼y3p@Bț7o!fff_7oBMݻ :L0~ÇO:_B @)..~wxBU!4֦WYYlooO)޾}f먑ŋǏ_h!$<<իWÇB*++8ZB !敕W.((p83f_ڴiCoݺU֬Yfg̘yf[[[@gee kז۷o֭֭y/_I߷ WwWisrɓ'#vKM 펧 %ׯu111777\>ڵk]YYTVVֲef͚ŵ.]A;w.!$11ѱk׮AAArtСC !AAA˗B VPP_9R*_&xxx,^ҩS'77@CCÌ B!bxaaâb8$$d;D uw!`Bc㺻yI;w˗/#""+%BiJ2eNUTT<~͛7EڵxǏ !;vzj|SSSAۼlСC/_SBEsP:,6hР|>_jsw\޽{gҝ!F*o7o{WFzF]_K,?s&==}ذafu}EӺu>}mN:1777oޏ?dɒǏO8B|m!{\J,K\]]?BN""""""JbT]f%Ç_|977#ޞ6ӁJJJӆ!"DWWW*e:tV)Sw=H@WŪGM.---=+xOxsquh*(.[[ Ty͛b#88,??&XONLL$Xw9rd=ϝ;ڂرcG:3I:t@gh#(! ,..f&xy6-;l@UUn0 dXMr8WJu4֜Nz[_bugϜ6sI>(@DDę3g84)8 4JNN>s !u#FXd!du:1C | MNNё/E T_|> 3_f D QRRBHvd;3!?cƌ;vlHH.|^^^m}TAbq@@_7cBN^W77{{{=Р 4ϯ|ƌ} !OEEm6:iҥl6bرW\IKK^d|ֶͱݷo߾}$ڞ;wV>|ɓ' !ݺuczKHۗjll| t%9ahh___Xlmm}5Bfnݔ˗Ϝ9SQQ̙33gά՚D;hYYGVXY (C,^pqӧL嬬 cƌl6;55LJ&-[Z޼y344ҳgOfܹs .0ZwA?ښY'p8;wDW߿?11b͜9sUVn:"ߞ={Լ455UTTmۦe˖7߿ǠbqFP222o}ɀAFզmoyW@]k,,,)}ݜ {{!C㘘:ROO)O :Y,=.+ǏtQRiiiVEE%+++--ҢE mm|,jee[\\LRSSk۶NәmۖdJUtdeeeweޓ4x`ϝI{7o***,--ǎ+9u)77͛jjj[vvv4T,غ͛7kM:v2ե[UA|͛7w{vVv}eڴm3h!ÆZYYa9'h|mr/?D. A%l}}޽{=^CC͢h4x< +etiرׯf[ >uރE"Q,KOOo֜9Ρ4\M%b1ÿw>|~e,kА!7l0334!ccb>|2Ė<﻽*M7+b&2D"Q~~~llG?{r;C[[gU?=,P+z*)'''**?it)zb~^nߋ@!B^^^TT=yYV- ݺw_a}vu::aa?xs9gח 9hpܗ/^<|I`PZZZ45u Μ= @BD"Qjjut C#߼64k@S(ڴiST-66PKK2B0;;Xrg\\ .))D´f͚0;+++ !byBQQQaa΂͛+))=<9bǩ 7DǏȨY,V:ᵜdx}m۶ܹsmڴYr|ؼ=zԤs׮])/_._STTt}&񱲲6lgRRPTT2~x?<zSNCCCiɓYf1G92bĈ+VȈ6}/jiimݺUAAŋǏ߲eKBB߮]N8q̙UV=}۷~՞={X,VYYɓ';9hM}xZYC]}Ǣ%?iiiz HvvӧOwMkhh̙3'&&ŋ'N,))tRΝ}}}s~,I߿ŋyM4)11W\qww>\vɉiz[VX!q ڷo/͛7/&X,PbbbNNСC !v$Š ѣG ۄP{{{>|B0!!gϞڄp 5kV_WCZ#k62nh)++z GF˖-[lI 6mٳׯ={D~)%%e;vԔ-7t-ZEEE͟?_$9rѣG}qppHJJׯ_^^^'NqGIQPPIlmmmmm- cccGQQҥKBHdd$s4!!,,,,,,LKKkĈ۷:t l۶)fmmMIOO755;MLLԩS2%?| LLL"##B Zl9c CC޾r~~~wޭ^xemmMNNN @)//qL}oߪL0Bs/_v҅M>][[ >>^$m_>|!ݺu0`M¬ TUU򌌌dk(**rtttvv&̛7/,,֪UVZ;::~hYYYbbÇ>|f͚={|rرL˗/_hJae w޽vKKKf͚y;vܹz䑃~^||X'ѣo[ZhQ4h͚5+((`O? BrJBHfffFFƲeт֭[B8t&~O$ ]]7n|1//rРATYC^^mz$(++| 3gΧl%%UVq8>}$$$<}tȐ!LHHȉ'v{n IEES ϧ)))ܼy3ԃ~Xe=5)ޯ_?>͌Uо}'Oе"##)yyy/^{mǎ)о}DBHQQѻwlmmCBBuF \re̘1:::͸sί^Q=~NYY֭[;vرc[n8qVfzQG Ua-V]3`8<~3 IDAT ݽt͚58pҥK:Sg̘믿ҋ-T_gK&&&VTTX[[s8333 eee++OՐתU/]&%%EjLLLD"QFF3J$%$$|++}+8rЪ OwH)*)ӲeMzvȑZI@UTTfΙ=uuo @Z}{,/|&Q,<@*M(?ve f}V6-wաChJ6oD0pSH@d8oaQT:iy 04IA?@ppK% ,Q[8߽yP5جZXX<ƹ$l6c'޲eKٷ$I"ʝv|u,55IS&_@[[hܚnZTTt`/:KOOoe&`PD)X|Oemmv]`MAA_G>}-[]TMDS|O˝.m s8 'x\JKKNh"\;H$:zH\9cZt4T,?5\x HiV{v*/+lI6m`_@҄rPw䩈ׯ?[RQQqСk֭555C`MMSAb +.}).^ܬY3954--\.b:::6w5 @Nȴ*++ܳ}ttlllvi ,v} ~[M6ݷSv[TMVowj«(+uw_rFx=NKIT}N2EUUU4e9|}>Zhڟ  ?Nr/{H`aƍvvv k\.w߫L@l(~eƙD"RRRp%KP_gzQk֭1ҙnR|aϽR,݆_7:88 _-O y)SQ3he+WW`hl9ϯ\,=jM7N=Fٵ[^KKke'MRTT@RAbcG޾eo}{^X,V=ROpP($X,GeiiYqFqǤBƌ|J]] A+++ܹ& .?| K7l߹r&''СCӦM\ߔ&%%B,,,^|_RRBQTTTQQ)--MLL400022FWYYYbb'>ԩkNR``ϢEz5j(UVUVVB?N y.gϞM65޿ƌy#00bYXXyzzTY[hh(5jԡ;wFFFFFFBJKK'L/lP({i0G۷&W^AX$14]dɅ *++7o]ZZzС˗>xR|4%}ŋ#GBnݺٳg3-dzgϖ= [|9̙3ﯭܮ];Bz&ҍBȳgh˟ !ѣGtO?ԳgO6ݽ{KBx<̤ц盚BOޣG;;;޹sboo߻woBQTTT iYfLڡo``լYf͚yyy֭[%{9c ===;;;PJ)4`H K1g}Ib34̈́.]gdd.rB~=!8˞={25899э>^+--n0+w/m>OcbbJw2͟qqqc%5k%JJJIC;wLRTTڵ͛7333KJJyK7DHanTIЧT;Aub\]]>}<$gggYUUUf7)˞¨999Ru24%YZZ~ԡCCgmdjnȧbŲ6cU P[z4-//t;f: Frr23i344%dffҾxBr#\]]ս{wU#G'''Kr8]]*s"Fbw:z-[$߿bbb@uڕn>}v+D'NН t#11qً-}6ͦ}!!!LFtҥKV8vX555B3G$}ͮzxxlݺU]] jhh޽{X^֯_rϟ?Ų2795DsUVřJJJ;vJNNn֬Ǚռys~ׯ_., -XLnHIIiiF[[N]k^B9NΝ% ,KuS(޹sŋZZZ=z1b3ǜ}biiISOBHYY_DDDyy>ܹ̂F~~;w޽{W\\egg,>DxXܢEQFYYYC"($$b``@%%Qvvvӿٳ߿WTT433/..N]]ucǎe&>;w.--M[[˫ Ps@PB  9(rP7 oA@ސ!yC  9(rP7 oA@ސ!yC  9(rP7 offfˈ_*"##?[gnnnBB·ݻweeeUPEEEE}JHHS(/RXX&ԯ;}"""jxVxxP(L^^^\\4g={H;pg|Ս7=}{=Աc233kRTTϯ񉉉W[ܸqիW_thhhSs|>ժU"+yÇ?u466688SG'{4""׷&11SP_8x>}Ӈ>}_e $8p`=())}{=Iqq;wF5ܼyW^U-|  r8Maa@ Xre]">>>&&GU:PO@}z!!!"h (**Yp!!$ Ç;v>x.][ʕ+ <{4447l`mmtRM6|BHDDDEE_۷oYVVF?pQFy{{K ]Txoߞ4igpp/!O@@ԩS=<ɓ~iG-(( ʫ]zU$[m۶RRR'_T,??/Zݻw=턐7n͟?W^R㤫 ŋm޼w^马|:DY,;͖A $$$?~̬gϞ̉bx˖-JJJ-200u֧>E~ }¨KǥK G/T!1H>E儐7o4o\w*gΜihh[XXB檩hii[JvJӧϳg!NNNovssxմi^|ijj?B&OիnݺN4oذa޽377#аسg!dܹ)))l6{ʕ:u"tԩS"n߾=uBf̘gϞ'vhᶶRwO(211p8mͿ{Tl6̌ipBu899Bϟ?sgϞ9:::;;B͛&u;w֭[עE BȬY*++~[lOmddd``PPPТE &^9zhBȐ!Cnݺ%{O_TGG9[n VVVRjiiiEEygϞ]XX(e/Z:<<\gcB?~,GGGuu"%~Jg/{ƍ?UVV4H򨎎͛hIROP(an䃝UcL166fDl2##CYYYyק%i:UO BLMM ggg3Z(~ZU-볏)U>r}'RPPPQQ)--"p\:eeeݺuSRR'F*ȞHQVVfeeeO7/Uy'O԰Q.k.++ŋ=zQ=zqƣGJvݨ?Ƅ[)оcnפ~&*HUTTVa˪K`35|BJѣϋ/ͫ) }A?픬ӣGimxx8{:͂ )))!~FFFjjj/_d,kΝ4Mڷo}@;[hQZZ޶mv%$$tЁcڐsƍY[[)++mb:t6foܸӧǛ9R___rOfBPKIEK=U"us|>͎Aw]rVbbŋt{{C999)**BGzjKKqIBڵ-,,ϟf͛o߾۷o4kLr7um۶ĈD">OnX,{{?Җ 555}e˖ijj,믿DjjjΝsss c۶mA477w͚5,~kݺuvvv%Wy?\lѣsss_Sh !͚5;v؏?X)tRSS9s(**v588,??_au̙{xx8ӧÑ~\K2*^)ʇSe899ڵUVAAAݻwg:mll<==njSͰZj^^^o޼)**211} !FFFک;vҥKvv6syڵܜZZZr8ϨJ:::SNݲeuVV}>u- ׯ_[6l:XR_1cn驮B*%>r|U~.gϞgΜݻ7=yӧO4PoyOI} ReffHadeeZXX4k֌)//OJJRUU`yx|>?99bYZZV?ĐD)))41---MLLo޼y^^^~~~V @(&''WVVhтIG=ZPP@Tnff&ye-((HNNnݺjHIOO/((󄐌VZUxD:j~}겪'5Dz8NLLԥKJJLLLjR[fͲ}}}555Ǐ/Y8$$ L&66wM]O2E6*W ~PPP@lQ܊CEn VKE*ET\U2d0I~;߼1EI>ݼɹ;.//755[bu[Mn o"WN333{!4( fQllljj;zwd ui6^QQ{nA&}}}g̘amm+W;v;re˖Q bA|UU3ft{Arrr߿jժ7i\QQYSS&hA(6}1cƸaV&P `C D 5(jP5Ԡ jA@PQC D 5(jP51nB8n!22 \gg "h4lZ4MIIIZZZc覱QVVVIIIAAFFFYYYVYY_Яx<^KK.TZZ@HIIsF>= X;QC D 5(jP5Ԡ jAqܶ6iiiyyyqB.kbb"++[萓,36.K-2Cz@8N{{qEE>O*JV#㠒ӧ::: , EFF{P0Y[[،1ȑ#s\= !=ihh޼yfׯWaTTTlll/}Z[[[[[`΁ƍ۶m?.?ڵK]]GZZ:,,믿f;vx' ѣ}}}GM9vصk p\=|C]|yjjj U#G%$$$$&&:88XZZBTTTzz˚5kttt>3э5ŋ8B˗nj3jԨ'O;wbĉWVPP?>l֬Y.**rrrZrw$BSSӁܹcbbBYzq>jժ{_6l3fLUUΝ;VXA?cbbZZZ>#؈‰'nذH0W*++n޼sB?hccfBHxx͛7mfnn.xǶnjhhHY`k222"""-[v +++mmm*=!]]]{dddfϞMaف ˖-7nw D?'8p 11qΜ9_~%mDDDlll{{ɓW\)##outtXĉ***nnn...rBHIIICCý{.gBHMMMxxkn߾kccs֭[nmܸ1&&F;Ν;,͍*@ !kkkuVFFFxxxEE!b'$$BBBBt6}1OOOB×,Yr޽ɓr <<mhh_%ׯ_722? ; >>))j蘒/BN|)BHZZdBt:R\\ӻX,׃^&''wvvRV\MILL얫,YB:uꔦkuu'O\]] j˖-K.6mڭ[njCMLL ׭[oҥɓ'?|ÇG}}}CBBbcc0pԜ8q⣏>zÇ]\\^QQQ__0a‰'^JL~Q*''Θ1R]]M5j!̌_VUU%p81$2!zp !Æ ΊjѢE ʪ#z"P\l111<:dee:ᡥ%2//h4EElBoF?WRRRT 77kƌrrrwwɓ'|˖-;{Ç_xA=(aPT4M]]}ڵm}}=Jmĉڵ+66VAA2iҤK.Bx<kooȝ;w~w{f|򉮮nLLLaa(11q U7:t(!pRg/rPAGNN3rٲe"&,jll4i^YY_ސٳ .]6yS=:Ju||| 233dC=rRRRξ~ܹs@E䢢KJJ ƺuC\.?}gm4iRGG fVzeO `\__H"R7L]]}ǎ sN//3gΘ[[[߽{w)Hee?t:011qڵ ,=|ŋIZ z4ꌛX :JMMUSS=z4 _xȑ#KKK&N@inn~qSSSzzQCCCffG!trrrԱߩRRRVVVVVV7o>v옶vJJJllάYrssCBB*++]]]^|ibb tfWWWBBG}$/^033ijj[ZZ6oLfffYYYu#uuu222k8<}yܸqN3L~B*++Ayу\]]WWzzAUU:"JJJJJJLMM(YYYmmmvvvSNyyy.\/SRR_ᑚ*##cggcBų'655QGD5(xjP+))￷lٲqND@5(xmڴ[cQ,/bɒ%xh4-Ԡ jA@PQC D 5(8guuubx<^WWWkkloo@`xM5 ˗jjj B |"_uuuԈkLn&--` ih4 "Ah46A@PQC D 5(֠]]]s?l6]]988Xܣ/55ÇHh _}۷o,BWq8cccMMMՇw_~Eܣ<}uֹ 9sfvv6eIIcii]?~@__رc}7̟?cڵEkk+Nl{δWGsN/AI#5(!Nx<ںm۶KF,X t۷9իW{0}pΝ-{*B'oArkע˸cZZZ&%%QAZZZ!l6DŽ%%%SSӸ8… O8!tC.\055ݷo͛7o޼o>33,$$$66bihhm9y似BBHYYYnn)S!E~111TXڳg<6 &МrGUUʊjpn޼ 4($\km߾}Μ9K. VUUuww:uݻwi4xTժUɵ;~xsssUUU``7Cϟ6aWhh(5 >>>+**Z|9˝>}ЖZZZ- ]nbiie__M6lڴF]t)99"4͛7;;;?;wnŊ=ՠBs4--j޽_~%LJJRQQ&44gE\KKKVVUEEEdёD֤ܺuÇ^^^ߏEFF3'9?={u}Orrrll… utt!Nb2j{YXX^{^WW1uTLJKK{:ЋLuuu==0!ChiirTo=<,,,""b˖-Sn=x`ر/1yQÇBJJJΟ?OYhd e IDAT~Epݓ'OXիW;;;󏚵O4՜iooOLLdJLL]l??ꪬU$ԠP555UԠ覦#Ax)>^뽂S jA@PQC D 5(jP5Ԡ j|VgAAF? @p\@}" +dll,Yx^fr0\.? $\sssppG_jjÇ= 422R卍ρoY,փ=zQXXXUBB¤I ˗=x+ӧO_n[^^>>Ν)۷ojii۷_x[3\.7$$Ĉ .PBݹ\.F۲eݻMLL^xamm]]]M022:{Sv]SSC-'$$B"##ΝdccS\\x<u=h}}ncc  eSTT-!AGFFf͚okii[ZZB,,,>}*UzzqqQk=dnn~&CCý{RXYY͜9߲)--mhhl 4{2@l!mmm)))K.0aBqqqEEEddIjkksrrFA3gΉ'⊋|}}---{Ν;O>={lBHGGGJJŋϟ?~n-/>Ayڵk=<<=(裕+W>zVUU{Kz{{׫ߨ^[[+ؕ`ZAx=ztܹAAAt:mʕJJJaaaO<~:e9S__HP^ d=m۶3gPq;;;Bȳg蘙S[[[EѦMS˟~ӳAy<^NNΙ3g~w0}zժUgΜzɳgϦLBr\.WVV6//100ꪪ. |_OrN̤^ō;2))pnܸAh---6cBi\\`…'Nx5 D>}6 A $$D2qرÇ2y似BBHYYYnn.U=SPcccz {hϞ=TB ,--lllG!4g\nmm-QUUp87o:88 iG{#A_KMMmsYtivvvfffppԩS===޽?:~xooohVJNNwǛL]JJJLLL|}}E ޽[__`0;v|bϼy򊊊/_rO~رd333~˗/3uѢE֭\,--li&M6hK.%''B=yfggs8sέXB4FN ͙BSSӴ4++{~L&3))IEEŅ"4(ihox?kiiʾ#_GGGRR[r֭jkk{yyQ?`0&N:r?fJJJX BN:d2wBRSS/GE]Oii"u (**<'K122%2d}󰰰-[xzz***>}:geeEݨzŴ41oS^^ϋICy ŵuQC D 5(jP5Ԡ jA@$bWGGGdjTC@ ~>(FBkH766C?ؾ}gXy䉸o%88x֭sssˣWUU,))qrrRUUutt,--}Ǐ;v o:::{xx]bB7o}jkkKh4ڴiz꿵577ޞzO?yzz mX__-X\\L%!¢%&&fU03 jwcc֭[]]];;;edd]rݺ7^bbcƌ:}tBȉ'h4̙3rFh69%֠Cuuuuuuuqq奤!RRR\.xjA0M[[A/8Y[['&&r8~Nk!<>!DVVv̙w]V^^abbrKK7n%%%??<|yyy)SB멋cbbw:88О={!P7 6lʕAAAT3g$= ˭=p87o:88 ~_Kr}-55۷ϙ3gҥٙSN{.F?#::Z[[ Z*99޽{Ǐonn oHEE… cǎ}ō7"""?ܬ⌌j0̛7///h\.w***fͪ6l!EFF3'9?={.!$99966VAAa…:::SN1L5AԽP円g{ !JKK544=HjjjªnjӥWL&sȐ!ZZZ"+ϟ? زe"!$''\.?/^`0͛GEN͍PRRryBȢE'C_UXXh`` +w5---Ғoii355UVVU^^333{m={,X[AYTTjzp\ssn^rFhr8,mmm]]wO|L&*<<\QQ~rrr֭& 6y~[2yd{{cϟ?WRRRSS#QTZZ_ԠJCf/_@UUU__?**Jp_Eiii^ƪv몭MSSSSSsܹmmm=*((+xsssUUU==ٳg ϟ??o<ˆ{{>@WW>AѣG)))vUW^ONN.((ݱcGtҶ6qJPPPmmmBBŒ3/_rUUUUk׮dً-:ydnnɓ'-Zf_ ʊ~嗞0x ;w+..NZZԩSԍ7YF޽{544LfaaaUUUhh(y]6l >}zTP} 5 _]]f͚k׮YYY6552>͛TE1 E,YRQQA->|j:4a''Ը2>СCAAA0:thȑ\;;;Bرc_|i&~ˇJII͟?2|))G vuʕ+VɭXի=akjjjhh%HKK&L x<###{{{~KڵF̘1.g!;~!dȑ*5hgg3gZ[[Ž9_:ã288?3gNFFurrRPP8{#=Juru~=ɓbBȾ}.^iӦ%Ky{{|׽iʔ)mmmϞ="55̙3G@m}ǏzzzB.\o;j(Fhϟ?*77?t:VhaÆ=zժU\.wԨQvvvc~%%%uuu֭[vmii)ug9#4:;;Gӻ$ޓDy왬,!ᨩ>}̬̙3߯TVV|QPPܹsO<)##`0nܸ&?cccC-l:>d++&//%KtW gϮ>|pNNNIIKNNѣG?~-Y,СC/ $ؕ`ZAܮ\m۶7nܻwBo[lllꫯ֮][SS=eʔsFhX,EEEii%!$533KJJ"h4~\NNؘohhз*((3f u vvv ‚zxbBHVV֛bikkq`ٿ?5W?bq_8;;Xb̙^^^_}… srr!>v$]QQQN IDATB0YɓVp«ͤ8Nkhh8~)Szyr $6$\aÆ &XB55z~AMM[՞  >{,'' vESSS\yy;vر?333 !NNN:::;vطo!oINN9rd~~>ݾ oZ:rǏ400 '444ʕsFhJKK. !5kQG\r`gg@B RZZJa28qbPP!.[ d7---,"$$d֭.ܞ={?sNq ŋr{{{FFƨQ.]D} !qqq3gΜ?(N5^TTyU O?ͭ(++O:U__Μ96mԜ3gpvv x)))zzz'N|IGGGYYFA)aP6ƌABsss{{{?p͚5kkjj3g ?kii0aرcmllX,VOA0?蠱wÇM>0--СC󃦥iiiM8ɉ\hRYYYzzz#FeuJ \a-bZZZs}А-â2++N555Ǐo5--MAA`P5_|9mڴ \ BL&sȐ!ZZZ3>>I_|G ~qDBȄ V|Uaa[~Exի,X0w\j477'%%ikk=9#4Y,Vbbn/Oꪬ㎽_[A(WZ%1dBBB%A%xPQQo ϢE=3I 5(jP5Ԡ jA@PQC &99NWWQTQ) D=oBJJ _ߺ\.gux^ zF|CxH-xCT a_x<gbb"8ϋÛAŋk8 D 5(jP5Ԡ jA@Ps~^R˲FFF}ŋ} ֭[݂zzzo- O?RRR`1ȑ#"%%@-噚*++ *//㙙6۞={,X Xtvv䨫P~yyyiiij'++K[[[WW;&f WTT?~ܺuovÆ o޾~,++#L<^۷0|%%%555 0\mhhڬJcf/_@UUU__?**kjj  ƪv몭MSSSSSsܹmmm=*((+xsssUUU==ٳgS9RSS8qBʕ+7yXXX8zh###%%4βבN_JIIM433[AQ'PBX[[GGG7WOPJ@2//d (##SSSC}rCKK?xVGG`WGnooooo>zhOAP\.WWW711񫯾ʚ3gO?y<^kk'|k.qF???'Igg'u9SY : J5`WWWYڵkVVVMMM >y&ո|ѢE LJbQ%KTTTPˇxCM0)**u555bM ưprssddd!cǎ `ߗ:C))Bϟ/%%#\b 99999+V\z bMMM ii~„ %%%k֬!(((̝;ɓ'1c?I<=g!;~!dȑ3f̈A;;;Ϝ9`eevȑzС9s222\ٳgGqQׯ'OBwM6-Y$--[EE믿~un݊*d555>>>'N>ǏGEEq\B|~~~WWɓ?WWBBHnnQh4!F?\?ZZAĆ 6zUVUTTpQF 6MMMbbbƎK?wG}qsFhuvv5wI '3YYYBQSS;}Yqqqcc3g߿_YYliiѣs666r5 uix̾ӧOGDD̚5+33Xゾ={vuuÇsrrJJJ\\\ ?g45tP $ؕ`ZAܮ\m۶7nܻwԪkײl???BOCBBRRR.\{CȿIb3MrkP33$BFSQQ|CCC-`QQQcƌ_SN744XXXP//^Li<``pcXfMDDDTTxG}_8;;Xb̙^^^VZj600PMM-33SQQn& f``f'OZ… \.~~~֭l-NNN֭ =g桢bkk+˥&vLs(!0RMMohhPSS{g*HDhllϞ=y{^ii)ur)8 ,eeeooo''䬬ZrGGȑ#o,,,455J bϟ?oe++#G<~uָ7RhccӧOo3BPZZ$&5kQG\r`gg@B RZZJa28qbPP!.[U---,l6[; ݻ̈́/_;::{PG%%%/^322FuQooo*+--mii9ydE]SBbbb!f:wuoppKOAĔN< QFUUU8qp8L&d644?>##p¦ONzș"6#y0mڴ`BHmmk$4q3f+**RVV濼zƧ~jddFbƍTP 3gjjjQAj򝖖 &;Ύb s3 {>| e ;r䈊ʧ~jbbF%М RUUYYYzzz#FeuDW^^%xO444dddhkk"TVVfeetGԌ?^)iii ,;;˗ӦM{QUZZkz9=zNOmL!CD90:;;|hii)F ~''' zzz}JR;;;{M܀X2(޽{'N`0̙S[[oذ!|/r1CRbBp _L{%ɦ(Binn8777loo3Ŀ"tttO0|!0{=Դյؐd;V+ZAtR~GD"6}iXe=xΝ;rEEBnϟ0 !6m4===cF$0229sӧB\.ʕ+aaa*;ha34aii!J1 KNNhAAAL6m ?~JJ aSN>}zOOOCC~TTNan ق `nd7.88x̘16}666ŋ---CCC𠣣C0 8q)SD"QA`n&ݖegg7y䀀GGӧOc&&N1i$WW׊ 1)--0`Ϛ5ɉL]e/D0LSocc5QF!ZZZ =|1 P~X,.--522o|ISS̙3_%+0|ST l6BX[[k:0TgϞ'O33 3asss"`0Ə|!(BP`` %L+"6 ꫯ\.?|}} njH$*,,U~1`/2uؠ  jP@ :\իWk0A :C 0ѣG[XXh:l?p===Pwwwy Bcǎh*0)Ce۷*HRimmmߑpb1N'"P.3QFھx0aDt*```~!bΝ7n|}WVVN0NGGGϙ3gĈ۷oB>@X,,0LRh4ڦMkڪ˒H$+Vptt433spp0uLMM0ƍnnn7nUWWWDDŋ N`x7n… ϝ;j/ɦN_8f~L IDATTC&lllgϞrJ D{kPcII^qqekrGG^.WW5kٖfggl>@A ^V]]B{.a,ʪ?Pjcǎ544<|R.D"=zr{zz ~kk랞С5T*=uiiiرcȑ#ZZZN>)ٳg:99x_r'NlJ`BBB9P(BцtCCPPUU;DBHqUVV*wUUU/{xxkU355ZzussBpww2e Bhĉ6lxw TQ7Q9kkkR{[i -}& !TQQ_w?[]]]GGǩS\\\޽B&LPPPx⎎Ǐ޼ys]9r$++_H$ G@ nkk0a??oPVVVbbbTTԜ9s4  ߿ӧ,k֭aaa*TcǎK.E"ȑ# MMMrW *@]|y˖-7o޼sNttw}gffz!P$QT2VZB{q8\n||<700pqqAt0??ϟ[(x|>?.[%qUcc#laak..0xO?ȑ#t:̟?ٲe111eeex<==}̘1^^^G*IlMRQn@U˗/?~ӧOW^YvvvnnԩSz3*!J|[i Ad2~󍉉r)ܜq>onn+޷g<EO>Uɜ9s_I&]]]]]]?J2,44tԨQeeet:|!0{~+V-]]]kjjL&sر])7 ֪ VYYsN|ʖ===t:믿/ ޽w^1rt2d2JKho B/_F?~ƌSL)++>B_P(!6GNR(qqqŋǎs8<h+Wmmml6f+_ _2{͛7h;D\P^^^{{{PPB(++!`3g>}M_e0ccǏ?m,X,Y{Ϙ3R9fΜyi˽r劖4M<?7F322,--CBB#""R)a4-((!<<iӦMVVVιOII0~ԩӧOihh׏ӧ3fwޝ4iO^Ν;l s3i?&9nܸ1cxzz`v &j|yKKP++4>>b8--bǎ#G 333;}tiiixxxAAٳ~쯾 7~wâ"333Ю];P^^cǎ^9(7num7s̙3gvuu;wUI! Yf~3htt4B(<<~صkہ6mڄrww'H!4nܸӧ]UUUyzz355Zz5U(Ŀ~WWaXVV?BH(ǧ= Ϛ5K\]][ZZzwy'$$D!?UBCCcbb O#M{dSSSSSS!_Ex<"{͊O3gwUUfSCw[hٳg?|Դյؐd;V+ZA*++w܉/8p?@m޼9;;ǟ~)~ᬧN_~eAAݻw݋^4fTC:N&Un%}!˗/#zzzΟ??cƌ)Sݿ!܌EQ(z#SNoo'5! D"߿!TZZ#믿eee7nܐdB@;D\P^^^{{{PPB(++!`3gsМ>}:,, aǏr?ݽѣIIIrfl.`ZdIll P?cH84229sӧB\.ʕ+Z:40ԟãoF322,--CBB#""R)a4-((!<<tӦMVVVιOII0~ԩӧOihh׏R)󃂗%H͛goobee_~L&sܸqcƌ\na<oԩcƌ1cӧϟ JKKÃ0300pĉSLDUAu?ѣG͙3Naaaʛ$&&3)))fffx`Ϛ5i5;?( 0MoCFE<jiia0D' !$KKK|}}ʞޓ(\.5wM֠2L(j00L* M't.0x B$H$M'tBԮ5Y⁶Ń7d:88)Q5wԠ@ݠ5(P7AA jP0L,k: S48v"ܹSS *_HSZZS_g3f0֭[Ǎgjj'FAR5XXX\+ d/E"ddd$$$L4D~ʊhwETԷ+>هT M70̥Kvww{edd׻9|QQq&zQ9kjjΞ=b<<<{'%*yA+++SSSi4F{ d/Ͻ{rssߞdFDD:teKϏt"`RSS9|_r~~~Nb0x{!!h̨B!ccPi[[nǓ~[P0ֶ6kk똘8.㔔W ݻwx'O^t M bDڴiu[[[UUեKn߾}M;;j6`JOOojjZ~*66_~"dSII 5zhbC:^[[ܕrb aӧO/..hÇGFF/^NPdeey{{{yy>$&..!_]pLOOŋxm bnz]\KJJ*,,ILL>쳩S B7nP(POO!Jo#(7 ֪ ݖ~tzZZڄ U"!Z[[bL&y˗9NTTy\\cF8144$"iHŅީJ!lllGt:ٹW!ۻoulv!ښP(.\[wܶm[HHܹsg͚UVVi&ggQFx'%%I[n]rolbbrPvv6~7DضmX,fI#- IDATٟ|\.Guwwk￿O666˖-S9Ǝ{qƳgMb"##8֭[WZE"&Mdcc?|1 ؾ}O8p\ѣG-[_1c  ɓ'*** ųgΜ9{-Yd֭]]]ϟ?ONN^d glٲ!r{JҢl&fY|yxssshh(񱲲rڴiT*6)) ޻wK__G0ܹsaaak0 kkk[hF333gCxvvv;g|`n&*VXQPPZI ¸8;;;6vs-[h4*n:#///*c<ϳanbb2r͛7P fׯ_h666)666}ޒ̝;W__j׮]D}̵k,X/<o4mԨQiiiٹH-mll&&,2\M2{T 0 dT:fS(kkkM'^iƍr?k}ߌ3 V*0LGGG85klܸR p ^ ZZZ^$ W2_D"Wfnnw-rꃁ*OV\ٷr2ȭsu3446m:% @)h* jPnPuԠ@ݠ5(P7AirzTu@򮮮vM'tPOOL&08E7MPHRM]5(a*_}CbM'tB NM0 0M]5(BR__OR---5Al6D0d2mmm (LҢE~nPuԠ@ݠ5(P7AuIRD,R(Bhr~;w_1b{LLۼyg}fkk:ǏΝ]}zʫN:O|.]jll|Ǝ;@PYMM͵k"""d2+afffoa2k׮]dILL Bf &Mdcc:f򊊊ʮ^LMMh4M.ٳ'((H&l?|{&1@lW__~۟5xwݿӧ7n Vݾ}/ >bwߕL2? * ,))ٳgOXX6&L&+Фy544\zu„ l6!b ӧOP޽{cbb;w!ð .l۶MOOŋǏWtD"߿k׮k:)bqjj@ HNNǯcdd/H$##.AM I$Jk"@&$$^^^?F?)++cXϞ=;tƌZA]i}rťoJ555_\\\LӉ===z0 !E|{c3ݻGR_ρt?O|y„ sə2ef*,--?装 hx<,bʠ&"H*? B|VD#F^$!!ԩS yyy?3|ժUW^˜Q^K4oitppj?9::}"jjjeχ)T,,, `FFCLW*BC" 233R\A".RHH ߴ'^^^=—>}JRUMtȑ#޽"@ϟ?_P(}fXG%46f >qaO<+m3jPݻryeeO?=}t>$Joݺuɝ;wB<@Hm۶b6'rPIUI/\ SSS]\\~%J/_^TTyf^^… 5x1:~qą ,--{MJ}vaaL&occcU9l6L޻wT*-**+O8p\ѣG-[cj7f̘B8ydppɶmNLAA-[П&''cv1 ɓ'ו6L999˗/onn %>VVVN6J&%%{yyy{{{8pѣ;w",,￿vammm-hfff\ <VyǏwqq~MGرc 孷REI<{,88bҤIĪJb6\ZZڨQϟ j xs#Gn޼y`n&quOOOfccbn߾[o>|o91sڵ ˏ=RͦwՋff"aښ`ryd)QT(! d2Y߬Tz*?KQFͦP(@Ku ,iQ>d2_ Ě5k6n|Z 8f08---ꧽ$ Pt^$IP~/~g\}rʾސkAn:9rrrt /! @)h* jPnPuԠ@ݠ5(P7AirzDru@dNh^RT&i:0e*=-$FAR5~=zhgg_PH&ՙ@{{ݻ/]cjjԩS~~~_rҒ /^x-KKK Ԝ={byxx/dgϞ}𡫫a|xOn`2K.vss300 <ƍʍ_8f.^(J׋BD&&&zCA+++SSSi4F{ d/Ͻ{rssߞdFDD Gm۶͟? PA.gN ݻw߿7nn߾_jֶj*bBo ¾)S=ٳ',, !MSSFFFffSSӛ]__JqDD~\vðɇ0!++ ð͛7/ZohѢ-[;EaD"]bӦM۷o0,##!U3<B`VZZJPGK*644c4-ڋ@ 8qm۬Z[[=zjffco]QQ]]]L&r3g \ >3>?gΜcǪL?cnnqA?/b4x "U4444-- !dggW;w޾}Ȉ{< ZPHqhhhNNUTT&22&Hr9ofÆ S~ʍU3yyyNNNxC~F{kPX֭x2o+ fmmr?~rUP{nwK. ^`X߁i&kk붶K.ݾ}͛vvv}9v؆ >C(@h+Wť1L BFFF>>>}"Q;b=_cXz2LLkkk{mE366>}zqqqUUFDY[[࣎28Q^K4oiA[ZZl" oݺemmH$hmmſO_|Ν;666qqq0… ۶mӳxk,=qȑ?NMMu!.H$##.嵆cT*_-555!!>zKm>Q^K4oi~\m\\\JJJƩTBƆxٹ+0P{{{WW`0T&CPrrrlmm⋥K(BCCATTG}pB6mx<,b1~n"֊D"T+ [AFz꒒SN%$$ ~njZAOhuETޞ!TSSC,c>V__044ÃEbhhhkkڶmF۲e<$jG\ H ~s//GO>RZ:>rHAyyw aǗ)G}\` qaOD.#ة3gNkB8ydppKr&Mdccaرc,,,&O:z pn˗777+++MFRmmm{8Or9 ڵk-ZFs%x<;;;[[[坖-X@9?}':fCuK. f*Ϟ= 6774iRqwaQ\ϰYA " ,(K#vIDF `PPiRU",meYʶy?̵/MR]}̙ܜ3'TZZJ G;1ppgXSN}5--- COO/22kΝjjjvzn!d0ϗDGG8p[mΝ;dfgeeEӉM`_ͯپ eZ&IoD=g =U5(%q\(ZANwX,F r"22lܸo;K[5u nFC,--m3O{6_jwL:Yzn?Q <|$&O?]zm3O{\W$qrru) rP miH@ 9(6A|> rE$q\H$늀!H 3˺"`phllu"@-BP A1 ;=7bXAAA(ʺ"`qXa+"J2Lȕj:#늀!bh4&)늀ABOOn :;| rP miH@ 9(1qkX,Zeun.$}]RRRRRÇkjj,--L -,,I=+++O81cƌr0XRT:.늀񤤤:ssr EUUU}inn>zh\\p;;;r=&&BؘDhkk<~YYիWƌC sϟ)++U7$ ˗/=zϏ~ꕑd̗/_m3`ȑd׍X,xuErZZZ`0 H$ vuu?x`+**.\-bΜ9WO x,[lݺu^:|)S_mPxӧOM=ڳg?|/D8L8999o߾u۷߾}+ktٳg$$$ذX,]]]󣢢,,,Ͽ{.6[TTdɒ"k;X,b䞢ƌC677+))%''&XL,nGhiiqW(((022V 55`zPUU(Z$''N8?_ג555l6[}>}z\\\TTԹsn߾xYY.Y~ptt8WTT(((ܹsа(Nqݻ8ڵˋ({W^^- "|>_UUaÆ D IDAT%%%;v Dڷn"ʬ^ߟe…FFF;w$Vo3---4-''\F?6AMMͿ|&hhh(++VWWO0a߾}l6;//LSSsD?ںUTTk׮r Biܹ#G400ꫯ8g}[sss\&`0jkk[fBJZXXȺRx<{dd$Bӗ/_,IFb̙C>>GmiitR\\qVYv⛲;v0̆/_=z?000x.0ظrFFƃ̙#*Xv_dddEEㆆ![[n6mO,Ǐ1b>|BUUKuu5B!2AWVV"$"`SUU]p[vv˗/ N<pOOOׯ/\ayیV@_OoZ__e˖-[޽޿d"|uttJJJlBk֬yfJJBi}ׯ۷OAAA[[;66vرҺ8Pֶ{nK.7N:|p^^^gϞMHHh]]]8 TTT:::]]]d&AӉ{A0EDDlڴyҥVVVD/7kÆ Bp?ɭd#ͥ4''gNkjj"޾}O211ή#G,nGq!A@c~K q-rqqy䟻{kkŋuttVZ5o<kk׮}۷o&&kjj[E"Q{{;qo"hjjx<@@| r{A0Qulڴ)<<|ӦM---w޵Goo߾TTT<{-[o3[}5?y#}!NCCCbT##Ç}"$V]]VVV~ uHw͞=;888""A0ۛF555Z255uΝ<ػw/f++LKK 񷮂ח.]w^SSׯ͸'o0\v-e2 6Hs& Ps^^bXrDžB?t+ Eш@NDFFr87#zg+񞖾!TTThX~}@@mfiOK!ONA^2C5'aɓVrkTmfi|8>a?A rP miH@ 9(6Y^ 444t@B.MW|>_ BYW l6׉D"d}z555 666, !tСŋ999utt%݋iӦi{LHHoQQђ%K\'wpaX|>MQQQcƌ!WHSSX,&[ZZBa#8~ALN,u+`jjDMMMO|x+Wƍ;w pԩS8޽{]vyyyvWEA竪644lذdǎ|>_IIqH4z7nAP믿k3---4-''\F?6AMM~i?h7ʭ&Lطo.˳533ܿ?Q?422"rĒ"hffVQQA,]+iܹ#G400ꫯ8g}[ssnPUU={vll, G% x}˒%mlllB,?9sOVx{{gffr\r.MLxb7CD䜫ھ}{{{޽{---B ***<DMMR(3g޿ͤ9r![[[cc㴴=-----k֬P('OŅl6d555 \.ѣ---.]#J> N|!TUU5b])jll\YYm/20UUՅ egg|`hhhggΜVUU]`#RBLɭd~˖-[lٽ{7˽>DǏ蔔۷#LMM׬Ys͔}}}???:>ׯ_߷ovllرcl6Bƍğ@ WTT$BuuGDD>@ PPPxBKEE؄a HKYY0bN[%"`hشiSssҥKMDzKK 644\nݴiv5k֬/_eo3[}5?yGKiNNN8ND}V__ebb]WW'abb8#;::ȿ~¾꣤4wܘMM͞>fAAA"͛UɠںxbUV͛7`Uy˖-FڰafKK I$&&ė\.*CJ]n]NNΦM7mڔJlZzw}v޽={*++# #:߼yCoݺ%9(Wׯ_ @,S(ÇɶJ` N üi4ZSSS%̙subyuttXYYb:.>ccc555@AA5BHr/2lbFZb=|ё,3bĈ6X믿ܹs̙O>upp@k3VVVzNjj~f$ SSӣGD .q8ӧO SRRBIII! .\o߾vm6H댳f*((_xiҤIW^q޽{ӦMuODutt$p)6-ѣG.^ѣGB0((hɒ%[neX '$$D dee%%%˖-;w\cccSSٳgWX!kR7jԨ'O bKNjggWRR)_zuʕ9s(((|w'O >>>6ɓݻw#CCCq vttY }7Srrʕ+{R:>lذӧOt+++EEEkkٳ8ڞǎs ^^^ CSS300aÆIɓ'W&:DVCcǎikkSTKKʫWNMn*--%߆x{{+tiӊxddqbM:8xxx0 ==Hh;wTWWWSS۵kW?Ճw3 %ן?>q߉WDɼ< 2f̘ǏGfܹ3w\r/+++:N x/*63Cu+P__OBwL:Yzn?Q <o ___EBagg+ @8+p1e.ש Bd]0|h]`|E0؉D"]J@TWWtYW A|>F1LYW mmmL&n :;tiH@ 9(6AA b*++e] 0嵵ɺENs?&Oz꒒q/~ik}䉣HMMĉF}C[@@gd] 0P7n\f%8]gw-XG~˖- .QQQ .ܼy+/_lٲRD222`ff. D˗/_tiJJ yی@  ?ѣG%'=9A[ZZlɓ'O<pqjkk^Ĥ[5++/ DK2%ŋO> 늀pŽ;BBB @pر۷oeӦM7o$*x<@ ڳgOhhh¡w <!=m4;; &L>n%+V6dDz޽ q"h"ggs{ҥK/^|K^eb^7EEE3\ |>366ڸtHD/-->x`@@/^"VVV655޽{njj@ D7n͕̽{'LBD^~}@TUU566ʺ`)--066NHHLMM ͖f@?SRRΝ;5o< L&V_p@JJ͛73229w r3g,A$h4 bUOO*CJ=zsBBիWY,/++;|pnnӧmllX,͛'L0f//v6#,W7򛃊Dv4eeeʕ+Bt: !뛖agggcc֞?~_ ˖-Ca&E_:TQQ_L`[n;vLKyyg}VYY駟n۶fff , bU*J bs^vC՗_~5jԨGGGG#??Z[[|P8nܸ*tq6k;EYWO?C8NhV:N5559N[[А#F ~\.W$_Jt:󾾾>8]pA ̛7!TQQ7ڵKA;w&Hxzzz.L&` {A0755YXX;70gΜh"{ټy3BHEEeٲe79 IDATn@k3[}5?y#enn^UUEAO_!ɗ(1LKKK[[;''fرcǿx!A믿 믿k&!Jstt$_bbbBz_o߾!W_Y[[;::={f```ddD2|pCCCNNNI{VRRBJ ŋ-"ۛ7oFejjY[[Kkkkg?o3/^ ((((pttY ʸxRee% W,Xᑒr9KXlggx?o mڴ)77w޽?3ぁ666׮]-,,TSS+((<{$+Р *qb徾!!!޶m۴iMYYY=8Nt8߽{6~Ǐ8^UU5nܸǏ;fcczIw8q֭۷okiiU=?4tuu/Ynnncǎ]jUJJ_ |8x%MMMyfbbb&MDbK,X|9s`ͯ'َ˥'N2ezQQQTTի%OMVN;885x 1T*U10GGG^r\ *Z^FGGXZZBM2.QԩSR(%%9s\v͛;w0L,s\1ywޅ#F }Ypp09r'- " e…񉉉-ڵkqզs΍?!rҥSN>Lgg'J% ̝;ɓ'/_611!qͯ'XdB q!T[[d2T*@Ot:bh^8p֯_/tWQQadd!cƍG(;& <==,C&F>^y) wx0HA rP miH@ 9(6Y۷ 9BaGG+ @%늀A: d]08. euvY ***"( L>@ @ PRRP(px:,sP*IReXioo::::;;i4.0ZZZpP(73 rP miH@ 9(Ūu-З&ZY7|C,ST ={3ŋ\.wǎE$N+W\pDCCc޽>!)**#GeX0@ɧNjkk۸q7q/t p8ÿKP}}#Gjkk,YQQQ[FVV֩SppttH$_O8\WWwIڻwoffoFڌ@ 8~xffÞ={w䊜'O!ŋ_… ;v022233 @ 8v۷ɒbÝW$!x<@ ڳgOhhh㇆޽K(:;;dggO6n„ ӧO U+V6lɂ 222BB YYY{=|8f.]x/].;,)**j̘1P(TWWEEE8ťD"|iii\\\uupEWWX~ݻwSSSH$q㆞^nndeRRRTjQQųgw> Oe] 0Ȍ92??jjjl1%%%**ܹsYYYqd2 ]]]dEEv#""lll嘘nLLLbbbenJnWEAMEEoذٳAAAǍGV:sL#f*++) fS(Jד@ o~n\nWWRmmy<^dd/f͚3gM?~)""bڴi#0m4C믿CYYY}W... aaa,;w.11qY zAAlooOt|ZYYJ,//777OJJ:|vv6|Ӊ3fTVVlr3fӧO'z>}Jg̘AF0 {y{J \lc^t\.(y5D1Lkk댌1(((((h߾}~+Bŋ[lp8HIIyfFFFyyy? a B{3gtuucbb$zx C@ (++/0TVV €͛7{xx@:(|877666i3[}5?y#9H$jllllllooOKK#WPPXr%BN!|}}222lllBB055uٲe! $B|xPCQQNuF]]ڵkgϞ˻y+ť>OmWI''ĸ .ܿ bX JSb znܫ.`/F#sshrӁvAa ~?jmmMP?C8NhV:N5559N[[ݎ@$\H$RWW'***}dر999݂ cԨQC>9&ZMM5??xR6kk3gZZZivckkK.kkk1F"bL&` {A0755YXX;6 ##ȑ#>>>gϒ.6œ9sl6#,W7^UUU jnn'|bffgd2ZXX&ˠ^OiӦt2յe˖0c}r͛7HnĄF{ogZ[[9ΨQ҈g ]nhh(Yɉ8i JJJ͛GZXX]̙3555EMqtt|hGGGAAc_Oo?{1}{)**rJvv+֯_kggG׭[oi͛7lpĉ'N:zGΜ9sϞ=&Mb'NPPP :9;;;55'޽{f/ZH֕qF;;;v899 6גcǎݴi@ 0008y Fxq۷o 3g΍7,,,nݺ{nӒ___Ж-['MaةSܹ#kR7nܸcǎ{˗}_bb;Yܼxڵk׮-++駟?~h3'OLOO=zׯ_?YXX zm~rAY媪Bx z)++B_rJCC筭1 [hѳgϢ9bbbbnn>iҤ{{u֍=͍_|ĉSLQWW/**Zzy'Oꚜ|͚oosΩ~OPkk+J|̚5+&&͛ZZZ/_&;6r ~u ww蜜KKP< ԦLB_r%99 EIIiΜ9׮]y󦷷Ν;1 \.Ņ`L<=,,ݻwD/#BCC={L\ᨫzBYpa|||bbbaaEvE< hii%?󌌌W655;wn6IR]\\Bs}˗MLLfkI,xo߾֦hK,a0ݻw]B=㚚cƌt-cdddddrE:>TVVf2<"BUUUMMmҤI  cĉM6 αcRT{{{ bcc#p_f BFMMMMMג'-**RUU7nBhƍ}{555(<|900~vZBB㑑K.}E.]*--%w,..>uT\\X,F=\(gee***.]GDDo>~kjj|@jBCCUTTɓ'<~8333::]~===׹/^lll}ɡC 'ONMMuvvf0AAA,1,,֭[)))|Izz:۴i˗/mmm>\\\,Yŋ6m~zGGǭ[s@ʶn݊㸇G~~~ddWEEULḺcnjMMMB;B!6M<A R***DJjiiQWW'%·0p((++{xxzȑ#-#G\RGG端BHn-..nnn=zΖ-[bqZZdcc &lٲeϞ=\pqq^zu]]S[[IKKk…ڇ*))Yvʕ+._RTTq!D %%%o޼0a¤IB---cǎ?|d1Oљ-}$VUUUUJ!Ge/^^嚚wfX'O>p7fϞ;33#GX[[\r%(((''</1b܌!<OGGGIJ^=RA|>|8{Ç!t"FC!qEW^#/ǏOĉTBAAx'Q&99> ̙37`rqq6mX,0xֳٳcƌILLD"455C͚5o}Bhʔ)DCB8?~PkPId0Lᘛ#LMM]\\455B'Oq믿F988?3! KtZZZ1brPP7nDظ"\\\oB2!y8i(:p tuu VWWWPP@tĉTzeeenn.JpttD͚5 񶶶#G***?B|'8OXYY1 eeB555ﳳZZZ"V\W'پrA'.JPdUeee˖t@;j*s{{;ϟ0a¡C̦Nj``aCeekB#GdXyzz6x+Ν;Ge6oެd2'CCaÆo4ip9L:Ĥf….\9r=zذa...aaaJJJ4m---f͊B͝;!fǍw… & 0 sqqqss300O^|??Ǐ+**YaXKR/T[[d2T*ȧ ###EFĘw9' ervx_cffvYb_+Z iH@ 9(6AA rP mL*52 p[$X,S2R CQQuPcc>(H*2P( @ @(xBkƌ]]]iӦ<ԁΝ+  \.L&sڵNNND۷o_zUAAo!X|y橩!p?rȮ]TTTBW۶mP|űtss?~|VVVttd==={{{bk&ֻvB ? R:b| +`hxBh͚5jKK 111]o޼yD:88888XXX x#(((ɓ'#utt0 KJJq_~A9!㸗N133p88_vmʕa^brEb]QQQSSSWWBܻw/""[2FRq>}:a'NקRx 9vX*jooOPlllk֬Aب~ 1rPH$6lذab1V=lVIDATD' .Dhf}>|ȟ!_zq‚drf GGGbkVVV[[nxxxWWeee%yX>d2wA:4"BBB|}}?jԨ^H$"sԩSB...lǻep9(8pwޤIȜƍ]]]=ʺ^wυa" 80\oRK#CE͓Vky:Zj:T`楛b'PbQ0T 323\go)|F>񉦦R߾}훏o|3gά:uꩧz뭷^{oXI6o\WW^e)͵kמtI?яns5u]sg˖-EEEAUUUmذ>7cƌSx7_RJ;wO&_>Ox{>|x '(**꺚X?.^__WTT 쩧{njRʟWp”Ҹq:Iw 9/K)q]չ\n͚5]#FJ)u6p뮻,7O<1˲[o54t!C̙u˗;cԨQguVIIɋ/e׿m۶8/P__?p~q)n!}{_̦n&LH)͚5+{SJZ[[<ȢcuQ;vȲsM)s1={\l^w{ϋ/jMZZZʺ>D.9r䥗^mۚ>O?kZUUQGuGVVVկ_#GaG֭[wnݺuРA5mСC7n8hР뮻K.9s>O6,}lll,,,?L~oܧOoueee3fhmm};찯|+_s\GGǶmۦM6~̞={wnjj>o}+ArܨQjjj***>즦[viw}wYhhh5jԝwٵ7lkkӧO̳,˺e) 6 8v\#؏]hĉ/^cKoz?[A .ꪫN8ޑ^__ 裏~9mڴg4Af˖-=z+۠~/c={Ο={ܿ,{ҠvȲBxqm&iPiPiPiPiPiPuAwܹ~nxwʲlݺu\w\gggwm;u466our@uttlݺޝWXXX^^0x͛7[$T{{{[[[wmAAAAAAA۷/[=@:ao~᷺˶mwV,X0a„ ]{\YguwܹsE=Зٳgoڵ릛n>}?˗_}/}KӧOWq`{{-rYg]~/7ZWW}~|wɺwՍ;;>!C]nՄ|̞={KWZ-='ٳS\\} zh^&O\ZZzG477gY|&T]]ݻw޽{+{nteee}5jTJ+x7۽{u3|ɒ%K,;RJG7MR/~qM7=_y^y啔7oޜRZz|;>h7B7mVZZO|O/Y$k>_jkk|ɫ'_`… ]7ƍΝя~[`AKKKE[nikk{N:k֬_}>[m߾E ;::׿^|]wݕRw{CP{{{=vyE'?gr;vgy!CRJK,7ooN8!?׿uJSO{ 򕯔VZR SUUU[[eYMMMJiҤI)=7t'NSO={qPxnE]}۷o3gΪU3566u0){hPx/t5_zC]p|ϟ7oތ3]vwr`M4K/ݴie]vǷΙ3_3Ǹ wo}ܹs}ѹsN6:SgϞSOeY5?TPPrdYӠm۶-TVVٻw7̹'Op?~ѻHUV_iv 7?/\VVv衇.(/ѣE]RZbٳ;;;o?~{{YG1/]v 0`ύ۷%e˖Ҁ:<# ?c=Rz_zꮥX/))yǮG&Mt)tvvOxO)ܹs̙]w׾/~)aÆs9ojٹxxSJ+WL)K)1cƤ|ɔR{~{yRJcƌٱc3qaÆg8 pdYٹ{?O|c=vͿկRJ?pCCQGC=3)+W>G}t^=9cƌǿy[MMMw}СC+++g͚:pC=kα;eʔߚO\.WQQ1cƌҔ)S eYeeڵk,k w>hѢO?jŊk׮}7?N=ztJiÆ =܄ k֬ׯ_aaxD(3g>|#w_yyyqqqAAmzoC9$?g֭O?>R'ls Ǝ;v]tĉiP Y=CW_}uIIɊ+jkk{}]vci0aˆ#RJK,ѯ_M6q!CyΣ>:`O>9TRRey`? $˕,^W^vjmm=餓Ç/]84q{wĉͫW:?nݻwgg+rgyθq,v /\q\7/?|K,1bDii_򗶶޽{袋RJ /Riiرc[---˖-rGի^444.))9c;iPtw{C y'Fs>;.ZhÇ_ kMMMMMMMMMMMMMMMMMMMMMMMMMMܭ>IENDB`package.json000066400000000000000000000024321517747421500133620ustar00rootroot00000000000000{ "name": "p3x-html-pdf", "version": "2025.4.126", "corifeus": { "prefix": "p3x-", "publish": true, "type": "p3x", "code": "Venture", "nodejs": "v22.13.0", "opencollective": false, "reponame": "html-pdf", "build": true }, "license": "MIT", "description": "📃 Generates PDF from HTML with custom headers and footers with wkhtmltopdf", "main": "src/index.js", "directories": { "test": "test" }, "scripts": { "test": "grunt", "install": "node src/package/install.js" }, "repository": { "type": "git", "url": "git+https://github.com/patrikx3/html-pdf.git" }, "keywords": [ "html", "pdf", "async", "header", "custom", "footer" ], "author": "Patrik Laszlo ", "bugs": { "url": "https://github.com/patrikx3/html-pdf/issues" }, "homepage": "https://corifeus.com/html-pdf", "devDependencies": { "corifeus-builder": "^2025.4.123" }, "dependencies": { "cheerio": "^1.0.0", "corifeus-utils": "^2025.4.117", "fs-extra": "^11.3.0", "progress": "^2.0.3" }, "engines": { "node": ">=12.13.0" } }src/000077500000000000000000000000001517747421500116625ustar00rootroot00000000000000src/base.html000066400000000000000000000007061517747421500134650ustar00rootroot00000000000000 ${settings.html} src/header-footer.html000066400000000000000000000026141517747421500152770ustar00rootroot00000000000000 src/index.js000066400000000000000000000177561517747421500133470ustar00rootroot00000000000000const utils = require('corifeus-utils'); const path = require('path'); const fs = require('mz/fs'); const fsExtra = require('fs-extra'); const template = require('lodash/template'); const cleanDeep = require('lodash/cloneDeep'); const cheerio = require('cheerio') const startCase = require('lodash/startCase'); const os = require('os'); const isWin = os.platform() === 'win32'; const binPathAddon = isWin ? '' : 'wkhtmltox/'; let binpath = path.resolve(`${__dirname}/../release/${binPathAddon}bin/wkhtmltopdf`); // if we are in arm64, change the binpath if (os.arch() === 'arm64') { binpath = '/usr/local/bin/wkhtmltopdf-arm64' } const generate = async (options) => { const {settings, saveFile, base, debug, title} = options; let {javascriptDelay} = options; //console.log('options', options) const isFixed = () => { return settings.template.fixedWidth > 0 && settings.template.fixedHeight } const save = settings.hasOwnProperty('save') && settings.save === true; // const consoleDebugOriginal = console.debug; if (debug) { console.debug = console.info; } else { console.debug = () => { }; } let tmpHtmlPath; let tmpPdfPath; let tmpHtmlPathFooter; let tmpHtmlPathHeader; try { const baseHtml = (await fs.readFile(`${__dirname}/base.html`)).toString(); const baseHtmlFooterHeader = (await fs.readFile(`${__dirname}/header-footer.html`)).toString(); options.base = options.base || 'file://' + __dirname; options.css = options.css || (await fs.readFile(`${__dirname}/ng-html-template.css`)).toString(); options.jquery = options.jquery || (await fs.readFile(`${__dirname}/jquery-1.12.4.min.js`)).toString(); let html = template(baseHtml)(options) let $ = cheerio.load(html); const $id = $('[id]'); let header = {} let footer = {}; const defaultHeightMargin = '10mm'; let marginTop = defaultHeightMargin; let marginBottom = defaultHeightMargin; $id.each((index, element) => { const $element = $(element) //const $parent = $element.parent(); // console.debug($parent.html()); const id = $element.attr('id'); if (id.startsWith('p3x-header')) { header[id] = `
${$element.html()}
`; marginTop = $element.data('height') || defaultHeightMargin; $element.remove(); } else if (id.startsWith('p3x-footer')) { footer[id] = `
${$element.html()}
`; marginBottom = $element.data('height') || defaultHeightMargin; $element.remove(); } }) // console.debug('marginTop', marginTop); // console.debug('marginBottom', marginBottom); /* page: frompage: topage: = pages webpage: section: subsection: date: isodate: time: title: doctitle: sitepage: sitepages: */ $('.p3x-header').remove(); $('.p3x-footer').remove(); //$('ng-core-pdf-template-include').remove() //$('ng-html-template-include').remove() html = $.html(); html = html.replace(/\${qr}/g, options.settings.qr) const headerOrFooter = (data, type) => { const lodashTemplateHack = ` item = item.replace(/\\$\{page}/g, vars.page); item = item.replace(/\\$\{pages}/g, vars.pages); item = item.replace(/\\$\{qr}/g, qr); `; const mainsSettings = cleanDeep(options) mainsSettings.settings.html = JSON.stringify(data, null, 4); data = template(baseHtmlFooterHeader)(mainsSettings) data = data.replace('// headerOrFooter //', `var headerOrFooter = ${type};`) data = data.replace('// lodash-template-hack //', lodashTemplateHack) data = data.replace('// qr-hack //', ` var qr = ${JSON.stringify(mainsSettings.settings.qr)}; `) return { mainSettings: mainsSettings, data: data } } const headResult = headerOrFooter(header, 1) // const headerSettings = headResult.mainSettings; header = headResult.data; const footResult = headerOrFooter(footer, 2) // const footerSettings = footResult.mainSettings; footer = footResult.data; // console.debug('headerSettings', headerSettings) // console.debug('footerSettings', footerSettings) // console.debug('html', html) // console.debug('header', header) tmpHtmlPath = await utils.fs.ensureTempFile(html, 'html') tmpHtmlPathHeader = await utils.fs.ensureTempFile(header, 'html') tmpHtmlPathFooter = await utils.fs.ensureTempFile(footer, 'html') tmpPdfPath = await utils.fs.tempFileName('pdf'); //console.debug('header', footer) //console.debug('footer', footer) //console.debug('html', footer) // console.debug('tmpHtmlPath', tmpHtmlPath); // console.debug('tmpPdfPath', tmpPdfPath); // --header-html ${tmpHtmlPath} --footer-html ${tmpHtmlPath} /* -B, --margin-bottom Set the page bottom margin -L, --margin-left Set the page left margin (default 10mm) -R, --margin-right Set the page right margin (default 10mm) -T, --margin-top Set the page top margin */ // // if (javascriptDelay === undefined) { javascriptDelay = 1000; } let addOn = ''; if (isFixed()) { marginTop = '0mm'; marginBottom = '0mm'; addOn += ` --margin-left 0mm --margin-right 0mm --disable-smart-shrinking` } else { if (settings.template.marginLeft !== null && settings.template.marginLeft !== undefined) { addOn += ` --margin-left ${settings.template.marginLeft}mm ` } if (settings.template.marginRight != null && settings.template.marginLeft !== undefined) { addOn += ` --margin-right ${settings.template.marginRight}mm ` } } const pageSize = isFixed() ? `--page-width ${settings.template.fixedWidth + 1}mm --page-height ${settings.template.fixedHeight + 1}mm` : `--page-size ${settings.template.format}`; const generatePdfCommand = `${binpath} --javascript-delay ${javascriptDelay} --copies ${settings.template.copies} --margin-bottom ${marginBottom} --margin-top ${marginTop} ${addOn} ${debug ? '--debug-javascript' : ''} --title ${JSON.stringify(title + ' ' + new Date().toLocaleString())} --orientation ${startCase(settings.template.orientation)} ${pageSize} ${tmpHtmlPath} --header-html ${tmpHtmlPathHeader} --footer-html ${tmpHtmlPathFooter} ${tmpPdfPath}`; console.debug('generatePdfCommand', generatePdfCommand); await utils.childProcess.exec(generatePdfCommand, debug); if (save) { await fsExtra.move(tmpPdfPath, saveFile) } else { return fs.readFile(tmpPdfPath); } } finally { if (tmpHtmlPath !== undefined) { await fsExtra.remove(tmpHtmlPath); } if (tmpHtmlPathFooter !== undefined) { await fsExtra.remove(tmpHtmlPathFooter); } if (tmpHtmlPathHeader !== undefined) { await fsExtra.remove(tmpHtmlPathHeader); } if (!save && tmpPdfPath !== undefined) { await fsExtra.remove(tmpPdfPath); } // console.debug = consoleDebugOriginal; } } module.exports.generate = generate; src/jquery-1.12.4.min.js000066400000000000000000002756131517747421500150600ustar00rootroot00000000000000/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; }return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("