scrapula 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.rspec +1 -0
- data/.simplecov +1 -0
- data/CHANGELOG.md +15 -0
- data/CONTRIBUTING.md +0 -0
- data/Gemfile +24 -0
- data/Gemfile.lock +127 -0
- data/Guardfile +12 -0
- data/LICENSE +21 -0
- data/README.md +108 -0
- data/ROADMAP.md +42 -0
- data/Rakefile +30 -0
- data/examples/block_syntax.rb +20 -0
- data/examples/find_nodes.rb +6 -0
- data/examples/get_first_and_scrape_later.rb +13 -0
- data/examples/metas.rb +32 -0
- data/examples/more_api.rb +17 -0
- data/examples/nested_results.rb +14 -0
- data/examples/one_liners.rb +9 -0
- data/examples/posting_data.rb +7 -0
- data/examples/s.rb +24 -0
- data/examples/validation.rb +40 -0
- data/lib/scrapula.rb +47 -0
- data/lib/scrapula/_old_scraper.rb +110 -0
- data/lib/scrapula/agent.rb +8 -0
- data/lib/scrapula/data.rb +18 -0
- data/lib/scrapula/page.rb +109 -0
- data/lib/scrapula/page/meta.rb +74 -0
- data/lib/scrapula/request.rb +44 -0
- data/lib/scrapula/s.rb +21 -0
- data/lib/scrapula/scraper.rb +56 -0
- data/lib/scrapula/version.rb +3 -0
- data/scrapula.gemspec +36 -0
- data/spec/cassettes/Scrapula_Page_Meta/_.yml +748 -0
- data/spec/cassettes/Scrapula_Page_Meta/_/Open_Graph.yml +322 -0
- data/spec/cassettes/Scrapula_Page_Meta/_/other_names.yml +586 -0
- data/spec/cassettes/Scrapula_Page_Meta/_/standard_names.yml +429 -0
- data/spec/lib/scrapula/agent_spec.rb +6 -0
- data/spec/lib/scrapula/data_spec.rb +19 -0
- data/spec/lib/scrapula/page/meta_spec.rb +89 -0
- data/spec/lib/scrapula/page_spec.rb +136 -0
- data/spec/lib/scrapula/request_spec.rb +91 -0
- data/spec/lib/scrapula/s_spec.rb +44 -0
- data/spec/lib/scrapula/scraper_spec.rb +205 -0
- data/spec/lib/scrapula_spec.rb +141 -0
- data/spec/spec_helper.rb +26 -0
- metadata +118 -0
@@ -0,0 +1,74 @@
|
|
1
|
+
module Scrapula
|
2
|
+
class Page
|
3
|
+
# http://www.w3.org/TR/html5/document-metadata.html#the-meta-element
|
4
|
+
#
|
5
|
+
# TODO lang?
|
6
|
+
class Meta
|
7
|
+
|
8
|
+
# Only 1 charset, without content
|
9
|
+
CHARSET = 'charset'
|
10
|
+
|
11
|
+
# "http-equiv" with content
|
12
|
+
PRAGMAS = %w[
|
13
|
+
content-type
|
14
|
+
default-style
|
15
|
+
refresh
|
16
|
+
]
|
17
|
+
|
18
|
+
# "name" with content NOTE currently not used
|
19
|
+
STANDARD_NAMES = %w[
|
20
|
+
application-name
|
21
|
+
author
|
22
|
+
description
|
23
|
+
generator
|
24
|
+
keywords
|
25
|
+
]
|
26
|
+
|
27
|
+
# TODO include a list of common headers
|
28
|
+
HTTP_HEADERS = %w[
|
29
|
+
]
|
30
|
+
|
31
|
+
def initialize page
|
32
|
+
@page = page
|
33
|
+
@page_meta = @page.search! 'meta'
|
34
|
+
|
35
|
+
# TODO generate method for each meta
|
36
|
+
end
|
37
|
+
|
38
|
+
# TODO?
|
39
|
+
# def has? key
|
40
|
+
# end
|
41
|
+
|
42
|
+
# TODO?
|
43
|
+
# def all
|
44
|
+
# end
|
45
|
+
|
46
|
+
def [] key
|
47
|
+
case
|
48
|
+
when CHARSET == key
|
49
|
+
@page.instance_variable_get(:@agent_page).meta_charset.first
|
50
|
+
|
51
|
+
when (PRAGMAS + HTTP_HEADERS).include?(key)
|
52
|
+
@page_meta.at("[http-equiv='#{key}']").attr 'content'
|
53
|
+
|
54
|
+
# Open Graph is not standard; uses "property" instead of "name"
|
55
|
+
when key[/og:.+/]
|
56
|
+
# TODO return more than 1 content for some meta
|
57
|
+
@page_meta.at("[property='#{key}']").attr 'content'
|
58
|
+
|
59
|
+
else
|
60
|
+
# TODO try http-equiv also
|
61
|
+
@page_meta.at("[name='#{key}']").attr 'content'
|
62
|
+
end
|
63
|
+
rescue NoMethodError
|
64
|
+
nil
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def extract_namespaces
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Scrapula
|
2
|
+
class Request
|
3
|
+
|
4
|
+
attr_reader :agent, :url, :method, :params
|
5
|
+
|
6
|
+
def initialize(url:, method:, params: [], &block)
|
7
|
+
|
8
|
+
# raise "Invalid http method: #{method}" unless Scrapula.http_methods.include? method
|
9
|
+
|
10
|
+
# Prepend the protocol if necessary
|
11
|
+
@url = url.sub /\A(?!(?:https?:\/\/))/, 'http://'
|
12
|
+
|
13
|
+
# TODO
|
14
|
+
agent = Agent.new
|
15
|
+
|
16
|
+
@agent, @method, @params = agent, method, params
|
17
|
+
|
18
|
+
# TODO
|
19
|
+
@headers = {}
|
20
|
+
@options = {
|
21
|
+
redirects: 0
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def execute
|
26
|
+
# TODO other methods
|
27
|
+
# TODO other parameters
|
28
|
+
Scrapula::Page.new agent.get @url, @params
|
29
|
+
end
|
30
|
+
|
31
|
+
# # Gets a raw page (Mechanize::Page object) TODO other agents...
|
32
|
+
# def page &block
|
33
|
+
# request do |agent, page|
|
34
|
+
# begin
|
35
|
+
# yield page if block_given?
|
36
|
+
# rescue => e
|
37
|
+
# puts "ERROR: #{e.message}" if Scrapula.verbose
|
38
|
+
# exit 1
|
39
|
+
# end
|
40
|
+
# end
|
41
|
+
# end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
data/lib/scrapula/s.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
require_relative '../scrapula'
|
3
|
+
|
4
|
+
module S
|
5
|
+
class << self
|
6
|
+
extend Forwardable
|
7
|
+
def_delegators Scrapula, *Scrapula::HTTP_METHODS.map(&:to_sym)
|
8
|
+
|
9
|
+
alias g get
|
10
|
+
# alias p post
|
11
|
+
# alias u put
|
12
|
+
# alias a patch
|
13
|
+
# alias d delete
|
14
|
+
# alias h head
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def S(*args)
|
20
|
+
S.get args
|
21
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
module Scrapula
|
4
|
+
class Scraper
|
5
|
+
|
6
|
+
extend Forwardable
|
7
|
+
|
8
|
+
# TODO url!
|
9
|
+
def_delegators :@page, :search!, :at!, :txt!
|
10
|
+
|
11
|
+
def initialize page, &block
|
12
|
+
@page, @data = page, {}
|
13
|
+
|
14
|
+
(block.arity == 0 ? instance_eval(&block) : block.call(@page)) if block
|
15
|
+
end
|
16
|
+
|
17
|
+
# TODO remove this method
|
18
|
+
def data!
|
19
|
+
result = {}
|
20
|
+
@data.each_pair do |key, value|
|
21
|
+
result[key] = value.is_a?(self.class) ? value.data! : value
|
22
|
+
end
|
23
|
+
result
|
24
|
+
end
|
25
|
+
|
26
|
+
def respond_to? name
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def method_missing name, *args, &block
|
33
|
+
|
34
|
+
if args.empty?
|
35
|
+
|
36
|
+
# Used as nested block (TODO it's not compatible with using a query)
|
37
|
+
if block_given?
|
38
|
+
@data[name] = self.class.new @page, &block
|
39
|
+
|
40
|
+
# Invoked as an attribute
|
41
|
+
elsif @data.has_key? name
|
42
|
+
return @data[name]
|
43
|
+
|
44
|
+
else
|
45
|
+
raise 'Unknown case!'
|
46
|
+
end
|
47
|
+
|
48
|
+
else
|
49
|
+
|
50
|
+
@data[name] = @page.txt! *args
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
data/scrapula.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative './lib/scrapula/version'
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'scrapula'
|
5
|
+
s.version = Scrapula::VERSION
|
6
|
+
s.summary = 'Succinctest scraper in the world?'
|
7
|
+
s.description = <<-EOF
|
8
|
+
Scrapula is a library for scraping web pages that simplifies some of the
|
9
|
+
common actions that are involved.
|
10
|
+
|
11
|
+
It has a very simple API that can be used in several ways and contexts, and
|
12
|
+
another, shorter, that facilitates processing pages when characters are
|
13
|
+
scarce, like irb / pry, or quick and dirty scripts.
|
14
|
+
EOF
|
15
|
+
s.authors = ['Juan A. Martín Lucas']
|
16
|
+
s.email = 'scrapula@jaml.site'
|
17
|
+
s.homepage = 'http://github.com/j-a-m-l/scrapula'
|
18
|
+
s.license = 'MIT'
|
19
|
+
|
20
|
+
# TODO
|
21
|
+
# s.required_ruby_version
|
22
|
+
s.rdoc_options = ['--charset=UTF-8']
|
23
|
+
|
24
|
+
s.post_install_message = <<-EOF
|
25
|
+
Thanks for installing, but keep in mind that this project is not complete!
|
26
|
+
EOF
|
27
|
+
|
28
|
+
s.files = `git ls-files`.split("\n")
|
29
|
+
s.test_files = `git ls-files -- {spec}/*`.split("\n")
|
30
|
+
s.require_paths = ['lib']
|
31
|
+
|
32
|
+
s.add_runtime_dependency 'mechanize', '~> 2.7', '>= 2.7.3'
|
33
|
+
|
34
|
+
# Development and testing dependencies are listed in the Gemfile.
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,748 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://ruby-doc.org/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip,deflate,identity
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Mechanize/2.7.3 Ruby/2.1.2p95 (http://github.com/sparklemotion/mechanize/)
|
16
|
+
Accept-Charset:
|
17
|
+
- ISO-8859-1,utf-8;q=0.7,*;q=0.7
|
18
|
+
Accept-Language:
|
19
|
+
- en-us,en;q=0.5
|
20
|
+
Host:
|
21
|
+
- ruby-doc.org
|
22
|
+
Connection:
|
23
|
+
- keep-alive
|
24
|
+
Keep-Alive:
|
25
|
+
- 300
|
26
|
+
response:
|
27
|
+
status:
|
28
|
+
code: 200
|
29
|
+
message: OK
|
30
|
+
headers:
|
31
|
+
Date:
|
32
|
+
- Fri, 14 Aug 2015 18:05:20 GMT
|
33
|
+
Server:
|
34
|
+
- Apache/2.2.22 (Ubuntu)
|
35
|
+
Last-Modified:
|
36
|
+
- Thu, 07 May 2015 04:45:34 GMT
|
37
|
+
Etag:
|
38
|
+
- '"13e009c-4187-515769504d780"'
|
39
|
+
Accept-Ranges:
|
40
|
+
- bytes
|
41
|
+
Vary:
|
42
|
+
- Accept-Encoding
|
43
|
+
Content-Length:
|
44
|
+
- '16775'
|
45
|
+
Keep-Alive:
|
46
|
+
- timeout=5, max=100
|
47
|
+
Connection:
|
48
|
+
- Keep-Alive
|
49
|
+
Content-Type:
|
50
|
+
- text/html
|
51
|
+
body:
|
52
|
+
encoding: ASCII-8BIT
|
53
|
+
string: !binary |-
|
54
|
+
PCFkb2N0eXBlIGh0bWw+CjwhLS0gcGF1bGlyaXNoLmNvbS8yMDA4L2NvbmRp
|
55
|
+
dGlvbmFsLXN0eWxlc2hlZXRzLXZzLWNzcy1oYWNrcy1hbnN3ZXItbmVpdGhl
|
56
|
+
ci8gLS0+CjwhLS1baWYgbHQgSUUgN10+IDxodG1sIGNsYXNzPSJuby1qcyBp
|
57
|
+
ZTYgb2xkaWUiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+CjwhLS1baWYgSUUg
|
58
|
+
N10+ICAgIDxodG1sIGNsYXNzPSJuby1qcyBpZTcgb2xkaWUiIGxhbmc9ImVu
|
59
|
+
Ij4gPCFbZW5kaWZdLS0+CjwhLS1baWYgSUUgOF0+ICAgIDxodG1sIGNsYXNz
|
60
|
+
PSJuby1qcyBpZTggb2xkaWUiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+Cjwh
|
61
|
+
LS0gQ29uc2lkZXIgYWRkaW5nIGEgbWFuaWZlc3QuYXBwY2FjaGU6IGg1YnAu
|
62
|
+
Y29tL2QvT2ZmbGluZSAtLT4KPCEtLVtpZiBndCBJRSA4XT48IS0tPiA8aHRt
|
63
|
+
bCBjbGFzcz0ibm8tanMiIGxhbmc9ImVuIj4gPCEtLTwhW2VuZGlmXS0tPgo8
|
64
|
+
aGVhZD4KCiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDwhLS0gVXNlIHRo
|
65
|
+
ZSAuaHRhY2Nlc3MgYW5kIHJlbW92ZSB0aGVzZSBsaW5lcyB0byBhdm9pZCBl
|
66
|
+
ZGdlIGNhc2UgaXNzdWVzLgogIE1vcmUgaW5mbzogaDVicC5jb20vYi8zNzgg
|
67
|
+
LS0+CiAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250
|
68
|
+
ZW50PSJJRT1lZGdlLGNocm9tZT0xIj4KICA8dGl0bGU+UnVieS1Eb2Mub3Jn
|
69
|
+
OiBEb2N1bWVudGluZyB0aGUgUnVieSBMYW5ndWFnZTwvdGl0bGU+CgogIDwh
|
70
|
+
LS0gTW9iaWxlIHZpZXdwb3J0IG9wdGltaXplZDogai5tcC9icGxhdGV2aWV3
|
71
|
+
cG9ydCAtLT4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lk
|
72
|
+
dGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSI+CiAgPGxpbmsgcmVs
|
73
|
+
PSJzZWFyY2giIHR5cGU9ImFwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlw
|
74
|
+
dGlvbit4bWwiIHRpdGxlPSJSdWJ5LURvYyBTZWFyY2giIGhyZWY9Imh0dHA6
|
75
|
+
Ly93d3cucnVieS1kb2Mub3JnL3J1YnktZG9jLXNlYXJjaC54bWwiID4KICA8
|
76
|
+
bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IldlYmJ5IiA+CiAgPG1l
|
77
|
+
dGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZhc3QgYW5kIHNlYXJj
|
78
|
+
aGFibGUgUnVieSBkb2N1bWVudGF0aW9uIGZvciBjb3JlLCBzdGFuZGFyZCBs
|
79
|
+
aWJyYXJpZXMsIGFuZCBydWJ5Z2Vtcy4gQXZhaWxhYmxlIGluIGJvdGggUkRv
|
80
|
+
YyBhbmQgWWFyZCBmb3JtYXQuIFBsdXMsIGxpbmtzIHRvIHR1dG9yaWFscywg
|
81
|
+
Z3VpZGVzLCBib29rcywgYW5kIHJlbGF0ZWQgc2l0ZXMuIiA+CiAgPG1ldGEg
|
82
|
+
bmFtZT0icm9ib3RzIiBjb250ZW50PSJOT09EUCIgPgogIDxtZXRhIGh0dHAt
|
83
|
+
ZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
|
84
|
+
c2V0PXV0Zi04IiA+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIv
|
85
|
+
Y3NzL2ludWl0LmNzcyI+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
|
86
|
+
PSIvY3NzL2dyaWQuaW51aXQuY3NzIj4KICA8bGluayBocmVmPSIvY3NzLzIw
|
87
|
+
MTEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KICA8
|
88
|
+
bGluayBocmVmPSIvY3NzL3Jkb2MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5
|
89
|
+
cGU9InRleHQvY3NzIj4KCiAgPGxpbmsgaHJlZj0iL2Zhdmljb24uaWNvIiBy
|
90
|
+
ZWw9IlNob3J0Y3V0IEljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgPgogIDxz
|
91
|
+
Y3JpcHQgc3JjPSIvanMvbGlicy9tb2Rlcm5penItMi4wLjYubWluLmpzIj48
|
92
|
+
L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iaHR0cDovL2NvZGUuanF1ZXJ5LmNv
|
93
|
+
bS9qcXVlcnktMS44LjMubWluLmpzIj48L3NjcmlwdD4KCiA8c3R5bGUgdHlw
|
94
|
+
ZT0ndGV4dC9jc3MnPgogICAuYWR6Ym94LW1haW4gewpiYWNrZ3JvdW5kLWNv
|
95
|
+
bG9yOiNGRkY7CmJvcmRlcjowIHNvbGlkICMzMzM7CmZsb2F0OiByaWdodDsK
|
96
|
+
aGVpZ2h0OjYwMHB4OwptYXJnaW4tcmlnaHQ6LTcwcHg7Cm1hcmdpbi10b3A6
|
97
|
+
MjAwcHg7Ci8qd2lkdGg6MTYwcHg7ICovCgp9CgogICAuYWR6Ym94LW1haW5f
|
98
|
+
IHsKbWFyZ2luLXRvcDoyMDBweDsKCn0KCiB1bC5tYWluLXN1YiB7IAogICBt
|
99
|
+
YXJnaW46IDAgMCAwIDIwcHg7CiB9CgogI3Z1bG5zLWFsZXJ0ICN2dWxuc3sK
|
100
|
+
ICAgYmFja2dyb3VuZC1jb2xvcjogI2MzMyAhIGltcG9ydGFudDsKICAgd2lk
|
101
|
+
dGg6IDEwMCU7CiAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgfQogICAjdnVs
|
102
|
+
bnMtYWxlcnQgI3Z1bG5zIGEgewpjb2xvcjogI0Y5OSAhIGltcG9ydGFudDsK
|
103
|
+
ICAgfQoKICAgLmd1aWRlbGluZXMgIGxpIHsKICAgIHBhZGRpbmctYm90dG9t
|
104
|
+
OiAwLjVlbSA7CiAgICBwYWRkaW5nLXRvcCAwLjVlbSA7CiAgfQoKICB1bC5n
|
105
|
+
dWlkZWxpbmVzICB7CiAgICBtYXJnaW4tYm90dG9tOiAxZW0gOwogICAgbWFy
|
106
|
+
Z2luLXRvcCAxZW0gOwogIH0KIDwvc3R5bGU+CjwvaGVhZD4KCjxib2R5IGNs
|
107
|
+
YXNzPSdkZWZhdWx0Jz4KPGRpdiBpZD0nYWN0aW9uYmFyJyA+CjxkaXYgY2xh
|
108
|
+
c3M9J3dyYXBwZXInPgo8dWwgY2xhc3M9J2dyaWRzIGcwJz4KICA8bGkgY2xh
|
109
|
+
c3M9J2dyaWQtMicgPjxhIGhyZWY9Jy8nPkhvbWU8L2E+PC9saT4KICA8bGkg
|
110
|
+
Y2xhc3M9J2dyaWQtMicgPjxhIGhyZWY9Jy9jb3JlJz5Db3JlPC9hPjwvbGk+
|
111
|
+
CiAgPGxpIGNsYXNzPSdncmlkLTInID48YSBocmVmPScvc3RkbGliJz5TdGQt
|
112
|
+
bGliPC9hPjwvbGk+CiAgPGxpIGNsYXNzPSdncmlkLTInID48YSBocmVmPScv
|
113
|
+
ZG93bmxvYWRzJz5Eb3dubG9hZHM8L2E+PC9saT4KICA8bGkgY2xhc3M9J2dy
|
114
|
+
aWQtNSByaWdodCcgaWQ9J3JkLWFjdGlvbi1zZWFyY2gnPjxmb3JtIAogICBp
|
115
|
+
ZD0ic2VhcmNoYm94XzAxMTgxNTgxNDEwMDY4MTgzNzM5Mjp3bmNjdjZzdDVx
|
116
|
+
ayIgCiAgIGFjdGlvbj0iaHR0cDovL3J1YnktZG9jLmNvbS9zZWFyY2guaHRt
|
117
|
+
bCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgCiAgICAgICAgICAgICBuYW1lPSJj
|
118
|
+
eCIgCiAgICAgICAgICAgICB2YWx1ZT0iMDExODE1ODE0MTAwNjgxODM3Mzky
|
119
|
+
OnduY2N2NnN0NXFrIiA+PGlucHV0IG5hbWU9InEiIAogICAgICAgICAgICAg
|
120
|
+
ICAgICAgICAgICAgICAgICAgICB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgaWQ9
|
121
|
+
J3JkLXNlYXJjaC1pbnB1dCcgPiYjMTYwOyYjMTYwOzxpbnB1dCAKICAgICAg
|
122
|
+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InN1Ym1pdCIg
|
123
|
+
bmFtZT0ic2EiIHZhbHVlPSJTZWFyY2giID48aW5wdXQgdHlwZT0iaGlkZGVu
|
124
|
+
IiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
|
125
|
+
IG5hbWU9ImNvZiIgdmFsdWU9IkZPUklEOjkiID48L2Zvcm0+CjwvbGk+Cjwv
|
126
|
+
dWw+CjwvZGl2Pgo8c3BhbiBpZD0ndnVsbnMtYWxlcnQnPjwvc3Bhbj4KPC9k
|
127
|
+
aXY+CjwhLS0gLS0+Cgo8ZGl2IGNsYXNzPSd3cmFwcGVyJz4KPGRpdiBpZD0i
|
128
|
+
aGVhZGVyIiBjbGFzcz0iZ3JpZHMgZzEiPgogIDxoZWFkZXIgY2xhc3M9J2dy
|
129
|
+
aWQtMTYnPgogIDxoMT48YSBocmVmPScvJyAgPlJ1YnktRG9jLm9yZzwvYT48
|
130
|
+
L2gxPgogIDxwPkhlbHAgYW5kIGRvY3VtZW50YXRpb24gZm9yIHRoZSBSdWJ5
|
131
|
+
IHByb2dyYW1taW5nIGxhbmd1YWdlLjwvcD4KICA8L2hlYWRlcj4KPC9kaXY+
|
132
|
+
IDwhLS0gZW5kICNoZWFkZXIgLS0+Cgo8ZGl2IGNsYXNzPSdncmlkcyBnMic+
|
133
|
+
CiAgPGRpdiBjbGFzcz0nZ3JpZC0xNic+CiAgICA8IS0tIElOREVYIC0tPgoK
|
134
|
+
PHVsIGNsYXNzPSJncmlkcyBpbmRleC1nMSIgaWQ9J3Jvdy10d28nPgogIDxs
|
135
|
+
aSBpZD0nY29yZScgY2xhc3M9ImdyaWQtNyIgPiA8IS0tIGxpIDEgLS0+CiAg
|
136
|
+
ICA8aDI+PGEgaHJlZj0iL2NvcmUiPkNvcmUgQVBJPC9hPjwvaDI+CiAgICA8
|
137
|
+
cD5UaGVzZSBhcmUgdGhlIEFQSSBkb2N1bWVudHMgZm9yIHRoZSBiYXNlIGNs
|
138
|
+
YXNzZXMgYW5kIG1vZHVsZXMgaW4gdGhlIGN1cnJlbnQgc3RhYmxlIHJlbGVh
|
139
|
+
c2Ugb2YgUnVieSAyLjIuPC9wPgogICAgPHVsICBpZD0nY29yZS1hcGktbGlz
|
140
|
+
dCcgY2xhc3M9J21haW4tc3ViJz4gPCEtLSB1bCAyIC0tPgogICAgICA8bGk+
|
141
|
+
PHNwYW4+PGEgaHJlZj0iL2NvcmUiPjIuMi4yIGNvcmU8L2E+IC0gQ29yZSBB
|
142
|
+
UEkgZG9jcyBmb3IgUnVieSAyLjIuMiAgVGhpcyBpcyAgdGhlIGN1cnJlbnQg
|
143
|
+
b2ZmaWNpYWwgcmVsZWFzZS48L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFu
|
144
|
+
PjxhIGhyZWY9Ii9jb3JlLTIuMi4xIj4yLjIuMSBjb3JlPC9hPiAtIENvcmUg
|
145
|
+
QVBJIGRvY3MgZm9yIFJ1YnkgMi4yLjE8L3NwYW4+PC9saT4KICAgICAgPGxp
|
146
|
+
PjxzcGFuPjxhIGhyZWY9Ii9jb3JlLTIuMi4wIj4yLjIuMCBjb3JlPC9hPiAt
|
147
|
+
IENvcmUgQVBJIGRvY3MgZm9yIFJ1YnkgMi4yLjA8L3NwYW4+PC9saT4KICAg
|
148
|
+
ICAgPGxpPjxzcGFuPjxhIGhyZWY9Ii9jb3JlLTIuMS42Ij4yLjEuNiBjb3Jl
|
149
|
+
PC9hPiAtIENvcmUgQVBJIGRvY3MgZm9yIFJ1YnkgMi4xLjY8L3NwYW4+PC9s
|
150
|
+
aT4KICAgICAgPGxpPjxzcGFuPjxhIGhyZWY9Ii9jb3JlLTIuMS41Ij4yLjEu
|
151
|
+
NSBjb3JlPC9hPiAtIENvcmUgQVBJIGRvY3MgZm9yIFJ1YnkgMi4xLjU8L3Nw
|
152
|
+
YW4+PC9saT4KICAgICAgPGxpPjxzcGFuPjxhIGhyZWY9Ii9jb3JlLTIuMS40
|
153
|
+
Ij4yLjEuNCBjb3JlPC9hPiAtIENvcmUgQVBJIGRvY3MgZm9yIFJ1YnkgMi4x
|
154
|
+
LjQgPC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3Bhbj48YSBocmVmPSIvY29y
|
155
|
+
ZS0yLjEuMyI+Mi4xLjMgY29yZTwvYT4gLSBDb3JlIEFQSSBkb2NzIGZvciBS
|
156
|
+
dWJ5IDIuMS4zIDwvc3Bhbj48L2xpPgogICAgICA8bGk+PHNwYW4+PGEgaHJl
|
157
|
+
Zj0iL2NvcmUtMi4xLjIiPjIuMS4yIGNvcmU8L2E+IC0gQ29yZSBBUEkgZG9j
|
158
|
+
cyBmb3IgUnVieSAyLjEuMiA8L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFu
|
159
|
+
PjxhIGhyZWY9Ii9jb3JlLTIuMS4xIj4yLjEuMSBjb3JlPC9hPiAtIENvcmUg
|
160
|
+
QVBJIGRvY3MgZm9yIFJ1YnkgMi4xLjEgPC9zcGFuPjwvbGk+CiAgICAgIDxs
|
161
|
+
aT48c3Bhbj48YSBocmVmPSIvY29yZS0yLjEuMCI+Mi4xLjAgY29yZTwvYT4g
|
162
|
+
LSBDb3JlIEFQSSBkb2NzIGZvciBSdWJ5IDIuMS4wPC9zcGFuPjwvbGk+CiAg
|
163
|
+
ICAgIDxsaT48c3Bhbj48YSBocmVmPSIvY29yZS0yLjAuMCI+Mi4wLjAgY29y
|
164
|
+
ZTwvYT4gLSBDb3JlIEFQSSBkb2NzIGZvciBSdWJ5IDIuMC4wICA8L3NwYW4+
|
165
|
+
PC9saT4KICAgICAgPGxpPjxzcGFuPjxhIGhyZWY9Ii9jb3JlLTEuOS4zIj4x
|
166
|
+
LjkuMyBjb3JlPC9hPiAtIENvcmUgQVBJIGRvY3MgZm9yIFJ1YnkgMS45LjMg
|
167
|
+
YmFzZSBjbGFzc2VzIGFuZCBtb2R1bGVzLCBzdWNoIGFzIFN0cmluZywgQXJy
|
168
|
+
YXksIFN5bWJvbCwgZXRjLjwvc3Bhbj4gPC9saT4KICAgICAgPGxpPjxzcGFu
|
169
|
+
PjxhIGhyZWY9Ii9kb2NzL2tleXdvcmRzLzEuOS8iPjEuOSBrZXl3b3Jkczwv
|
170
|
+
YT4gLSBLZXl3b3JkcyBkZWZpbmVkIGluIDEuOS48L3NwYW4+PC9saT4KICAg
|
171
|
+
ICAgPGxpPjxzcGFuPjxhIGhyZWY9Ii9jb3JlLW1ydWJ5LyI+TVJ1YnkgY29y
|
172
|
+
ZTwvYT4gLSBDb3JlIEFQSSBkb2NzIGZvciBNUnVieSAodGhpcyBpcyA8ZW0+
|
173
|
+
bm90PC9lbT4gYW4gYWN0aXZlIHJlbGVhc2UgdmVyc2lvbikuPC9zcGFuPjwv
|
174
|
+
bGk+CiAgICAgIDxsaT48c3Bhbj48YSBocmVmPSIvY29yZS10cnVuayI+dHJ1
|
175
|
+
bmstY29yZTwvYT4gLSBDb3JlIEFQSSBkb2NzIGZvciBSdWJ5IHRydW5rIChu
|
176
|
+
b3QgeWV0IG9mZmljaWFsbHkgcmVsZWFzZWQpIDwvc3Bhbj48L2xpPgogICAg
|
177
|
+
ICA8bGk+PHNwYW4+PGEgaHJlZj0iL2NvcmUtMS45LjIiPjEuOS4yIGNvcmU8
|
178
|
+
L2E+IC0gQ29yZSBBUEkgZG9jcyBmb3IgUnVieSAxLjkuMjwvc3Bhbj4gPC9s
|
179
|
+
aT4KICAgICAgPGxpPjxzcGFuPjxhIGhyZWY9Ii9jb3JlLTEuOS4xIj4xLjku
|
180
|
+
MSBjb3JlPC9hPiAtIENvcmUgQVBJIGRvY3MgZm9yIFJ1YnkgMS45LjE8L3Nw
|
181
|
+
YW4+IDwvbGk+CiAgICAgIDxsaT48c3Bhbj48YSBocmVmPSIvY29yZS0xLjgu
|
182
|
+
NyI+MS44LjcgY29yZTwvYT4gLSBDb3JlIEFQSSBkb2NzIGZvciBSdWJ5IDEu
|
183
|
+
OC43LiAgPC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3Bhbj48YSBocmVmPSIv
|
184
|
+
Y29yZS0xLjguNi9pbmRleC5odG1sIj4xLjguNiBjb3JlPC9hPiAtIENvcmUg
|
185
|
+
QVBJIGRvY3MgZm9yIFJ1YnkgMS44LjYuPC9zcGFuPjwvbGk+CiAgICAgIAog
|
186
|
+
ICAgPC91bD4gPCEtLSB1bCAyIC0tPgoKICA8L2xpPiAgPCEtLSBsaSAxIC0t
|
187
|
+
PgogIDxkaXYgY2xhc3M9J2dyaWQtMic+PC9kaXY+CiAgPGxpIGlkPSdzdGFu
|
188
|
+
ZGFyZGxpYicgY2xhc3M9ImdyaWQtNyI+CiAgICA8aDI+PGEgaHJlZj0iL3N0
|
189
|
+
ZGxpYi8iPlN0YW5kYXJkIExpYnJhcnkgQVBJPC9hPjwvaDI+CiAgICA8cD5U
|
190
|
+
aGVzZSBhcmUgdGhlIEFQSSBkb2N1bWVudHMgZm9yIHRoZSBzdGFuZGFyZCBs
|
191
|
+
aWJyYXJ5IGNsYXNzZXMgYW5kIG1vZHVsZXMgaW4gdmVyc2lvbiAyLjI8L3A+
|
192
|
+
CiAgICA8dWwgaWQ9J3N0ZGxpYi1hcGktbGlzdCcgIGNsYXNzPSdtYWluLXN1
|
193
|
+
Yic+IDwhLS0gdWwgMSAtLT4KICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0i
|
194
|
+
L3N0ZGxpYi8iPlRoZSAyLjIuMiBzdGFuZGFyZCBsaWJyYXJ5ICh0aGlzIGlz
|
195
|
+
IHRoZSBjdXJyZW50IG9mZmljaWFsIHJlbGVhc2UpPC9hPgogICAgICAgICAg
|
196
|
+
PGJyPiBBZGRpdGlvbmFsIGxpYnJhcmllcyBpbmNsdWRlZCB3aXRoIHRoZSBz
|
197
|
+
dGFuZGFyZCBSdWJ5IGRpc3RyaWJ1dGlvbiwgc3VjaCBhcyBDR0ksIE9wZW5V
|
198
|
+
UkksIGFuZCBSRVhNTDwvc3Bhbj4gPC9saT4KICAgICAgPGxpPiA8c3Bhbj4g
|
199
|
+
PGEgaHJlZj0iL3N0ZGxpYi0yLjIuMSI+VGhlIDIuMi4xIHN0YW5kYXJkIGxp
|
200
|
+
YnJhcnk8L2E+PC9zcGFuPiAgPC9saT4KICAgICAgPGxpPiA8c3Bhbj4gPGEg
|
201
|
+
aHJlZj0iL3N0ZGxpYi0yLjIuMCI+VGhlIDIuMi4wIHN0YW5kYXJkIGxpYnJh
|
202
|
+
cnk8L2E+PC9zcGFuPiAgPC9saT4KICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJl
|
203
|
+
Zj0iL3N0ZGxpYi0yLjEuNiI+VGhlIDIuMS42IHN0YW5kYXJkIGxpYnJhcnk8
|
204
|
+
L2E+PC9zcGFuPiAgPC9saT4KICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0i
|
205
|
+
L3N0ZGxpYi0yLjEuNSI+VGhlIDIuMS41IHN0YW5kYXJkIGxpYnJhcnk8L2E+
|
206
|
+
PC9zcGFuPiAgPC9saT4KICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0iL3N0
|
207
|
+
ZGxpYi0yLjEuNCI+VGhlIDIuMS40IHN0YW5kYXJkIGxpYnJhcnk8L2E+PC9z
|
208
|
+
cGFuPiAgPC9saT4KICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0iL3N0ZGxp
|
209
|
+
Yi0yLjEuMyI+VGhlIDIuMS4zIHN0YW5kYXJkIGxpYnJhcnk8L2E+PC9zcGFu
|
210
|
+
PiAgPC9saT4KICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0iL3N0ZGxpYi0y
|
211
|
+
LjEuMiI+VGhlIDIuMS4yIHN0YW5kYXJkIGxpYnJhcnk8L2E+PC9zcGFuPiAg
|
212
|
+
PC9saT4KICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0iL3N0ZGxpYi0yLjEu
|
213
|
+
MSI+VGhlIDIuMS4xIHN0YW5kYXJkIGxpYnJhcnk8L2E+PC9zcGFuPiAgPC9s
|
214
|
+
aT4KICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0iL3N0ZGxpYi0yLjEuMCI+
|
215
|
+
VGhlIDIuMS4wIHN0YW5kYXJkIGxpYnJhcnk8L2E+PC9zcGFuPiAgPC9saT4K
|
216
|
+
ICAgICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0iL3N0ZGxpYi0yLjAuMCI+VGhl
|
217
|
+
IDIuMC4wIHN0YW5kYXJkIGxpYnJhcnk8L2E+PC9zcGFuPiAgPC9saT4KICAg
|
218
|
+
ICAgPGxpPiA8c3Bhbj4gPGEgaHJlZj0iL3N0ZGxpYi0xLjkuMy8iPlRoZSAx
|
219
|
+
LjkuMyBzdGFuZGFyZCBsaWJyYXJ5PC9hPjwvc3Bhbj4gPC9saT4KICAgICAg
|
220
|
+
PGxpPiA8c3Bhbj4gPGEgaHJlZj0iL3N0ZGxpYi0xLjkuMi8iPlRoZSAxLjku
|
221
|
+
MiBzdGFuZGFyZCBsaWJyYXJ5PC9hPjwvc3Bhbj48L2xpPgogICAgICA8bGk+
|
222
|
+
IDxzcGFuPiA8YSBocmVmPSIvc3RkbGliLTEuOS4xLyI+VGhlIDEuOS4xIHN0
|
223
|
+
YW5kYXJkIGxpYnJhcnk8L2E+PC9zcGFuPjwvbGk+CiAgICAgIDxsaT4gPHNw
|
224
|
+
YW4+IDxhIGhyZWY9Ii9zdGRsaWItMS44LjcvIj5UaGUgMS44Ljcgc3RhbmRh
|
225
|
+
cmQgbGlicmFyeTwvYT48L3NwYW4+PC9saT4KICAgICAgPGxpPiA8c3Bhbj4g
|
226
|
+
PGEgaHJlZj0iL3N0ZGxpYi0xLjguNi8iPlRoZSAxLjguNiBzdGFuZGFyZCBs
|
227
|
+
aWJyYXJ5PC9hPjwvc3Bhbj48L2xpPgogICAgICA8bGk+IDxzcGFuPiA8YSBo
|
228
|
+
cmVmPSIvc3RkbGliLXRydW5rIj5UaGUgUnVieSB0cnVuayBzdGFuZGFyZCBs
|
229
|
+
aWJyYXJ5PC9hPjwvc3Bhbj48L2xpPgogICAgICAKICAgIDwvdWw+IDwhLS0g
|
230
|
+
dWwgMSAtLT4KICAgPC9saT4gPCEtLSBsaSAwIC0tPgoJIAogIDxsaSBjbGFz
|
231
|
+
cz0nYWR6Ym94LW1haW5fIGdyaWQtMSByaWdodCcgPgogICAgPGRpdiBpZD0i
|
232
|
+
Y2FyYm9uYWRzLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0iY2FyYm9uYWQiPjxk
|
233
|
+
aXYgaWQ9ImF6Y2FyYm9uIj48L2Rpdj48c2NyaXB0IHR5cGU9InRleHQvamF2
|
234
|
+
YXNjcmlwdCI+dmFyIHogPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3Jp
|
235
|
+
cHQiKTsgei50eXBlID0gInRleHQvamF2YXNjcmlwdCI7IHouYXN5bmMgPSB0
|
236
|
+
cnVlOyB6LnNyYyA9ICJodHRwOi8vZW5naW5lLmNhcmJvbmFkcy5jb20vei8x
|
237
|
+
OTY0Ny9hemNhcmJvbl8yXzFfMF9WRVJUIjsgdmFyIHMgPSBkb2N1bWVudC5n
|
238
|
+
ZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07IHMucGFyZW50Tm9k
|
239
|
+
ZS5pbnNlcnRCZWZvcmUoeiwgcyk7PC9zY3JpcHQ+PC9kaXY+PC9kaXY+CiAg
|
240
|
+
PC9saT4KCiAgCiA8L3VsPiAKCgoKCjxkaXYgY2xhc3M9J2dyaWQtMTYgaW5k
|
241
|
+
ZXgtZzAnIGlkPSdnZXR0aW5nLXN0YXJ0ZWQtaGVhZGVyJyBzdHlsZT0ncGFk
|
242
|
+
ZGluZy1ib3R0b206MDsgbWFyZ2luLWJvdHRvbTowJyA+CiAgPCEtLSBoMj48
|
243
|
+
YSBocmVmPSIvZ2V0dGluZ3N0YXJ0ZWQiPkdldHRpbmcgU3RhcnRlZDwvYT4g
|
244
|
+
PGEgaHJlZj0iL3doeXJ1YnkiPmFuZCBtb3JlPC9hPiA8L2gyIC0tPgogIDwv
|
245
|
+
ZGl2Pgo8dWwgY2xhc3M9ImdyaWRzIGluZGV4LWcwIiBpZD0ncm93LW9uZSc+
|
246
|
+
CiAgPGxpIGlkPSJnZXR0aW5nc3RhcnRlZCIgY2xhc3M9ImdyaWQtNyI+CiAg
|
247
|
+
ICA8aDI+PGEgaHJlZj0iL2dldHRpbmdzdGFydGVkIj5HZXR0aW5nIFN0YXJ0
|
248
|
+
ZWQ8L2E+IDwvaDI+CiAgICA8cCAgc3R5bGU9J3BhZGRpbmctYm90dG9tOjA7
|
249
|
+
IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6IzZDNkM2QzsgZm9udC1mYW1p
|
250
|
+
bHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7JyA+QSBjb2xsZWN0aW9u
|
251
|
+
IG9mIHJlc291cmNlcyBmb3IgdGhvc2UganVzdCBzdGFydGluZyBvdXQgd2l0
|
252
|
+
aCBSdWJ5LjwvcD4KCiAgICA8dWwgY2xhc3M9J21haW4tc3ViJz4KICAgICAg
|
253
|
+
PGxpPlNvbWUgUnVieSAyLnggcmVzb3VyY2VzPGJyPgogICAgICAgIDx1bD4K
|
254
|
+
ICAgICAgICAgIDxsaT48YSBocmVmPSdodHRwczovL2dpdGh1Yi5jb20vcnVi
|
255
|
+
eS9ydWJ5L2Jsb2IvdjJfMV8wL05FV1MnPldoYXQncyBuZXcgaW4gUnVieSAy
|
256
|
+
LjEuMDwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGhyZWY9J2h0dHA6Ly93
|
257
|
+
d3cucnVieS1sYW5nLm9yZy9lbi9uZXdzLzIwMTMvMDIvMjQvcnVieS0yLTAt
|
258
|
+
MC1wMC1pcy1yZWxlYXNlZCNsYWJlbC0xJz5XaGF0IGlzIFJ1YnkgMi4wLjA/
|
259
|
+
PC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgaHJlZj0naHR0cDovL2Jsb2cu
|
260
|
+
bWFyYy1hbmRyZS5jYS8yMDEzLzAyLzIzL3J1YnktMi1ieS1leGFtcGxlLyc+
|
261
|
+
UnVieSAyLjAuMCBieSBFeGFtcGxlPC9hPjwvbGk+CiAgICAgICAgICAgIDwv
|
262
|
+
dWw+IAogICAgICA8bGk+IDxzcGFuPiA8YSBocmVmPSJodHRwOi8vZG9jcy5y
|
263
|
+
dWJ5LWRvYy5jb20vZG9jcy9Qcm9ncmFtbWluZ1J1YnkvIj5Qcm9ncmFtbWlu
|
264
|
+
ZyBSdWJ5PC9hPiA8YnI+QW4gb24tbGluZSBjb3B5IG9mIHRoZSBmaXJzdCBl
|
265
|
+
ZGl0aW9uIG9mIHRoZSBib29rIFByb2dyYW1taW5nIFJ1YnksIGJ5IERhdmUg
|
266
|
+
VGhvbWFzLjwvc3Bhbj4gPC9saT4KICAgICAgPGxpPjxhIGhyZWY9J2h0dHA6
|
267
|
+
Ly9uZXVyb2dhbWkuY29tL2NvbnRlbnQvMTBfbWludXRlc190b195b3VyX2Zp
|
268
|
+
cnN0X1J1YnlfYXBwJz4xMCBNaW51dGVzIHRvIFlvdXIgRmlyc3QgUnVieSBB
|
269
|
+
cHBsaWNhdGlvbjwvYT48YnI+V3JpdGUgYSB1c2VmdWwgUnVieSBwcm9ncmFt
|
270
|
+
IHRoYXQgZGVtb25zdHJhdGVzIGtleSBsYW5ndWFnZSBjb25jZXB0cy48L2xp
|
271
|
+
PgogICAgICA8bGk+IDxzcGFuPiA8YSBocmVmPSJodHRwOi8vYmxvZy5ydWJ5
|
272
|
+
YmVzdHByYWN0aWNlcy5jb20vcG9zdHMvZ3JlZ29yeS8wMjItcmJwLW5vdy1v
|
273
|
+
cGVuLmh0bWwiPlJ1YnkgQmVzdCBQcmFjdGljZXM8L2E+PGJyPkZyZWUgb24t
|
274
|
+
bGluZSBib29rLjwvc3Bhbj48L2xpPgogICAgICA8bGk+IDxzcGFuPiA8YSBo
|
275
|
+
cmVmPSIvZG9jcyI+QWRkaXRpb25hbCBEb2N1bWVudHM8L2E+IDxicj5BIHZh
|
276
|
+
cmllZCBjb2xsZWN0aW9uIG9mIG90aGVyIGRvY3VtZW50cyBob3N0ZWQgb24g
|
277
|
+
UnVieS1Eb2M8L3NwYW4+IDwvbGk+CiAgICAgIDxsaT4gPHNwYW4+IDxhIGhy
|
278
|
+
ZWY9Ii9kb3dubG9hZHMiPkRvd25sb2FkczwvYT4gPGJyPlZhcmlvdXMgZG9j
|
279
|
+
dW1lbnQgc2V0cyBhbmQgdHJhbnNsYXRlZCB3b3Jrcywgc3VpdGFibGUgZm9y
|
280
|
+
IGRvd25sb2FkaW5nIGZvciBsb2NhbCBwZXJ1c2FsLjwvc3Bhbj4gPC9saT4K
|
281
|
+
ICAgICAgPGxpPjxhIGhyZWY9J2h0dHBzOi8vcHJhY3RpY2luZ3J1YnkuY29t
|
282
|
+
Jz5QcmFjdGljaW5nIFJ1Ynk8L2E+PGJyPkEgdW5pcXVlIGpvdXJuYWwgY3Vy
|
283
|
+
YXRlZCBieSA8YSBocmVmPSdodHRwOi8vYmxvZy5ydWJ5YmVzdHByYWN0aWNl
|
284
|
+
cy5jb20vYWJvdXQvZ3JlZ29yeS5odG1sJz5HcmVnb3J5IEJyb3duPC9hPjwv
|
285
|
+
bGk+CgogICAgICA8bGk+PGEgaHJlZj0iL3doeXJ1YnkiPk1vcmUgLi4uPC9h
|
286
|
+
PjwvbGk+CgogICAgPC91bD4KICA8L2xpPgogIDxkaXYgY2xhc3M9J2dyaWQt
|
287
|
+
Mic+PC9kaXY+CgogIDxsaSBpZD0id2h5cnVieSIgY2xhc3M9ImdyaWQtNyI+
|
288
|
+
CiAgICA8aDI+IDxhPkRvY3MgaW4gT3RoZXIgTGFuZ3VhZ2VzPC9hPjwvaDI+
|
289
|
+
CiAgICA8dWwgY2xhc3M9J21haW4tc3ViJz4KICAgICAgPGxpPjxhIGhyZWY9
|
290
|
+
Jy9mcic+RnJlbmNoIC8gRnJhbsOnYWlzPC9hPjwvbGk+CiAgICAgPGxpPjxh
|
291
|
+
IGhyZWY9Jy9kZSc+R2VybWFuIC8gRGV1dHNjaDwvYT48L2xpPgogICAgIDxs
|
292
|
+
aT48YSBocmVmPScvYmcnPkJ1bGdhcmlhbiAvINCx0YrQu9Cz0LDRgNGB0LrQ
|
293
|
+
uDwvYT48L2xpPgogICAgIDxsaT48YSBocmVmPScvZXMnPlNwYW5pc2ggLyBF
|
294
|
+
c3Bhw7FvbDwvYT48L2xpPgogICAgIDxsaT48YSBocmVmPScvcGwnPlBvbGlz
|
295
|
+
aCAvIFBvbHNraTwvYT48L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaSBj
|
296
|
+
bGFzcz0nYWR6Ym94LW1haW5fIGdyaWQtMSByaWdodCcgPgo8L2xpPgoKICA8
|
297
|
+
bGkgaWQ9J2Jvb2tzJyBjbGFzcz0iZ3JpZC03ICI+CiAgICA8aDI+PGEgaHJl
|
298
|
+
Zj0iaHR0cDovL2Jvb2tzLnJ1YnktZG9jLmNvbS9ib29rc3RvcmUiPlJ1Ynkg
|
299
|
+
Qm9va3M8L2E+PC9oMj4KICAgIDxwPlRoZXJlIGFyZSBhbiBpbmNyZWFzaW5n
|
300
|
+
IG51bWJlciBvZiBSdWJ5IGJvb2tzLiBUaGlzIHNlY3Rpb24gc2hvd3Mgd2hh
|
301
|
+
dCdzIGN1cnJlbnRseSBhdmFpbGFibGUuPC9wPgogICAgPHVsICBjbGFzcz0n
|
302
|
+
bWFpbi1zdWInPgogICAgICA8bGk+IDxzcGFuPiA8YSBocmVmPSJodHRwOi8v
|
303
|
+
Ym9va3MucnVieS1kb2MuY29tL2Jvb2tzdG9yZSMwOTc0NTE0MDU1Ij5Qcm9n
|
304
|
+
cmFtbWluZyBSdWJ5PC9hPiA8L3NwYW4+IDwvbGk+CiAgICAgIDxsaT4gPHNw
|
305
|
+
YW4+IDxhIGhyZWY9Imh0dHA6Ly9ib29rcy5ydWJ5LWRvYy5jb20vYm9va3N0
|
306
|
+
b3JlIzA2NzIzMjA4MzUiPlRoZSBSdWJ5IFdheTwvYT4gPC9zcGFuPiA8L2xp
|
307
|
+
PgogICAgICA8bGk+IDxzcGFuPiA8YSBocmVmPSJodHRwOi8vYm9va3MucnVi
|
308
|
+
eS1kb2MuY29tL2Jvb2tzdG9yZSMwOTc2Njk0MDQyIj5MZWFybiB0byBQcm9n
|
309
|
+
cmFtIHdpdGggUnVieTwvYT4gPC9zcGFuPiA8L2xpPgogICAgICA8bGk+IDxz
|
310
|
+
cGFuPiA8YSBocmVmPSJodHRwOi8vYm9va3MucnVieS1kb2MuY29tL2Jvb2tz
|
311
|
+
dG9yZSI+TW9yZSAuLi48L2E+IDwvc3Bhbj4gPC9saT4KICAgIDwvdWw+CiAg
|
312
|
+
PC9saT4KPC91bD4KCgoKPHVsIGNsYXNzPSJncmlkcyBpbmRleC1nMCIgaWQ9
|
313
|
+
J3Jvdy10aHJlZSc+CiAgPCEtLSAKICA8bGkgaWQ9J2Jvb2tzJyBjbGFzcz0i
|
314
|
+
Z3JpZC03ICI+CiAgICA8aDI+PGEgaHJlZj0iaHR0cDovL2Jvb2tzLnJ1Ynkt
|
315
|
+
ZG9jLmNvbS9ib29rc3RvcmUiPlJ1YnkgQm9va3M8L2E+PC9oMj4KICAgIDxw
|
316
|
+
PlRoZXJlIGFyZSBhbiBpbmNyZWFzaW5nIG51bWJlciBvZiBSdWJ5IGJvb2tz
|
317
|
+
LiBUaGlzIHNlY3Rpb24gc2hvd3Mgd2hhdCdzIGN1cnJlbnRseSBhdmFpbGFi
|
318
|
+
bGUuPC9wPgogICAgPHVsICBjbGFzcz0nbWFpbi1zdWInPgogICAgICA8bGk+
|
319
|
+
IDxzcGFuPiA8YSBocmVmPSJodHRwOi8vYm9va3MucnVieS1kb2MuY29tL2Jv
|
320
|
+
b2tzdG9yZSMwOTc0NTE0MDU1Ij5Qcm9ncmFtbWluZyBSdWJ5PC9hPiA8L3Nw
|
321
|
+
YW4+IDwvbGk+CiAgICAgIDxsaT4gPHNwYW4+IDxhIGhyZWY9Imh0dHA6Ly9i
|
322
|
+
b29rcy5ydWJ5LWRvYy5jb20vYm9va3N0b3JlIzA2NzIzMjA4MzUiPlRoZSBS
|
323
|
+
dWJ5IFdheTwvYT4gPC9zcGFuPiA8L2xpPgogICAgICA8bGk+IDxzcGFuPiA8
|
324
|
+
YSBocmVmPSJodHRwOi8vYm9va3MucnVieS1kb2MuY29tL2Jvb2tzdG9yZSMw
|
325
|
+
OTc2Njk0MDQyIj5MZWFybiB0byBQcm9ncmFtIHdpdGggUnVieTwvYT4gPC9z
|
326
|
+
cGFuPiA8L2xpPgogICAgICA8bGk+IDxzcGFuPiA8YSBocmVmPSJodHRwOi8v
|
327
|
+
Ym9va3MucnVieS1kb2MuY29tL2Jvb2tzdG9yZSI+TW9yZSAuLi48L2E+IDwv
|
328
|
+
c3Bhbj4gPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8ZGl2IGNsYXNzPSdn
|
329
|
+
cmlkLTInPjwvZGl2PgogIC0tPgogIDxsaSBpZD0nc3R1ZmYnIGNsYXNzPSJn
|
330
|
+
cmlkLTciPgogICAgPGgyPiA8YSBocmVmPSJodHRwOi8vd3d3LmNhZmVwcmVz
|
331
|
+
cy5jb20vcnVieXN0dWZmIj5SdWJ5IFN0dWZmPC9hPiA8L2gyPgogICAgPHA+
|
332
|
+
SGVscCBzdXBwb3J0IHRoaXMgc2l0ZSAtIHNjb3BlIG91dCB0aGUgZ29vZHMg
|
333
|
+
Zm9yIHNhbGUgYXQgCiAgICAgIDxhIGhyZWY9J2h0dHA6Ly93d3cuY2FmZXBy
|
334
|
+
ZXNzLmNvbS9ydWJ5c3R1ZmYnPlJ1YnlTdHVmZi48L2E+PC9wPgogICAgPHVs
|
335
|
+
IGNsYXNzPSdtYWluLXN1Yic+CiAgICAgIDxsaT48c3Bhbj48YSBocmVmPSJo
|
336
|
+
dHRwOi8vd3d3LmNhZmVwcmVzcy5jb20vcnVieXN0dWZmL3NfX3Qtc2hpcnRz
|
337
|
+
Ij5TaGlydHM8L2E+PC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3Bhbj48YSBo
|
338
|
+
cmVmPSJodHRwOi8vd3d3LmNhZmVwcmVzcy5jb20vcnVieXN0dWZmL3NfX211
|
339
|
+
Z3MiPkNvZmZlZSBtdWdzPC9hPjwvc3Bhbj48L2xpPgogICAgICA8bGk+PHNw
|
340
|
+
YW4+PGEgaHJlZj0iaHR0cDovL3d3dy5jYWZlcHJlc3MuY29tL3J1YnlzdHVm
|
341
|
+
Zi9zX19tb3VzZXBhZHMiPk1vdXNlIHBhZHM8L2E+PC9zcGFuPjwvbGk+CiAg
|
342
|
+
ICAgIDxsaT48c3Bhbj48YSBocmVmPSJodHRwOi8vd3d3LmNhZmVwcmVzcy5j
|
343
|
+
b20vcnVieXN0dWZmL3NfX3VuZGVyd2Vhci1wYW50aWVzIj5UaG9uZ3MgYW5k
|
344
|
+
IGJveGVyczwvYT48L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFuPjxhIGhy
|
345
|
+
ZWY9Imh0dHA6Ly93d3cuY2FmZXByZXNzLmNvbS9ydWJ5c3R1ZmYiPlNlZSBh
|
346
|
+
bGwgb2YgdGhlIGF2YWlsYWJsZSBkZXNpZ25zPC9hPjwvc3Bhbj48L2xpPgog
|
347
|
+
ICAgPC91bD4KICA8L2xpPgogIDxkaXYgY2xhc3M9J2dyaWQtMic+PC9kaXY+
|
348
|
+
CiAgPGxpIGlkPSdzdHVmZicgY2xhc3M9ImdyaWQtNyI+CgoKICAgIDxoMj48
|
349
|
+
YSBocmVmPScjJz5Nb3JlIFJ1YnktRG9jPC9hPjwvaDI+CiAgPHVsPgogICAg
|
350
|
+
PCEtLSBsaT48c3Bhbj48YSBocmVmPSIvYXJ0aWNsZXMvIj5Bc3NvcnRlZCBM
|
351
|
+
aW5rcyBhbmQgQXJ0aWNsZXM8L2E+PC9zcGFuPjwvbGkgLS0+CiAgICA8bGk+
|
352
|
+
PHNwYW4+PGEgaHJlZj0iL2RvY2Jhci8iPlJ1YnktRG9jIERvY2JhcjwvYT48
|
353
|
+
L3NwYW4+PC9saT4KICAgIDxsaT48c3Bhbj48YSBocmVmPSIvZG93bmxvYWRz
|
354
|
+
Ij5Eb3dubG9hZHM8L2E+PC9zcGFuPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0n
|
355
|
+
aHR0cDovL3J1YnlzcGVjLm9yZyc+VGhlIFJ1YnkgU3BlY2lmaWNhdGlvbiBQ
|
356
|
+
cm9qZWN0PC9hPjwvbGk+CiAgPC91bD4KCjwvbGk+CjwvdWw+CgoKCjwhLS0g
|
357
|
+
RU5EIElOREVYIC0tPgogCiAgPC9kaXY+CiAgCjwvZGl2PgoKCjxkaXYgY2xh
|
358
|
+
c3M9J2dyaWRzIGczJz4KICA8ZGl2IGNsYXNzPSdncmlkLTE2Jz4KICAgIAo8
|
359
|
+
IS0tIFNJREVCQVIgLS0+CiAgPGRpdiBpZD0nYWJvdXQnIGNsYXNzPSdncmlk
|
360
|
+
LTE2Jz4KCiAgPGgzPk1vcmUgUnVieS1Eb2M8L2gzPgogIDx1bD4KICAgIDwh
|
361
|
+
LS0gbGk+PHNwYW4+PGEgaHJlZj0iL2FydGljbGVzLyI+QXNzb3J0ZWQgTGlu
|
362
|
+
a3MgYW5kIEFydGljbGVzPC9hPjwvc3Bhbj48L2xpIC0tPgogICAgPGxpPjxz
|
363
|
+
cGFuPjxhIGhyZWY9Ii9kb2NiYXIvIj5SdWJ5LURvYyBEb2NiYXI8L2E+PC9z
|
364
|
+
cGFuPjwvbGk+CiAgICA8bGk+PHNwYW4+PGEgaHJlZj0iL2Rvd25sb2FkcyI+
|
365
|
+
RG93bmxvYWRzPC9hPjwvc3Bhbj48L2xpPgogICAgPGxpPjxhIGhyZWY9J2h0
|
366
|
+
dHA6Ly9ydWJ5c3BlYy5vcmcnPlRoZSBSdWJ5IFNwZWNpZmljYXRpb24gUHJv
|
367
|
+
amVjdDwvYT48L2xpPgogIDwvdWw+CjwvZGl2PgoKICA8IS0tIEVORCBPRiBT
|
368
|
+
SURFQkFSIC0tPgoKICA8L2Rpdj4KICAKPC9kaXY+CgoKPHNjcmlwdD4KICAo
|
369
|
+
ZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2Jq
|
370
|
+
ZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7CiAgKGlbcl0ucT1pW3Jd
|
371
|
+
LnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlbcl0ubD0xKm5ldyBEYXRlKCk7
|
372
|
+
YT1zLmNyZWF0ZUVsZW1lbnQobyksCiAgbT1zLmdldEVsZW1lbnRzQnlUYWdO
|
373
|
+
YW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1nO20ucGFyZW50Tm9kZS5pbnNl
|
374
|
+
cnRCZWZvcmUoYSxtKQogIH0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0Jywn
|
375
|
+
Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2En
|
376
|
+
KTsKCiAgZ2EoJ2NyZWF0ZScsICdVQS0zMzUzMTctMicsICdhdXRvJyk7CiAg
|
377
|
+
Z2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKCjwvc2NyaXB0PgoKCiAgPC9kaXY+
|
378
|
+
CiAgPGZvb3RlciBjbGFzcz0nd3JhcHBlcic+CgogICAgPGRpdiBpZD0iY29s
|
379
|
+
b3Bob24iIGNsYXNzPSdncmlkcyAgZzMnID4KICA8dWwgY2xhc3M9ImdyaWQt
|
380
|
+
NSI+CiAgICA8bGk+VGhlIHJ1YnktZG9jLm9yZyBSdWJ5IGRvY3VtZW50YXRp
|
381
|
+
b24gcHJvamVjdCBpcyBhbiBlZmZvcnQgYnkgdGhlIFJ1YnkgY29tbXVuaXR5
|
382
|
+
IHRvIHByb3ZpZGUgY29tcGxldGUgYW5kIGFjY3VyYXRlIGRvY3VtZW50YXRp
|
383
|
+
b24gZm9yIHRoZSBSdWJ5IHByb2dyYW1taW5nIGxhbmd1YWdlLjwvbGk+Cgog
|
384
|
+
IDwvdWw+CiAgPHVsIGNsYXNzPSJncmlkLTYgIj4KICAgIDxsaT5BY3R1YWwg
|
385
|
+
ZG9jdW1lbnRhdGlvbiBiZWxvbmdzIHRvIHRoZSByZXNwZWN0aXZlIGF1dGhv
|
386
|
+
cnMsIHdobyBkZXNlcnZlIHlvdXIgcmVjb2duaXRpb24gYW5kIHByYWlzZS48
|
387
|
+
L2xpPgogICAgPGxpPlNlZSBhIGJ1ZyBvciBvbWlzc2lvbiBpbiB0aGUgQVBJ
|
388
|
+
IGRvY3M/ICBWaXNpdCAgPGEgaHJlZj0naHR0cDovL2RvY3VtZW50aW5nLXJ1
|
389
|
+
Ynkub3JnJz5Eb2N1bWVudGluZy1ydWJ5Lm9yZzwvYT48L2xpPgogIDwvdWw+
|
390
|
+
CgogIDx1bCBjbGFzcz0iZ3JpZC01IHJpZ2h0Ij4KICAgIDxsaT5SdWJ5LWRv
|
391
|
+
Yy5vcmcgaXMgaG9zdGVkIGFuZCBtYWludGFpbmVkIGJ5IDxhIGhyZWY9Imh0
|
392
|
+
dHA6Ly93d3cuamFtZXNicml0dC5jb20iPkphbWVzIEJyaXR0PC9hPiBhbmQg
|
393
|
+
dGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cubmV1cm9nYW1pLmNvbSI+TmV1cm9n
|
394
|
+
YW1pPC9hPiBzZWNyZXQgbGFib3JhdG9yeTwvYT4uIDwvbGk+CgogIDwvdWw+
|
395
|
+
CgogIDx1bCBjbGFzcz0iZ3JpZC0xNiI+CiAgICA8bGk+UXVlc3Rpb25zPyBQ
|
396
|
+
cm9ibGVtcz8gUHJhaXNlPyBTdWdnZXN0aW9ucz8gV3JpdGUgdG8gPGEgaHJl
|
397
|
+
Zj0nbWFpbHRvOnN1Z2dlc3Rpb25zQHJ1YnktZG9jLm9yZyc+c3VnZ2VzdGlv
|
398
|
+
bnNAcnVieS1kb2Mub3JnPC9hPjwvbGk+IAogICAgPGxpPjxlbT5Vc2UgUnVi
|
399
|
+
eS4gQmUgaGFwcHkuPC9lbT48L2xpPgogIDwvdWw+CjwvZGl2PgoKCiAgPC9m
|
400
|
+
b290ZXI+CgogIDxzY3JpcHQgIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAg
|
401
|
+
dmFyIGluZGV4X2NvcmUgPSAyOwogICB2YXIgaW5kZXhfc3RkbGliID0gMTsK
|
402
|
+
CgpmdW5jdGlvbiBzaG93SXRlbXNDb3JlKCkgewogICAgJCh0aGlzKS50ZXh0
|
403
|
+
KCdoaWRlJyk7CiAgICAkKCd1bCNjb3JlLWFwaS1saXN0IGxpOmd0KCcraW5k
|
404
|
+
ZXhfY29yZSsnKScpLnNob3coKTsKICAgIH0KCmZ1bmN0aW9uIGhpZGVJdGVt
|
405
|
+
c0NvcmUoKSB7CiAgICAkKHRoaXMpLnRleHQoJ21vcmUuLi4nKTsKICAgICQo
|
406
|
+
J3VsI2NvcmUtYXBpLWxpc3QgbGk6Z3QoJytpbmRleF9jb3JlKycpOm5vdCgu
|
407
|
+
bW9yZSknKS5oaWRlKCk7Cn0KCmZ1bmN0aW9uIHNob3dJdGVtc1N0ZGxpYigp
|
408
|
+
IHsKICAgICQodGhpcykudGV4dCgnaGlkZScpOwogICAgJCgndWwjc3RkbGli
|
409
|
+
LWFwaS1saXN0IGxpOmd0KCcraW5kZXhfc3RkbGliKycpJykuc2hvdygpOwp9
|
410
|
+
CmZ1bmN0aW9uIGhpZGVJdGVtc1N0ZGxpYigpIHsKICAgICQodGhpcykudGV4
|
411
|
+
dCgnbW9yZS4uLicpOwogICAgJCgndWwjc3RkbGliLWFwaS1saXN0IGxpOmd0
|
412
|
+
KCcraW5kZXhfc3RkbGliKycpOm5vdCgubW9yZSknKS5oaWRlKCk7Cn0KICAg
|
413
|
+
ICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgICAkLmFqYXhT
|
414
|
+
ZXR1cCh7IGNhY2hlOiBmYWxzZSB9KTsKICAKICAgICAkKCd1bCNjb3JlLWFw
|
415
|
+
aS1saXN0IGxpOmd0KCcraW5kZXhfY29yZSsnKScpLmhpZGUoKTsKICAgICAg
|
416
|
+
JCgndWwjY29yZS1hcGktbGlzdCcpLmFwcGVuZCgnPGxpIGNsYXNzPSJtb3Jl
|
417
|
+
Ij48YSBocmVmPSIjIj5tb3JlLi4uPC9hPjwvbGk+Jyk7CiAgICAgICQoJ3Vs
|
418
|
+
I2NvcmUtYXBpLWxpc3QgbGkubW9yZSBhJykudG9nZ2xlKHNob3dJdGVtc0Nv
|
419
|
+
cmUsIGhpZGVJdGVtc0NvcmUpOwoKICAgICAkKCd1bCNzdGRsaWItYXBpLWxp
|
420
|
+
c3QgbGk6Z3QoJytpbmRleF9zdGRsaWIrJyknKS5oaWRlKCk7CiAgICAgICQo
|
421
|
+
J3VsI3N0ZGxpYi1hcGktbGlzdCcpLmFwcGVuZCgnPGxpIGNsYXNzPSJtb3Jl
|
422
|
+
Ij48YSBocmVmPSIjIj5tb3JlLi4uPC9hPjwvbGk+Jyk7CiAgICAgICQoJ3Vs
|
423
|
+
I3N0ZGxpYi1hcGktbGlzdCBsaS5tb3JlIGEnKS50b2dnbGUoc2hvd0l0ZW1z
|
424
|
+
U3RkbGliLCBoaWRlSXRlbXNTdGRsaWIpOwoKICAgICAgJCgiI3Z1bG5zLWFs
|
425
|
+
ZXJ0IikubG9hZCgiL2Fzc29jaWF0ZWQvdnVsbnMuaHRtbCIpOwoKCiAgICB9
|
426
|
+
KTsKCjwvc2NyaXB0PgoKCiA8L2JvZHk+CjwvaHRtbD4KCgo=
|
427
|
+
http_version:
|
428
|
+
recorded_at: Fri, 14 Aug 2015 18:05:20 GMT
|
429
|
+
- request:
|
430
|
+
method: get
|
431
|
+
uri: http://ogp.me/
|
432
|
+
body:
|
433
|
+
encoding: US-ASCII
|
434
|
+
string: ''
|
435
|
+
headers:
|
436
|
+
Accept-Encoding:
|
437
|
+
- gzip,deflate,identity
|
438
|
+
Accept:
|
439
|
+
- "*/*"
|
440
|
+
User-Agent:
|
441
|
+
- Mechanize/2.7.3 Ruby/2.1.2p95 (http://github.com/sparklemotion/mechanize/)
|
442
|
+
Accept-Charset:
|
443
|
+
- ISO-8859-1,utf-8;q=0.7,*;q=0.7
|
444
|
+
Accept-Language:
|
445
|
+
- en-us,en;q=0.5
|
446
|
+
Host:
|
447
|
+
- ogp.me
|
448
|
+
Connection:
|
449
|
+
- keep-alive
|
450
|
+
Keep-Alive:
|
451
|
+
- 300
|
452
|
+
response:
|
453
|
+
status:
|
454
|
+
code: 200
|
455
|
+
message: OK
|
456
|
+
headers:
|
457
|
+
Connection:
|
458
|
+
- keep-alive
|
459
|
+
Date:
|
460
|
+
- Fri, 14 Aug 2015 19:03:04 GMT
|
461
|
+
Server:
|
462
|
+
- Apache/2.4.10 (Unix)
|
463
|
+
X-Powered-By:
|
464
|
+
- PHP/5.6.2
|
465
|
+
Transfer-Encoding:
|
466
|
+
- chunked
|
467
|
+
Content-Type:
|
468
|
+
- text/html; charset=UTF-8
|
469
|
+
Via:
|
470
|
+
- 1.1 vegur
|
471
|
+
body:
|
472
|
+
encoding: UTF-8
|
473
|
+
string: "<!DOCTYPE html>\n<html>\n <head prefix=\"og: http://ogp.me/ns#\">\n
|
474
|
+
\ <meta charset=\"utf-8\">\n <title>The Open Graph protocol</title>\n
|
475
|
+
\ <meta name=\"description\" content=\"The Open Graph protocol enables any
|
476
|
+
web page to become a rich object in a social graph.\">\n <script type=\"text/javascript\">var
|
477
|
+
_sf_startpt=(new Date()).getTime()</script>\n <link rel=\"stylesheet\"
|
478
|
+
href=\"base.css\" type=\"text/css\">\n <meta property=\"og:title\" content=\"Open
|
479
|
+
Graph protocol\">\n <meta property=\"og:type\" content=\"website\">\n <meta
|
480
|
+
property=\"og:url\" content=\"http://ogp.me/\">\n <meta property=\"og:image\"
|
481
|
+
content=\"http://ogp.me/logo.png\">\n <meta property=\"og:image:type\"
|
482
|
+
content=\"image/png\">\n <meta property=\"og:image:width\" content=\"300\">\n
|
483
|
+
\ <meta property=\"og:image:height\" content=\"300\">\n <meta property=\"og:description\"
|
484
|
+
content=\"The Open Graph protocol enables any web page to become a rich object
|
485
|
+
in a social graph.\">\n <meta prefix=\"fb: http://ogp.me/ns/fb#\" property=\"fb:app_id\"
|
486
|
+
content=\"115190258555800\">\n <link rel=\"alternate\" type=\"application/rdf+xml\"
|
487
|
+
href=\"http://ogp.me/ns/ogp.me.rdf\">\n <link rel=\"alternate\" type=\"text/turtle\"
|
488
|
+
href=\"http://ogp.me/ns/ogp.me.ttl\">\n </head>\n <body>\n <div id=\"body\">\n
|
489
|
+
\ <div id=\"header\">\n <h1>The Open Graph protocol</h1>\n <img
|
490
|
+
alt=\"Open Graph protocol logo\" src=\"http://ogp.me/logo.png\" width=\"300\"
|
491
|
+
height=\"300\">\n </div>\n <div id=\"content\">\n <h2><a id=\"intro\"
|
492
|
+
href=\"#intro\">Introduction</a></h2>\n\n<p>The <a href=\"http://ogp.me/\">Open
|
493
|
+
Graph protocol</a> enables any web page to become a\nrich object in a social
|
494
|
+
graph. For instance, this is used on Facebook to allow\nany web page to have
|
495
|
+
the same functionality as any other object on Facebook.</p>\n\n<p>While many
|
496
|
+
different technologies and schemas exist and could be combined\ntogether,
|
497
|
+
there isn't a single technology which provides enough information to\nrichly
|
498
|
+
represent any web page within the social graph. The Open Graph protocol\nbuilds
|
499
|
+
on these existing technologies and gives developers one thing to\nimplement.
|
500
|
+
Developer simplicity is a key goal of the Open Graph protocol which\nhas informed
|
501
|
+
many of\n<a href=\"http://www.scribd.com/doc/30715288/The-Open-Graph-Protocol-Design-Decisions\">the
|
502
|
+
technical design decisions</a>.</p>\n\n<hr />\n\n<h2><a id=\"metadata\" href=\"#metadata\">Basic
|
503
|
+
Metadata</a></h2>\n\n<p>To turn your web pages into graph objects, you need
|
504
|
+
to add basic metadata to\nyour page. We've based the initial version of the
|
505
|
+
protocol on\n<a href=\"http://en.wikipedia.org/wiki/RDFa\">RDFa</a> which
|
506
|
+
means that you'll place\nadditional <code><meta></code> tags in the
|
507
|
+
<code><head></code> of your web page. The four required\nproperties
|
508
|
+
for every page are:</p>\n\n<ul>\n<li><code>og:title</code> - The title of
|
509
|
+
your object as it should appear within the graph,\ne.g., \"The Rock\".</li>\n<li><code>og:type</code>
|
510
|
+
- The <a href=\"#types\">type</a> of your object, e.g., \"video.movie\". Depending
|
511
|
+
on\nthe type you specify, other properties may also be required.</li>\n<li><code>og:image</code>
|
512
|
+
- An image URL which should represent your object within the\ngraph.</li>\n<li><code>og:url</code>
|
513
|
+
- The canonical URL of your object that will be used as its\npermanent ID
|
514
|
+
in the graph, e.g., \"http://www.imdb.com/title/tt0117500/\".</li>\n</ul>\n\n<p>As
|
515
|
+
an example, the following is the Open Graph protocol markup for <a href=\"http://www.imdb.com/title/tt0117500/\">The
|
516
|
+
Rock on\nIMDB</a>:</p>\n\n<pre><code><html prefix=\"og: http://ogp.me/ns#\">\n<head>\n<title>The
|
517
|
+
Rock (1996)</title>\n<meta property=\"og:title\" content=\"The Rock\"
|
518
|
+
/>\n<meta property=\"og:type\" content=\"video.movie\" />\n<meta
|
519
|
+
property=\"og:url\" content=\"http://www.imdb.com/title/tt0117500/\" />\n<meta
|
520
|
+
property=\"og:image\" content=\"http://ia.media-imdb.com/images/rock.jpg\"
|
521
|
+
/>\n...\n</head>\n...\n</html>\n</code></pre>\n\n<h3><a id=\"optional\"
|
522
|
+
href=\"#optional\">Optional Metadata</a></h3>\n\n<p>The following properties
|
523
|
+
are optional for any object and are generally\nrecommended:</p>\n\n<ul>\n<li><code>og:audio</code>
|
524
|
+
- A URL to an audio file to accompany this object.</li>\n<li><code>og:description</code>
|
525
|
+
- A one to two sentence description of your object.</li>\n<li><code>og:determiner</code>
|
526
|
+
- The word that appears before this object's title\nin a sentence. An <a href=\"#enum\">enum</a>
|
527
|
+
of (a, an, the, \"\", auto). If <code>auto</code> is \nchosen, the consumer
|
528
|
+
of your data should chose between \"a\" or \"an\".\nDefault is \"\" (blank).</li>\n<li><code>og:locale</code>
|
529
|
+
- The locale these tags are marked up in.\nOf the format <code>language_TERRITORY</code>.
|
530
|
+
Default is <code>en_US</code>.</li>\n<li><code>og:locale:alternate</code>
|
531
|
+
- An <a href=\"#array\">array</a> of other locales this page is \navailable
|
532
|
+
in.</li>\n<li><code>og:site_name</code> - If your object is part of a larger
|
533
|
+
web site, the name which\nshould be displayed for the overall site. e.g.,
|
534
|
+
\"IMDb\".</li>\n<li><code>og:video</code> - A URL to a video file that complements
|
535
|
+
this object.</li>\n</ul>\n\n<p>For example (line-break solely for display
|
536
|
+
purposes):</p>\n\n<pre><code><meta property=\"og:audio\" content=\"http://example.com/bond/theme.mp3\"
|
537
|
+
/>\n<meta property=\"og:description\" \n content=\"Sean Connery found
|
538
|
+
fame and fortune as the\n suave, sophisticated British agent, James
|
539
|
+
Bond.\" />\n<meta property=\"og:determiner\" content=\"the\" />\n<meta
|
540
|
+
property=\"og:locale\" content=\"en_GB\" />\n<meta property=\"og:locale:alternate\"
|
541
|
+
content=\"fr_FR\" />\n<meta property=\"og:locale:alternate\" content=\"es_ES\"
|
542
|
+
/>\n<meta property=\"og:site_name\" content=\"IMDb\" />\n<meta
|
543
|
+
property=\"og:video\" content=\"http://example.com/bond/trailer.swf\" />\n</code></pre>\n\n<p>The
|
544
|
+
RDF schema (in <a href=\"http://en.wikipedia.org/wiki/Turtle_(syntax)\">Turtle</a>)
|
545
|
+
\ncan be found at <a href=\"http://ogp.me/ns/ogp.me.ttl\">ogp.me/ns</a>.</p>\n\n<hr
|
546
|
+
/>\n\n<h2><a id=\"structured\" href=\"#structured\">Structured Properties</a></h2>\n\n<p>Some
|
547
|
+
properties can have extra metadata attached to them.\nThese are specified
|
548
|
+
in the same way as other metadata with <code>property</code> and\n<code>content</code>,
|
549
|
+
but the <code>property</code> will have extra <code>:</code>.</p>\n\n<p>The
|
550
|
+
<code>og:image</code> property has some optional structured properties:</p>\n\n<ul>\n<li><code>og:image:url</code>
|
551
|
+
- Identical to <code>og:image</code>.</li>\n<li><code>og:image:secure_url</code>
|
552
|
+
- An alternate url to use if the webpage requires\nHTTPS.</li>\n<li><code>og:image:type</code>
|
553
|
+
- A <a href=\"http://en.wikipedia.org/wiki/Internet_media_type\">MIME type</a>
|
554
|
+
for this image.</li>\n<li><code>og:image:width</code> - The number of pixels
|
555
|
+
wide.</li>\n<li><code>og:image:height</code> - The number of pixels high.</li>\n</ul>\n\n<p>A
|
556
|
+
full image example:</p>\n\n<pre><code><meta property=\"og:image\" content=\"http://example.com/ogp.jpg\"
|
557
|
+
/>\n<meta property=\"og:image:secure_url\" content=\"https://secure.example.com/ogp.jpg\"
|
558
|
+
/>\n<meta property=\"og:image:type\" content=\"image/jpeg\" />\n<meta
|
559
|
+
property=\"og:image:width\" content=\"400\" />\n<meta property=\"og:image:height\"
|
560
|
+
content=\"300\" />\n</code></pre>\n\n<p>The <code>og:video</code> tag has
|
561
|
+
the identical tags as <code>og:image</code>. Here is an example:</p>\n\n<pre><code><meta
|
562
|
+
property=\"og:video\" content=\"http://example.com/movie.swf\" />\n<meta
|
563
|
+
property=\"og:video:secure_url\" content=\"https://secure.example.com/movie.swf\"
|
564
|
+
/>\n<meta property=\"og:video:type\" content=\"application/x-shockwave-flash\"
|
565
|
+
/>\n<meta property=\"og:video:width\" content=\"400\" />\n<meta
|
566
|
+
property=\"og:video:height\" content=\"300\" />\n</code></pre>\n\n<p>The
|
567
|
+
<code>og:audio</code> tag only has the first 3 properties available\n(since
|
568
|
+
size doesn't make sense for sound):</p>\n\n<pre><code><meta property=\"og:audio\"
|
569
|
+
content=\"http://example.com/sound.mp3\" />\n<meta property=\"og:audio:secure_url\"
|
570
|
+
content=\"https://secure.example.com/sound.mp3\" />\n<meta property=\"og:audio:type\"
|
571
|
+
content=\"audio/mpeg\" />\n</code></pre>\n\n<hr />\n\n<h2><a id=\"array\"
|
572
|
+
href=\"#array\">Arrays</a></h2>\n\n<p>If a tag can have multiple values, just
|
573
|
+
put multiple versions of the same\n<code><meta></code> tag on your page.
|
574
|
+
The first tag (from top to bottom) is given\npreference during conflicts.</p>\n\n<pre><code><meta
|
575
|
+
property=\"og:image\" content=\"http://example.com/rock.jpg\" />\n<meta
|
576
|
+
property=\"og:image\" content=\"http://example.com/rock2.jpg\" />\n</code></pre>\n\n<p>Put
|
577
|
+
structured properties after you declare their root tag. Whenever\nanother
|
578
|
+
root element is parsed, that structured property\nis considered to be done
|
579
|
+
and another one is started.</p>\n\n<p>For example:</p>\n\n<pre><code><meta
|
580
|
+
property=\"og:image\" content=\"http://example.com/rock.jpg\" />\n<meta
|
581
|
+
property=\"og:image:width\" content=\"300\" />\n<meta property=\"og:image:height\"
|
582
|
+
content=\"300\" />\n<meta property=\"og:image\" content=\"http://example.com/rock2.jpg\"
|
583
|
+
/>\n<meta property=\"og:image\" content=\"http://example.com/rock3.jpg\"
|
584
|
+
/>\n<meta property=\"og:image:height\" content=\"1000\" />\n</code></pre>\n\n<p>means
|
585
|
+
there are 3 images on this page, the first image is <code>300x300</code>,
|
586
|
+
the middle\none has unspecified dimensions, and the last one is <code>1000</code>px
|
587
|
+
tall.</p>\n\n<hr />\n\n<h2><a id=\"types\" href=\"#types\">Object Types</a></h2>\n\n<p>In
|
588
|
+
order for your object to be represented within the graph, you need to\nspecify
|
589
|
+
its type. This is done using the <code>og:type</code> property:</p>\n\n<pre><code><meta
|
590
|
+
property=\"og:type\" content=\"website\" />\n</code></pre>\n\n<p>When the
|
591
|
+
community agrees on the schema for a type, it is added to the list\nof global
|
592
|
+
types. All other objects in the type system are\n<a href=\"http://en.wikipedia.org/wiki/CURIE\">CURIEs</a>
|
593
|
+
of the form</p>\n\n<pre><code><head prefix=\"my_namespace: http://example.com/ns#\">\n<meta
|
594
|
+
property=\"og:type\" content=\"my_namespace:my_type\" />\n</code></pre>\n\n<p>The
|
595
|
+
global types are grouped into verticals. Each vertical has its\nown namespace.
|
596
|
+
The <code>og:type</code> values for a namespace are always prefixed with\nthe
|
597
|
+
namespace and then a period.\nThis is to reduce confusion with user-defined
|
598
|
+
namespaced types which always\nhave colons in them.</p>\n\n<h3><a id=\"type_music\"
|
599
|
+
href=\"#type_music\">Music</a></h3>\n\n<ul>\n<li>Namespace URI: <a href=\"http://ogp.me/ns/music\"><code>http://ogp.me/ns/music#</code></a></li>\n</ul>\n\n<p><code>og:type</code>
|
600
|
+
values:</p>\n\n<p><a name=\"type_music.song\" href=\"#type_music.song\"><code>music.song</code></a></p>\n\n<ul>\n<li><code>music:duration</code>
|
601
|
+
- <a href=\"#integer\">integer</a> >=1 - The song's length in seconds.</li>\n<li><code>music:album</code>
|
602
|
+
- <a href=\"#type_music.album\">music.album</a> <a href=\"#array\">array</a>
|
603
|
+
-\nThe album this song is from.</li>\n<li><code>music:album:disc</code> -
|
604
|
+
<a href=\"#integer\">integer</a> >=1 -\nWhich disc of the album this song
|
605
|
+
is on.</li>\n<li><code>music:album:track</code> - <a href=\"#integer\">integer</a>
|
606
|
+
>=1 -\nWhich track this song is.</li>\n<li><code>music:musician</code>
|
607
|
+
- <a href=\"#type_profile\">profile</a> <a href=\"#array\">array</a> -\nThe
|
608
|
+
musician that made this song.</li>\n</ul>\n\n<p><a name=\"type_music.album\"
|
609
|
+
href=\"#type_music.album\"><code>music.album</code></a></p>\n\n<ul>\n<li><code>music:song</code>
|
610
|
+
- <a href=\"#type_music.song\">music.song</a> - The song on this album.</li>\n<li><code>music:song:disc</code>
|
611
|
+
- <a href=\"#integer\">integer</a> >=1 -\nThe same as <code>music:album:disc</code>
|
612
|
+
but in reverse.</li>\n<li><code>music:song:track</code> - <a href=\"#integer\">integer</a>
|
613
|
+
>=1 -\nThe same as <code>music:album:track</code> but in reverse.</li>\n<li><code>music:musician</code>
|
614
|
+
- <a href=\"#type_profile\">profile</a> -\nThe musician that made this song.</li>\n<li><code>music:release_date</code>
|
615
|
+
- <a href=\"#datetime\">datetime</a> - \nThe date the album was released.</li>\n</ul>\n\n<p><a
|
616
|
+
name=\"type_music.playlist\" href=\"#type_music.playlist\"><code>music.playlist</code></a></p>\n\n<ul>\n<li><code>music:song</code>
|
617
|
+
- Identical to the ones on <a href=\"#type_music.album\">music.album</a></li>\n<li><code>music:song:disc</code></li>\n<li><code>music:song:track</code></li>\n<li><code>music:creator</code>
|
618
|
+
- <a href=\"#type_profile\">profile</a> - The creator of this playlist.</li>\n</ul>\n\n<p><a
|
619
|
+
name=\"type_music.radio_station\" href=\"#type_music.radio_station\"><code>music.radio_station</code></a></p>\n\n<ul>\n<li><code>music:creator</code>
|
620
|
+
- <a href=\"#type_profile\">profile</a> - The creator of this station.</li>\n</ul>\n\n<h3><a
|
621
|
+
id=\"type_video\" href=\"#type_video\">Video</a></h3>\n\n<ul>\n<li>Namespace
|
622
|
+
URI: <a href=\"http://ogp.me/ns/video\"><code>http://ogp.me/ns/video#</code></a></li>\n</ul>\n\n<p><code>og:type</code>
|
623
|
+
values:</p>\n\n<p><a name=\"type_video.movie\" href=\"#type_video.movie\"><code>video.movie</code></a></p>\n\n<ul>\n<li><code>video:actor</code>
|
624
|
+
- <a href=\"#type_profile\">profile</a> <a href=\"#array\">array</a> -\nActors
|
625
|
+
in the movie.</li>\n<li><code>video:actor:role</code> - <a href=\"#string\">string</a>
|
626
|
+
- The role they played.</li>\n<li><code>video:director</code> - <a href=\"#type_profile\">profile</a>
|
627
|
+
<a href=\"#array\">array</a> -\nDirectors of the movie.</li>\n<li><code>video:writer</code>
|
628
|
+
- <a href=\"#type_profile\">profile</a> <a href=\"#array\">array</a> -\nWriters
|
629
|
+
of the movie.</li>\n<li><code>video:duration</code> - <a href=\"#integer\">integer</a>
|
630
|
+
>=1 - \nThe movie's length in seconds.</li>\n<li><code>video:release_date</code>
|
631
|
+
- <a href=\"#datetime\">datetime</a> - \nThe date the movie was released.</li>\n<li><code>video:tag</code>
|
632
|
+
- <a href=\"#string\">string</a> <a href=\"#array\">array</a> -\nTag words
|
633
|
+
associated with this movie.</li>\n</ul>\n\n<p><a name=\"type_video.episode\"
|
634
|
+
href=\"#type_video.episode\"><code>video.episode</code></a></p>\n\n<ul>\n<li><code>video:actor</code>
|
635
|
+
- Identical to <a href=\"#type_video.movie\">video.movie</a></li>\n<li><code>video:actor:role</code></li>\n<li><code>video:director</code></li>\n<li><code>video:writer</code></li>\n<li><code>video:duration</code></li>\n<li><code>video:release_date</code></li>\n<li><code>video:tag</code></li>\n<li><code>video:series</code>
|
636
|
+
- <a href=\"#type_video.tv_show\">video.tv_show</a> -\nWhich series this episode
|
637
|
+
belongs to.</li>\n</ul>\n\n<p><a name=\"type_video.tv_show\" href=\"#type_video.tv_show\"><code>video.tv_show</code></a></p>\n\n<p>A
|
638
|
+
multi-episode TV show.\nThe metadata is identical to <a href=\"#type_video.movie\">video.movie</a>.</p>\n\n<p><a
|
639
|
+
name=\"type_video.other\" href=\"#type_video.other\"><code>video.other</code></a></p>\n\n<p>A
|
640
|
+
video that doesn't belong in any other category.\nThe metadata is identical
|
641
|
+
to <a href=\"#type_video.movie\">video.movie</a>.</p>\n\n<h3><a id=\"no_vertical\"
|
642
|
+
href=\"#no_vertical\">No Vertical</a></h3>\n\n<p>These are globally defined
|
643
|
+
objects that just don't fit into a vertical but\nyet are broadly used and
|
644
|
+
agreed upon.</p>\n\n<p><code>og:type</code> values:</p>\n\n<p><a name=\"type_article\"
|
645
|
+
href=\"#type_article\"><code>article</code></a> - Namespace URI: <a href=\"http://ogp.me/ns/article\"><code>http://ogp.me/ns/article#</code></a></p>\n\n<ul>\n<li><code>article:published_time</code>
|
646
|
+
- <a href=\"#datetime\">datetime</a> - \nWhen the article was first published.</li>\n<li><code>article:modified_time</code>
|
647
|
+
- <a href=\"#datetime\">datetime</a> - \nWhen the article was last changed.</li>\n<li><code>article:expiration_time</code>
|
648
|
+
- <a href=\"#datetime\">datetime</a> - \nWhen the article is out of date after.</li>\n<li><code>article:author</code>
|
649
|
+
- <a href=\"#type_profile\">profile</a> <a href=\"#array\">array</a> -\nWriters
|
650
|
+
of the article.</li>\n<li><code>article:section</code> - <a href=\"#string\">string</a>
|
651
|
+
- A high-level section name. E.g. Technology</li>\n<li><code>article:tag</code>
|
652
|
+
- <a href=\"#string\">string</a> <a href=\"#array\">array</a> -\nTag words
|
653
|
+
associated with this article.</li>\n</ul>\n\n<p><a name=\"type_book\" href=\"#type_book\"><code>book</code></a>
|
654
|
+
- Namespace URI: <a href=\"http://ogp.me/ns/book\"><code>http://ogp.me/ns/book#</code></a></p>\n\n<ul>\n<li><code>book:author</code>
|
655
|
+
- <a href=\"#type_profile\">profile</a> <a href=\"#array\">array</a> - Who
|
656
|
+
wrote this book.</li>\n<li><code>book:isbn</code> - <a href=\"#string\">string</a>
|
657
|
+
-\nThe <a href=\"http://en.wikipedia.org/wiki/International_Standard_Book_Number\">ISBN</a></li>\n<li><code>book:release_date</code>
|
658
|
+
- <a href=\"#datetime\">datetime</a> - The date the book was released.</li>\n<li><code>book:tag</code>
|
659
|
+
- <a href=\"#string\">string</a> <a href=\"#array\">array</a> -\nTag words
|
660
|
+
associated with this book.</li>\n</ul>\n\n<p><a name=\"type_profile\" href=\"#type_profile\"><code>profile</code></a>
|
661
|
+
- Namespace URI: <a href=\"http://ogp.me/ns/profile\"><code>http://ogp.me/ns/profile#</code></a></p>\n\n<ul>\n<li><code>profile:first_name</code>
|
662
|
+
- <a href=\"#string\">string</a> - A name normally given to an individual
|
663
|
+
by a parent or self-chosen.</li>\n<li><code>profile:last_name</code> - <a
|
664
|
+
href=\"#string\">string</a> - A name inherited from a family or marriage and
|
665
|
+
by which the individual is commonly known.</li>\n<li><code>profile:username</code>
|
666
|
+
- <a href=\"#string\">string</a> - A short unique string to identify them.</li>\n<li><code>profile:gender</code>
|
667
|
+
- <a href=\"#enum\">enum</a>(male, female) - Their gender.</li>\n</ul>\n\n<p><a
|
668
|
+
name=\"type_website\" href=\"#type_website\"><code>website</code></a> - Namespace
|
669
|
+
URI: <a href=\"http://ogp.me/ns/website\"><code>http://ogp.me/ns/website#</code></a></p>\n\n<p>No
|
670
|
+
additional properties other than the basic ones.\nAny non-marked up webpage
|
671
|
+
should be treated as <code>og:type</code> website.</p>\n\n<hr />\n\n<h2><a
|
672
|
+
id=\"data_types\" href=\"#data_types\">Types</a></h2>\n\n<p>The following
|
673
|
+
types are used when defining attributes in Open Graph protocol.</p>\n\n<table>\n<tr>\n
|
674
|
+
\ <th width=150><b>Type</b></th>\n <th width=300><b>Description</b></th>\n
|
675
|
+
\ <th width=200><b>Literals</b></th>\n</tr>\n\n<tr>\n <td><a name=\"bool\"
|
676
|
+
href=\"#bool\">Boolean</td>\n <td>A Boolean represents a true or false value</td>\n
|
677
|
+
\ <td>true, false, 1, 0</td>\n</tr>\n\n<tr>\n <td><a name=\"datetime\" href=\"#datetime\">DateTime</td>\n
|
678
|
+
\ <td>A DateTime represents a temporal value composed of a date\n (year,
|
679
|
+
month, day) and an optional time component (hours, minutes)</td>\n <td><a
|
680
|
+
href=\"http://en.wikipedia.org/wiki/ISO_8601\">ISO 8601</a></td>\n</tr>\n\n<tr>\n
|
681
|
+
\ <td><a name=\"enum\" href=\"#enum\">Enum</td>\n <td>A type consisting of
|
682
|
+
bounded set of constant string values \n (enumeration members).\n <td>A
|
683
|
+
string value that is a member of the enumeration</td>\n</tr>\n\n<tr>\n <td><a
|
684
|
+
name=\"float\" href=\"#float\">Float</td>\n <td>A 64-bit signed floating
|
685
|
+
point number</td>\n <td>All literals that conform to the following formats:<br><br>\n1.234<br>\n-1.234<br>\n1.2e3<br>\n-1.2e3<br>\n7E-10<br>\n</td>\n</tr>\n\n<tr>\n
|
686
|
+
\ <td><a name=\"integer\" href=\"#integer\">Integer</td>\n <td>A 32-bit signed
|
687
|
+
integer. In many languages integers over 32-bits become \n floats, so we
|
688
|
+
limit Open Graph protocol for easy multi-language use.</td>\n <td>All literals
|
689
|
+
that conform to the following formats:<br><br>\n1234<br>\n-123<br>\n</td>\n</tr>\n\n<tr>\n
|
690
|
+
\ <td><a name=\"string\" href=\"#string\">String</td>\n <td>A sequence of
|
691
|
+
Unicode characters</td>\n <td>All literals composed of Unicode characters
|
692
|
+
with no escape characters</td>\n</tr>\n\n<tr>\n <td><a name=\"url\" href=\"#url\">URL</td>\n
|
693
|
+
\ <td>A sequence of Unicode characters that identify an Internet resource.\n
|
694
|
+
\ <td>All valid URLs that utilize the http:// or https:// protocols</td>\n</tr>\n\n</table>\n\n<hr
|
695
|
+
/>\n\n<h2><a id='discuss' href=\"#discuss\">Discussion and support</a></h2>\n\n<p>You
|
696
|
+
can discuss the Open Graph Protocol in\n<a href=\"https://www.facebook.com/groups/opengraph/\">the
|
697
|
+
Facebook group</a> or on \n<a href=\"http://groups.google.com/group/open-graph-protocol\">the
|
698
|
+
developer mailing list</a>.\nIt is currently being consumed by Facebook\n(<a
|
699
|
+
href=\"http://developers.facebook.com/docs/opengraph/\">see their documentation</a>),
|
700
|
+
Google (<a href=\"https://developers.google.com/+/web/+1button/#plus-snippet\">see
|
701
|
+
their documentation</a>), and\n<a href=\"http://developer.mixi.co.jp/en/connect/mixi_plugin/mixi_check/spec_mixi_check/\">mixi</a>.\nIt
|
702
|
+
is being published by IMDb, Microsoft, NHL, Posterous, Rotten Tomatoes,\nTIME,
|
703
|
+
Yelp, and many many others.</p>\n\n<hr />\n\n<h2><a id='implementations' href=\"#implementations\">Implementations</a></h2>\n\n<p>The
|
704
|
+
open source community has developed a number of parsers and publishing\ntools.
|
705
|
+
Let the Facebook group know if you've built something awesome too!</p>\n\n<ul>\n<li><a
|
706
|
+
href=\"http://developers.facebook.com/tools/debug/\">Facebook Object Debugger</a>
|
707
|
+
-\nFacebook's official parser and debugger</li>\n<li><a href=\"http://www.google.com/webmasters/tools/richsnippets\">Google
|
708
|
+
Rich Snippets Testing Tool</a> - Open Graph protocol support in specific verticals
|
709
|
+
and Search Engines.</li>\n<li><a href=\"https://github.com/niallkennedy/open-graph-protocol-tools\">PHP
|
710
|
+
Validator and Markup Generator</a> - OGP 2011 input validator and markup
|
711
|
+
generator in PHP5 objects</li>\n<li><a href=\"http://github.com/scottmac/opengraph\">PHP
|
712
|
+
Consumer</a> -\na small library for accessing of Open Graph Protocol data
|
713
|
+
in PHP</li>\n<li><a href=\"http://buzzword.org.uk/2010/opengraph/#php\">OpenGraphNode
|
714
|
+
in PHP</a> -\na simple parser for PHP</li>\n<li><a href=\"http://pypi.python.org/pypi/PyOpenGraph\">PyOpenGraph</a>
|
715
|
+
-\na library written in Python for parsing Open Graph protocol\ninformation
|
716
|
+
from web sites</li>\n<li><a href=\"http://github.com/intridea/opengraph\">OpenGraph
|
717
|
+
Ruby</a> -\nRuby Gem which parses web pages and extracts Open Graph protocol
|
718
|
+
markup</li>\n<li><a href=\"http://github.com/callumj/opengraph-java\">OpenGraph
|
719
|
+
for Java</a> -\nsmall Java class used to represent the Open Graph protocol</li>\n<li><a
|
720
|
+
href=\"http://search.cpan.org/~tobyink/RDF-RDFa-Parser/lib/RDF/RDFa/Parser.pm\">RDF::RDFa::Parser</a>
|
721
|
+
-\nPerl RDFa parser which understands the Open Graph protocol</li>\n<li><a
|
722
|
+
href=\"http://wordpress.org/plugins/facebook/\">WordPress plugin</a> -\nFacebook's
|
723
|
+
official WordPress plugin, which adds Open Graph metadata to WordPress powered
|
724
|
+
sites. </li>\n<li><a href=\"http://wordpress.org/plugins/wp-facebook-open-graph-protocol/\">Alternate
|
725
|
+
WordPress OGP plugin</a> -</li>\n</ul>\n\n<h2> A simple lightweight WordPress
|
726
|
+
plugin which adds Open Graph metadata to WordPress powered sites.</h2>\n </div>\n
|
727
|
+
\ <div id=\"footer\">\n <iframe src=\"//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fogp.me%2F&send=false&layout=standard&width=450&show_faces=true&action=like&colorscheme=light&height=80&appId=115190258555800\"
|
728
|
+
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:450px;
|
729
|
+
height:80px;\" allowTransparency=\"true\"></iframe>\n <p>The Open Graph
|
730
|
+
protocol was originally created at Facebook and is inspired by <a href=\"http://en.wikipedia.org/wiki/Dublin_Core\">Dublin
|
731
|
+
Core</a>, <a href=\"http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html\">link-rel
|
732
|
+
canonical</a>, <a href=\"http://microformats.org/\">Microformats</a>, and
|
733
|
+
<a href=\"http://en.wikipedia.org/wiki/RDFa\">RDFa</a>. The specification
|
734
|
+
described on this page is available under the <a href=\"http://openwebfoundation.org/legal/the-0-9-agreements---necessary-claims\">Open
|
735
|
+
Web Foundation Agreement, Version 0.9</a>. This website is <a href=\"https://github.com/facebook/open-graph-protocol\">Open
|
736
|
+
Source</a>. Last updated <time pubdate=\"2014-10-20T23:03:05+00:00\">October
|
737
|
+
20th, 2014</time></p>\n </div>\n </div>\n<script type=\"text/javascript\">\nvar
|
738
|
+
_sf_async_config={uid:1415,domain:\"ogp.me\"};\n(function(){\n function loadChartbeat()
|
739
|
+
{\n window._sf_endpt=(new Date()).getTime();\n var e = document.createElement('script');\n
|
740
|
+
\ e.setAttribute('language', 'javascript');\n e.setAttribute('type',
|
741
|
+
'text/javascript');\n e.setAttribute('src',\n ((\"https:\" == document.location.protocol)
|
742
|
+
? \"https://s3.amazonaws.com/\" : \"http://\") +\n \"static.chartbeat.com/js/chartbeat.js\");\n
|
743
|
+
\ document.body.appendChild(e);\n }\n var oldonload = window.onload;\n
|
744
|
+
\ window.onload = (typeof window.onload != 'function') ?\n loadChartbeat
|
745
|
+
: function() { oldonload(); loadChartbeat(); };\n})();\n\n</script>\n </body>\n</html>\n"
|
746
|
+
http_version:
|
747
|
+
recorded_at: Fri, 14 Aug 2015 19:03:04 GMT
|
748
|
+
recorded_with: VCR 2.9.2
|