New Upstream Snapshot - ruby-charlock-holmes
Ready changes
Summary
Merged new upstream version: 0.7.7+git20201212.1.3f4f57c (was: 0.7.7).
Resulting package
Built on 2022-11-17T21:55 (took 7m41s)
The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:
apt install -t fresh-snapshots ruby-charlock-holmes-dbgsymapt install -t fresh-snapshots ruby-charlock-holmes
Diff
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..4a98782
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,14 @@
+dist: trusty
+addons:
+ apt:
+ packages:
+ - libicu-dev
+language: ruby
+rvm:
+ - 2.5
+ - 2.4
+ - 2.3
+ - 2.2
+ - 2.1
+ - 2.0.0
+ - truffleruby-head
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..b4e2a20
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gemspec
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..3a995e6
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Brian Lopez
+
+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.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b5ac669
--- /dev/null
+++ b/README.md
@@ -0,0 +1,120 @@
+# CharlockHolmes
+
+Character encoding detecting library for Ruby using [ICU](http://site.icu-project.org/)
+
+## Usage
+
+First you'll need to require it
+
+``` ruby
+require 'charlock_holmes'
+```
+
+## Encoding detection
+
+``` ruby
+contents = File.read('test.xml')
+detection = CharlockHolmes::EncodingDetector.detect(contents)
+# => {:encoding => 'UTF-8', :confidence => 100, :type => :text}
+
+# optionally there will be a :language key as well, but
+# that's mostly only returned for legacy encodings like ISO-8859-1
+```
+
+NOTE: `CharlockHolmes::EncodingDetector.detect` will return `nil` if it was unable to find an encoding.
+
+For binary content, `:type` will be set to `:binary`
+
+Though it's more efficient to reuse once detector instance:
+
+``` ruby
+detector = CharlockHolmes::EncodingDetector.new
+
+detection1 = detector.detect(File.read('test.xml'))
+detection2 = detector.detect(File.read('test2.json'))
+
+# and so on...
+```
+
+### String monkey patch
+
+Alternatively, you can just use the `detect_encoding` method on the `String` class
+
+``` ruby
+require 'charlock_holmes/string'
+
+contents = File.read('test.xml')
+
+detection = contents.detect_encoding
+```
+
+### Ruby 1.9 specific
+
+NOTE: This method only exists on Ruby 1.9+
+
+If you want to use this library to detect and set the encoding flag on strings, you can use the `detect_encoding!` method on the `String` class
+
+``` ruby
+require 'charlock_holmes/string'
+
+contents = File.read('test.xml')
+
+# this will detect and set the encoding of `contents`, then return self
+contents.detect_encoding!
+```
+
+## Transcoding
+
+Being able to detect the encoding of some arbitrary content is nice, but what you probably want is to be able to transcode that content into an encoding your application is using.
+
+``` ruby
+content = File.read('test2.txt')
+detection = CharlockHolmes::EncodingDetector.detect(content)
+utf8_encoded_content = CharlockHolmes::Converter.convert content, detection[:encoding], 'UTF-8'
+```
+
+The first parameter is the content to transcode, the second is the source encoding (the encoding the content is assumed to be in), and the third parameter is the destination encoding.
+
+## Installing
+
+If the traditional `gem install charlock_holmes` doesn't work, you may need to specify the path to
+your installation of ICU using the `--with-icu-dir` option during the gem install or by configuring Bundler to
+pass those arguments to Gem:
+
+Configure Bundler to always use the correct arguments when installing:
+
+ bundle config build.charlock_holmes --with-icu-dir=/path/to/installed/icu4c
+
+Using Gem to install directly without Bundler:
+
+ gem install charlock_holmes -- --with-icu-dir=/path/to/installed/icu4c
+
+If you get a compile time error that looks like `error: delegating constructors are permitted only in C++11` or something else related to C++11, you need to set the `--with-cxxflags=-std=c++11` options
+
+Bundler:
+
+ bundle config build.charlock_holmes --with-icu-dir=/path/to/installed/icu4c --with-cxxflags=-std=c++11
+
+Installing directly:
+
+ gem install charlock_holmes -- --with-icu-dir=/path/to/installed/icu4c --with-cxxflags=-std=c++11
+
+### Homebrew
+
+If you're installing on Mac OS X then using [Homebrew](http://mxcl.github.com/homebrew/) is
+the easiest way to install ICU.
+
+However, be warned; it is a Keg-Only (see [homedir issue #167](https://github.com/mxcl/homebrew/issues/167)
+for more info) install meaning RubyGems won't find it when installing without specifying `--with-icu-dir`
+
+To install ICU with Homebrew:
+
+ brew install icu4c
+
+Configure Bundler to always use the correct arguments when installing:
+
+ bundle config build.charlock_holmes --with-icu-dir=/usr/local/opt/icu4c
+
+Using Gem to install directly without Bundler:
+
+ gem install charlock_holmes -- --with-icu-dir=/usr/local/opt/icu4c
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..e943d79
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,16 @@
+require 'rake/testtask'
+
+Rake::TestTask.new do |t|
+ t.pattern = "test/**/*_test.rb"
+end
+
+task :default => :test
+
+gem 'rake-compiler', '>= 0.7.5'
+require "rake/extensiontask"
+
+Rake::ExtensionTask.new 'charlock_holmes' do |ext|
+ ext.lib_dir = File.join 'lib', 'charlock_holmes'
+end
+
+Rake::Task[:test].prerequisites << :compile
\ No newline at end of file
diff --git a/benchmark/detection.rb b/benchmark/detection.rb
new file mode 100644
index 0000000..837ca11
--- /dev/null
+++ b/benchmark/detection.rb
@@ -0,0 +1,39 @@
+$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
+
+RUBY_19 = !!(RUBY_VERSION =~ /1.9/)
+
+require 'charlock_holmes'
+
+# the chardet gem isn't compatible with 1.9
+require 'UniversalDetector' unless RUBY_19
+
+require 'benchmark'
+
+CONTENT = File.read(File.expand_path('../test.txt', __FILE__))
+
+TIMES = 100
+DETECTOR = CharlockHolmes::EncodingDetector.new
+
+Benchmark.bmbm do |x|
+ # new detector every iteration
+ x.report 'singleton call' do
+ TIMES.times do
+ CharlockHolmes::EncodingDetector.detect CONTENT
+ end
+ end
+
+ # shared detector for all iterations
+ x.report 'reusing a single detector' do
+ TIMES.times do
+ DETECTOR.detect CONTENT
+ end
+ end
+
+ unless RUBY_19
+ x.report 'chardet' do
+ TIMES.times do
+ UniversalDetector.chardet CONTENT
+ end
+ end
+ end
+end
diff --git a/benchmark/test.txt b/benchmark/test.txt
new file mode 100644
index 0000000..7379b26
--- /dev/null
+++ b/benchmark/test.txt
@@ -0,0 +1,693 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="zh" dir="ltr">
+<head>
+<title>XML - 维基百科,自由的百科全书</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="generator" content="MediaWiki 1.16wmf4" />
+<link rel="alternate" type="application/x-wiki" title="编辑本页" href="/w/index.php?title=XML&action=edit" />
+<link rel="edit" title="编辑本页" href="/w/index.php?title=XML&action=edit" />
+<link rel="apple-touch-icon" href="http://zh.wikipedia.org/apple-touch-icon.png" />
+<link rel="shortcut icon" href="/favicon.ico" />
+<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wikipedia (zh)" />
+<link rel="copyright" href="http://creativecommons.org/licenses/by-sa/3.0/" />
+<link rel="alternate" type="application/atom+xml" title="Wikipedia的Atom订阅" href="/w/index.php?title=Special:%E6%9C%80%E8%BF%91%E6%9B%B4%E6%94%B9&feed=atom" />
+<link rel="stylesheet" href="http://bits.wikimedia.org/skins-1.5/vector/main-ltr.css?283-19" type="text/css" media="screen" />
+<link rel="stylesheet" href="http://bits.wikimedia.org/skins-1.5/common/shared.css?283-19" type="text/css" media="screen" />
+<link rel="stylesheet" href="http://bits.wikimedia.org/skins-1.5/common/commonPrint.css?283-19" type="text/css" media="print" />
+<link rel="stylesheet" href="http://bits.wikimedia.org/w/extensions/UsabilityInitiative/css/combined.min.css?117" type="text/css" media="all" />
+<link rel="stylesheet" href="http://bits.wikimedia.org/w/extensions/UsabilityInitiative/css/vector/jquery-ui-1.7.2.css?1.7.2y" type="text/css" media="all" />
+<link rel="stylesheet" href="/w/index.php?title=MediaWiki:Common.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400" type="text/css" media="all" />
+<link rel="stylesheet" href="/w/index.php?title=MediaWiki:Print.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400" type="text/css" media="print" />
+<link rel="stylesheet" href="/w/index.php?title=MediaWiki:Handheld.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400" type="text/css" media="handheld" />
+<link rel="stylesheet" href="/w/index.php?title=MediaWiki:Vector.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400" type="text/css" media="all" />
+<link rel="stylesheet" href="/w/index.php?title=-&action=raw&maxage=2678400&gen=css" type="text/css" media="all" />
+<script type="text/javascript">
+var skin="vector",
+stylepath="http://bits.wikimedia.org/skins-1.5",
+wgUrlProtocols="http\\:\\/\\/|https\\:\\/\\/|ftp\\:\\/\\/|irc\\:\\/\\/|gopher\\:\\/\\/|telnet\\:\\/\\/|nntp\\:\\/\\/|worldwind\\:\\/\\/|mailto\\:|news\\:|svn\\:\\/\\/",
+wgArticlePath="/wiki/$1",
+wgScriptPath="/w",
+wgScriptExtension=".php",
+wgScript="/w/index.php",
+wgVariantArticlePath="/$2/$1",
+wgActionPaths={},
+wgServer="http://zh.wikipedia.org",
+wgCanonicalNamespace="",
+wgCanonicalSpecialPageName=false,
+wgNamespaceNumber=0,
+wgPageName="XML",
+wgTitle="XML",
+wgAction="view",
+wgArticleId=3632,
+wgIsArticle=true,
+wgUserName=null,
+wgUserGroups=null,
+wgUserLanguage="zh",
+wgContentLanguage="zh",
+wgBreakFrames=false,
+wgCurRevisionId=15329713,
+wgVersion="1.16wmf4",
+wgEnableAPI=true,
+wgEnableWriteAPI=true,
+wgSeparatorTransformTable=["", ""],
+wgDigitTransformTable=["", ""],
+wgMainPageTitle="Wikipedia:首页",
+wgFormattedNamespaces={"-2": "Media", "-1": "Special", "0": "", "1": "Talk", "2": "User", "3": "User talk", "4": "Wikipedia", "5": "Wikipedia talk", "6": "File", "7": "File talk", "8": "MediaWiki", "9": "MediaWiki talk", "10": "Template", "11": "Template talk", "12": "Help", "13": "Help talk", "14": "Category", "15": "Category talk", "100": "Portal", "101": "Portal talk"},
+wgNamespaceIds={"media": -2, "special": -1, "": 0, "talk": 1, "user": 2, "user_talk": 3, "wikipedia": 4, "wikipedia_talk": 5, "file": 6, "file_talk": 7, "mediawiki": 8, "mediawiki_talk": 9, "template": 10, "template_talk": 11, "help": 12, "help_talk": 13, "category": 14, "category_talk": 15, "portal": 100, "portal_talk": 101, "媒体": -2, "媒體": -2, "特殊": -1, "对话": 1, "對話": 1, "讨论": 1, "討論": 1, "用户": 2, "用戶": 2, "用户对话": 3, "用戶對話": 3, "用户讨论": 3, "用戶討論": 3, "图像": 6, "圖像": 6, "档案": 6, "檔案": 6, "文件": 6, "图像对话": 7, "圖像對話": 7, "图像讨论": 7, "圖像討論": 7, "档案对话": 7, "檔案對話": 7, "档案讨论": 7, "檔案討論": 7, "文件对话": 7, "文件對話": 7, "文件讨论": 7, "文件討論": 7, "模板": 10, "样板": 10, "樣板": 10, "模板对话": 11, "模板對話": 11, "模板讨论": 11, "模板討論": 11, "样板对话": 11, "樣板對話": 11, "样板讨论": 11, "樣板討論": 11, "帮助": 12, "幫助": 12, "帮助对话": 13, "幫助對話": 13, "帮助讨论": 13, "幫助討論": 13, "分类": 14, "分類": 14, "分类对话": 15, "分類對話": 15, "分类讨论": 15, "分類討論": 15, "维基百科": 4, "維基百科": 4, "wp": 4, "维基百科讨论": 5, "维基百科对话": 5, "維基百科討論": 5, "維基百科對話": 5, "t": 10, "wt": 5, "cat": 14, "h": 12, "p": 100, "image": 6, "image_talk": 7},
+wgSiteName="Wikipedia",
+wgCategories=["含有英語的條目", "網頁技術", "W3C标准", "文件格式", "置标语言", "XML", "数据序列化格式"],
+wgDBname="zhwiki",
+wgUserVariant="zh",
+wgMWSuggestTemplate="http://zh.wikipedia.org/w/api.php?action=opensearch\x26search={searchTerms}\x26namespace={namespaces}\x26suggest",
+wgSearchNamespaces=[0],
+wgMWSuggestMessages=["有建议", "无建议"],
+wgRestrictionEdit=[],
+wgRestrictionMove=[],
+wgCollapsibleNavBucketTest=false,
+wgCollapsibleNavForceNewVersion=false,
+wgVectorPreferences={"collapsiblenav": {"enable": 1}, "editwarning": {"enable": 1}, "simplesearch": {"enable": 1, "disablesuggest": 0}},
+wgVectorEnabledModules={"collapsiblenav": true, "collapsibletabs": true, "editwarning": true, "expandablesearch": false, "footercleanup": false, "simplesearch": true},
+Geo={"city": "", "country": ""},
+wgNoticeProject="wikipedia";
+</script><script src="http://bits.wikimedia.org/skins-1.5/common/wikibits.js?283-19" type="text/javascript"></script>
+<script type="text/javascript" src="http://bits.wikimedia.org/skins-1.5/common/jquery.min.js?283-19"></script>
+<script src="http://bits.wikimedia.org/skins-1.5/common/ajax.js?283-19" type="text/javascript"></script>
+<script src="http://bits.wikimedia.org/skins-1.5/common/mwsuggest.js?283-19" type="text/javascript"></script>
+<script src="http://bits.wikimedia.org/w/extensions/UsabilityInitiative/js/plugins.combined.min.js?283-19" type="text/javascript"></script>
+<script src="http://bits.wikimedia.org/w/extensions/UsabilityInitiative/Vector/Vector.combined.min.js?283-19" type="text/javascript"></script>
+<script type="text/javascript">mw.usability.addMessages({'vector-collapsiblenav-more':'更多语言','vector-editwarning-warning':'离开这个页面可能会令您失去之前的所有更改。\n若您已经登入,您可在您参数设置的“编辑”节中关闭此警告。','vector-simplesearch-search':'搜索','vector-simplesearch-containing':'含有...'});</script>
+<script src="/w/index.php?title=Special:BannerController&cache=/cn.js&283-19" type="text/javascript"></script>
+<!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/skins-1.5/vector/csshover.htc")}</style><![endif]-->
+<script src="/w/index.php?title=-&action=raw&gen=js&useskin=vector&283-19" type="text/javascript"></script>
+
+<style type="text/css">/*<![CDATA[*/
+.source-xml {line-height: normal;}
+.source-xml li, .source-xml pre {
+ line-height: normal; border: 0px none white;
+}
+/**
+ * GeSHi Dynamically Generated Stylesheet
+ * --------------------------------------
+ * Dynamically generated stylesheet for xml
+ * CSS class: source-xml, CSS id:
+ * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
+ * (http://qbnz.com/highlighter/ and http://geshi.org/)
+ * --------------------------------------
+ */
+.xml.source-xml .de1, .xml.source-xml .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
+.xml.source-xml {font-family:monospace;}
+.xml.source-xml .imp {font-weight: bold; color: red;}
+.xml.source-xml li, .xml.source-xml .li1 {font-weight: normal; vertical-align:top;}
+.xml.source-xml .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
+.xml.source-xml .li2 {font-weight: bold; vertical-align:top;}
+.xml.source-xml .es0 {color: #000099; font-weight: bold;}
+.xml.source-xml .br0 {color: #66cc66;}
+.xml.source-xml .sy0 {color: #66cc66;}
+.xml.source-xml .st0 {color: #ff0000;}
+.xml.source-xml .nu0 {color: #cc66cc;}
+.xml.source-xml .sc-1 {color: #808080; font-style: italic;}
+.xml.source-xml .sc0 {color: #00bbdd;}
+.xml.source-xml .sc1 {color: #ddbb00;}
+.xml.source-xml .sc2 {color: #339933;}
+.xml.source-xml .sc3 {color: #009900;}
+.xml.source-xml .re0 {color: #000066;}
+.xml.source-xml .re1 {color: #000000; font-weight: bold;}
+.xml.source-xml .re2 {color: #000000; font-weight: bold;}
+.xml.source-xml .ln-xtra, .xml.source-xml li.ln-xtra, .xml.source-xml div.ln-xtra {background-color: #ffc;}
+.xml.source-xml span.xtra { display:block; }
+
+/*]]>*/
+</style>
+<style type="text/css">/*<![CDATA[*/
+@import "/w/index.php?title=MediaWiki:Geshi.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=2678400";
+/*]]>*/
+</style></head>
+<body class="mediawiki ltr ns-0 ns-subject page-XML skin-vector">
+ <div id="mw-page-base" class="noprint"></div>
+ <div id="mw-head-base" class="noprint"></div>
+ <!-- content -->
+ <div id="content">
+ <a id="top"></a>
+ <div id="mw-js-message" style="display:none;"></div>
+ <!-- sitenotice -->
+ <div id="siteNotice"><!-- centralNotice loads here --><script type="text/javascript" language="JavaScript">
+/* <![CDATA[ */
+document.writeln("\x3cdiv id=\"localNotice\"\x3e\x3c/div\x3e");
+/* ]]> */
+</script></div>
+ <!-- /sitenotice -->
+ <!-- firstHeading -->
+ <h1 id="firstHeading" class="firstHeading">XML</h1>
+ <!-- /firstHeading -->
+ <!-- bodyContent -->
+ <div id="bodyContent">
+ <!-- tagline -->
+ <div id="siteSub">维基百科,自由的百科全书</div>
+ <!-- /tagline -->
+ <!-- subtitle -->
+ <div id="contentSub"></div>
+ <!-- /subtitle -->
+ <!-- jumpto -->
+ <div id="jump-to-nav">
+ 跳转到: <a href="#mw-head">导航</a>,
+ <a href="#p-search">搜索</a>
+ </div>
+ <!-- /jumpto -->
+ <!-- bodytext -->
+ <p><span style="display: none;"><a href="#_skip_noteTA">跳过字词转换说明</a></span></p>
+<div class="NavFrame collapsed noprint nohandheld metadata" style="z-index: 1; margin: 0 0.5em 0.5em auto; top: -1.2em; position: relative; background-color: transparent; border: none;">
+<div class="uncollapse toggleHotspot" style="position: absolute; right:0; background-color: transparent; padding: 0; width: 4em;" title="本頁使用了標題或全文手工轉換,單擊檢視"><span style="font-family:微软雅黑,Arial Unicode MS,黑体;"><span style="padding:1px 3px; background: slategray; color:white;">汉</span><span style="padding:1px 3px; background: sienna; color:white;">漢</span></span><span class="toggleShow" style="color:black;">▼</span><span class="toggleHide" style="color:black;">▲</span></div>
+<div class="NavContent" style="position: absolute; display: none; right: 0; top: 1.5em; border: 1px gray solid; background-color: lightyellow; padding: 0.3em; z-index: 100; width: 650px; font-size: 90%; background-color: #f0f2f0; color: black;">
+<div style="background: #FFEA88; background-color: #4d4d4d; color: #ffffff;">为了阅读方便,本文使用<a href="/wiki/Help:%E4%B8%AD%E6%96%87%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E7%9A%84%E7%B9%81%E7%AE%80%E5%A4%84%E7%90%86#.E6.8E.A7.E5.88.B6.E8.87.AA.E5.8A.A8.E8.BD.AC.E6.8D.A2.E7.9A.84.E4.BB.A3.E7.A2.BC" title="Help:中文维基百科的繁简处理" class="mw-redirect"><span style="color:#ffffff; font-weight:bold;">全文手工轉換</span></a>。转换内容:</div>
+<div style="padding: 3px">
+<p>本文采用<a href="/wiki/Portal:%E7%94%B5%E8%84%91%E5%92%8C%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF" title="Portal:电脑和信息技术" class="mw-redirect"><span style="color: #333333; font-weight: bold;">电脑和信息技术</span></a>组全文转换 <span class="editlink noprint plainlinksneverexpand">[<a href="/wiki/Template:CGroup/IT/temp" title="Template:CGroup/IT/temp">查看</a>] • [<a href="http://zh.wikipedia.org/w/index.php?title=Template:CGroup/IT/temp&action=edit" class="external text" rel="nofollow">编辑</a>] • [<a href="http://philip-bot.appspot.com/autoconvert?group=IT" class="external text" rel="nofollow">强制刷新</a>]</span></p>
+<p><br /></p>
+</div>
+<div class="NavFrame collapsed" style="background-color: transparent; border: none; margin:0; padding:0;">
+<div class="NavHead" style="background-color: #FFEA88; font-weight: normal; height: 1.5em; text-align: left; background-color: #4d4d4d; color: #ffffff;"><a href="/wiki/Help:%E4%B8%AD%E6%96%87%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E7%9A%84%E7%B9%81%E7%AE%80%E3%80%81%E5%9C%B0%E5%8C%BA%E8%AF%8D%E5%A4%84%E7%90%86" title="Help:中文维基百科的繁简、地区词处理"><span style="color: #333333; font-weight: bold;">字詞轉換</span></a>说明<span class="NavToggle"><span class="toggleShow">顯示↓</span><span class="toggleHide">關閉↑</span></span></div>
+<div class="NavContent">
+<p>字詞轉換是中文维基的一項自動轉換,目的是通過计算机程序自動消除繁简、地区词等不同<b>用字模式</b>的差異,以達到閱讀方便。字詞轉換包括全局轉換和手動轉換,本說明所使用的标题转换和全文转换技術,都屬於手動轉換。</p>
+<p>如果您想对我们的字词转换系统提出一些改进建议,或者提交应用面更广的转换(<a href="/wiki/%E4%B8%AD%E6%96%87%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91" title="中文维基百科">中文维基百科</a>全站乃至<a href="/wiki/MediaWiki" title="MediaWiki">MediaWiki</a>软件),或者报告转换系统的错误,请前往<a href="/wiki/Wikipedia:%E5%AD%97%E8%AF%8D%E8%BD%AC%E6%8D%A2%E8%AF%B7%E6%B1%82%E6%88%96%E5%80%99%E9%80%89" title="Wikipedia:字词转换请求或候选">Wikipedia:字词转换请求或候选</a>发表您的意见。</p>
+</div>
+</div>
+</div>
+</div>
+<p><span id="_skip_noteTA"></span></p>
+<div class="thumb tright">
+<div class="thumbinner" style="width:427px;"><a href="/wiki/File:RecipeBook_XML_Example.svg" class="image"><img alt="" src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/73/RecipeBook_XML_Example.svg/425px-RecipeBook_XML_Example.svg.png" width="425" height="234" class="thumbimage" /></a>
+<div class="thumbcaption">RecipeBook的例子,一種基於XML語法上的烹飪技術書刊。此標籤可轉換為:<a href="/wiki/HTML" title="HTML">HTML</a>, <a href="/wiki/Portable_Document_Format" title="Portable Document Format" class="mw-redirect">PDF</a>以及<a href="/wiki/Rich_Text_Format" title="Rich Text Format" class="mw-redirect">Rich Text Format</a>並使用<a href="/wiki/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80" title="程式語言" class="mw-redirect">程式語言</a>或<a href="/w/index.php?title=%E5%8F%AF%E6%93%B4%E5%85%85%E5%A5%97%E4%BB%B6%E6%A8%A3%E5%BC%8F%E8%AA%9E%E8%A8%80&action=edit&redlink=1" class="new" title="可擴充套件樣式語言">XSL</a>。</div>
+</div>
+</div>
+<p><b>可扩展置标语言</b>(<a href="/wiki/%E8%8B%B1%E8%AF%AD" title="英语">英语</a>:<span lang="en" xml:lang="en">e<b>X</b>tensible <b>M</b>arkup <b>L</b>anguage</span>,简称:<span lang="en" xml:lang="en"><b>XML</b></span>),又称<b>可扩展标记语言</b>,是一种<a href="/wiki/%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80" title="置标语言">置标语言</a>。置标指<a href="/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA" title="计算机" class="mw-redirect">计算机</a>所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如<a href="/wiki/HTML" title="HTML">HTML</a>,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从<a href="/wiki/%E6%A0%87%E5%87%86%E9%80%9A%E7%94%A8%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80" title="标准通用置标语言" class="mw-redirect">标准通用置标语言</a>(SGML)中简化修改出来的。它主要用到的有可扩展置标语言、<a href="/wiki/%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A0%B7%E5%BC%8F%E8%AF%AD%E8%A8%80" title="可扩展样式语言">可扩展样式语言</a>(XSL)、<a href="/wiki/XBRL" title="XBRL">XBRL</a>和<a href="/wiki/XPath" title="XPath">XPath</a>等。</p>
+<table id="toc" class="toc">
+<tr>
+<td>
+<div id="toctitle">
+<h2>目录</h2>
+</div>
+<ul>
+<li class="toclevel-1 tocsection-1"><a href="#.E6.AD.B7.E5.8F.B2"><span class="tocnumber">1</span> <span class="toctext">歷史</span></a></li>
+<li class="toclevel-1 tocsection-2"><a href="#.E7.94.A8.E9.80.94"><span class="tocnumber">2</span> <span class="toctext">用途</span></a></li>
+<li class="toclevel-1 tocsection-3"><a href="#.E4.BE.8B"><span class="tocnumber">3</span> <span class="toctext">例</span></a></li>
+<li class="toclevel-1 tocsection-4"><a href="#.E7.BB.93.E6.9E.84"><span class="tocnumber">4</span> <span class="toctext">结构</span></a></li>
+<li class="toclevel-1 tocsection-5"><a href="#.E5.8F.82.E8.A7.81"><span class="tocnumber">5</span> <span class="toctext">参见</span></a></li>
+<li class="toclevel-1 tocsection-6"><a href="#.E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"><span class="tocnumber">6</span> <span class="toctext">外部链接</span></a></li>
+</ul>
+</td>
+</tr>
+</table>
+<script type="text/javascript">
+//<![CDATA[
+if (window.showTocToggle) { var tocShowText = "显示"; var tocHideText = "隐藏"; showTocToggle(); }
+//]]>
+</script>
+<h2><span class="editsection">[<a href="/w/index.php?title=XML&action=edit&section=1" title="编辑段落:歷史">编辑</a>]</span> <span class="mw-headline" id=".E6.AD.B7.E5.8F.B2">歷史</span></h2>
+<p>XML是從1995年開始有其雛形,並向<a href="/wiki/W3C" title="W3C" class="mw-redirect">W3C</a>(<a href="/wiki/%E4%B8%87%E7%BB%B4%E7%BD%91%E8%81%94%E7%9B%9F" title="万维网联盟">全球資訊網聯盟</a>)提案,而在1998二月發佈為W3C的標準(XML1.0)。XML的前身是<b>SGML</b>(<span lang="en" xml:lang="en">The <b>S</b>tandard <b>G</b>eneralized <b>M</b>arkup <b>L</b>anguage</span>),是自IBM從1960年代就開始發展的<b><a href="/w/index.php?title=%E9%80%9A%E7%94%A8%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80&action=edit&redlink=1" class="new" title="通用置标语言">GML</a></b>(<span lang="en" xml:lang="en"><b>G</b>eneralized <b>M</b>arkup <b>L</b>anguage</span>)標準化後的名稱。</p>
+<p>GML的重要概念:</p>
+<ul>
+<li>文件中能夠明確的將標示與內容分開</li>
+<li>所有文件的標示使用方法均一致</li>
+</ul>
+<p>1978年,<a href="/wiki/ANSI" title="ANSI" class="mw-redirect">ANSI</a>將GML加以整理規範,發佈成為SGML,1986年起為<a href="/wiki/ISO" title="ISO" class="mw-redirect">ISO</a>所採用(ISO 8879),並且被廣泛地運用在各種大型的文件計劃中,但是SGML是一種非常嚴謹的文件描述法,導致過於龐大複雜(標準手冊就有500多頁),難以理解和學習,進而影響其推廣與應用。</p>
+<p>同時W3C也發現到HTML的問題:</p>
+<ul>
+<li>不能解決所有解釋資料的問題 - 像是影音檔或化學公式、音樂符號等其他形態的內容。</li>
+<li>效能問題 - 需要下載整份文件,才能開始對文件做搜尋。</li>
+<li>擴充性、彈性、易讀性均不佳。</li>
+</ul>
+<p>為了解決以上問題,專家們使用SGML精簡製作,並依照HTML的發展經驗,產生出一套使用上規則嚴謹,但是簡單的描述資料語言:XML。 XML是在一個這樣的背景下誕生的——为了有一個更中立的方式,讓消費端自行決定要如何消化、呈現從服務端所提供的資訊。</p>
+<p>XML被廣泛用來作為跨平台之間交互數據的形式,主要針對數據的內容,通過不同的格式化描述手段(XSLT,CSS等)可以完成最終的形式表達(生成對應的HTML,PDF或者其他的文件格式)。</p>
+<h2><span class="editsection">[<a href="/w/index.php?title=XML&action=edit&section=2" title="编辑段落:用途">编辑</a>]</span> <span class="mw-headline" id=".E7.94.A8.E9.80.94">用途</span></h2>
+<p>XML设计用来传送及携带数据信息,不用来表现或展示数据,<a href="/wiki/HTML" title="HTML">HTML</a>语言則用来表现数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。</p>
+<ul>
+<li>丰富文件(Rich Documents)- 自定文件描述并使其更丰富
+<ul>
+<li>属于文件为主的XML技术应用</li>
+<li>标记是用来定义一份资料应该如何呈现</li>
+</ul>
+</li>
+<li>元数据(Metadata)- 描述其它文件或网络资讯
+<ul>
+<li>属于资料为主的XML技术应用</li>
+<li>标记是用来说明一份资料的意义</li>
+</ul>
+</li>
+<li>設定档案(Configuration Files)- 描述软件設定的参数</li>
+</ul>
+<h2><span class="editsection">[<a href="/w/index.php?title=XML&action=edit&section=3" title="编辑段落:例">编辑</a>]</span> <span class="mw-headline" id=".E4.BE.8B">例</span></h2>
+<p>XML定义结构、存储信息、传送信息。下例為<u>張旭</u>发送给<u>陳貞伶</u>的便条,存储为XML。</p>
+<div dir="ltr" class="mw-geshi" style="text-align: left;">
+<div class="xml source-xml" style="font-family:monospace;">
+<pre class="de1">
+<span class="sc3"><小纸条<span class="re2">></span></span>
+ <span class="sc3"><收件人<span class="re2">></span></span>陳貞伶<span class="sc3"></收件人<span class="re2">></span></span>
+ <span class="sc3"><发件人<span class="re2">></span></span>張旭<span class="sc3"></发件人<span class="re2">></span></span>
+ <span class="sc3"><主题<span class="re2">></span></span>問候<span class="sc3"></主题<span class="re2">></span></span>
+ <span class="sc3"><具体内容<span class="re2">></span></span>最近可好?<span class="sc3"></具体内容<span class="re2">></span></span>
+<span class="sc3"></小纸条<span class="re2">></span></span>
+</pre></div>
+</div>
+<p>这XML文档仅是纯粹的信息标签,这些标签意义的展开依赖于应用它的程序。</p>
+<h2><span class="editsection">[<a href="/w/index.php?title=XML&action=edit&section=4" title="编辑段落:结构">编辑</a>]</span> <span class="mw-headline" id=".E7.BB.93.E6.9E.84">结构</span></h2>
+<p>每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0"?>。这一行代码会告诉解析器和浏览器,这个文件应该按照前面讨论过的XML规则进行解析。第二行代码,<books>,则是文档元素(document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。所有其他的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。</p>
+<p>范例文件中的第三行代码是注释,你会发现它与HTML中使用的注释风格是一样的。这是XML从SGML中继承的语法元素之一。</p>
+<p>页面再往下的一些地方,可以发现<desc>标签裡有一些特殊的语法。<![CDATA[ ]]>代码用于表示无需进行解析的文本,允许诸如大于号和小于号之类的特殊字符包含在文本中,而无需担心破坏XML的语法。文本必须出现在<![CDATA[和]]>之间才能合适地避免被解析。这样的文本称为Character Data Section,简称CData Section。</p>
+<p>下面的一行就是在第二本书的定义之前的:</p>
+<p><?page render multiple authors ?></p>
+<p>虽然它看上去很像XML序言,但实际上是一种称为处理指令(processing instruction)的不同类型的语法。处理指令(以下简称PI)的目的是为了给处理页面的程序(例如XML解析器)提供额外的信息。PI通常情况下是没有固定格式的,唯一的要求是紧随第一个问号必须至少有一个字母。在此之后,PI可以包含除了小于号和大于号之外的任何字符串序列。</p>
+<p>最常见的PI是用来指定XML文件的样式表:</p>
+<p>这个PI一般会直接放在XML序言之后,通常由Web浏览器使用,来将XML数据以特殊的样式显示出来。</p>
+<p>XML的结构有一个缺陷,那就是不支持分帧(framing)。当多条XML消息在TCP上传输的时候,无法基于XML协议来确定一条XML消息是否已经结束。</p>
+<h2><span class="editsection">[<a href="/w/index.php?title=XML&action=edit&section=5" title="编辑段落:参见">编辑</a>]</span> <span class="mw-headline" id=".E5.8F.82.E8.A7.81">参见</span></h2>
+<ul>
+<li><a href="/wiki/XHTML" title="XHTML">XHTML</a></li>
+<li><a href="/wiki/DTD" title="DTD" class="mw-redirect">DTD</a>(<a href="/wiki/%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B%E6%8F%8F%E8%BF%B0" title="文件类型描述">文件类型描述</a>)</li>
+<li><a href="/wiki/XML_Schema" title="XML Schema">XML Schema</a></li>
+<li><a href="/w/index.php?title=XLink&action=edit&redlink=1" class="new" title="XLink">XLink</a></li>
+<li><a href="/wiki/SVG" title="SVG">SVG</a></li>
+<li><a href="/wiki/XSLT" title="XSLT">XSLT</a></li>
+<li><a href="/wiki/X3D" title="X3D">X3D</a></li>
+<li><a href="/wiki/HTML" title="HTML">HTML</a></li>
+<li><a href="/wiki/CSS" title="CSS">CSS</a></li>
+<li><a href="/wiki/RDF" title="RDF" class="mw-redirect">RDF</a></li>
+<li><a href="/wiki/RSS" title="RSS">RSS</a>
+<ul>
+<li><a href="/wiki/Unicode" title="Unicode">Unicode</a></li>
+</ul>
+</li>
+</ul>
+<h2><span class="editsection">[<a href="/w/index.php?title=XML&action=edit&section=6" title="编辑段落:外部链接">编辑</a>]</span> <span class="mw-headline" id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5">外部链接</span></h2>
+<ul>
+<li><a href="http://xml.ascc.net/zh/utf-8/gloss.html" class="external text" rel="nofollow">XML及SGML名词英汉翻译表 (台湾)</a></li>
+</ul>
+<p><br /></p>
+<table class="navbox" cellspacing="0" style=";">
+<tr>
+<td style="padding:2px;">
+<table cellspacing="0" class="nowraplinks collapsible autocollapse" style="width:100%;background:transparent;color:inherit;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title">
+<div style="float:left; width:6em;text-align:left;">
+<div class="noprint plainlinksneverexpand" style="background-color:transparent; padding:0; font-weight:normal; font-size:80%; color:#000000; white-space:nowrap;"><a href="/wiki/Template:W3C%E8%A7%84%E8%8C%83%E5%92%8C%E6%A0%87%E5%87%86" title="Template:W3C规范和标准"><span style=";;border:none;" title="查看这个模板">查</span></a> <span style="font-size:80%;">•</span> <a href="/w/index.php?title=Template_talk:W3C%E8%A7%84%E8%8C%83%E5%92%8C%E6%A0%87%E5%87%86&action=edit&redlink=1" class="new" title="Template talk:W3C规范和标准"><span style=";;border:none;" title="关于这个模板的讨论页面">論</span></a> <span style="font-size:80%;">•</span> <a href="http://zh.wikipedia.org/w/index.php?title=Template:W3C%E8%A7%84%E8%8C%83%E5%92%8C%E6%A0%87%E5%87%86&action=edit" class="external text" rel="nofollow"><span style=";;border:none;" title="您可以编辑这个模板。请在储存变更之前先预览">編</span></a></div>
+</div>
+<span style="font-size:110%;"><a href="/wiki/%E4%B8%87%E7%BB%B4%E7%BD%91%E8%81%94%E7%9B%9F" title="万维网联盟">W3C</a>规范和标准</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";background-color:#e6e6ff;;"><a href="/wiki/W3C%E6%8E%A8%E8%8D%90%E6%A0%87%E5%87%86" title="W3C推荐标准">推薦標準</a></td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;line-height:1.4em;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap"><a href="/wiki/Canonical_XML" title="Canonical XML">Canonical XML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Compound_Document_Format&action=edit&redlink=1" class="new" title="Compound Document Format">CDF</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/CSS" title="CSS">CSS</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/%E6%96%87%E6%A1%A3%E5%AF%B9%E8%B1%A1%E6%A8%A1%E5%9E%8B" title="文档对象模型">DOM</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/HTML" title="HTML">HTML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/%E6%95%B0%E5%AD%A6%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80" title="数学置标语言">MathML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/%E7%BD%91%E7%BB%9C%E6%9C%AC%E4%BD%93%E8%AF%AD%E8%A8%80" title="网络本体语言">OWL</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=P3P&action=edit&redlink=1" class="new" title="P3P">P3P</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Pronunciation_Lexicon_Specification&action=edit&redlink=1" class="new" title="Pronunciation Lexicon Specification">PLS</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/RDF" title="RDF" class="mw-redirect">RDF</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=RDF_Schema&action=edit&redlink=1" class="new" title="RDF Schema">RDF Schema</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Semantic_Interpretation_for_Speech_Recognition&action=edit&redlink=1" class="new" title="Semantic Interpretation for Speech Recognition">SISR</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/%E5%90%8C%E6%AD%A5%E5%A4%9A%E5%AA%92%E4%BD%93%E9%9B%86%E6%88%90%E8%AF%AD%E8%A8%80" title="同步多媒体集成语言">SMIL</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/%E7%B0%A1%E5%96%AE%E7%89%A9%E4%BB%B6%E5%AD%98%E5%8F%96%E5%8D%94%E5%AE%9A" title="簡單物件存取協定" class="mw-redirect">SOAP</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Speech_Recognition_Grammar_Specification&action=edit&redlink=1" class="new" title="Speech Recognition Grammar Specification">SRGS</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Speech_Synthesis_Markup_Language&action=edit&redlink=1" class="new" title="Speech Synthesis Markup Language">SSML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/%E5%8F%AF%E7%BC%A9%E6%94%BE%E7%9F%A2%E9%87%8F%E5%9B%BE%E5%BD%A2" title="可缩放矢量图形" class="mw-redirect">SVG</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/SPARQL" title="SPARQL">SPARQL</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Timed_Text&action=edit&redlink=1" class="new" title="Timed Text">Timed Text</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=VoiceXML&action=edit&redlink=1" class="new" title="VoiceXML">VoiceXML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/WSDL" title="WSDL">WSDL</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XForms" title="XForms">XForms</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XHTML" title="XHTML">XHTML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XLink&action=edit&redlink=1" class="new" title="XLink">XLink</a> <b>·</b></span> <span style="white-space:nowrap"><strong class="selflink">XML</strong> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XML_Base&action=edit&redlink=1" class="new" title="XML Base">XML Base</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XML_Encryption" title="XML Encryption">XML Encryption</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XML_Events&action=edit&redlink=1" class="new" title="XML Events">XML Events</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XML%E4%BF%A1%E6%81%AF%E9%9B%86" title="XML信息集">XML信息集</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XML%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4" title="XML命名空间">XML命名空间</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XML_Schema" title="XML Schema">XML Schema</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XML_Signature" title="XML Signature">XML Signature</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XPath" title="XPath">XPath</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XPointer&action=edit&redlink=1" class="new" title="XPointer">XPointer</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XQuery&action=edit&redlink=1" class="new" title="XQuery">XQuery</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A0%B7%E5%BC%8F%E8%AF%AD%E8%A8%80" title="可扩展样式语言">XSL</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XSL-FO" title="XSL-FO">XSL-FO</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XSL_Transformations" title="XSL Transformations" class="mw-redirect">XSLT</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";background-color:#e6e6ff;;">Notes</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;line-height:1.4em;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap"><a href="/w/index.php?title=XAdES&action=edit&redlink=1" class="new" title="XAdES">XAdES</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XHTML%2BSMIL&action=edit&redlink=1" class="new" title="XHTML+SMIL">XHTML+SMIL</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";background-color:#e6e6ff;;">工作草案</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;line-height:1.4em;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap"><a href="/w/index.php?title=Call_Control_eXtensible_Markup_Language&action=edit&redlink=1" class="new" title="Call Control eXtensible Markup Language">CCXML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=CURIE&action=edit&redlink=1" class="new" title="CURIE">CURIE</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/HTML_5" title="HTML 5">HTML 5</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=InkML&action=edit&redlink=1" class="new" title="InkML">InkML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Web_Integration_Compound_Document&action=edit&redlink=1" class="new" title="Web Integration Compound Document">WICD</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Extensible_Forms_Description_Language&action=edit&redlink=1" class="new" title="Extensible Forms Description Language">XFDL</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XFrames&action=edit&redlink=1" class="new" title="XFrames">XFrames</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XBL" title="XBL">XBL</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XHTML%2BMathML%2BSVG&action=edit&redlink=1" class="new" title="XHTML+MathML+SVG">XHTML+MathML+SVG</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/XMLHttpRequest" title="XMLHttpRequest" class="mw-redirect">XMLHttpRequest</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=XProc&action=edit&redlink=1" class="new" title="XProc">XProc</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";background-color:#e6e6ff;;">檢測</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;line-height:1.4em;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><a href="/w/index.php?title=%E7%84%A1%E9%9A%9C%E7%A4%99%E7%B6%B2%E9%A0%81%E6%AA%A2%E6%B8%AC&action=edit&redlink=1" class="new" title="無障礙網頁檢測">無障礙網頁檢測</a></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";background-color:#e6e6ff;;">前标准</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;line-height:1.4em;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap"><a href="/wiki/C-HTML" title="C-HTML">C-HTML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Handheld_Device_Markup_Language&action=edit&redlink=1" class="new" title="Handheld Device Markup Language">HDML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=JavaScript_Style_Sheets&action=edit&redlink=1" class="new" title="JavaScript Style Sheets">JSSS</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/w/index.php?title=Precision_Graphics_Markup_Language&action=edit&redlink=1" class="new" title="Precision Graphics Markup Language">PGML</a> <b>·</b></span> <span style="white-space:nowrap"><a href="/wiki/Vector_Markup_Language" title="Vector Markup Language" class="mw-redirect">VML</a></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+<table class="navbox" cellspacing="0" style=";">
+<tr>
+<td style="padding:2px;">
+<table cellspacing="0" class="nowraplinks collapsible autocollapse" style="width:100%;background:transparent;color:inherit;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title">
+<div style="float:left; width:6em;text-align:left;">
+<div class="noprint plainlinksneverexpand" style="background-color:transparent; padding:0; font-weight:normal; font-size:80%; color:#000000; white-space:nowrap;"><a href="/wiki/Template:%E7%B6%B2%E9%A0%81%E6%8A%80%E8%A1%93%E8%88%87%E6%A8%99%E6%BA%96" title="Template:網頁技術與標準"><span style=";;border:none;" title="查看这个模板">查</span></a> <span style="font-size:80%;">•</span> <a href="/wiki/Template_talk:%E7%B6%B2%E9%A0%81%E6%8A%80%E8%A1%93%E8%88%87%E6%A8%99%E6%BA%96" title="Template talk:網頁技術與標準"><span style=";;border:none;" title="关于这个模板的讨论页面">論</span></a> <span style="font-size:80%;">•</span> <a href="http://zh.wikipedia.org/w/index.php?title=Template:%E7%B6%B2%E9%A0%81%E6%8A%80%E8%A1%93%E8%88%87%E6%A8%99%E6%BA%96&action=edit" class="external text" rel="nofollow"><span style=";;border:none;" title="您可以编辑这个模板。请在储存变更之前先预览">編</span></a></div>
+</div>
+<span style="font-size:110%;">網頁技術與標準</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">文档呈现语言</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><a href="/wiki/HTML" title="HTML">HTML</a>*(<a href="/wiki/HTML5" title="HTML5" class="mw-redirect">HTML5</a>*)<span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/XHTML" title="XHTML">XHTML</a>*<span style="white-space:nowrap; font-weight:bold;"> ·</span> <strong class="selflink">XML</strong>*<span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/XForms" title="XForms">XForms</a>*<span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/DHTML" title="DHTML">DHTML</a>*</div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">样式格式描述语言</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><a href="/wiki/CSS" title="CSS">CSS</a>*<span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/XSL" title="XSL" class="mw-redirect">XSL</a>*</div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">动态网页技术</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><a href="/wiki/%E9%80%9A%E7%94%A8%E7%BD%91%E5%85%B3%E6%8E%A5%E5%8F%A3" title="通用网关接口">CGI</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/Active_Server_Pages" title="Active Server Pages">ASP</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/ASP.NET" title="ASP.NET">ASP.NET</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/ColdFusion" title="ColdFusion" class="mw-redirect">ColdFusion</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/JSP" title="JSP">JSP</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/PHP" title="PHP">PHP</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">客户端交互技术</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><a href="/wiki/ActiveX" title="ActiveX">ActiveX</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/Java_Applet" title="Java Applet" class="mw-redirect">Java Applet</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/JavaFX" title="JavaFX">JavaFX</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/AJAX" title="AJAX">AJAX</a>(<a href="/wiki/XMLHTTP" title="XMLHTTP">XMLHTTP</a>*)<span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/Microsoft_Silverlight" title="Microsoft Silverlight">Silverlight</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/ActionScript" title="ActionScript">ActionScript</a>(<a href="/wiki/Adobe_Flash" title="Adobe Flash">Flash</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/Adobe_Flex" title="Adobe Flex">Flex</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/Adobe_Integrated_Runtime" title="Adobe Integrated Runtime" class="mw-redirect">AIR</a>)</div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">客户端脚本语言</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><a href="/wiki/JavaScript" title="JavaScript">JavaScript</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/JScript" title="JScript">JScript</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/VBScript" title="VBScript">VBScript</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">标识定位语言</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><a href="/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E5%AE%9A%E4%BD%8D%E7%AC%A6" title="统一资源定位符">URL</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E6%A0%87%E5%BF%97%E7%AC%A6" title="统一资源标志符">URI</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/XPath" title="XPath">XPath</a><span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/URL%E9%87%8D%E5%AF%AB" title="URL重寫">URL重寫</a></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">文档纲要语言</td>
+<td style="text-align:left;border-left:2px solid #fdfdfd;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><a href="/wiki/%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B%E6%8F%8F%E8%BF%B0" title="文件类型描述">DTD</a>*<span style="white-space:nowrap; font-weight:bold;"> ·</span> <a href="/wiki/XML_Schema" title="XML Schema">XML Schema</a>*</div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+
+<!--
+NewPP limit report
+Preprocessor node count: 2032/1000000
+Post-expand include size: 837777/2048000 bytes
+Template argument size: 22446/2048000 bytes
+Expensive parser function count: 11/500
+-->
+
+<!-- Saved in parser cache with key zhwiki:pcache:idhash:3632-0!1!0!!zh!4!zh and timestamp 20110110032035 -->
+<div class="printfooter">
+来自“<a href="http://zh.wikipedia.org/wiki/XML">http://zh.wikipedia.org/wiki/XML</a>”</div>
+ <!-- /bodytext -->
+ <!-- catlinks -->
+ <div id='catlinks' class='catlinks'><div id="mw-normal-catlinks"><a href="/wiki/Special:%E9%A1%B5%E9%9D%A2%E5%88%86%E7%B1%BB" title="Special:页面分类">6个分类</a>: <span dir='ltr'><a href="/wiki/Category:%E7%B6%B2%E9%A0%81%E6%8A%80%E8%A1%93" title="Category:網頁技術">網頁技術</a></span> | <span dir='ltr'><a href="/wiki/Category:W3C%E6%A0%87%E5%87%86" title="Category:W3C标准">W3C标准</a></span> | <span dir='ltr'><a href="/wiki/Category:%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F" title="Category:文件格式">文件格式</a></span> | <span dir='ltr'><a href="/wiki/Category:%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80" title="Category:置标语言">置标语言</a></span> | <span dir='ltr'><a href="/wiki/Category:XML" title="Category:XML">XML</a></span> | <span dir='ltr'><a href="/wiki/Category:%E6%95%B0%E6%8D%AE%E5%BA%8F%E5%88%97%E5%8C%96%E6%A0%BC%E5%BC%8F" title="Category:数据序列化格式">数据序列化格式</a></span></div><div id="mw-hidden-catlinks" class="mw-hidden-cats-hidden">1个隐藏分类: <span dir='ltr'><a href="/wiki/Category:%E5%90%AB%E6%9C%89%E8%8B%B1%E8%AA%9E%E7%9A%84%E6%A2%9D%E7%9B%AE" title="Category:含有英語的條目">含有英語的條目</a></span></div></div> <!-- /catlinks -->
+ <div class="visualClear"></div>
+ </div>
+ <!-- /bodyContent -->
+ </div>
+ <!-- /content -->
+ <!-- header -->
+ <div id="mw-head" class="noprint">
+
+<!-- 0 -->
+<div id="p-personal" class="">
+ <h5>个人工具</h5>
+ <ul>
+ <li id="pt-login"><a href="/w/index.php?title=Special:%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95&returnto=XML&returntoquery=variant%3Dzh" title="建议你登录,尽管并非必须。 [o]" accesskey="o">登录/创建账户</a></li>
+ </ul>
+</div>
+
+<!-- /0 -->
+ <div id="left-navigation">
+
+<!-- 0 -->
+<div id="p-namespaces" class="vectorTabs">
+ <h5>名字空间</h5>
+ <ul>
+ <li id="ca-nstab-main" class="selected"><a href="/wiki/XML" title="查看页面内容 [c]" accesskey="c"><span>条目</span></a></li>
+ <li id="ca-talk"><a href="/wiki/Talk:XML" title="关于条目正文的讨论 [t]" accesskey="t"><span>讨论</span></a></li>
+ </ul>
+</div>
+
+<!-- /0 -->
+
+<!-- 1 -->
+<div id="p-variants" class="vectorMenu">
+ <h4>
+ 不转换 </h4>
+ <h5><span>变换</span><a href="#"></a></h5>
+ <div class="menu">
+ <ul>
+ <li id="ca-0" class="selected"><a href="/zh/XML" >不转换</a></li>
+ <li id="ca-1"><a href="/zh-hans/XML" >简体</a></li>
+ <li id="ca-2"><a href="/zh-hant/XML" >繁體</a></li>
+ <li id="ca-3"><a href="/zh-cn/XML" >大陆简体</a></li>
+ <li id="ca-4"><a href="/zh-hk/XML" >港澳繁體</a></li>
+ <li id="ca-5"><a href="/zh-sg/XML" >马新简体</a></li>
+ <li id="ca-6"><a href="/zh-tw/XML" >台灣正體</a></li>
+ </ul>
+ </div>
+</div>
+
+<!-- /1 -->
+ </div>
+ <div id="right-navigation">
+
+<!-- 0 -->
+<div id="p-views" class="vectorTabs">
+ <h5>查看</h5>
+ <ul>
+ <li id="ca-view" class="selected"><a href="/wiki/XML" ><span>阅读</span></a></li>
+ <li id="ca-edit"><a href="/w/index.php?title=XML&action=edit" title="你可编辑此页,请在保存前先预览一下。 [e]" accesskey="e"><span>编辑</span></a></li>
+ <li id="ca-history" class="collapsible "><a href="/w/index.php?title=XML&action=history" title="本页面的早前版本。 [h]" accesskey="h"><span>查看历史</span></a></li>
+ </ul>
+</div>
+
+<!-- /0 -->
+
+<!-- 1 -->
+<div id="p-cactions" class="vectorMenu emptyPortlet">
+ <h5><span>动作</span><a href="#"></a></h5>
+ <div class="menu">
+ <ul>
+ </ul>
+ </div>
+</div>
+
+<!-- /1 -->
+
+<!-- 2 -->
+<div id="p-search">
+ <h5><label for="searchInput">搜索</label></h5>
+ <form action="/w/index.php" id="searchform">
+ <input type='hidden' name="title" value="Special:搜索"/>
+ <div id="simpleSearch">
+ <input id="searchInput" name="search" type="text" title="搜索维基百科 [f]" accesskey="f" value="" />
+ <button id="searchButton" type='submit' name='button' title="搜索该文字的页面"><img src="http://bits.wikimedia.org/skins-1.5/vector/images/search-ltr.png?283-19" alt="搜索" /></button>
+ </div>
+ </form>
+</div>
+
+<!-- /2 -->
+ </div>
+ </div>
+ <!-- /header -->
+ <!-- panel -->
+ <div id="mw-panel" class="noprint">
+ <!-- logo -->
+ <div id="p-logo"><a style="background-image: url(http://upload.wikimedia.org/wikipedia/commons/0/0a/Wikipedia-logo-v2-zh.png);" href="/wiki/Wikipedia:%E9%A6%96%E9%A1%B5" title="首页"></a></div>
+ <!-- /logo -->
+
+<!-- SEARCH -->
+
+<!-- /SEARCH -->
+
+<!-- navigation -->
+<div class="portal" id='p-navigation'>
+ <h5>导航</h5>
+ <div class="body">
+ <ul>
+ <li id="n-mainpage-description"><a href="/wiki/Wikipedia:%E9%A6%96%E9%A1%B5" title="访问首页 [z]" accesskey="z">首页</a></li>
+ <li id="n-indexpage"><a href="/wiki/Wikipedia:%E5%88%86%E9%A1%9E%E7%B4%A2%E5%BC%95">分類索引</a></li>
+ <li id="n-Featured_content"><a href="/wiki/Portal:%E7%89%B9%E8%89%B2%E5%85%A7%E5%AE%B9">特色内容</a></li>
+ <li id="n-currentevents"><a href="/wiki/Portal:%E6%96%B0%E8%81%9E%E5%8B%95%E6%85%8B" title="提供当前新闻事件的背景资料">新闻动态</a></li>
+ <li id="n-recentchanges"><a href="/wiki/Special:%E6%9C%80%E8%BF%91%E6%9B%B4%E6%94%B9" title="列出维基百科中的最近修改 [r]" accesskey="r">最近更改</a></li>
+ <li id="n-randompage"><a href="/wiki/Special:%E9%9A%8F%E6%9C%BA%E9%A1%B5%E9%9D%A2" title="随机载入一个页面 [x]" accesskey="x">随机条目</a></li>
+ </ul>
+ </div>
+</div>
+
+<!-- /navigation -->
+
+<!-- help -->
+<div class="portal" id='p-help'>
+ <h5>帮助</h5>
+ <div class="body">
+ <ul>
+ <li id="n-help"><a href="/wiki/Help:%E7%9B%AE%E5%BD%95" title="寻求帮助">帮助</a></li>
+ <li id="n-portal"><a href="/wiki/Wikipedia:%E7%A4%BE%E5%8C%BA%E4%B8%BB%E9%A1%B5" title="关于本计划、你可以做什么、应该如何做">社区入口</a></li>
+ <li id="n-policy"><a href="/wiki/Wikipedia:%E6%96%B9%E9%87%9D%E8%88%87%E6%8C%87%E5%BC%95">方针与指引</a></li>
+ <li id="n-villagepump"><a href="/wiki/Wikipedia:%E4%BA%92%E5%8A%A9%E5%AE%A2%E6%A0%88">互助客栈</a></li>
+ <li id="n-Information_desk"><a href="/wiki/Wikipedia:%E8%A9%A2%E5%95%8F%E8%99%95">询问处</a></li>
+ <li id="n-conversion"><a href="/wiki/Wikipedia:%E5%AD%97%E8%AF%8D%E8%BD%AC%E6%8D%A2%E8%AF%B7%E6%B1%82%E6%88%96%E5%80%99%E9%80%89">字词转换</a></li>
+ <li id="n-IRC"><a href="/wiki/Wikipedia:IRC%E8%81%8A%E5%A4%A9%E9%A2%91%E9%81%93">IRC即时聊天</a></li>
+ <li id="n-contact"><a href="/wiki/Wikipedia:%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC">联系我们</a></li>
+ <li id="n-about"><a href="/wiki/Wikipedia:%E5%85%B3%E4%BA%8E">关于维基百科</a></li>
+ <li id="n-sitesupport"><a href="http://wikimediafoundation.org/wiki/Special:Landingcheck?landing_page=WMFJA1&language=zh&utm_source=donate&utm_medium=sidebar&utm_campaign=20101204SB001" title="如果您在維基百科受益良多,您可以考慮資助我們">资助维基百科</a></li>
+ </ul>
+ </div>
+</div>
+
+<!-- /help -->
+
+<!-- TOOLBOX -->
+<div class="portal" id="p-tb">
+ <h5>工具</h5>
+ <div class="body">
+ <ul>
+ <li id="t-whatlinkshere"><a href="/wiki/Special:%E9%93%BE%E5%85%A5%E9%A1%B5%E9%9D%A2/XML" title="列出所有与本页相链的页面 [j]" accesskey="j">链入页面</a></li>
+ <li id="t-recentchangeslinked"><a href="/wiki/Special:%E9%93%BE%E5%87%BA%E6%9B%B4%E6%94%B9/XML" title="页面链出所有页面的更改 [k]" accesskey="k">链出更改</a></li>
+ <li id="t-upload"><a href="/wiki/Project:%E4%B8%8A%E4%BC%A0" title="上传图像或多媒体文件 [u]" accesskey="u">上传文件</a></li>
+ <li id="t-specialpages"><a href="/wiki/Special:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2" title="全部特殊页面的列表 [q]" accesskey="q">特殊页面</a></li>
+ <li id="t-print"><a href="/w/index.php?title=XML&variant=zh&printable=yes" rel="alternate" title="这个页面的可打印版本 [p]" accesskey="p">打印页面</a></li>
+ <li id="t-permalink"><a href="/w/index.php?title=XML&oldid=15329713" title="这个页面修订版本的永久链接">永久链接</a></li>
+ <li id="t-cite"><a href="/w/index.php?title=Special:%E5%BC%95%E7%94%A8&page=XML&id=15329713" title="Information on how to cite this page">引用此文</a></li> </ul>
+ </div>
+</div>
+
+<!-- /TOOLBOX -->
+
+<!-- LANGUAGES -->
+<div class="portal" id="p-lang">
+ <h5>其他语言</h5>
+ <div class="body">
+ <ul>
+ <li class="interwiki-af"><a href="http://af.wikipedia.org/wiki/XML" title="XML">Afrikaans</a></li>
+ <li class="interwiki-ar"><a href="http://ar.wikipedia.org/wiki/%D9%84%D8%BA%D8%A9_%D8%A7%D9%84%D8%B1%D9%82%D9%85_%D8%A7%D9%84%D9%82%D8%A7%D8%A8%D9%84%D8%A9_%D9%84%D9%84%D8%A7%D9%85%D8%AA%D8%AF%D8%A7%D8%AF" title="لغة الرقم القابلة للامتداد">العربية</a></li>
+ <li class="interwiki-bat-smg"><a href="http://bat-smg.wikipedia.org/wiki/XML" title="XML">Žemaitėška</a></li>
+ <li class="interwiki-bg"><a href="http://bg.wikipedia.org/wiki/XML" title="XML">Български</a></li>
+ <li class="interwiki-bn"><a href="http://bn.wikipedia.org/wiki/%E0%A6%8F%E0%A6%95%E0%A7%8D%E0%A6%B8%E0%A6%9F%E0%A7%87%E0%A6%A8%E0%A6%B8%E0%A6%BF%E0%A6%AD_%E0%A6%AE%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%95%E0%A6%86%E0%A6%AA_%E0%A6%B2%E0%A7%8D%E0%A6%AF%E0%A6%BE%E0%A6%82%E0%A6%97%E0%A7%81%E0%A6%AF%E0%A6%BC%E0%A7%87%E0%A6%9C" title="এক্সটেনসিভ মার্কআপ ল্যাংগুয়েজ">বাংলা</a></li>
+ <li class="interwiki-bs"><a href="http://bs.wikipedia.org/wiki/XML" title="XML">Bosanski</a></li>
+ <li class="interwiki-ca"><a href="http://ca.wikipedia.org/wiki/Extensible_Markup_Language" title="Extensible Markup Language">Català</a></li>
+ <li class="interwiki-ckb"><a href="http://ckb.wikipedia.org/wiki/%D8%A6%DB%8E%DA%A9%D8%B3_%D8%A6%DB%8E%D9%85_%D8%A6%DB%8E%DA%B5" title="ئێکس ئێم ئێڵ">Soranî / کوردی</a></li>
+ <li class="interwiki-cs"><a href="http://cs.wikipedia.org/wiki/Extensible_Markup_Language" title="Extensible Markup Language">Česky</a></li>
+ <li class="interwiki-da"><a href="http://da.wikipedia.org/wiki/XML" title="XML">Dansk</a></li>
+ <li class="interwiki-de"><a href="http://de.wikipedia.org/wiki/Extensible_Markup_Language" title="Extensible Markup Language">Deutsch</a></li>
+ <li class="interwiki-el"><a href="http://el.wikipedia.org/wiki/XML" title="XML">Ελληνικά</a></li>
+ <li class="interwiki-en"><a href="http://en.wikipedia.org/wiki/XML" title="XML">English</a></li>
+ <li class="interwiki-eo"><a href="http://eo.wikipedia.org/wiki/XML" title="XML">Esperanto</a></li>
+ <li class="interwiki-es"><a href="http://es.wikipedia.org/wiki/Extensible_Markup_Language" title="Extensible Markup Language">Español</a></li>
+ <li class="interwiki-et"><a href="http://et.wikipedia.org/wiki/XML" title="XML">Eesti</a></li>
+ <li class="interwiki-eu"><a href="http://eu.wikipedia.org/wiki/XML" title="XML">Euskara</a></li>
+ <li class="interwiki-fa"><a href="http://fa.wikipedia.org/wiki/%D8%A7%DB%8C%DA%A9%D8%B3%E2%80%8C%D8%A7%D9%85%E2%80%8C%D8%A7%D9%84" title="ایکسامال">فارسی</a></li>
+ <li class="interwiki-fi"><a href="http://fi.wikipedia.org/wiki/XML" title="XML">Suomi</a></li>
+ <li class="interwiki-fr"><a href="http://fr.wikipedia.org/wiki/Extensible_Markup_Language" title="Extensible Markup Language">Français</a></li>
+ <li class="interwiki-ga"><a href="http://ga.wikipedia.org/wiki/XML" title="XML">Gaeilge</a></li>
+ <li class="interwiki-gl"><a href="http://gl.wikipedia.org/wiki/XML" title="XML">Galego</a></li>
+ <li class="interwiki-he"><a href="http://he.wikipedia.org/wiki/XML" title="XML">עברית</a></li>
+ <li class="interwiki-hi"><a href="http://hi.wikipedia.org/wiki/%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AE%E0%A4%B2" title="क्षमल">हिन्दी</a></li>
+ <li class="interwiki-hr"><a href="http://hr.wikipedia.org/wiki/XML" title="XML">Hrvatski</a></li>
+ <li class="interwiki-hu"><a href="http://hu.wikipedia.org/wiki/XML" title="XML">Magyar</a></li>
+ <li class="interwiki-ia"><a href="http://ia.wikipedia.org/wiki/XML" title="XML">Interlingua</a></li>
+ <li class="interwiki-id"><a href="http://id.wikipedia.org/wiki/Extensible_markup_language" title="Extensible markup language">Bahasa Indonesia</a></li>
+ <li class="interwiki-is"><a href="http://is.wikipedia.org/wiki/XML" title="XML">Íslenska</a></li>
+ <li class="interwiki-it"><a href="http://it.wikipedia.org/wiki/XML" title="XML">Italiano</a></li>
+ <li class="interwiki-ja"><a href="http://ja.wikipedia.org/wiki/Extensible_Markup_Language" title="Extensible Markup Language">日本語</a></li>
+ <li class="interwiki-ko"><a href="http://ko.wikipedia.org/wiki/XML" title="XML">한국어</a></li>
+ <li class="interwiki-lo"><a href="http://lo.wikipedia.org/wiki/XML" title="XML">ລາວ</a></li>
+ <li class="interwiki-lt"><a href="http://lt.wikipedia.org/wiki/XML" title="XML">Lietuvių</a></li>
+ <li class="interwiki-lv"><a href="http://lv.wikipedia.org/wiki/Valoda_XML" title="Valoda XML">Latviešu</a></li>
+ <li class="interwiki-ml"><a href="http://ml.wikipedia.org/wiki/%E0%B4%8E%E0%B4%95%E0%B5%8D%E0%B4%B8%E0%B5%8D.%E0%B4%8E%E0%B4%82.%E0%B4%8E%E0%B5%BD." title="എക്സ്.എം.എൽ.">മലയാളം</a></li>
+ <li class="interwiki-mn"><a href="http://mn.wikipedia.org/wiki/XML" title="XML">Монгол</a></li>
+ <li class="interwiki-ms"><a href="http://ms.wikipedia.org/wiki/XML" title="XML">Bahasa Melayu</a></li>
+ <li class="interwiki-nl"><a href="http://nl.wikipedia.org/wiki/Extensible_Markup_Language" title="Extensible Markup Language">Nederlands</a></li>
+ <li class="interwiki-nn"><a href="http://nn.wikipedia.org/wiki/XML" title="XML">Norsk (nynorsk)</a></li>
+ <li class="interwiki-no"><a href="http://no.wikipedia.org/wiki/XML" title="XML">Norsk (bokmål)</a></li>
+ <li class="interwiki-pl"><a href="http://pl.wikipedia.org/wiki/XML" title="XML">Polski</a></li>
+ <li class="interwiki-pt"><a href="http://pt.wikipedia.org/wiki/XML" title="XML">Português</a></li>
+ <li class="interwiki-ro"><a href="http://ro.wikipedia.org/wiki/XML" title="XML">Română</a></li>
+ <li class="interwiki-ru"><a href="http://ru.wikipedia.org/wiki/XML" title="XML">Русский</a></li>
+ <li class="interwiki-simple"><a href="http://simple.wikipedia.org/wiki/XML" title="XML">Simple English</a></li>
+ <li class="interwiki-sk"><a href="http://sk.wikipedia.org/wiki/XML" title="XML">Slovenčina</a></li>
+ <li class="interwiki-sl"><a href="http://sl.wikipedia.org/wiki/XML" title="XML">Slovenščina</a></li>
+ <li class="interwiki-sq"><a href="http://sq.wikipedia.org/wiki/XML" title="XML">Shqip</a></li>
+ <li class="interwiki-sr"><a href="http://sr.wikipedia.org/wiki/XML" title="XML">Српски / Srpski</a></li>
+ <li class="interwiki-sv"><a href="http://sv.wikipedia.org/wiki/XML" title="XML">Svenska</a></li>
+ <li class="interwiki-ta"><a href="http://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%95%E0%AF%8D%E0%AE%B8%E0%AF%8D%E0%AE%8E%E0%AE%AE%E0%AF%8D%E0%AE%8E%E0%AE%B2%E0%AF%8D" title="எக்ஸ்எம்எல்">தமிழ்</a></li>
+ <li class="interwiki-te"><a href="http://te.wikipedia.org/wiki/XML" title="XML">తెలుగు</a></li>
+ <li class="interwiki-tg"><a href="http://tg.wikipedia.org/wiki/XML" title="XML">Тоҷикӣ</a></li>
+ <li class="interwiki-th"><a href="http://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%AD%E0%B8%81%E0%B8%8B%E0%B9%8C%E0%B9%80%E0%B8%AD%E0%B9%87%E0%B8%A1%E0%B9%81%E0%B8%AD%E0%B8%A5" title="เอกซ์เอ็มแอล">ไทย</a></li>
+ <li class="interwiki-tk"><a href="http://tk.wikipedia.org/wiki/XML" title="XML">Türkmençe</a></li>
+ <li class="interwiki-tr"><a href="http://tr.wikipedia.org/wiki/Geni%C5%9Fletilebilir_i%C5%9Faretleme_dili" title="Genişletilebilir işaretleme dili">Türkçe</a></li>
+ <li class="interwiki-uk"><a href="http://uk.wikipedia.org/wiki/XML" title="XML">Українська</a></li>
+ <li class="interwiki-ur"><a href="http://ur.wikipedia.org/wiki/%D8%AA%D9%88%D8%B3%DB%8C%D8%B9%DB%8C_%D8%B2%D8%A8%D8%A7%D9%86_%D8%AA%D8%AF%D9%88%DB%8C%D9%86" title="توسیعی زبان تدوین">اردو</a></li>
+ <li class="interwiki-vi"><a href="http://vi.wikipedia.org/wiki/XML" title="XML">Tiếng Việt</a></li>
+ </ul>
+ </div>
+</div>
+
+<!-- /LANGUAGES -->
+ </div>
+ <!-- /panel -->
+ <!-- footer -->
+ <div id="footer">
+ <ul id="footer-info">
+ <li id="footer-info-lastmod"> 本页面最后修订于2011年1月1日 (星期六) 15:20。</li>
+ <li id="footer-info-copyright">本站的全部文字在<a class="internal" href="/wiki/Wikipedia:CC-by-sa-3.0%E5%8D%8F%E8%AE%AE%E6%96%87%E6%9C%AC" title="Wikipedia:CC-by-sa-3.0协议文本">知识共享 署名-相同方式共享 3.0协议</a>之条款下提供,附加条款亦可能应用。(请参阅<a href="http://wikimediafoundation.org/wiki/Terms_of_Use">使用条款</a>)<br />
+Wikipedia®和维基百科标志是<a href="http://wikimediafoundation.org">维基媒体基金会</a>的注册商标;维基™是维基媒体基金会的商标。<br />维基媒体基金会是在美国佛罗里达州登记的501(c)(3)<a href="http://wikimediafoundation.org/wiki/%E8%B5%84%E5%8A%A9%E7%9A%84%E5%85%8D%E7%A8%8E%E6%94%BF%E7%AD%96">免税</a>、非营利、慈善机构。<br /></li>
+ </ul>
+ <ul id="footer-places">
+ <li id="footer-places-privacy"><a href="http://wikimediafoundation.org/wiki/%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96" title="wikimedia:隐私政策">隐私政策</a></li>
+ <li id="footer-places-about"><a href="/wiki/Wikipedia:%E5%85%B3%E4%BA%8E" title="Wikipedia:关于">关于维基百科</a></li>
+ <li id="footer-places-disclaimer"><a href="/wiki/Wikipedia:%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E" title="Wikipedia:免责声明">免责声明</a></li>
+ </ul>
+ <ul id="footer-icons" class="noprint">
+ <li id="footer-icon-poweredby"><a href="http://www.mediawiki.org/"><img src="http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png" height="31" width="88" alt="Powered by MediaWiki" /></a></li>
+ <li id="footer-icon-copyright"><a href="http://wikimediafoundation.org/"><img src="/images/wikimedia-button.png" width="88" height="31" alt="Wikimedia Foundation"/></a></li>
+ </ul>
+ <div style="clear:both"></div>
+ </div>
+ <!-- /footer -->
+ <!-- fixalpha -->
+ <script type="text/javascript"> if ( window.isMSIE55 ) fixalpha(); </script>
+ <!-- /fixalpha -->
+
+<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
+<script type="text/javascript" src="http://geoiplookup.wikimedia.org/"></script> <!-- Served by srv197 in 0.306 secs. --> </body>
+</html>
\ No newline at end of file
diff --git a/charlock_holmes.gemspec b/charlock_holmes.gemspec
index 8bf7ed2..83537f1 100644
--- a/charlock_holmes.gemspec
+++ b/charlock_holmes.gemspec
@@ -1,44 +1,20 @@
-#########################################################
-# This file has been automatically generated by gem2tgz #
-#########################################################
-# -*- encoding: utf-8 -*-
-# stub: charlock_holmes 0.7.7 ruby lib
-# stub: ext/charlock_holmes/extconf.rb
+require './lib/charlock_holmes/version' unless defined? CharlockHolmes::VERSION
-Gem::Specification.new do |s|
- s.name = "charlock_holmes".freeze
- s.version = "0.7.7"
+Gem::Specification.new "charlock_holmes", CharlockHolmes::VERSION do |s|
+ s.license = "MIT"
+ s.authors = ["Brian Lopez", "Vicent Martí"]
+ s.email = "seniorlopez@gmail.com"
+ s.extensions = ["ext/charlock_holmes/extconf.rb"]
+ s.files = `git ls-files ext lib`.split("\n")
+ s.homepage = "https://github.com/brianmario/charlock_holmes"
+ s.rdoc_options = ["--charset=UTF-8"]
+ s.summary = "Character encoding detection, brought to you by ICU"
+ s.description = "charlock_holmes provides binary and text detection as well as text transcoding using libicu"
+ s.required_ruby_version = '>= 1.9.3'
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
- s.require_paths = ["lib".freeze]
- s.authors = ["Brian Lopez".freeze, "Vicent Mart\u{ed}".freeze]
- s.date = "2019-11-08"
- s.description = "charlock_holmes provides binary and text detection as well as text transcoding using libicu".freeze
- s.email = "seniorlopez@gmail.com".freeze
- s.extensions = ["ext/charlock_holmes/extconf.rb".freeze]
- s.files = ["ext/charlock_holmes/common.h".freeze, "ext/charlock_holmes/converter.c".freeze, "ext/charlock_holmes/encoding_detector.c".freeze, "ext/charlock_holmes/ext.c".freeze, "ext/charlock_holmes/extconf.rb".freeze, "ext/charlock_holmes/transliterator.cpp".freeze, "lib/charlock_holmes.rb".freeze, "lib/charlock_holmes/encoding_detector.rb".freeze, "lib/charlock_holmes/string.rb".freeze, "lib/charlock_holmes/version.rb".freeze]
- s.homepage = "https://github.com/brianmario/charlock_holmes".freeze
- s.licenses = ["MIT".freeze]
- s.rdoc_options = ["--charset=UTF-8".freeze]
- s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze)
- s.rubygems_version = "2.5.2.1".freeze
- s.summary = "Character encoding detection, brought to you by ICU".freeze
-
- if s.respond_to? :specification_version then
- s.specification_version = 4
-
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
- s.add_development_dependency(%q<chardet>.freeze, ["~> 0.9"])
- s.add_development_dependency(%q<minitest>.freeze, ["~> 5.11"])
- s.add_development_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
- else
- s.add_dependency(%q<chardet>.freeze, ["~> 0.9"])
- s.add_dependency(%q<minitest>.freeze, ["~> 5.11"])
- s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
- end
- else
- s.add_dependency(%q<chardet>.freeze, ["~> 0.9"])
- s.add_dependency(%q<minitest>.freeze, ["~> 5.11"])
- s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
- end
+ # tests
+ s.add_development_dependency 'rake-compiler', "~> 1.0"
+ s.add_development_dependency 'minitest', "~> 5.11"
+ # benchmarks
+ s.add_development_dependency 'chardet', "~> 0.9"
end
diff --git a/debian/changelog b/debian/changelog
index 057285b..2a11258 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ruby-charlock-holmes (0.7.7+git20201212.1.3f4f57c-1) UNRELEASED; urgency=low
+
+ * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk> Thu, 17 Nov 2022 21:49:49 -0000
+
ruby-charlock-holmes (0.7.7-3) unstable; urgency=medium
* debian/control:
diff --git a/ext/charlock_holmes/extconf.rb b/ext/charlock_holmes/extconf.rb
index 6ea09c2..d766534 100644
--- a/ext/charlock_holmes/extconf.rb
+++ b/ext/charlock_holmes/extconf.rb
@@ -34,7 +34,7 @@ pkg_config("icu-i18n")
pkg_config("icu-io")
pkg_config("icu-uc")
-$CXXFLAGS << ' -std=c++11'
+$CXXFLAGS << ' -std=c++11' unless $CXXFLAGS.include?("-std=")
unless have_library 'icui18n' and have_header 'unicode/ucnv.h'
STDERR.puts "\n\n"
diff --git a/test/converter_test.rb b/test/converter_test.rb
new file mode 100644
index 0000000..d84b628
--- /dev/null
+++ b/test/converter_test.rb
@@ -0,0 +1,48 @@
+# encoding: utf-8
+require File.expand_path("../helper", __FILE__)
+
+class ConverterTest < MiniTest::Test
+ def test_convert_ascii_from_iso859_1_to_utf16_and_back
+ input = 'test'
+
+ output = CharlockHolmes::Converter.convert input, 'ISO-8859-1', 'UTF-16'
+ assert input.bytesize < output.bytesize
+ assert input != output
+
+ output = CharlockHolmes::Converter.convert output, 'UTF-16', 'ISO-8859-1'
+ assert input.bytesize == output.bytesize
+ assert input == output
+ end
+
+ def test_convert_utf8_to_utf16_and_back
+ input = 'λ, λ, λ'
+
+ output = CharlockHolmes::Converter.convert input, 'UTF-8', 'UTF-16'
+ assert input.bytesize < output.bytesize
+ assert input != output
+
+ output = CharlockHolmes::Converter.convert output, 'UTF-16', 'UTF-8'
+ assert input.bytesize == output.bytesize
+ assert input == output
+ end
+
+ def test_params_must_be_strings
+ assert_raises TypeError do
+ CharlockHolmes::Converter.convert nil, 'UTF-8', 'UTF-16'
+ end
+
+ assert_raises TypeError do
+ CharlockHolmes::Converter.convert 'lol', nil, 'UTF-16'
+ end
+
+ assert_raises TypeError do
+ CharlockHolmes::Converter.convert 'lol', 'UTF-8', nil
+ end
+
+ begin
+ CharlockHolmes::Converter.convert 'lol', 'UTF-8', 'UTF-16'
+ rescue Exception => e
+ assert_nil e, "#{e.class.name} raised, expected nothing"
+ end
+ end
+end
\ No newline at end of file
diff --git a/test/encoding_detector_test.rb b/test/encoding_detector_test.rb
new file mode 100644
index 0000000..893299a
--- /dev/null
+++ b/test/encoding_detector_test.rb
@@ -0,0 +1,165 @@
+# encoding: utf-8
+require File.expand_path("../helper", __FILE__)
+
+class EncodingDetectorTest < MiniTest::Test
+ def setup
+ @detector = CharlockHolmes::EncodingDetector.new
+ end
+
+ def test_has_class_level_detect_method
+ CharlockHolmes::EncodingDetector.respond_to? :detect
+ detected = CharlockHolmes::EncodingDetector.detect 'test'
+ assert_equal 'ISO-8859-1', detected[:encoding]
+ end
+
+ def test_class_level_detect_accepts_encoding_hint
+ CharlockHolmes::EncodingDetector.respond_to? :detect
+ detected = CharlockHolmes::EncodingDetector.detect 'test', 'UTF-8'
+ assert_equal 'ISO-8859-1', detected[:encoding]
+ end
+
+ def test_has_class_level_detect_all_method
+ CharlockHolmes::EncodingDetector.respond_to? :detect_all
+ detected_list = CharlockHolmes::EncodingDetector.detect_all 'test'
+ assert detected_list.is_a? Array
+
+ encoding_list = detected_list.map {|d| d[:encoding]}.sort
+ expected_list = ['ISO-8859-1', 'ISO-8859-2', 'UTF-8']
+ assert_equal expected_list, encoding_list & expected_list
+ end
+
+ def test_class_level_detect_all_method_accepts_encoding_hint
+ CharlockHolmes::EncodingDetector.respond_to? :detect_all
+ detected_list = CharlockHolmes::EncodingDetector.detect_all 'test', 'UTF-8'
+ assert detected_list.is_a? Array
+
+ encoding_list = detected_list.map {|d| d[:encoding]}.sort
+ expected_list = ['ISO-8859-1', 'ISO-8859-2', 'UTF-8']
+ assert_equal expected_list, encoding_list & expected_list
+ end
+
+ def test_has_detect_method
+ @detector.respond_to? :detect
+ detected = @detector.detect 'test'
+ assert_equal 'ISO-8859-1', detected[:encoding]
+ end
+
+ def test_detect_accepts_encoding_hint
+ @detector.respond_to? :detect
+ detected = @detector.detect 'test', 'UTF-8'
+ assert_equal 'ISO-8859-1', detected[:encoding]
+ end
+
+ def test_has_detect_all_method
+ @detector.respond_to? :detect_all
+ detected_list = @detector.detect_all 'test'
+ assert detected_list.is_a? Array
+
+ encoding_list = detected_list.map {|d| d[:encoding]}.sort
+ expected_list = ['ISO-8859-1', 'ISO-8859-2', 'UTF-8']
+ assert_equal expected_list, encoding_list & expected_list
+ end
+
+ def test_detect_all_accepts_encoding_hint
+ @detector.respond_to? :detect_all
+ detected_list = @detector.detect_all 'test', 'UTF-8'
+ assert detected_list.is_a? Array
+
+ encoding_list = detected_list.map {|d| d[:encoding]}.sort
+ expected_list = ['ISO-8859-1', 'ISO-8859-2', 'UTF-8']
+ assert_equal expected_list, encoding_list & expected_list
+ end
+
+ def test_strip_tags_flag
+ detector = CharlockHolmes::EncodingDetector.new
+ detector.strip_tags = true
+ assert detector.strip_tags
+
+ detection = detector.detect "<div ascii_attribute='some more ascii'>λ, λ, λ</div>"
+ assert_equal 'UTF-8', detection[:encoding]
+
+ detector.strip_tags = false
+ assert !detector.strip_tags
+
+ detection = detector.detect "<div ascii_attribute='some more ascii'>λ, λ, λ</div>"
+ assert_equal 'UTF-8', detection[:encoding]
+ end
+
+ def test_has_list_of_supported_encodings
+ CharlockHolmes::EncodingDetector.respond_to? :supported_encodings
+ supported_encodings = CharlockHolmes::EncodingDetector.supported_encodings
+
+ assert supported_encodings.is_a?(Array)
+ assert supported_encodings.include? 'UTF-8'
+ assert supported_encodings.include? 'windows-1250'
+ assert supported_encodings.include? 'windows-1252'
+ assert supported_encodings.include? 'windows-1253'
+ assert supported_encodings.include? 'windows-1254'
+ assert supported_encodings.include? 'windows-1255'
+ end
+
+ def test_returns_a_ruby_compatible_encoding_name
+ detected = @detector.detect 'test'
+ assert_equal 'ISO-8859-1', detected[:encoding]
+ assert_equal 'ISO-8859-1', detected[:ruby_encoding]
+
+ not_compat_txt = fixture("ISO-2022-KR.txt").read
+ detected = @detector.detect not_compat_txt
+ assert_equal 'ISO-2022-KR', detected[:encoding]
+ assert_equal 'binary', detected[:ruby_encoding]
+ end
+
+ def test_is_binary
+ png = fixture('octocat.png').read
+ assert @detector.is_binary?(png)
+
+ utf16 = fixture('AnsiGraph.psm1').read
+ refute @detector.is_binary?(utf16)
+
+ utf8 = fixture('core.rkt').read
+ refute @detector.is_binary?(utf8)
+ end
+
+ MAPPING = [
+ ['repl2.cljs', 'ISO-8859-1', :text],
+ ['cl-messagepack.lisp', 'ISO-8859-1', :text],
+ ['sierpinski.ps', 'ISO-8859-1', :text],
+ ['core.rkt', 'UTF-8', :text],
+ ['TwigExtensionsDate.es.yml', 'UTF-8', :text],
+ ['laholator.py', 'UTF-8', :text],
+ ['vimrc', 'UTF-8', :text],
+ ['AnsiGraph.psm1', 'UTF-16LE', :text],
+ ['utf16be.html', 'UTF-16BE', :text],
+ ['utf32le.html', 'UTF-32LE', :text],
+ ['utf32be.html', 'UTF-32BE', :text],
+ ['hello_world', nil, :binary],
+ ['octocat.png', nil, :binary],
+ ['octocat.jpg', nil, :binary],
+ ['octocat.psd', nil, :binary],
+ ['octocat.gif', nil, :binary],
+ ['octocat.ai', nil, :binary],
+ ['foo.pdf', nil, :binary],
+ ]
+
+ def test_detection_works_as_expected
+ MAPPING.each do |mapping|
+ file, encoding, type = mapping
+
+ content = fixture(file).read
+ guessed = @detector.detect content
+
+ if encoding == nil
+ assert_nil guessed[:encoding]
+ else
+ assert_equal encoding, guessed[:encoding]
+ end
+
+ assert_equal type, guessed[:type]
+
+ if content.respond_to?(:force_encoding) && guessed[:type] == :text
+ content.force_encoding guessed[:encoding]
+ assert content.valid_encoding?
+ end
+ end
+ end
+end
diff --git a/test/fixtures/AnsiGraph.psm1 b/test/fixtures/AnsiGraph.psm1
new file mode 100644
index 0000000..5ad74dc
Binary files /dev/null and b/test/fixtures/AnsiGraph.psm1 differ
diff --git a/test/fixtures/ISO-2022-KR.txt b/test/fixtures/ISO-2022-KR.txt
new file mode 100644
index 0000000..721d705
--- /dev/null
+++ b/test/fixtures/ISO-2022-KR.txt
@@ -0,0 +1,43 @@
+$)C#
+# Out-AnsiGraph.psm1
+# Author: xcud
+# History:
+# v0.1 September 21, 2009 initial version
+#
+# PS Example> ps | select -first 5 | sort -property VM |
+# Out-AnsiGraph ProcessName, VM
+# AEADISRV 14508032
+# audiodg 50757632
+# conhost 73740288
+# AppleMobileDeviceService 92061696
+# btdna 126443520
+#
+function Out-AnsiGraph($Parameter1=$null) {
+ BEGIN {
+ $q = new-object Collections.queue
+ $max = 0; $namewidth = 0;
+ }
+
+ PROCESS {
+ if($_) {
+ $name = $_.($Parameter1[0]);
+ $val = $_.($Parameter1[1])
+ if($max -lt $val) { $max = $val}
+ if($namewidth -lt $name.length) {
+ $namewidth = $name.length }
+ $q.enqueue(@($name, $val))
+ }
+ }
+
+ END {
+ $q | %{
+ $graph = ""; 0..($_[1]/$max*20) |
+ %{ $graph += "" }
+ $name = "{0,$namewidth}" -f $_[0]
+ "$name $graph " + $_[1]
+ }
+
+ }
+}
+
+Export-ModuleMember Out-AnsiGraph
\ No newline at end of file
diff --git a/test/fixtures/TwigExtensionsDate.es.yml b/test/fixtures/TwigExtensionsDate.es.yml
new file mode 100644
index 0000000..48f7437
--- /dev/null
+++ b/test/fixtures/TwigExtensionsDate.es.yml
@@ -0,0 +1,8 @@
+date.year: '%year% año|%year% años'
+date.month: '%month% mes|%month% meses'
+date.day: '%day% día|%day% días'
+date.hour: '%hour% hora|%hour% horas'
+date.minute: '%minute% minuto|%minute% minutos'
+date.second: '%second% segundo|%second% segundos'
+date.new: 'menos de un minuto'
+date.and: ' y '
\ No newline at end of file
diff --git a/test/fixtures/cl-messagepack.lisp b/test/fixtures/cl-messagepack.lisp
new file mode 100644
index 0000000..38e92ba
--- /dev/null
+++ b/test/fixtures/cl-messagepack.lisp
@@ -0,0 +1,264 @@
+;;;; cl-messagepack.lisp
+
+(in-package #:messagepack)
+
+(declaim (optimize (debug 3)))
+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defun mkstr (&rest args)
+ (format nil "~{~a~}" args))
+ (defun mksymb (&rest args)
+ (intern (apply #'mkstr args))))
+
+(defmacro signed-unsigned-convertors (size)
+ (let ((speed (if (< size 32) 3 0)))
+ `(progn
+ (defun ,(mksymb 'sb size '-> 'ub size) (sb)
+ (declare (optimize (debug 0) (safety 0) (speed ,speed))
+ (type (integer ,(- (expt 2 (1- size))) ,(1- (expt 2 (1- size)))) sb))
+ (if (< sb 0)
+ (ldb (byte ,size 0) sb)
+ sb))
+ (defun ,(mksymb 'ub size '-> 'sb size) (sb)
+ (declare (optimize (debug 0) (safety 0) (speed ,speed))
+ (type (mod ,(expt 2 size)) sb))
+ (if (logbitp (1- ,size) sb)
+ (- (1+ (logxor (1- (expt 2 ,size)) sb)))
+ sb)))))
+
+(signed-unsigned-convertors 8)
+(signed-unsigned-convertors 16)
+(signed-unsigned-convertors 32)
+(signed-unsigned-convertors 64)
+
+(defun write-hex (data)
+ (let (line)
+ (loop
+ for i from 0 to (1- (length data))
+ do (push (elt data i) line)
+ when (= (length line) 16)
+ do
+ (format t "~{~2,'0x ~}~%" (nreverse line))
+ (setf line nil))
+ (when line
+ (format t "~{~2,'0x ~}~%" (nreverse line)))))
+
+(defun encode (data)
+ (flexi-streams:with-output-to-sequence (stream)
+ (encode-stream data stream)))
+
+(defun make-hash (data)
+ (let ((result (make-hash-table)))
+ (dolist (kv data)
+ (cond ((consp (cdr kv))
+ (setf (gethash (first kv) result) (second kv)))
+ (t
+ (setf (gethash (car kv) result) (cdr kv)))))
+ result))
+
+(defun is-byte-array (data-type)
+ (and (vectorp data-type)
+ (equal '(unsigned-byte 8) (array-element-type data-type))))
+
+(defun encode-stream (data stream)
+ (cond ((floatp data) (encode-float data stream))
+ ((numberp data) (encode-integer data stream))
+ ((null data) (write-byte #xc0 stream))
+ ((eq data t) (write-byte #xc3 stream))
+ ((stringp data)
+ (encode-string data stream))
+ ((is-byte-array data)
+ (encode-raw-bytes data stream))
+ ((or (consp data) (vectorp data))
+ (encode-array data stream))
+ ((hash-table-p data)
+ (encode-hash data stream))
+ ((symbolp data)
+ (encode-string (symbol-name data) stream))
+ (t (error "Cannot encode data."))))
+
+(defun encode-string (data stream)
+ (encode-raw-bytes (babel:string-to-octets data) stream))
+
+#+sbcl (defun sbcl-encode-float (data stream)
+ (cond ((equal (type-of data) 'single-float)
+ (write-byte #xca stream)
+ (store-big-endian (sb-kernel:single-float-bits data) stream 4))
+ ((equal (type-of data) 'double-float)
+ (write-byte #xcb stream)
+ (store-big-endian (sb-kernel:double-float-high-bits data) stream 4)
+ (store-big-endian (sb-kernel:double-float-low-bits data) stream 4)))
+ t)
+
+(defun encode-float (data stream)
+ (or #+sbcl (sbcl-encode-float data stream)
+ #-(or sbcl) (error "No floating point support yet.")))
+
+(defun encode-each (data stream &optional (encoder #'encode-stream))
+ (cond ((hash-table-p data)
+ (maphash (lambda (key value)
+ (funcall encoder key stream)
+ (funcall encoder value stream))
+ data))
+ ((or (vectorp data) (consp data))
+ (mapc (lambda (subdata)
+ (funcall encoder subdata stream))
+ (coerce data 'list)))
+ (t (error "Not sequence or hash table."))))
+
+(defun encode-sequence (data stream
+ short-prefix short-length
+ typecode-16 typecode-32
+ &optional (encoder #'encode-stream))
+ (let ((len (if (hash-table-p data)
+ (hash-table-count data)
+ (length data))))
+ (cond ((<= 0 len short-length)
+ (write-byte (+ short-prefix len) stream)
+ (encode-each data stream encoder))
+ ((<= 0 len 65535)
+ (write-byte typecode-16 stream)
+ (store-big-endian len stream 2)
+ (encode-each data stream encoder))
+ ((<= 0 len (1- (expt 2 32)))
+ (write-byte typecode-32 stream)
+ (store-big-endian len stream 4)
+ (encode-each data stream encoder)))))
+
+(defun encode-hash (data stream)
+ (encode-sequence data stream #x80 15 #xdc #xdd))
+
+(defun encode-array (data stream)
+ (encode-sequence data stream #x90 15 #xdc #xdd))
+
+(defun encode-raw-bytes (data stream)
+ (encode-sequence data stream #xa0 31 #xda #xdb #'write-byte))
+
+(defun encode-integer (data stream)
+ (cond ((<= 0 data 127) (write-byte data stream))
+ ((<= -32 data -1) (write-byte (sb8->ub8 data) stream))
+ ((<= 0 data 255)
+ (write-byte #xcc stream)
+ (write-byte data stream))
+ ((<= 0 data 65535)
+ (write-byte #xcd stream)
+ (store-big-endian data stream 2))
+ ((<= 0 data (1- (expt 2 32)))
+ (write-byte #xce stream)
+ (store-big-endian data stream 4))
+ ((<= 0 data (1- (expt 2 64)))
+ (write-byte #xcf stream)
+ (store-big-endian data stream 8))
+ ((<= -128 data 127)
+ (write-byte #xd0 stream)
+ (write-byte (sb8->ub8 data) stream))
+ ((<= -32768 data 32767)
+ (write-byte #xd1 stream)
+ (write-byte (sb16->ub16 data) stream))
+ ((<= (- (expt 2 31)) data (1- (expt 2 31)))
+ (write-byte #xd2 stream)
+ (write-byte (sb32->ub32 data) stream))
+ ((<= (- (expt 2 63)) data (1- (expt 2 63)))
+ (write-byte #xd3 stream)
+ (write-byte (sb64->ub64 data) stream))
+ (t (error "Integer too large or too small."))))
+
+(defun store-big-endian (number stream byte-count)
+ (let (byte-list)
+ (loop
+ while (> number 0)
+ do
+ (push (rem number 256)
+ byte-list)
+ (setf number (ash number -8)))
+ (loop
+ while (< (length byte-list) byte-count)
+ do (push 0 byte-list))
+ (when (> (length byte-list) byte-count)
+ (error "Number too large."))
+ (write-sequence byte-list stream)))
+
+(defun decode (byte-array)
+ (flexi-streams:with-input-from-sequence (stream byte-array)
+ (decode-stream stream)))
+
+(defun decode-stream (stream)
+ (let ((byte (read-byte stream)))
+ (cond ((= 0 (ldb (byte 1 7) byte))
+ byte)
+ ((= 7 (ldb (byte 3 5) byte))
+ (ub8->sb8 byte))
+ ((= #xcc byte)
+ (read-byte stream))
+ ((= #xcd byte)
+ (load-big-endian stream 2))
+ ((= #xce byte)
+ (load-big-endian stream 4))
+ ((= #xcf byte)
+ (load-big-endian stream 8))
+ ((= #xd0 byte)
+ (ub8->sb8 (read-byte stream)))
+ ((= #xd1 byte)
+ (ub16->sb16 (load-big-endian stream 2)))
+ ((= #xd2 byte)
+ (ub32->sb32 (load-big-endian stream 4)))
+ ((= #xd3 byte)
+ (ub64->sb64 (load-big-endian stream 8)))
+ ((= #xc0 byte)
+ nil)
+ ((= #xc3 byte)
+ t)
+ ((= #xc2 byte)
+ nil)
+ ((= #xca byte)
+ (or #+sbcl (sb-kernel:make-single-float (load-big-endian stream 4))
+ #-(or sbcl) (error "No floating point support yet.")))
+ ((= #xcb byte)
+ (or #+sbcl (sb-kernel:make-double-float (load-big-endian stream 4)
+ (load-big-endian stream 4))
+ #-(or sbcl) (error "No floating point support yet.")))
+ ((= 5 (ldb (byte 3 5) byte))
+ (decode-raw-sequence (ldb (byte 5 0) byte) stream))
+ ((= #xda byte)
+ (decode-raw-sequence (load-big-endian stream 2) stream))
+ ((= #xdb byte)
+ (decode-raw-sequence (load-big-endian stream 4) stream))
+ ((= 9 (ldb (byte 4 4) byte))
+ (decode-array (- byte #x90) stream))
+ ((= #xdc byte)
+ (decode-array (load-big-endian stream 2) stream))
+ ((= #xdd byte)
+ (decode-array (load-big-endian stream 4) stream))
+ ((= 8 (ldb (byte 4 4) byte))
+ (decode-map (- byte #x80) stream))
+ ((= #xde byte)
+ (decode-map (load-big-endian stream 2) stream))
+ ((= #xdf byte)
+ (decode-map (load-big-endian stream 4) stream)))))
+
+(defun decode-map (length stream)
+ (let ((hash-table (make-hash-table :test #'equal)))
+ (loop repeat length
+ do (let ((key (decode-stream stream))
+ (value (decode-stream stream)))
+ (setf (gethash key hash-table) value)))
+ hash-table))
+
+(defun decode-array (length stream)
+ (let ((array (make-array length)))
+ (dotimes (i length)
+ (setf (aref array i) (decode-stream stream)))
+ array))
+
+(defun decode-raw-sequence (length stream)
+ (let ((seq (make-array length :element-type '(mod 256))))
+ (read-sequence seq stream)
+ (babel:octets-to-string seq)))
+
+(defun load-big-endian (stream byte-count)
+ (let ((result 0))
+ (loop
+ repeat byte-count
+ do (setf result (+ (ash result 8)
+ (read-byte stream))))
+ result))
diff --git a/test/fixtures/core.rkt b/test/fixtures/core.rkt
new file mode 100644
index 0000000..8d2084d
--- /dev/null
+++ b/test/fixtures/core.rkt
@@ -0,0 +1,254 @@
+#lang racket/base
+
+(require (for-syntax syntax/parse racket/syntax racket)
+ ffi/unsafe racket/function racket/string
+ "start.rkt" "c.rkt")
+
+(struct jtype (signature tag predicate ctype racket->java java->racket))
+(struct jtype/object jtype (class))
+(struct jtype/vector jtype/object (element))
+(struct jvector (cpointer type length))
+(struct jprocedure (args return proc))
+
+(define ((single-compose f1 f2) e) (f1 (f2 e)))
+
+(define (make-jtype obj racket->java java->racket)
+ (let ([composed-racket->java (single-compose (jtype-racket->java obj) racket->java)]
+ [composed-java->racket (single-compose java->racket (jtype-java->racket obj))])
+ ; due to limitation in racket's struct-copy
+ (cond
+ [(jtype/vector? obj)
+ (struct-copy jtype/vector obj
+ [racket->java #:parent jtype composed-racket->java]
+ [java->racket #:parent jtype composed-java->racket])]
+ [(jtype/object? obj)
+ (struct-copy jtype/object obj
+ [racket->java #:parent jtype composed-racket->java]
+ [java->racket #:parent jtype composed-java->racket])]
+ [else
+ (struct-copy jtype obj
+ [racket->java composed-racket->java]
+ [java->racket composed-java->racket])])))
+
+(define (jtype->ctype obj)
+ (make-ctype (jtype-ctype obj) (jtype-racket->java obj) (jtype-java->racket obj)))
+
+; --- signature makers ---
+(define (make-class-signature c) (string-append "L" c ";"))
+(define (make-vector-signature s) (string-append "[" s))
+(define (make-signature args return)
+ (let ([args-signature (string-append* (map jtype-signature args))]
+ [return-signature (jtype-signature return)])
+ (string-append "(" args-signature ")" return-signature)))
+
+; --- predicates for java types on racket ---
+(require (only-in web-server/dispatch/extend make-coerce-safe?) srfi/26/cut)
+
+(define jboolean? boolean?)
+(define jbyte? byte?)
+(define jchar? char?)
+(define jshort? (make-coerce-safe? (cut < -32768 <> 32767)))
+(define jint? (make-coerce-safe? (cut < -2147483648 <> 2147483647)))
+(define jlong? (make-coerce-safe? (cut < -9223372036854775808 <> 9223372036854775807)))
+(define jfloat? single-flonum?)
+(define jdouble? flonum?)
+(define jstring? string?)
+(define ((make-jobject-predicate clss) o) (instance-of? o clss))
+(define ((make-jlist-predicate element?) o) (andmap element? o))
+
+; --- java types ---
+(define _jboolean (jtype "Z" 'boolean jboolean? __jboolean #f #f))
+(define _jbyte (jtype "B" 'byte jbyte? __jbyte #f #f))
+(define _jchar (jtype "C" 'char jchar? __jchar char->integer integer->char))
+(define _jshort (jtype "S" 'short jshort? __jshort #f #f))
+(define _jint (jtype "I" 'int jint? __jint #f #f))
+(define _jlong (jtype "J" 'long jlong? __jlong #f #f))
+(define _jfloat (jtype "F" 'float jfloat? __jfloat #f #f))
+(define _jdouble (jtype "D" 'double jdouble? __jdouble #f #f))
+(define _jvoid (jtype "V" 'void #f __jvoid #f #f))
+; hack for _jobject and _jlist so that they dual as a jtype and function
+(define _jobject
+ ((λ ()
+ (struct _jobject jtype/object ()
+ #:property prop:procedure
+ (λ (self class-name [racket->java #f] [java->racket #f] [predicate #f])
+ (let ([class-id (find-class class-name)])
+ (struct-copy jtype/object self
+ [signature #:parent jtype (make-class-signature class-name)]
+ [predicate #:parent jtype (or predicate (make-jobject-predicate class-id))]
+ [racket->java #:parent jtype racket->java]
+ [java->racket #:parent jtype java->racket]
+ [class class-id]))))
+ (let ([class-id (find-class "Ljava/lang/Object;")])
+ (_jobject "Ljava/lang/Object;" 'object (make-jobject-predicate class-id)
+ __jobject #f #f class-id)))))
+(define _jstring (_jobject "java/lang/String" new-string get-string jstring?))
+(define _jlist
+ ((λ ()
+ (struct _jlist jtype/vector ()
+ #:property prop:procedure
+ (λ (self element)
+ (define-values (make-array array-ref array-set!) (tag->array-info (jtype-tag element)))
+ (when (jtype/object? element)
+ (let ([clss (jtype/object-class element)])
+ (set! make-array (λ (n) (new-object-array n clss #f)))))
+ (let* ([signature (make-vector-signature (jtype-signature element))]
+ [element-racket->java (or (jtype-racket->java element) identity)]
+ [element-java->racket (or (jtype-java->racket element) identity)]
+ [element? (or (jtype-predicate element) (λ (_) #t))])
+ (struct-copy jtype/vector self
+ [signature #:parent jtype signature]
+ [predicate #:parent jtype (make-jlist-predicate element?)]
+ [ctype #:parent jtype __jobject]
+ [racket->java #:parent jtype
+ (λ (c)
+ (let ([array (make-array (length c))])
+ (for ([e (in-list c)] [i (in-naturals)])
+ (array-set! array i (element-racket->java e)))
+ array))]
+ [java->racket #:parent jtype
+ (λ (c)
+ (for/list ([i (in-range (get-array-length c))])
+ (element-java->racket (array-ref c i))))]
+ [class #:parent jtype/object (find-class signature)]
+ [element element]))))
+ (let ([class-id (find-class "[Ljava/lang/Object;")]
+ [element-class-id (jtype/object-class _jobject)])
+ (_jlist "[Ljava/lang/Object;" 'object (make-jobject-predicate element-class-id) __jobject
+ (λ (c)
+ (let ([array (new-object-array (length c) element-class-id #f)])
+ (for ([e (in-list c)]
+ [i (in-naturals)])
+ (set-object-array-element array i e))
+ array))
+ (λ (c)
+ (for/list ([i (in-range (get-array-length c))])
+ (get-object-array-element c i)))
+ class-id
+ _jobject)))))
+(define-syntax (_jmethod stx)
+ (define-syntax-class type #:literals (->)
+ (pattern (~and x (~not (~or (~literal ...) ->)))))
+ (syntax-parse stx #:literals (->)
+ [(_ arg:type ... (~optional (~seq farg:type (~literal ...))) (~optional (~seq -> return*)))
+ (with-syntax* ([(arg* ...) (generate-temporaries #'(arg ...))]
+ [(larg ... . marg) #`(arg* ... #,@(if (attribute farg) #'arg-rest #`()))]
+ [(aarg ...) #`(arg* ... #,@(if (attribute farg) #'(arg-rest) #`()))]
+ [return (if (attribute return*) #'return* #'_jvoid)])
+ #`(let* ([args (list arg ... #,@(if (attribute farg) #`((_jlist farg)) #`()))])
+ (jprocedure args return
+ (λ (type jnienv clss method func)
+ (case type
+ [(constructor) (λ (larg ... . marg) (func jnienv clss method aarg ...))]
+ [(static-method) (λ (larg ... . marg) (func jnienv clss method aarg ...))]
+ [(method) (λ (o larg ... . marg) (func jnienv o method aarg ...))]
+ [else (error '_jmethod "invalid type provided")])))))]))
+; dynamic and slower version of _jmethod
+(define (_jprocedure args return #:repeat-last-arg? [repeat-last-arg? #f])
+ (define (nest-at lst i)
+ (if (null? lst) (list null)
+ (let loop ([lst lst] [i i])
+ (cond [(null? lst) null]
+ [(zero? i) (list lst)]
+ [else (cons (car lst) (loop (cdr lst) (sub1 i)))]))))
+ (jprocedure args return
+ (if repeat-last-arg?
+ (let ([repeat-position (sub1 (length args))])
+ (λ (type jnienv clss method func)
+ (case type
+ [(constructor) (λ larg (apply func jnienv clss method (nest-at larg repeat-position)))]
+ [(static-method) (λ larg (apply func jnienv clss method (nest-at larg repeat-position)))]
+ [(method) (λ (o . larg) (apply func jnienv o method (nest-at larg repeat-position)))])))
+ (λ (type jnienv clss method func)
+ (case type
+ [(constructor) (λ larg (apply func jnienv clss method larg))]
+ [(static-method) (λ larg (apply func jnienv clss method larg))]
+ [(method) (λ (o . larg) (apply func jnienv o method larg))]
+ [else (error '_jprocedure "invalid type provided")])))))
+; get-jmethod/get-jconstructor pass the following arguments (type jnienv class method func)
+; to a function created by _jmethod or _jprocedure
+; according to the type the function returns one of the following functions
+; | constructor (λ (args ...) ; doesn't need to take in an object and the class is static
+; | static-method (λ (args ...) ; same reasoning as above
+; | method (λ (object args ...)
+
+
+; --- interfacing with java methods ---
+(define (get-jconstructor class-id type)
+ (let* ([args (jprocedure-args type)]
+ [return (jprocedure-return type)]
+ [proc (jprocedure-proc type)]
+ [signature (make-signature args return)]
+ [method-id (get-method-id class-id "<init>" signature)]
+ [ffi-func (get-jrffi-obj "new-object"
+ (_cprocedure (list* __jnienv __jclass __jmethodID (map jtype->ctype args))
+ __jobject))])
+ (proc 'constructor current-jnienv class-id method-id ffi-func)))
+
+(define (get-jmethod class-id method-name type #:static? [static? #f])
+ (let* ([args (jprocedure-args type)]
+ [return (jprocedure-return type)]
+ [proc (jprocedure-proc type)]
+ [signature (make-signature args return)]
+ [method-id (get-method-id class-id method-name signature #:static? static?)]
+ [type (if static? 'static-method 'method)]
+ [ffi-func (get-jrffi-obj
+ (format "call-~a~a-method" (if static? "static-" "") (jtype-tag return))
+ (_cprocedure (append (list __jnienv (if static? __jclass __jobject)
+ __jmethodID) (map jtype->ctype args))
+ (jtype->ctype return)))])
+ (proc type current-jnienv class-id method-id ffi-func)))
+
+
+; --- interfacing with java fields ---
+(define (get-jaccessor class-id field-name type #:static? [static? #f])
+ (let* ([signature (jtype-signature class-id field-name (jtype-signature type))]
+ [field-id (get-field-id class-id field-name signature #:static? static?)]
+ [ffi-func (get-jrffi-obj
+ (format "get-~a~a-field" (if static? "static-" "") (jtype-tag type))
+ (_cprocedure (list __jnienv (if static? __jclass __jobject) __jfieldID) type))])
+ (if static? (λ () (ffi-func current-jnienv class-id field-id))
+ (λ (obj) (ffi-func current-jnienv obj field-id)))))
+
+(define (get-jmutator class-id field-name type #:static? [static? #f])
+ (let* ([signature (jtype-signature class-id field-name (jtype-signature type))]
+ [field-id (get-field-id class-id field-name signature #:static? static?)]
+ [ffi-func (get-jrffi-obj
+ (format "set-~a~a-field" (if static? "static-" "") (jtype-tag type))
+ (_cprocedure (list __jnienv (if static? __jclass __jobject) __jfieldID type) type))])
+ (if static? (λ (new-value) (ffi-func current-jnienv class-id field-id new-value))
+ (λ (obj new-value) (ffi-func current-jnienv obj field-id new-value)))))
+
+(define (get-jparameter class-id field-name type #:static? [static? #f])
+ (let* ([accessor (get-jaccessor class-id field-name type #:static? static?)]
+ [mutator (get-jmutator class-id field-name type #:static? static?)])
+ (if static?
+ (case-lambda
+ [() (accessor)]
+ [(new-value) (mutator new-value)])
+ (case-lambda
+ [(obj) (accessor obj)]
+ [(obj new-value) (mutator obj new-value)]))))
+
+
+
+(provide _jboolean _jbyte _jchar _jshort _jint _jlong _jfloat _jdouble _jvoid
+ _jobject _jstring _jlist)
+
+(provide get-jconstructor get-jmethod get-jparameter get-jmutator get-jaccessor)
+
+;(provide instance-of? (rename-out [find-class find-class]) get-method-id get-field-id)
+
+
+(provide (all-defined-out) : -> current-jnienv)
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/fixtures/foo.pdf b/test/fixtures/foo.pdf
new file mode 100644
index 0000000..68c8d29
Binary files /dev/null and b/test/fixtures/foo.pdf differ
diff --git a/test/fixtures/hello_world b/test/fixtures/hello_world
new file mode 100755
index 0000000..46676c5
Binary files /dev/null and b/test/fixtures/hello_world differ
diff --git a/test/fixtures/laholator.py b/test/fixtures/laholator.py
new file mode 100644
index 0000000..09dd3ec
--- /dev/null
+++ b/test/fixtures/laholator.py
@@ -0,0 +1,131 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# @author: starenka
+# @email: 'moc]tod[liamg].T.E[0aknerats'[::-1]
+
+import warnings, hashlib, simplejson, string
+from os.path import dirname, abspath
+
+from flask import Flask, render_template, request
+from flaskext.sqlalchemy import SQLAlchemy
+try:
+ from sqlalchemy.exceptions import IntegrityError
+except ImportError:
+ from sqlalchemy.exc import IntegrityError
+
+#Hey monkey patcher! NLTK's NgramModel is not serializable w/ pickle.HIGHEST_PROTOCOL (2)
+from werkzeug.contrib import cache
+cache.HIGHEST_PROTOCOL = 1
+from werkzeug.contrib.cache import SimpleCache
+
+from BeautifulSoup import BeautifulSoup
+import nltk
+
+PUNCT = list(unicode(string.punctuation))
+
+app = Flask(__name__)
+app.config.from_object('settings')
+cache = SimpleCache()
+
+app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///%s/db.sqlite3'%abspath(dirname(__file__))
+db = SQLAlchemy(app)
+
+class Sample(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+ url = db.Column(db.String(80), unique=True)
+ text = db.Column(db.String())
+ enabled = db.Column(db.Boolean())
+
+ def __unicode__(self):
+ str = unicode(BeautifulSoup(self.text,convertEntities=BeautifulSoup.HTML_ENTITIES))
+ return nltk.clean_html(str)
+
+ @classmethod
+ def get_all(self):
+ cached = cache.get('samples')
+ if cached is None:
+ cached = self.query.filter_by(enabled=True).all()
+ cache.set('samples', cached, timeout=app.config['CACHE_MINUTES'] * 60)
+ return cached
+
+class Output(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+ hash = db.Column(db.String(128),unique=True)
+ text = db.Column(db.String())
+ params = db.Column(db.String(100))
+
+ def __init__(self,text,**params):
+ self.hash = hashlib.sha512(text.encode('utf8')).hexdigest()
+ self.text = text
+ self.params = simplejson.dumps(params)
+
+@app.context_processor
+def base_context():
+ return dict(settings=app.config,
+ hits = Output.query.count() + app.config['INIT_HITS']
+ )
+
+@app.errorhandler(404)
+def page_not_found(error):
+ return render_template('404.html',title=u"To tady nemáme!"), 404
+
+@app.route('/faq')
+def faq():
+ return render_template('faq.html',title=u"Často kladené dotazy",samples=Sample.get_all())
+
+@app.route('/permalink/<hash>')
+def permalink(hash):
+ one = Output.query.filter_by(hash=hash).first_or_404()
+ return render_template('generator.html', title=u"Henrykuj!",
+ text=one.text, hash=one.hash,
+ **simplejson.loads(one.params)
+ )
+
+@app.route('/')
+def index():
+ bigrams = request.args.get('bigrams',False)
+ try:
+ words = int(request.args.get('words',app.config['WORDS']))
+ if words > app.config['MAX_WORDS']:
+ words = app.config['MAX_WORDS']
+ except ValueError:
+ words = app.config['WORDS']
+
+ out = _generate(words,bigrams)
+ output = Output(out,words=words,bigrams=bool(bigrams))
+ try:
+ db.session.add(output)
+ db.session.commit()
+ except IntegrityError:
+ pass
+
+ return render_template('generator.html', title=u"Henrykuj!",
+ text=out, hash=output.hash,
+ words=words, bigrams=bigrams
+ )
+
+def _get_ngram_model(bigrams):
+ #NLTK produces a LOT of warnings - don't mess with my error log
+ warnings.simplefilter("ignore")
+ cached = cache.get('ngram_model')
+ if cached is None:
+ samples = Sample.get_all()
+ if samples:
+ text = [unicode(s) for s in samples]
+ tokenizer = nltk.tokenize.WordPunctTokenizer()
+ tokenized = tokenizer.tokenize(' '.join(text))
+ cached = nltk.NgramModel(3-int(bool(bigrams)), tokenized)
+ cache.set('ngram_model', cached, timeout=app.config['CACHE_MINUTES'] * 60)
+ return cached
+
+def _generate(words,bigrams):
+ model = _get_ngram_model(bigrams)
+ starts = model.generate(100)[-4:]
+ starts = filter(lambda a: a not in PUNCT,starts)
+ generated = model.generate(words, starts)
+ out = ' '.join(generated).replace(' , ',', ').replace(' . ','. ')
+ return '%s%s…'%(out[0].upper(),out[1:])
+
+if __name__ == '__main__':
+ app.run()
\ No newline at end of file
diff --git a/test/fixtures/octocat.ai b/test/fixtures/octocat.ai
new file mode 100644
index 0000000..b0ad88a
--- /dev/null
+++ b/test/fixtures/octocat.ai
@@ -0,0 +1,4424 @@
+%PDF-1.5
%����
+1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R]/Order 6 0 R/RBGroups[]>>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 70487/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">octocat</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:MetadataDate>2009-01-26T14:06:16-08:00</xmp:MetadataDate>
+ <xmp:ModifyDate>2009-01-26T14:06:16-08:00</xmp:ModifyDate>
+ <xmp:CreateDate>2009-01-26T14:06:16-08:00</xmp:CreateDate>
+ <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>256</xmpGImg:width>
+ <xmpGImg:height>256</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq8
p/5yd82S+Xfyi1IQM0dzrEkelwyKaUE/Jpf+CgikX6cVfBsU00Mgkhdo5F+y6EqR8iMKHovlD/nI
X82PK8kYt9bl1GzTiDY6kTdxFV6IGc+qi02+B1wJfRP5cf8AOW/k7X3hsPNEP+HdSeii5ZvUsXbp
X1CA0NT/ADjiO74q93gnhuIY54JFlglUPFKhDIyMKqysNiCNwRiq/FXYq7FXYq7FXYq7FVk88NvD
JPPIsUESl5ZXIVFRRVmZjsABuScVeEfmP/zlx5N0B5rDytD/AIi1FKobkN6dijCor6lC01D/ACDi
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</xmpGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#">
+ <xmpMM:InstanceID>uuid:2fc2161f-af22-0941-b3ad-42b04ffce0be</xmpMM:InstanceID>
+ <xmpMM:DocumentID>xmp.did:0980117407206811994C9C3651001104</xmpMM:DocumentID>
+ <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID>
+ <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>uuid:25309aba-6ddf-a941-9bd2-dd7653570218</stRef:instanceID>
+ <stRef:documentID>xmp.did:F77F117407206811818C85DF6A1A75C3</stRef:documentID>
+ <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID>
+ <stRef:renditionClass>proof:pdf</stRef:renditionClass>
+ </xmpMM:DerivedFrom>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to <unknown></stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID>
+ <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to <unknown></stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to <unknown></stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
+ <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
+ <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID>
+ <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID>
+ <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to <unknown></stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to <unknown></stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID>
+ <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID>
+ <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID>
+ <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID>
+ <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID>
+ <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID>
+ <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:0980117407206811994C9C3651001104</stEvt:instanceID>
+ <stEvt:when>2009-01-26T14:06:13-08:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
+ <illustrator:Type>Document</illustrator:Type>
+ <illustrator:StartupProfile>Print</illustrator:StartupProfile>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>3.000000</stDim:w>
+ <stDim:h>3.000000</stDim:h>
+ <stDim:unit>Inches</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Cyan</rdf:li>
+ <rdf:li>Magenta</rdf:li>
+ <rdf:li>Yellow</rdf:li>
+ <rdf:li>Black</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>White</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>Black</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>100.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Red</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Yellow</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Green</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Cyan</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Blue</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Magenta</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>14.999998</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>85.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>80.000000</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>35.000004</xmpG:magenta>
+ <xmpG:yellow>85.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>5.000001</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>19.999998</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>90.000000</xmpG:cyan>
+ <xmpG:magenta>30.000002</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>30.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>75.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>80.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>45.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>70.000000</xmpG:cyan>
+ <xmpG:magenta>14.999998</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>95.000000</xmpG:magenta>
+ <xmpG:yellow>5.000001</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>25.000000</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>35.000004</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>35.000004</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>10.000002</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>50.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>95.000000</xmpG:magenta>
+ <xmpG:yellow>19.999998</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>25.000000</xmpG:cyan>
+ <xmpG:magenta>25.000000</xmpG:magenta>
+ <xmpG:yellow>39.999996</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>45.000000</xmpG:magenta>
+ <xmpG:yellow>50.000000</xmpG:yellow>
+ <xmpG:black>5.000001</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>60.000004</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>55.000000</xmpG:cyan>
+ <xmpG:magenta>60.000004</xmpG:magenta>
+ <xmpG:yellow>65.000000</xmpG:yellow>
+ <xmpG:black>39.999996</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>25.000000</xmpG:cyan>
+ <xmpG:magenta>39.999996</xmpG:magenta>
+ <xmpG:yellow>65.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>30.000002</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>75.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>35.000004</xmpG:cyan>
+ <xmpG:magenta>60.000004</xmpG:magenta>
+ <xmpG:yellow>80.000000</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>65.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>35.000004</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>70.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>50.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>70.000000</xmpG:magenta>
+ <xmpG:yellow>80.000000</xmpG:yellow>
+ <xmpG:black>70.000000</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Grays</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>100.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>89.999405</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>79.998795</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>69.999702</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>59.999104</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>50.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>39.999401</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>29.998802</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>19.999701</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>9.999103</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>4.998803</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Brights</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>75.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>60.000004</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>0.003099</xmpG:yellow>
+ <xmpG:black>0.003099</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[7 0 R]/Type/Pages>>
endobj
7 0 obj
<</ArtBox[17.8257 13.333 197.175 194.999]/BleedBox[0.0 0.0 216.0 216.0]/Contents 8 0 R/LastModified(D:20090126140615-08'00')/MediaBox[0.0 0.0 216.0 216.0]/Parent 3 0 R/PieceInfo<</Illustrator 9 0 R>>/Resources<</ColorSpace<</CS0 10 0 R>>/ExtGState<</GS0 11 0 R>>/Properties<</MC0 5 0 R>>>>/Thumb 12 0 R/TrimBox[0.0 0.0 216.0 216.0]/Type/Page>>
endobj
8 0 obj
<</Filter/FlateDecode/Length 2389>>stream
+H��Wˎ7��W�J��6=����`��Ff���1`��sH����n��$�d����!��_��ۇ�~�ǃ��o�E����������}{���?��S�.�o� ݇G|�'>����� ?�_)ݗ]�~�*�����w�%�}I���|������8��mo��8VH���Xb��%ا�S7���)b��{*��
+z�����D�-fW����ч�\����(��{�y$'�}�Օ��s��m��C�?�6 ���\.>Kt�;�M5��5�*W}�Rpۺb��|ڮ�m��ޗ�FJ�^s#�تy���U�m}����s�N��"eফ|���Õ���Tw�Qb��'g_�J�ղ�@Cԑ�Ƶg��T�Kn.&�+�ё��R��7BA����hLO�M�?`��¢��-��� b��%"g���)n�b�.q��8ݔ�}�yp�*�>5g�Y����?)�>�Ц
+`�K @�q�Sp=~�B����ߥ�����y�dxWF&��q�"� !��ط��
��?�7u ��+��hz@�\W���H0Q8m��b�uw���X��wZ�!�u��4��v�`�g)�/�2�j����q�S�ŴȐp2'L ���/�m�펎�dP솿1�)M�ڽ9�fgΏ0��K(�A��Q�;��;��1�֘C� x��V��.xFA.����|���2]k��S��c�<NK�y�3��i��� X�,����� S�v+�Ȱ�:ўXV��C��"�"A��f؍[��xψD֪Yр_
��S��`��l�g0.`V�L:Wr.d���ZPj"(����d������ vfͦ�D�P�C��^2�q�Y\�<?�MP\�ԁ��dK�j�',@�(����(:k�5L9�-��l �SPt�WW�B�/��$?�wi"�r um�U��Z��"3���+�!⠝��
�� .�"��#X�p6:|�����~~�
+�coZ�ME.D���H�P���M����?LO�8�������=N�Q�?�'vs�Fv�R6����XY<1� ��;���݉~U+5�1^��)
( �@�A���B��U�z���q b)ݐ�>���tN
8�L����T����K+S�2�u R5&��Y����|�9�sX�%D�G]�j���Ӗ�T�{і>�\�hiEV��g��Y*�c�7��hը%4hّ�����%�3&[���rE Q�\�q.�R�"|^C��ƥ�@��E��n�h^5���A�j A �b,3��8��
i��ހ�4;R�_�.��E�+�S
+f�b7����/���v��qm��Y�ױ�w*ǽ��[�ɲVt
+\�s�d��˙gl�j�p�$�j{GE5�B�g�?m�f����Y)C��kI�\��YǂJo'0�KOȡ�
+b�ߧ�p{���?:����
>��P��`.�Zk�HbAw �[�7S�;�h�M**��JI&U���ոkQ�5/6"�`� ��$�&:�7�=\�(�Eѫ�M�w�!��]C%�ˀ�rp
+ʃ$&m ��E�O��R��<4�c`9�0B��0���0�>ˀ��Qsq����,|�=nS�0,�$EN���_䐭G�}z� �c���#�q�������6}�P����6 V ����k`�NFT��ȧ��:�W�����S]xy�b��r�`ˎ���v���/#ev��/�I�iav��<X{<vO�]����Fݗ�S :��)�����Z�kLD���=䑏X>y���wYE�4�UCFE���ɝ_�3���S2��w�7���-vd_Ѳ�LsËY⼕3��mi���}o��%O��Nk]�T}5S�]���dꋉ:Y�))&��`�)|O�-�m%��u����F0�q�mLZ;MR����۞�I�yv��anx���fj� �gOO<dI3���������d���G:�VhG�X�h������J
+�m�8P�%���Ûf
�vu�g�y�sқ���\�ȃ��f�@G*�j�$����:��Q,���D1���,74�v�Dr[�.(�:܄�=�f�L�>@��3FЭ��Тy��� R��h����+*���Ӥ`����s��u� ��fb��È>2�����_��_,�w��WY^Ζ׳��jy����-ǜa05�����H+�
1��N���kc.��y&�>9��/���t�v y���K�7w9�b�k�n�t]<Jȯx�x{��� �؝�=���
+ߨ���W��q����W`\^�q�
0~7�H���gi先��� �b4���Q�!U723&��J�:�!�~���� �$u�
endstream
endobj
12 0 obj
<</BitsPerComponent 8/ColorSpace 13 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 27/Length 225/Width 27>>stream
+8;X^8_$u#N$q6_4fRRDa$_G.,KG,$G>8CTS:-U\@;\M]!9uNm.,>4?:?G?A<IjcM@
+;g4KjjeY4Jm2LqQda?_h_MV=H8V&W2),Q$.,>'FpP_cIi[6$W[!b@]VmuHRO.qI[>
+OPH9=b\7i6K=`Wd>0,2!,;/XAojq<C-<TtX-Wh$r;^3@jo&Q'e%uQ/4>N1M8;4^M]
+5OQ(3>$n3;go8kZs0).s9BsgQ~>
endstream
endobj
13 0 obj
[/Indexed/DeviceRGB 255 14 0 R]
endobj
14 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
5 0 obj
<</Intent 15 0 R/Name(Layer 1)/Type/OCG/Usage 16 0 R>>
endobj
15 0 obj
[/View/Design]
endobj
16 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>>
endobj
11 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
10 0 obj
[/ICCBased 17 0 R]
endobj
17 0 obj
<</Filter/FlateDecode/Length 389757/N 4>>stream
+H���uT�K�tK���KJI,��t(�4�K���%ҹ�H�4J#�Ғ�(H
+w���q�y�y��~�3��̙g�<3�� �Y9El
+ @� ]��!O��-@� � �\����+BVKK
��:�OX�~�����WCa���iHKL ���0�q�Y��� `�5 �c����k��
+ X�] �x=����8���� �X ��Ŀ�>�.�f���#aP������n� �D^{y8����� �d�pH�� st��:Y����c xc
I�V�?S��!�:��_�����9[�YbQ�P�~�+rA
+S�h�����Hh���t^��
�'0�߅�kY�X��Y9�Yq�q�p��l�'���W����z�E����E$�%D>,��^|t*K)�%/�`���\�ҫ����:���&D����[�7��dplDa5�|�mb���4�,�y�y��{�e��5�
������������3���⚅,t+w��h�l�������A
��
� �mk
+��xYU���H�&%��Ȥ
+�q��O'M�z�3�K�T�@v[NUnn^\�o�]�a�b�Tr��t�l��mE]e~U�+�j�א�Z�:�z��a�q�i�����5����};�C�S��������[�\_�ۆw�����C�a��Q�1������;>�L$Lz}4��:%8M7�l̎��Χ/�}�XT^�]�X>\�Ym[���n�!�ycsk��kƶ�ʷ;��v{���p����I�s���0���X������ݯ�3�s��&�$��W�WW�*��)���!�$�$�%�!e$c��HNOAKIMEq�������������ƕ;KL�w�@��Y�X;ؚ��8^�+�Dsp����f���K�O��TC�P�p�J%���D=��+�+���O%$*������������8�I�Z�\�Z�^�U�K�_wL�������"d�x�����]�}����� �����>�9�=�;��s���_G�8/�̹N!G�z�[<�=��2�|B}����P�Q�z�l�H0Wc(E�e�n�|�Pds::5&8�9�y�F�T"o��d�䳔���i�/Z�K^&gd:fg����Q���l�
��kJХ�e����J�*�+��篍k�j5���U���[�ZU���h��0�|�e�m������6�]B�@�`�P�p�H�����������?QM1Msψ�*�iϛ.��Z[JY�Z)X-]��R�Ѻپ���w�������?��@��?��5� ǖ'v�N��g����
+��W������3�g����L�C#u!��M�M�M�E�vAms˔F�V�N���A���̝GL�w�A�̬,���l�l�ؿs�ݛ����n��ͽ����+���!B�²"��<b��4$����݇kR�ғ��e�d���k*�J��Y*/TS'<�S�V�҈ԌЊЎԉЍЋЏ0�4�2����?M4I~�f�����s-�,"+�u�M�m�]�}�C�c�S�Q�\�R�Z��s�v����������G��i��H����3G�F�FaG�D�Ƭ��č��&�$V''g�$�F���LG��˰�4͂d����j�i�kh��C�f%V�Ne��Aq�YU�ڪG^/��Ճ�����[�Z{�Vڱ:�;�`��=�c}��n�K�
���Fv�(ރ��> 'R&k?���3�?�4+:�6o������T�\�ұڿ6���������V����ʝ�o���F?L����T;�:�>�::>�:�;��eq�vx^sa���wݥ��ʕ��'�_� E�F�O\D�K�LtAnF�F)F�|����ԭ6�\�`�@z?�m+F�;�L�wiA h�y���͖������)���M���g�w�~_
�@���ZH_XA,�"F)�%�/�*9���a�Z:�Q���,\�B^_AU2�
+�*����'[j��o5[����uR1u��h`f�m$1�xJgBdr�l�t�l�y�y�E�e$�fe�g-g#`�dGbwj��0���TOC9;��� �ܨ��ݿx�z6z�x��8��I����P��=A���!.��a�Axۑ ��ϊ����}�b�G�-����ޒē����x�`�G�/����Ԝ��������q�_�O�?�0�"��������۬խЮ˯ǰı²����µŶȷӹۺ������� �0�@�R�f�zƏǦȾ������*�G�cЀџҿ����'�L�sٛ������F�s�����M����6����+����1����M����Z�����:�{����� � � ��T�?�~ò��~i��~L}��~cbA�~�Da�d�����~t�y�~W����~O��>~\���/~���|�~���`���C ��x������}%��H}�1�X}%�z��}K���}��
{N}<_�~7��A�~��-ψ��|����|��Dz|+��E|[���s|���z}��^�}w�O@�}��-�~ċ�� {G�u��{D�z�{]�Ĭ�{��f�{�Zx�|[��]�|ϕM?�}R��<}Ǝ���z��]�Yz��Hħz����|z�=��{L�Nw�{���\�|=��>�|��v|ېI�8z/�r�
z�;�bz'�s�Mzd�6��zɬqv�{D�[�{��0>|;�|���y�����y��a�Iy��?y�a��zY��vzݮ�[{^��=c{Ф�I{R��*y�߄��yf���Uy`��Vy���y���uKz��Zi{��<�{z�%�zȎ���~+�~� }��͇}W���0}3���}HtЄ�}�Zk��}�=���~���z��ɇ��� ���}�����!�~����Єd�*s}��Y���<9������w����p���S�w�u�����������u�VrU���W��؈|;,�뇔��{���R�s��Ѳ��������;����:�8����q)�P�CV���:4�.��8�����Ȅ���2������?�U�����p����V�u��9S��������c��b�փ����R�����.�ՁN��n�� ��U��38���8���A�/����ͬ�������δz��6�߆�ө�n1����T\�e��7݀t�XT����)�$̯̕�6�;���e�C��ʷˆ �i��mw�3��Sƀ�V7M�
+�\��l�G�N��ػ�ځ��N�ā�a�5�t��N��zl�ߴ�S<��H6���*���<�a|��k�z|C�V��|�Ǎ|����|Ik���|�Ru��}26��'~2����F�-����B���*���o������������j�����Q^���@5z�I�`����ٳ� �$ĝ�"�����c�ߘ���&�U����ij���|PJ�ˇv4v�y���V���G����.�2�{������������萾hS�掼O[���3���(����J��ьx�&�$�Ԟs�҉h�
+~�2��gK�>�-N}�o��2ن��
N�%��է�������� ���>�w���֣A}⇤�\fX����M��ݘ�2,������K��Ԑ�3�����g���°����[��}
+�0�e��6��M�_��1���?���1ӣ���Ǿ���I��^�����I|B�̯d��ܪwL���e1$���:�������r�W������]�
��1���S{��z�|di����L
���g0��\��U��������{[���G{!����{ �ޔ`{&y�E{xbi�e{�Jr��|�/c�5}~
+~���:����f�#���������M�Kx+�C��a|�u��I~����.y�W�� ώ���әߎ���%�¡唘����[��w!�^�T`����^H��*��-����� 5�G��Ȩ�瘎��=�Π����4���r��v����_�ҍRG��f��,ދ̋������|�,���ƕ����{������Ҙ�t�ٕ�^��1��F�ő�,;�'��<�!���_���������Y�l�~�J���J��t�S�#]����'FA�4��+����;ۊL�P�f�&��ɔ��ޝ������ը�s@�夏]�0�E�����+:���ևSS 𧠨��jVPp,<XQ)�XVl�(Js�&�J!����K{�@B��E�.�e���WqQ䆓���~3��7���F�HI^�\�������ӡ���+j&Y���b�dML���{#�����)F���A�;q��T0��_�
^��9Iݤ�xֺ�ƢYFh�9Յ�hX;J���l�����n+j�ġ�(�m,ּJ�����(Va�V/���aؑ�@�Q~.�8_]���7]���������g�|�F�)-�/��MH�|����P��8�%�oFx��C��<��R�l�A�^����Q�l��z�rJAU�U����d*����N�$i�
#�v
b7F�*4ނ���
+
���pv�i�x֖�����I��o�����J۱�#�
+���W��h�ԉ�l�"�kxwVjG�Dz���*��ߜx�W���:Ʃd��P���$�����j�4W�M��[��,]�ʫ$���W��$I�&��N���}�7¨
s������1@�9�TɎ.�E��zN�Df��*uwr ���� �*�#����,�h��"�8=���N�
�%�=(�p���Qu�9s�Lӓ(�&��w�ھ�?��ER�AHi.R�~ Ԅ�6�����:�*tД3*���۱�x#�m?r~3��2�+�w����p���6�yXa�TO�#��
+U�¼<�_)�I�(��}��W2S�X U��w����
M��f�_T�)�����?k��YYF��K8��u;J$��þ*1T� >,��#h�%T�,�Qۥ{[��s�:��9�&^!Փ�a��@�!��"y �
+��.��Jl6m�Hj�u�,b�U6�+s���hܸd�-ʥ�}�wi� �-s�un=0�Ľ�i-_�*)U��_ˈ����b$��na+;ϧT�;p�pA7����C�4��.*�Iߥ�a�8��M��m�.���ACi���7�\j|fi������ԫ)��]ޭ�j����ʄ���U�]�3(í��wh�J��c�h-�4x7���h*P0�H됎L����랇ڡu��Â������,�{�Bz}��8�v�g�g�Ҳ�d[�!XTZ�Z.��vl�A���g��
+{;S�m�`v��ؿ`~�?g�a.�
+3�Ì�{����L�^�������W�����Y�e�4��]�L�<pq���������k���!��G��]�l v���:DeH��Xq��E��K4kHoS|�X�ֽO�7����o���*�*�+ ����2���h�`���?���k6ݤg���,�M{ST3��`�b5��XE�#*�і}�z�#C�//�����7��}��V;�9�T��)?�ވ���2[�ُ�]�n�$�~����f�Ќ,�d���p,��B�AdrH��]`u��P��V�k�aEV�vYN��U5/y�fD.�ݡ\ �1����Q�a#K��E�:�|��N[k�=�&[],����1$��ξ�B���0Y�(�ߊq$���]�!{Ik5�U�3�j�=Or���)�<V��
A8H��:YjD!��L_��|O����l�xE{EY[��9��#Ev�x���2�E��as=�[R���Q��i��*��i����66�`�����ώ,��+�#�,i��1����A2��� @������ƪ�W���m���H�XJ�NP�+�)�̧�+��=l��$�zU�kb��]�i��[:��<�旰��A��r)<�� ���+e.��
+�%���ӂ�B�s�W�����ď[��~�}F.+}W����t�=��
+��K�e&��,�^��-��v�a�(0�����t�tz�S���w�0D��6j��tl��.\�lVդ����)��-g� [ѭ�'��x�|�|D�D�ߵ�����v��wi���8�ư=��bY��
+���TC7j�KI���X�7 о� s�{��W|}��&饷MR����Q��rs�%5ԯ1�G���*=��V�DM� �鶢l���`JY����Ke���\+��kl�=��ּ sr͌�
+����_L� �\�E܋ʮܤH)�B���"�nĕ)J�ۙ��3g��Y�i&M{&MʹI��B+!%��,O���=Y>7o����k����!w����I�~� Ir�a^=�C�#Z��h��`W�u}p����)��"�z�7ff&�3����$����F�����J8Ҷ5���m�
+u��R�_,^V��S&�aR�~Pf��LL_Dw��*��`\�-�9]q�������������T�I�6)�>u6 D�`e͢/���xq�Y%�9��ʜ�;�åO��d\˾�P�&eR�z��;�]����.�R�<o��Ρ�]�P{?�:�r̨\���ʻb �Ҥ�3|����m �s�؟���W�9����oZt]Rn��Å\�c�W�#+�n�I&�g����y��Ajs�N�06�HiD����'@����J+��a5V~�cR�I��̫�vwtU��c[3+?F|l(��i��U�����^+O�?R���s����� 1�Hqil��$Wþh����=���(�RE
+��1�B��vџ��n��F/��
Bs�G�����M�Y����9>�ܖ3��ȗqI��
ڣ��5����V��_�1ȣ�β��i��JiX�0�WV���H[8g�� _�/���
+n3�`� ���38A.|�f|ј0I��6�b�v�%�&� ;Y��㿜�҄# �d��D.)��.p�'��3�J�12K[D�uɥ$s8�I<�R�i�m�J��8�}��f�� ���DJ�ƀws�!�ʫ���r��RX��-\y^�*�̏Ld'�雲9?)
"�q��^��5�/<4��i
+��Q<����
+��;/��Ա�JB"���7��t͚��,m��Xdھ^�;촞��&s�`�Y�"������Y�����{>Ɗ�.���z^48��e!��R�6}��vc����Mi�oz���o�0�'�=�~���i,3�:?-���?oS,���9���w������#��R�Oa����������;� ?������p��B����
+�֞I����O�ݟ�e#}ԯ�N$�\�l?�]�,����y,��>&Р����q]�yh�0Aq��K)ĝB�F��ҍcH:��-h-�ǟc���f)�K9T��127]����q��EjL���<>h��;�|�U
+��������d�p�G
+ƫ�`�&!���8a��l���`83>�.��q��ɂ�n������A�9
+;����`��H��B�y�g���KB���*k�㰗2fF�=#��OM�� �eT?
+m��Tm���_����OBۊV ��<ɆF('�n3u�G~�Ȯ#�7Њ�9��[��١`N�s�.�P..콤'Knp��F��\�?
�B>���-�����`����N��W�O�OW�B���l�f��x��W�^�<x==���Z/~�4/�.*g�Pʲ�<*V-}&���ٟ�w�z��Wq=g?:��;[���-�(�Z6*<�Ȉ��`p?���2���eQ�yў>�b���-_�x&*/��(�j����_�=߆�zF���`�Ld��E:���SN��ʔ@S� 0���3�|T�O�Ko�k��t��o}bF���z$4���-���,�.m��'j*J���|)J�6�B������P^�3ewܫpX���.��*��,0��7xP�ڳ�:2�X�OT�21|"7��=<J}|�wl\��}vGic��Q����S�]�<�C�jȹ* @8�-f�������݂={ñ(
����]�x�Ѩ�n���?�ϑ]�q�O��ˏ�ExyU���c�0��t�M�]��u3���j �o)(Co��~2�s�Ѓl�����x��֙��
�{��L�7z<��"�!s���[��H��a����*�{���1��l��1��,V��&I*[�v�$�#1/�� 5�Z���p(3��]�8��i2|(�2�| z�D ��5 N�s֬����viV�`D�0Û���]���R)L�!'n��"� <v~�x��)�~�if��
+wnK�ܑQV�B�"�����Խp�� *�+ت�ED���*� �����(���o B�'{p���wH؆ʴ*JѪmA-n��WjGE���ޯ�y~�~?r�I^WO��@�����l)��ƶ�W��giX���"�C�#�k��nA����˻�r���)b�!�U�ڲI���b=��>�0�ߴ���y}ĸB)H�[�����Fs���V�+���̯+Y(I���(����x&��9JAI���'tXm�y�G�=�X[8�TK�)�2����<�TSR�v�x��lȓGO�|�g�/�{�>���4��/�g�R��F�ȶ��&�A�5���2�uЯ*B<�i�� �0�g�r+O��A��,0���-�b�u�g[�\~�-����4:I>幃A��uF�Ǟѧ��u�D���)B�,�*�?n�` 'qQIz���K֗�4�{��B_g�6�8�#�ʉ2.A�$69�!�̒�ub1&D�3Q�x��"�>ɏn��νx�VG�&��Tۨ����Ó)�sx�d-5��Kx�����ߣD&��1���±���j�d��GjJ��|�J��{��Z����f6�/vT�p̄ub��
��P��mBU#g���B�g˷�)��-*�E
+ar���>�>Ƶrn�[ɭ�F �-I���ByѸP�=��ĶK�UC
w��G�D��}�����"��vN��.p�]�]Q��8u�Y��{�#q��C��v}sa���x_o��y�iN�r�����(�
d8a�w�2C�Q�}V�8�UWO\�g������\�����yk�@��d���c��Z�t���9$��u
+p��-���1���z(�=�f)
+�v���ě9����2� w u��煼��ת��#����{P6�+D��q3HIi����%��B�C��b�!���kc5�&U ):X�$���[��b�2�*@�PkcӘ�d�oT�B_L1Uwi"�)��=�2#���pI9,�R�O>�T@>�;�bn�����D��PuC����fk���^�^��\��G~�
��o�L�Rc�Hqܮ=-8^5Oń�y*9��:-\�g8:T<��?*����C;��[���y�X���+����I�;��lRL߭�$D��vY�TQ6�Dy��Vm��fy%/sIs��mXP1�Lռȭ����vow)�QB�b����_ L�V�wu�p����eė���O*��|�+�]�(uH�װ4�W�U��.�{ �4�\�m.Q��w�����R~MAi���Rz+%�B����K��z�?'�{ �� ��k�҉�a��a�{���H]��sX}d����a~�3��_�au���Qz� ��������VM\ĵv5I0�L�M�)�DŽ�p���1��:5���,�&����4��%���!$}o���c��ޤ�A�]R^x���T◬M&/B�:D�wA��2�4�����?�c�d&g]5�b���4���a?������i�ǐ�� ��Ĉ��.OA
6�vfv�s�d��(5yT��H���/P��=�(�a��;zUs��b�W��x�Da�)E�ʼ� $�sg�PJ�r�e�Y�3 �w��`�c��F�o�0|U[j5k��.�5�J��&�����e�T��o�r ��È´��}I l�p�jC���8c���5�J=g�%U��o�|L5��8E"
+ِ���[Ak]�����J��͆�VB�M�"{�N�r�����Q���ih Ц@�Y?��6��^߫ZWٯ�]ذ���c؋h�KSLj:>�O
ɲ���.���ݰ��Q�{5mm<ٷ?^�v"��}�ъw��9��O��&�v��X�7�km[ �,70nΒ7|��e��P��\I;<��u�^`u�!��$P����B
+ET9��ٲF��W��c����m$��="G
+}K�e��6�~֔G_���M�DԿ�s`� g�]�v�p-9�\N��d{:�:�gv�H�_3fC;}�Ɠ P�� �N���p�H���d�U9u�;���9$8w�����3�r�#�A�F�iD1�n�����-}��t�e� ���D��H�!5$��,I�Q:�ȖR���1�3��<�7���j�1�[�ЊT��m���WwzU�x��|����վ+ք{������W��>��p���:ʤ�JRqY���^���`ǯ�<�~�j��!m�r.�B�+��'���OyY+��fN*żt
�W�$��W\�2��� �M_�c[�g������jj�%WuU{{�,_��p�W��n%}P�I^�W�|n;c!�p���u�cʨ�N!k#���)k��sd��5n��6Q{H10���U�
+���-�"{⠇TZG �R�,��ɇjࣶZw8j ICF���:�b[ �\+�?�
+���oA
n'a
+
+��O�j0���`�%��|�^�/si�_�Xǣ�Lqi�w]�I�έ�D"J���!y�!�Զ�n��0�R� z�WC��c�c�h���ūK�_R
[��*)!
OSo��u���Oշ�܌W���ze�W�C���a�����ϝ�L���/�QB�o�_��k�/cg���&MV?��֫5z�� !g����"?w��P͚�I�Q"����P�AdtE)q4��j���G�s���n�{"����}e��UM�rk��zvi89C}���X�LB1W�".ꕝ^M�����t?WK�L�w�DP]t�U�揊1r�J���ոK��V����GM;ph�շm� �v>��-wg����FN���cI�P�#q��W�����I��;�N�ٶ��A�)���H~�7i� t�hl�~��~dz�Y�
C����x�2>*c&�m�b����{9f�1X*�L�� �#>���
+
V@���g蒼]7n249=M����K%
�;��,����F�\j��1��kl�Z�i���؊������ΐ�.|Q��9��а�$_.!��;�̿�l���E�,����ɥDi�������}D��3^�a`Y5�g{J=m��ɳ���y�3���C�M'�jM�-i�Ц�m���n5? �SJ�E+U~ �;����q.t�Xd���~���~p*Q�eS��%�.��Ћ�"ư��Bs���Z�6-�����6[\d;�^z4�`;64藸����ͱw���;����|�+&�A�f�LU��3���X�T��m�����)l�F�'l
�V��ɺ�gcG�Ob�bɜ9�;v\�C��L,�>B?�KGC��e"�z-@��E�����H���</�s�=/�ᑍY���{��P��w\L�1A�|U{�_� ���"҉w�+Gm�
�$�#�n��o���x��N����+���}M�9�MbΥ�_@Tܲ�'1 �,�q��$;��!�헁h1kb��������Bo
+�\��w�J�������uY/|ϕd<w��Τc�~ώ�����x�¡�#d��g3�����~����g�� xT2��ȵ��6s3�i75��ƻ�Z�E\1�\�ɺ�W�A' ײ�� M }?;ʂ�8|R�0S�#❣� ��CۿU��b0���L7ֽ`���hcEk�T\�m�+ 6�&�=����B�9)� �곌����
\�@�^jk��a�ƚ��Ph�<��=T��6�K^MK�͋=�݊�$�Q����-�U�&�>ILp<�5������'��҉�����$>��8#�g�L�2�m� ��c�����1
��c���F�w)�P��+�r�kC
q�p/��u8#�!�*g��°�Pa�`v�u��@��o�H�`"Ž��:�z���_��Q<,D�>'Ӆ��WP��� .����`�x�W��3�|!6�� �
+�5���El�["�,0� e���[Oz��0~l�U�O��+����&x��kP��c|u��$k�.�?�{Qp""k������r�6��isV�a���=~�@�W�_�
+.<�7�
+��2�#h?c~�m'r��E�_�xs��6����a��������G�+���K1��4���L^kUp�^^��_�� m�S^d�Ш���'����>���}��5�����$:τ!E��[�b�Jx&�n� t�(��m�;Z��s�F5u�q �X�.�Ղ�BqKP��� *�����l���%{�ٓ{�'��f';�,TT,�b���h�Uq�2Z���3���;�}�����T9�vw��R�R;GD�
+K�*��/@hUv������$�j�!�@�
�vyבm���,W�|-͢ �^�
�~�D�_���"��ĉ�����#c�禘�*�X/��Ϝ�e>�|�XH��;�:��)���d9gƖ�4�aB����Q4 �E� �w�,C
+ۯB�U�#�>�SV�$L�-��5g�V ϯ*�B����#��}�np�þ�td�����U�$D�b&$^�\^�&Z"/˺+�-}��%�Z���:}��9���A��Yu�� ��rT�lP0�"���~! �͚*@5K�?�߫Z�-�P������=j��>��܈�[��O?)�a5�
+�����?��W���Us����y�5^(ge�${C����m>� "���G�գ+�$�踿��ϫ&��
Xw��������8?��g��,'ō�=�"����/x����N����M)���'��������EF��q�rf�
CįQ9ZY�$r!���6m<YZС.�<��V^�z{U�S=�P
+k�X%3�x��fj��n%^�����i���s���3�0���q�h�$��`kܯ�D&