octokit 0.6.5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -2
- data/.travis.yml +0 -1
- data/CHANGELOG.md +1 -0
- data/Gemfile +1 -1
- data/README.md +41 -28
- data/Rakefile +11 -0
- data/lib/faraday/response/raise_octokit_error.rb +4 -2
- data/lib/octokit/client.rb +2 -0
- data/lib/octokit/client/commits.rb +12 -0
- data/lib/octokit/client/events.rb +26 -0
- data/lib/octokit/client/issues.rb +35 -7
- data/lib/octokit/client/labels.rb +5 -5
- data/lib/octokit/client/objects.rb +10 -6
- data/lib/octokit/client/organizations.rb +25 -21
- data/lib/octokit/client/pub_sub_hubbub/service_hooks.rb +2 -2
- data/lib/octokit/client/pulls.rb +4 -4
- data/lib/octokit/client/repositories.rb +18 -18
- data/lib/octokit/client/users.rb +19 -14
- data/lib/octokit/configuration.rb +14 -11
- data/lib/octokit/connection.rb +3 -3
- data/lib/octokit/request.rb +17 -1
- data/lib/octokit/version.rb +1 -1
- data/octokit.gemspec +13 -12
- data/spec/fixtures/v3/blob.json +7 -0
- data/spec/fixtures/v3/commit_comment.json +19 -0
- data/spec/fixtures/v3/commit_comments.json +78 -0
- data/spec/fixtures/v3/emails.json +4 -0
- data/spec/fixtures/v3/followers.json +212 -0
- data/spec/fixtures/v3/following.json +209 -0
- data/spec/fixtures/v3/issue.json +37 -0
- data/spec/fixtures/v3/issue_closed.json +37 -0
- data/spec/fixtures/v3/issue_event.json +44 -0
- data/spec/fixtures/v3/issue_events.json +72 -0
- data/spec/fixtures/v3/list_commit_comments.json +572 -0
- data/spec/fixtures/v3/organization-repositories.json +4292 -0
- data/spec/fixtures/v3/organization-repository.json +42 -0
- data/spec/fixtures/v3/organization.json +18 -0
- data/spec/fixtures/v3/organization_members.json +576 -0
- data/spec/fixtures/v3/organization_team_members.json +16 -0
- data/spec/fixtures/v3/organization_team_repos.json +62 -0
- data/spec/fixtures/v3/organizations.json +44 -0
- data/spec/fixtures/v3/public_events.json +1110 -0
- data/spec/fixtures/v3/pull_created.json +138 -0
- data/spec/fixtures/v3/pull_request.json +138 -0
- data/spec/fixtures/v3/pull_requests.json +187 -0
- data/spec/fixtures/v3/repo_events.json +1668 -0
- data/spec/fixtures/v3/repo_issues_events.json +134 -0
- data/spec/fixtures/v3/team.json +8 -0
- data/spec/fixtures/v3/teams.json +4 -4
- data/spec/fixtures/v3/tree.json +112 -0
- data/spec/fixtures/v3/watched.json +1022 -0
- data/spec/helper.rb +3 -3
- data/spec/octokit/client/commits_spec.rb +33 -0
- data/spec/octokit/client/events_spec.rb +27 -0
- data/spec/octokit/client/issue_events_spec.rb +30 -0
- data/spec/octokit/client/issues_spec.rb +31 -20
- data/spec/octokit/client/labels_spec.rb +1 -1
- data/spec/octokit/client/objects_spec.rb +9 -8
- data/spec/octokit/client/organizations_spec.rb +56 -67
- data/spec/octokit/client/pulls_spec.rb +19 -18
- data/spec/octokit/client/repositories_spec.rb +24 -38
- data/spec/octokit/client/users_spec.rb +50 -51
- data/spec/octokit/client_spec.rb +16 -0
- metadata +111 -81
- data/puppeteer.jpg +0 -0
- data/spec/fixtures/v2/blob.json +0 -1
- data/spec/fixtures/v2/comment.json +0 -1
- data/spec/fixtures/v2/comments.json +0 -1
- data/spec/fixtures/v2/delete_failure.json +0 -1
- data/spec/fixtures/v2/delete_token.json +0 -1
- data/spec/fixtures/v2/emails.json +0 -1
- data/spec/fixtures/v2/followers.json +0 -1
- data/spec/fixtures/v2/following.json +0 -1
- data/spec/fixtures/v2/issue.json +0 -1
- data/spec/fixtures/v2/labels.json +0 -1
- data/spec/fixtures/v2/organization.json +0 -1
- data/spec/fixtures/v2/organizations.json +0 -1
- data/spec/fixtures/v2/public_keys.json +0 -1
- data/spec/fixtures/v2/pull.json +0 -1
- data/spec/fixtures/v2/pulls.json +0 -1
- data/spec/fixtures/v2/tags.json +0 -1
- data/spec/fixtures/v2/team.json +0 -1
- data/spec/fixtures/v2/teams.json +0 -1
- data/spec/fixtures/v2/tree.json +0 -1
@@ -11,7 +11,7 @@ module Octokit
|
|
11
11
|
# Please refer Data node for complete list of arguments.
|
12
12
|
# @example Subscribe to push events to one of your repositories to Travis-CI
|
13
13
|
# client = Octokit::Client.new(:oauth_token = "token")
|
14
|
-
# client.subscribe_service_hook('joshk
|
14
|
+
# client.subscribe_service_hook('joshk/device_imapable', 'Travis', { :token => "test", :domain => "domain", :user => "user" })
|
15
15
|
def subscribe_service_hook(repo, service_name, service_arguments = {})
|
16
16
|
topic = "https://github.com/#{Repository.new(repo)}/events/push"
|
17
17
|
callback = "github://#{service_name}?#{service_arguments.collect{ |k,v| [ k,v ].join("=") }.join("&") }"
|
@@ -26,7 +26,7 @@ module Octokit
|
|
26
26
|
# List of services is available @ https://github.com/github/github-services/tree/master/docs.
|
27
27
|
# @example Subscribe to push events to one of your repositories to Travis-CI
|
28
28
|
# client = Octokit::Client.new(:oauth_token = "token")
|
29
|
-
# client.unsubscribe_service_hook('joshk
|
29
|
+
# client.unsubscribe_service_hook('joshk/device_imapable', 'Travis')
|
30
30
|
def unsubscribe_service_hook(repo, service_name)
|
31
31
|
topic = "https://github.com/#{Repository.new(repo)}/events/push"
|
32
32
|
callback = "github://#{service_name}"
|
data/lib/octokit/client/pulls.rb
CHANGED
@@ -8,7 +8,7 @@ module Octokit
|
|
8
8
|
:title => title,
|
9
9
|
:body => body,
|
10
10
|
}
|
11
|
-
post("
|
11
|
+
post("repos/#{Repository.new(repo)}/pulls", options.merge({:pull => pull}))
|
12
12
|
end
|
13
13
|
|
14
14
|
def create_pull_request_for_issue(repo, base, head, issue, options={})
|
@@ -17,16 +17,16 @@ module Octokit
|
|
17
17
|
:head => head,
|
18
18
|
:issue => issue
|
19
19
|
}
|
20
|
-
post("
|
20
|
+
post("repos/#{Repository.new(repo)}/pulls", options.merge({:pull => pull}))
|
21
21
|
end
|
22
22
|
|
23
23
|
def pull_requests(repo, state='open', options={})
|
24
|
-
get("
|
24
|
+
get("repos/#{Repository.new(repo)}/pulls", options.merge({:state => state}), 3)
|
25
25
|
end
|
26
26
|
alias :pulls :pull_requests
|
27
27
|
|
28
28
|
def pull_request(repo, number, options={})
|
29
|
-
get("
|
29
|
+
get("repos/#{Repository.new(repo)}/pulls/#{number}", options)
|
30
30
|
end
|
31
31
|
alias :pull :pull_request
|
32
32
|
end
|
@@ -2,7 +2,8 @@ module Octokit
|
|
2
2
|
class Client
|
3
3
|
module Repositories
|
4
4
|
def search_repositories(q, options={})
|
5
|
-
|
5
|
+
# Depreciated
|
6
|
+
get("/api/v2/json/repos/search/#{q}", options, 2)['repositories']
|
6
7
|
end
|
7
8
|
alias :search_repos :search_repositories
|
8
9
|
|
@@ -54,22 +55,6 @@ module Octokit
|
|
54
55
|
alias :create_repo :create_repository
|
55
56
|
alias :create :create_repository
|
56
57
|
|
57
|
-
def delete_repository(repo, options={})
|
58
|
-
response = post("/api/v2/json/repos/delete/#{Repository.new(repo)}", options)
|
59
|
-
if response.respond_to?(:delete_token)
|
60
|
-
response['delete_token']
|
61
|
-
else
|
62
|
-
response
|
63
|
-
end
|
64
|
-
end
|
65
|
-
alias :delete_repo :delete_repository
|
66
|
-
|
67
|
-
def delete_repository!(repo, options={})
|
68
|
-
delete_token = delete_repository(repo, options)
|
69
|
-
post("/api/v2/json/repos/delete/#{Repository.new(repo)}", options.merge(:delete_token => delete_token))
|
70
|
-
end
|
71
|
-
alias :delete_repo! :delete_repository!
|
72
|
-
|
73
58
|
def set_private(repo, options={})
|
74
59
|
update_repository repo, options.merge({ :public => false })
|
75
60
|
end
|
@@ -107,7 +92,8 @@ module Octokit
|
|
107
92
|
alias :remove_collab :remove_collaborator
|
108
93
|
|
109
94
|
def pushable(options={})
|
110
|
-
|
95
|
+
# There isn't a matching method in V3 of the api
|
96
|
+
get("/api/v2/json/repos/pushable", options, 2)['repositories']
|
111
97
|
end
|
112
98
|
|
113
99
|
def repository_teams(repo, options={})
|
@@ -141,6 +127,20 @@ module Octokit
|
|
141
127
|
def branches(repo, options={})
|
142
128
|
get "/repos/#{Repository.new repo}/branches", options, 3
|
143
129
|
end
|
130
|
+
|
131
|
+
# Get all Issue Events for a given Repository
|
132
|
+
#
|
133
|
+
# @param repo [String, Repository, Hash] A GitHub repository
|
134
|
+
#
|
135
|
+
# @return [Array] Array of all Issue Events for this Repository
|
136
|
+
# @see http://developer.github.com/v3/issues/events/#list-events-for-a-repository
|
137
|
+
# @example Get all Issue Events for Octokit
|
138
|
+
# Octokit.repository_issue_events("pengwynn/octokit")
|
139
|
+
def repository_issue_events(repo, options={})
|
140
|
+
get "/repos/#{Repository.new repo}/issues/events", options, 3
|
141
|
+
end
|
142
|
+
alias :repo_issue_events :repository_issue_events
|
143
|
+
|
144
144
|
end
|
145
145
|
end
|
146
146
|
end
|
data/lib/octokit/client/users.rb
CHANGED
@@ -2,11 +2,12 @@ module Octokit
|
|
2
2
|
class Client
|
3
3
|
module Users
|
4
4
|
EMAIL_RE = /[\w.!#\$%+-]+@[\w-]+(?:\.[\w-]+)+/
|
5
|
+
# Depreciated: V3 of the API does not allow searching users
|
5
6
|
def search_users(search, options={})
|
6
7
|
if search.match(EMAIL_RE)
|
7
|
-
get("/api/v2/json/user/email/#{search}", options)['user']
|
8
|
+
get("/api/v2/json/user/email/#{search}", options, 2)['user']
|
8
9
|
else
|
9
|
-
get("/api/v2/json/user/search/#{search}", options)['users']
|
10
|
+
get("/api/v2/json/user/search/#{search}", options, 2)['users']
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
@@ -42,11 +43,11 @@ module Octokit
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def followers(user=login, options={})
|
45
|
-
get("/
|
46
|
+
get("/users/#{user}/followers", options, 3)
|
46
47
|
end
|
47
48
|
|
48
49
|
def following(user=login, options={})
|
49
|
-
get("/
|
50
|
+
get("/users/#{user}/following", options, 3)
|
50
51
|
end
|
51
52
|
|
52
53
|
def follows?(*args)
|
@@ -54,43 +55,47 @@ module Octokit
|
|
54
55
|
user = args.first
|
55
56
|
user ||= login
|
56
57
|
return if user.nil?
|
57
|
-
|
58
|
+
get("/user/following/#{target}", {}, 3, true, raw=true).status == 204
|
59
|
+
rescue Octokit::NotFound
|
60
|
+
false
|
58
61
|
end
|
59
62
|
|
60
63
|
def follow(user, options={})
|
61
|
-
|
64
|
+
put("/user/following/#{user}", options, 3, true, raw=true).status == 204
|
62
65
|
end
|
63
66
|
|
64
67
|
def unfollow(user, options={})
|
65
|
-
|
68
|
+
delete("/user/following/#{user}", options, 3, true, raw=true).status == 204
|
66
69
|
end
|
67
70
|
|
68
71
|
def watched(user=login, options={})
|
69
|
-
get("/
|
72
|
+
get("/users/#{user}/watched", options, 3)
|
70
73
|
end
|
71
74
|
|
75
|
+
# Not yet supported: get a single key, update an existing key
|
76
|
+
|
72
77
|
def keys(options={})
|
73
|
-
get("/
|
78
|
+
get("/user/keys", options, 3)
|
74
79
|
end
|
75
80
|
|
76
81
|
def add_key(title, key, options={})
|
77
|
-
post("/
|
82
|
+
post("/user/keys", options.merge({:title => title, :key => key}), 3)
|
78
83
|
end
|
79
84
|
|
80
85
|
def remove_key(id, options={})
|
81
|
-
|
86
|
+
delete("/user/keys/#{id}", options, 3, true, raw=true)
|
82
87
|
end
|
83
88
|
|
84
89
|
def emails(options={})
|
85
|
-
get("/
|
90
|
+
get("/user/emails", options, 3)
|
86
91
|
end
|
87
92
|
|
88
93
|
def add_email(email, options={})
|
89
|
-
post("/
|
94
|
+
post("/user/emails", options.merge({:email => email}), 3)
|
90
95
|
end
|
91
96
|
|
92
97
|
def remove_email(email, options={})
|
93
|
-
|
98
|
+
delete("/user/emails", options.merge({:email => email}), 3, true, raw=true).status == 204
|
94
99
|
end
|
95
100
|
end
|
96
101
|
end
|
@@ -10,11 +10,13 @@ module Octokit
|
|
10
10
|
:password,
|
11
11
|
:proxy,
|
12
12
|
:oauth_token,
|
13
|
-
:user_agent
|
13
|
+
:user_agent,
|
14
|
+
:auto_traversal].freeze
|
14
15
|
|
15
|
-
DEFAULT_ADAPTER
|
16
|
-
DEFAULT_API_VERSION
|
17
|
-
DEFAULT_USER_AGENT
|
16
|
+
DEFAULT_ADAPTER = Faraday.default_adapter
|
17
|
+
DEFAULT_API_VERSION = 3
|
18
|
+
DEFAULT_USER_AGENT = "Octokit Ruby Gem #{Octokit::VERSION}".freeze
|
19
|
+
DEFAULT_AUTO_TRAVERSAL = false
|
18
20
|
|
19
21
|
attr_accessor(*VALID_OPTIONS_KEYS)
|
20
22
|
|
@@ -31,13 +33,14 @@ module Octokit
|
|
31
33
|
end
|
32
34
|
|
33
35
|
def reset
|
34
|
-
self.adapter
|
35
|
-
self.api_version
|
36
|
-
self.login
|
37
|
-
self.password
|
38
|
-
self.proxy
|
39
|
-
self.oauth_token
|
40
|
-
self.user_agent
|
36
|
+
self.adapter = DEFAULT_ADAPTER
|
37
|
+
self.api_version = DEFAULT_API_VERSION
|
38
|
+
self.login = nil
|
39
|
+
self.password = nil
|
40
|
+
self.proxy = nil
|
41
|
+
self.oauth_token = nil
|
42
|
+
self.user_agent = DEFAULT_USER_AGENT
|
43
|
+
self.auto_traversal = DEFAULT_AUTO_TRAVERSAL
|
41
44
|
end
|
42
45
|
end
|
43
46
|
end
|
data/lib/octokit/connection.rb
CHANGED
@@ -6,7 +6,7 @@ module Octokit
|
|
6
6
|
module Connection
|
7
7
|
private
|
8
8
|
|
9
|
-
def connection(authenticate=true, raw=false, version=
|
9
|
+
def connection(authenticate=true, raw=false, version=3, force_urlencoded=false)
|
10
10
|
case version
|
11
11
|
when 2
|
12
12
|
url = "https://github.com"
|
@@ -30,8 +30,8 @@ module Octokit
|
|
30
30
|
end
|
31
31
|
builder.use Faraday::Response::RaiseOctokitError
|
32
32
|
unless raw
|
33
|
-
builder.use
|
34
|
-
builder.use
|
33
|
+
builder.use FaradayMiddleware::Mashify
|
34
|
+
builder.use FaradayMiddleware::ParseJson
|
35
35
|
end
|
36
36
|
builder.adapter(adapter)
|
37
37
|
end
|
data/lib/octokit/request.rb
CHANGED
@@ -38,7 +38,23 @@ module Octokit
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
|
+
if raw
|
43
|
+
response
|
44
|
+
elsif auto_traversal && ( next_url = links(response)["next"] )
|
45
|
+
response.body + request(method, next_url, options, version, authenticate, raw, force_urlencoded)
|
46
|
+
else
|
47
|
+
response.body
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def links(response)
|
52
|
+
links = ( response.headers["Link"] || "" ).split(', ').map do |link|
|
53
|
+
url, type = link.match(/<(.*?)>; rel="(\w+)"/).captures
|
54
|
+
[ type, url ]
|
55
|
+
end
|
56
|
+
|
57
|
+
Hash[ *links.flatten ]
|
42
58
|
end
|
43
59
|
end
|
44
60
|
end
|
data/lib/octokit/version.rb
CHANGED
data/octokit.gemspec
CHANGED
@@ -2,19 +2,20 @@
|
|
2
2
|
require File.expand_path('../lib/octokit/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.add_dependency 'addressable', '~> 2.2
|
6
|
-
gem.add_dependency 'faraday', '~> 0.7
|
7
|
-
gem.add_dependency 'faraday_middleware', '~> 0.
|
8
|
-
gem.add_dependency 'hashie', '~> 1.2
|
9
|
-
gem.add_dependency 'multi_json', '~> 1.0
|
10
|
-
gem.add_development_dependency 'json'
|
11
|
-
gem.add_development_dependency 'rake'
|
12
|
-
gem.add_development_dependency 'rspec', '~> 2.
|
13
|
-
gem.add_development_dependency 'simplecov'
|
14
|
-
gem.add_development_dependency 'webmock'
|
15
|
-
gem.add_development_dependency 'yard'
|
5
|
+
gem.add_dependency 'addressable', '~> 2.2'
|
6
|
+
gem.add_dependency 'faraday', '~> 0.7'
|
7
|
+
gem.add_dependency 'faraday_middleware', '~> 0.8'
|
8
|
+
gem.add_dependency 'hashie', '~> 1.2'
|
9
|
+
gem.add_dependency 'multi_json', '~> 1.0'
|
10
|
+
gem.add_development_dependency 'json'
|
11
|
+
gem.add_development_dependency 'rake'
|
12
|
+
gem.add_development_dependency 'rspec', '~> 2.8'
|
13
|
+
gem.add_development_dependency 'simplecov'
|
14
|
+
gem.add_development_dependency 'webmock'
|
15
|
+
gem.add_development_dependency 'yard'
|
16
|
+
gem.add_development_dependency 'rdiscount'
|
16
17
|
gem.authors = ["Wynn Netherland", "Adam Stacoviak", "Erik Michaels-Ober"]
|
17
|
-
gem.description = %q{Simple wrapper for the GitHub API v2}
|
18
|
+
gem.description = %q{Simple wrapper for the GitHub API (v2 and v3)}
|
18
19
|
gem.email = ['wynn.netherland@gmail.com', 'adam@stacoviak.com', 'sferik@gmail.com']
|
19
20
|
gem.files = `git ls-files`.split("\n")
|
20
21
|
gem.homepage = 'https://github.com/pengwynn/octokit'
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"url": "https://api.github.com/repos/sferik/rails_admin/git/blobs/94616fa57520ac8147522c7cf9f03d555595c5ea",
|
3
|
+
"content": "UmFpbHNBZG1pbgo9PT09PT09PT09ClJhaWxzQWRtaW4gaXMgYSBSYWlscyBl\nbmdpbmUgdGhhdCBwcm92aWRlcyBhbiBlYXN5LXRvLXVzZSBpbnRlcmZhY2Ug\nZm9yIG1hbmFnaW5nIHlvdXIgZGF0YS4KClJhaWxzQWRtaW4gc3RhcnRlZCBh\ncyBhIHBvcnQgb2YgW01lcmJBZG1pbl0oaHR0cDovL2dpdGh1Yi5jb20vc2Zl\ncmlrL21lcmItYWRtaW4pIHRvIFJhaWxzIDMKYW5kIHdhcyBpbXBsZW1lbnRl\nZCBhcyBhIFtSdWJ5IFN1bW1lciBvZiBDb2RlIHByb2plY3RdKGh0dHA6Ly93\nd3cucnVieXNvYy5vcmcvcHJvamVjdHMpCmJ5IFtCb2dkYW4gR2F6YV0oaHR0\ncDovL2dpdGh1Yi5jb20vaHVycnljYW5lKSB3aXRoIG1lbnRvcnMgW0VyaWsg\nTWljaGFlbHMtT2Jlcl0oaHR0cDovL2dpdGh1Yi5jb20vc2ZlcmlrKSwKW1ll\naHVkYSBLYXR6XShodHRwOi8vZ2l0aHViLmNvbS93eWNhdHMpLApbTHVrZSB2\nYW4gZGVyIEhvZXZlbl0oaHR0cDovL2dpdGh1Yi5jb20vcGx1a2V2ZGgpLCBh\nbmQgW1JlaW4gSGVucmljaHNdKGh0dHA6Ly9naXRodWIuY29tL3JlaW5oKS4K\nCkl0IGN1cnJlbnRseSBvZmZlcnMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoK\nCiogRGlzcGxheSBkYXRhYmFzZSB0YWJsZXMKKiBDcmVhdGUgbmV3IGRhdGEK\nKiBFYXNpbHkgdXBkYXRlIGRhdGEKKiBTYWZlbHkgZGVsZXRlIGRhdGEKKiBB\ndXRvbWF0aWMgZm9ybSB2YWxpZGF0aW9uCiogU2VhcmNoCiogQXV0aGVudGlj\nYXRpb24gKHZpYSBbRGV2aXNlXShodHRwOi8vZ2l0aHViLmNvbS9wbGF0YWZv\ncm1hdGVjL2RldmlzZSkpCiogVXNlciBhY3Rpb24gaGlzdG9yeQoKU3VwcG9y\ndGVkIE9STXM6CgoqIEFjdGl2ZVJlY29yZAoKX1tJbmZvcm1hdGlvbl0oaHR0\ncHM6Ly9naXRodWIuY29tL3NmZXJpay9yYWlsc19hZG1pbi9pc3N1ZXMvMTA1\nKSBhYm91dCBzdXBwb3J0IGZvciBvdGhlciBPUk1zLl8KCkhlbHAKLS0tLQpJ\nZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uLCB5b3UgY2FuIGFzayB0aGUgW29mZmlj\naWFsIFJhaWxzQWRtaW4gbWFpbGluZyBsaXN0XShodHRwOi8vZ3JvdXBzLmdv\nb2dsZS5jb20vZ3JvdXAvcmFpbHNfYWRtaW4pCm9yIHBpbmcgc2ZlcmlrIG9u\nIElSQyBpbiBbI3JhaWxzYWRtaW4gb24gaXJjLmZyZWVub2RlLm5ldF0oaHR0\ncDovL3dlYmNoYXQuZnJlZW5vZGUubmV0Lz9jaGFubmVscz1yYWlsc2FkbWlu\nKS4KClNjcmVlbnNob3RzCi0tLS0tLS0tLS0tCiFbTGlzdCB2aWV3XShodHRw\nczovL2dpdGh1Yi5jb20vc2ZlcmlrL3JhaWxzX2FkbWluL3Jhdy9tYXN0ZXIv\nc2NyZWVuc2hvdHMvbGlzdC5wbmcgIkxpc3QgdmlldyIpCiFbRWRpdCB2aWV3\nXShodHRwczovL2dpdGh1Yi5jb20vc2ZlcmlrL3JhaWxzX2FkbWluL3Jhdy9t\nYXN0ZXIvc2NyZWVuc2hvdHMvZWRpdC5wbmcgIkVkaXQgdmlldyIpCgpJbnN0\nYWxsYXRpb24KLS0tLS0tLS0tLS0tCkluIHlvdXIgYEdlbWZpbGVgLCBhZGQg\ndGhlIGZvbGxvd2luZyBkZXBlbmRlbmN5OgogICAgZ2VtICdkZXZpc2UnICMg\nRGV2aXNlIG11c3QgYmUgcmVxdWlyZWQgYmVmb3JlIFJhaWxzQWRtaW4KICAg\nIGdlbSAncmFpbHNfYWRtaW4nLCA6Z2l0ID0+ICdnaXQ6Ly9naXRodWIuY29t\nL3NmZXJpay9yYWlsc19hZG1pbi5naXQnClJ1bjoKICAgICQgYnVuZGxlIGlu\nc3RhbGwKQW5kIHRoZW4gcnVuOgogICAgJCByYWlscyBnZW5lcmF0ZSByYWls\nc19hZG1pbjppbnN0YWxsX2FkbWluClRoaXMgdGFzayB3aWxsIGluc3RhbGwg\nUmFpbHNBZG1pbiBhbmQgW0RldmlzZV0oaHR0cDovL2dpdGh1Yi5jb20vcGxh\ndGFmb3JtYXRlYy9kZXZpc2UpIGlmIHlvdQpkb24ndCBhbHJlYWR5IGhhdmUg\naXQgaW5zdGFsbGVkLiBbRGV2aXNlXShodHRwOi8vZ2l0aHViLmNvbS9wbGF0\nYWZvcm1hdGVjL2RldmlzZSkgaXMgc3Ryb25nbHkKcmVjb21tZW5kZWQgdG8g\ncHJvdGVjdCB5b3VyIGRhdGEgZnJvbSBhbm9ueW1vdXMgdXNlcnMuCgpJZiB5\nb3UgcGxhbiB0byB1c2UgRGV2aXNlLCBidXQgd2FudCB0byB1c2UgYSBjdXN0\nb20gbW9kZWwgZm9yIGF1dGhlbnRpY2F0aW9uCihkZWZhdWx0IGlzIFVzZXIp\nIHlvdSBjYW4gcHJvdmlkZSB0aGF0IGFzIGFuIGFyZ3VtZW50IGZvciB0aGUg\naW5zdGFsbGVyLiBGb3IgZXhhbXBsZQp0byBvdmVycmlkZSB0aGUgZGVmYXVs\ndCB3aXRoIGEgTWVtYmVyIG1vZGVsIHJ1bjoKICAgICQgcmFpbHMgZ2VuZXJh\ndGUgcmFpbHNfYWRtaW46aW5zdGFsbF9hZG1pbiBtZW1iZXIKCklmIHlvdSB3\nYW50IHRvIHVzZSB0aGUgQ0tFZGl0b3IsIHlvdSBuZWVkIHRvIFtkb3dubG9h\nZCBpdF0oaHR0cDovL2NrZWRpdG9yLmNvbS9kb3dubG9hZCkgZnJvbSBzb3Vy\nY2UKYW5kIHVucGFjayB0aGUgJ2NrZWRpdG9yJyBmb2xkZXIgaW50byB5b3Vy\nIGRlZmF1bHQgJ3B1YmxpYy9qYXZhc2NyaXB0cycgZm9sZGVyLiBJZiB5b3Un\ncmUgdXNpbmcgYW55Cm5vbi1XaW5kb3dzIHN5c3RlbSwgeW91IGNhbiB0cnkg\ndG8gdXNlIHRoZSBhdXRvbWF0aWMgZG93bmxvYWRlcjoKICAgICQgcmFrZSBh\nZG1pbjpja2VkaXRvcl9kb3dubG9hZAoKV2hlbiBydW5uaW5nIFJhaWxzQWRt\naW4gaW4gcHJvZHVjdGlvbiB0aGUgaW1hZ2VzLCBzdHlsZXNoZWV0cywgYW5k\nIGphdmFzY3JpcHQgYXNzZXRzIG1heSByZXR1cm4gNDA0Cm5vdCBmb3VuZCBl\ncnJvcidzIGRlcGVuZGluZyBvbiB5b3VyIHNlcnZlcnMgc3RhdGljIGFzc2V0\ncyBjb25maWd1cmF0aW9uLiAgVG8gcHJldmVudCB0aGlzIGlzc3VlIHlvdQpj\nYW4gY29weSBhc3NldHMgZGlyZWN0bHkgaW50byB5b3VyIGFwcGxpY2F0aW9u\nIGJ5IHJ1bm5pbmc6CiAgICAkIHJha2UgYWRtaW46Y29weV9hc3NldHMKICAg\nICAgICAKVXNhZ2UKLS0tLS0KU3RhcnQgdGhlIHNlcnZlcjoKICAgICQgcmFp\nbHMgc2VydmVyCllvdSBzaG91bGQgbm93IGJlIGFibGUgdG8gYWRtaW5pc3Rl\nciB5b3VyIHNpdGUgYXQgPGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hZG1pbj4K\nCkNvbmZpZ3VyYXRpb24KLS0tLS0tLS0tLS0tLQpSYWlsc0FkbWluIHByb3Zp\nZGVzIGl0cyBvdXQgb2YgdGhlIGJveCBhZG1pbmlzdHJhdGl2ZSBpbnRlcmZh\nY2UgYnkgaW5zcGVjdGluZyB5b3VyIGFwcGxpY2F0aW9uJ3MKbW9kZWxzIGFu\nZCBmb2xsb3dpbmcgc29tZSBSYWlscyBjb252ZW50aW9ucy4gRm9yIGEgbW9y\nZSB0YWlsb3JlZCBleHBlcmllbmNlLCBpdCBhbHNvIHByb3ZpZGVzIGEKY29u\nZmlndXJhdGlvbiBEU0wgd2hpY2ggYWxsb3dzIHlvdSB0byBjdXN0b21pemUg\nbWFueSBhc3BlY3RzIG9mIHRoZSBpbnRlcmZhY2UuCgpUaGUgY29uZmlndXJh\ndGlvbiBjb2RlIHNob3VsZCBiZSBwbGFjZWQgaW4gYW4gaW5pdGlhbGl6ZXIg\nZmlsZSwgZm9yIGV4YW1wbGU6CiAgICBjb25maWcvaW5pdGlhbGl6ZXJzL3Jh\naWxzX2FkbWluLnJiCgojIyMgR2VuZXJhbAoKWW91IGNhbiBjdXN0b21pemUg\nYXV0aGVudGljYXRpb24gYnkgcHJvdmlkaW5nIGEgY3VzdG9tIGJsb2NrIGZv\nciBgUmFpbHNBZG1pbi5hdXRoZW50aWNhdGVfd2l0aGAuClRvIGRpc2FibGUg\nYXV0aGVudGljYXRpb24sIHBhc3MgYW4gZW1wdHkgYmxvY2s6CgogICAgUmFp\nbHNBZG1pbi5hdXRoZW50aWNhdGVfd2l0aCB7fQoKWW91IGNhbiBleGNsdWRl\nIG1vZGVscyBmcm9tIFJhaWxzQWRtaW4gYnkgYXBwZW5kaW5nIHRob3NlIG1v\nZGVscyB0byBgZXhjbHVkZWRfbW9kZWxzYDoKCiAgICBSYWlsc0FkbWluLmNv\nbmZpZyBkbyB8Y29uZmlnfAogICAgICBjb25maWcuZXhjbHVkZWRfbW9kZWxz\nIDw8IENsYXNzTmFtZQogICAgZW5kCgojIyMgTmF2aWdhdGlvbiAjIyMKCiog\naGlkaW5nIGEgbW9kZWwKKiBzZXR0aW5nIHRoZSBtb2RlbCdzIGxhYmVsCiog\nY29uZmlndXJpbmcgdGhlIG51bWJlciBvZiB2aXNpYmxlIHRhYnMKCioqSGlk\naW5nIGEgbW9kZWwqKgoKWW91IGNhbiBoaWRlIGEgbW9kZWwgZnJvbSB0aGUg\ndG9wIG5hdmlnYXRpb24gYnkgbWFya2luZyBpdHMgYHZpc2libGVgIG9wdGlv\nbgphcyBmYWxzZSB3aXRoaW4gdGhlIG1vZGVsJ3MgbmF2aWdhdGlvbiBjb25m\naWd1cmF0aW9uIHNlY3Rpb246CgpCeSBwYXNzaW5nIHRoZSB2YWx1ZSBhcyBh\nbiBhcmd1bWVudDoKCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmln\nfAogICAgICBjb25maWcubW9kZWwgVGVhbSBkbwogICAgICAgIG5hdmlnYXRp\nb24gZG8KICAgICAgICAgIHZpc2libGUgZmFsc2UKICAgICAgICBlbmQKICAg\nICAgZW5kCiAgICBlbmQKCk9yIGJ5IHBhc3NpbmcgYSBibG9jayB0aGF0IHdp\nbGwgYmUgbGF6eSBldmFsdWF0ZWQgZWFjaCB0aW1lIHRoZSBvcHRpb24gaXMg\ncmVhZDoKCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAg\nICBjb25maWcubW9kZWwgVGVhbSBkbwogICAgICAgIG5hdmlnYXRpb24gZG8K\nICAgICAgICAgIHZpc2libGUgeyBmYWxzZSB9CiAgICAgICAgZW5kCiAgICAg\nIGVuZAogICAgZW5kCgpUaGVzZSB0d28gZXhhbXBsZXMgYWxzbyB3b3JrIGFz\nIGEgZ2VuZXJpYyBleGFtcGxlIG9mIGhvdyBtb3N0IG9mIHRoZQpjb25maWd1\ncmF0aW9uIG9wdGlvbnMgZnVuY3Rpb24gd2l0aGluIFJhaWxzQWRtaW4uIFlv\ndSBjYW4gcGFzcyBhIHZhbHVlIGFzIGFuCmFyZ3VtZW50IGBvcHRpb25fbmFt\nZSB2YWx1ZWAsIG9yIHlvdSBjYW4gcGFzcyBpbiBhIGJsb2NrIHdoaWNoIHdp\nbGwgYmUKZXZhbHVhdGVkIGVhY2ggdGltZSB0aGUgb3B0aW9uIGlzIHJlYWQu\nIE5vdGFibGUgaXMgdGhhdCBib29sZWFuIG9wdGlvbnMnIHJlYWRlcgphY2Nl\nc3NvcnMgd2lsbCBiZSBhcHBlbmRlZCB3aXRoID8gd2hlcmVhcyB0aGUgd3Jp\ndGVycyB3aWxsIG5vdCBiZS4gVGhhdCBpcywgaWYKeW91IHdhbnQgdG8gZ2V0\nIHRoZSBUZWFtIG1vZGVsJ3MgdmlzaWJpbGl0eSBpbiBuYXZpZ2F0aW9uLCB5\nb3UgdXNlCmBSYWlsc0FkbWluLmNvbmZpZyhUZWFtKS5uYXZpZ2F0aW9uLnZp\nc2libGU/YC4KCkJhY2sgdG8gbmF2aWdhdGlvbiBjb25maWd1cmF0aW9uIC0g\ndGhlcmUgaXMgYWxzbyBhbiBhbGlhcyBtZXRob2QgdGhhdCBjYW4gYmUgdXNl\nZDoKCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBj\nb25maWcubW9kZWwgVGVhbSBkbwogICAgICAgIGhpZGVfZnJvbV9uYXZpZ2F0\naW9uCiAgICAgIGVuZAogICAgZW5kCgpBbmQgYWxzbyBhIHJldmVyc2UgYWxp\nYXMgbWV0aG9kIHRvIG1ha2UgaXQgdmlzaWJsZSBhZ2FpbjoKCiAgICBSYWls\nc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBjb25maWcubW9kZWwg\nVGVhbSBkbwogICAgICAgIHNob3dfaW5fbmF2aWdhdGlvbgogICAgICBlbmQK\nICAgIGVuZAoKQm90aCBhbHNvIGFjY2VwdCBhIGJsb2NrOgoKICAgIFJhaWxz\nQWRtaW4uY29uZmlnIGRvIHxjb25maWd8CiAgICAgIGNvbmZpZy5tb2RlbCBU\nZWFtIGRvCiAgICAgICAgIyBIaWRlIFRlYW0gZnJvbSBuYXZpZ2F0aW9uIG9u\nIFN1bmRheXMKICAgICAgICBoaWRlX2Zyb21fbmF2aWdhdGlvbiBkbwogICAg\nICAgICAgVGltZS5ub3cud2RheSA9PSAwCiAgICAgICAgZW5kCiAgICAgIGVu\nZAogICAgZW5kCgoqTk9URSogLSBUaGUgaGlkZV9mcm9tX25hdmlnYXRpb24g\nbWV0aG9kIHdhcyBvcmlnaW5hbGx5IGltcGxlbWVudGVkIGFzCiBoaWRlX2lu\nX25hdmlnYXRpb24gYnV0IHRoYXQgbmFtZSBpcyBub3cgZGVwcmVjYXRlZCAt\nIHlvdSBzaG91bGQKIGNoYW5nZSB5b3VyIGNvZGUgdG8gdXNlIGhpZGVfZnJv\nbV9uYXZpZ2F0aW9uLgoKKipTZXR0aW5nIHRoZSBtb2RlbCdzIGxhYmVsKioK\nCklmIHlvdSBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgbGFiZWwgb2YgdGhlIG1v\nZGVsIHdpdGhpbiB0aGUgbmF2aWdhdGlvbiB0YWIsIHVzZToKCiAgICBSYWls\nc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBjb25maWcubW9kZWwg\nVGVhbSBkbwogICAgICAgIG5hdmlnYXRpb24gZG8KICAgICAgICAgIGxhYmVs\nICJMaXN0IG9mIHRlYW1zIgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVu\nZAoKUmVtZW1iZXIsIHlvdSBjYW4gYWxzbyBwYXNzIHRoZSB2YWx1ZSBhcyBh\nbiBhcmd1bWVudCBvciBhcyBhIGJsb2NrIGFzIHdpdGggdGhlCmJlZm9yZSBt\nZW50aW9uZWQgdmlzaWJpbGl0eSBvcHRpb25zLiBCZXNpZGVzIHRoYXQsIHRo\nZSBsYWJlbCBhbHNvIGhhcyBhCnNob3J0aGFuZCBzeW50YXg6CgogICAgUmFp\nbHNBZG1pbi5jb25maWcgZG8gfGNvbmZpZ3wKICAgICAgY29uZmlnLm1vZGVs\nIFRlYW0gZG8KICAgICAgICBsYWJlbF9mb3JfbmF2aWdhdGlvbiAiTGlzdCBv\nZiB0ZWFtcyIKICAgICAgZW5kCiAgICBlbmQKCndoaWNoIGFsbG93cyBib3Ro\nIGZvcm1zIG9mIGNvbmZpZ3VyYXRpb24gdmFsdWUgcGFzc2luZyBhcyB3ZWxs\nLgoKKipDb25maWd1cmluZyB0aGUgbnVtYmVyIG9mIHZpc2libGUgdGFicyoq\nCgpZb3UgY2FuIGNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIHRhYnMgdmlzaWJs\nZSBpbiB0aGUgdG9wIG5hdmlnYXRpb246CgogICAgUmFpbHNBZG1pbi5jb25m\naWcgZG8gfGNvbmZpZ3wKICAgICAgY29uZmlnLm5hdmlnYXRpb24ubWF4X3Zp\nc2libGVfdGFicyAzCiAgICBlbmQKCkxpbmtzIHRvIHRoZSByZXN0IG9mIHRo\nZSBtb2RlbHMgd2lsbCBiZSByZW5kZXJlZCBpbiBhIGRyb3AgZG93biBtZW51\nIG5leHQgdG8gdGhlCnRhYnMuIEV2ZW4gdGhvdWdoIHRoaXMgb3B0aW9uIGlz\nIG5vdCBtb2RlbCBzcGVjaWZpYywgaXQgc2hhcmVzIHRoZSBzYW1lCnNlbWFu\ndGljcyBhcyB0aGUgZWFybGllciBvbmVzIC0geW91IGNhbiBhbHNvIHBhc3Mg\naW4gYSBibG9jayBvciBwYXNzIHRoZSB2YWx1ZQphcyBhbiBhcmd1bWVudCBi\neSBvbWl0dGluZyB0aGUgZXF1YWxzIHNpZ24uCgojIyMgTGlzdCB2aWV3Cgoq\nIE51bWJlciBvZiBpdGVtcyBwZXIgcGFnZQoqIE51bWJlciBvZiBpdGVtcyBw\nZXIgcGFnZSBwZXIgbW9kZWwKKiBGaWVsZHMKICAqIFZpc2liaWxpdHkgYW5k\nIG9yZGVyaW5nCiAgKiBMYWJlbAogICogT3V0cHV0IGZvcm1hdHRpbmcKICAq\nIFNvcnRhYmlsaXR5CiAgKiBDb2x1bW4gQ1NTIGNsYXNzCiAgKiBDb2x1bW4g\nd2lkdGgKICAqIFRoZSBvYmplY3RfbGFiZWwgbWV0aG9kCgoqKk51bWJlciBv\nZiBpdGVtcyBwZXIgcGFnZSoqCgpZb3UgY2FuIGNvbmZpZ3VyZSB0aGUgZGVm\nYXVsdCBudW1iZXIgb2Ygcm93cyByZW5kZXJlZCBwZXIgcGFnZToKCiAgICBS\nYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBjb25maWcubGlz\ndC5kZWZhdWx0X2l0ZW1zX3Blcl9wYWdlID0gNTAKICAgIGVuZAoKKipOdW1i\nZXIgb2YgaXRlbXMgcGVyIHBhZ2UgcGVyIG1vZGVsKioKCllvdSBjYW4gYWxz\nbyBjb25maWd1cmUgaXQgcGVyIG1vZGVsOgoKICAgIFJhaWxzQWRtaW4uY29u\nZmlnIGRvIHxjb25maWd8CiAgICAgIGNvbmZpZy5tb2RlbCBUZWFtIGRvCiAg\nICAgICAgbGlzdCBkbwogICAgICAgICAgaXRlbXNfcGVyX3BhZ2UgMTAwCiAg\nICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgoqKkZpZWxkcyAtIFZpc2li\naWxpdHkgYW5kIG9yZGVyaW5nKioKCkJ5IGRlZmF1bHQgYWxsIGZpZWxkcyBh\ncmUgdmlzaWJsZSwgYnV0IHRoZXkgYXJlIG5vdCBwcmVzZW50ZWQgaW4gYW55\nIHBhcnRpY3VsYXIKb3JkZXIuIElmIHlvdSBzcGVjaWZpY2FsbHkgZGVjbGFy\nZSBmaWVsZHMsIG9ubHkgZGVmaW5lZCBmaWVsZHMgd2lsbCBiZSB2aXNpYmxl\nCmFuZCB0aGV5IHdpbGwgYmUgcHJlc2VudGVkIGluIHRoZSBvcmRlciBkZWZp\nbmVkOgoKICAgIFJhaWxzQWRtaW4uY29uZmlnIGRvIHxjb25maWd8CiAgICAg\nIGNvbmZpZy5tb2RlbCBUZWFtIGRvCiAgICAgICAgbGlzdCBkbwogICAgICAg\nICAgZmllbGQgOm5hbWUKICAgICAgICAgIGZpZWxkIDpjcmVhdGVkX2F0CiAg\nICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgpUaGlzIHdvdWxkIHNob3cg\nb25seSAibmFtZSIgYW5kICJjcmVhdGVkIGF0IiBjb2x1bW5zIGluIHRoZSBs\naXN0IHZpZXcuCgpJZiB5b3UgbmVlZCB0byBoaWRlIGZpZWxkcyBiYXNlZCBv\nbiBzb21lIGxvZ2ljIG9uIHJ1bnRpbWUgKGZvciBpbnN0YW5jZQphdXRob3Jp\nemF0aW9uIHRvIHZpZXcgZmllbGQpIHlvdSBjYW4gcGFzcyBhIGJsb2NrIGZv\nciB0aGUgYHZpc2libGVgIG9wdGlvbgooaW5jbHVkaW5nIGl0cyBgaGlkZWAg\nYW5kIGBzaG93YCBhY2Nlc3NvcnMpOgoKICAgIFJhaWxzQWRtaW4uY29uZmln\nIGRvIHxjb25maWd8CiAgICAgIGNvbmZpZy5tb2RlbCBUZWFtIGRvCiAgICAg\nICAgbGlzdCBkbwogICAgICAgICAgZmllbGQgOm5hbWUKICAgICAgICAgIGZp\nZWxkIDpjcmVhdGVkX2F0CiAgICAgICAgICBmaWVsZCA6cmV2ZW51ZSBkbwog\nICAgICAgICAgICB2aXNpYmxlIGRvCiAgICAgICAgICAgICAgY3VycmVudF91\nc2VyLnJvbGVzLmluY2x1ZGU/KDphY2NvdW50aW5nKSAjIG1ldGFjb2RlCiAg\nICAgICAgICAgIGVuZAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAg\nIGVuZAogICAgZW5kCgpOb3RlIHRoYXQgYWJvdmUgZXhhbXBsZSdzIGF1dGhv\ncml6YXRpb24gY29uZGl0aW9uYWwgaXMgbm90IHJ1bm5hYmxlIGNvZGUsIGp1\nc3QKYW4gaW1hZ2luYXJ5IGV4YW1wbGUuIFlvdSBuZWVkIHRvIHByb3ZpZGUg\nUmFpbHNBZG1pbiB3aXRoIHlvdXIgb3duCmF1dGhvcml6YXRpb24gc2NoZW1l\nIGZvciB3aGljaCB5b3UgY2FuIGZpbmQgYSBndWlkZSBhdCB0aGUgZW5kIG9m\nIHRoaXMgZmlsZS4KCioqRmllbGRzIC0gTGFiZWwqKgoKVGhlIGhlYWRlciBv\nZiBhIGxpc3QgdmlldyBjb2x1bW4gY2FuIGJlIGNoYW5nZWQgd2l0aCB0aGUg\nZmFtaWxpYXIgbGFiZWwgbWV0aG9kOgoKICAgIFJhaWxzQWRtaW4uY29uZmln\nIGRvIHxjb25maWd8CiAgICAgIGNvbmZpZy5tb2RlbCBUZWFtIGRvCiAgICAg\nICAgbGlzdCBkbwogICAgICAgICAgZmllbGQgOm5hbWUgZG8KICAgICAgICAg\nICAgbGFiZWwgIlRpdGxlIgogICAgICAgICAgZW5kCiAgICAgICAgICBmaWVs\nZCA6Y3JlYXRlZF9hdCBkbwogICAgICAgICAgICBsYWJlbCAiQ3JlYXRlZCBv\nbiIKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVu\nZAoKQXMgaW4gdGhlIHByZXZpb3VzIGV4YW1wbGUgdGhpcyB3b3VsZCBzaG93\nIG9ubHkgY29sdW1ucyBmb3IgZmllbGRzICJuYW1lIiBhbmQKImNyZWF0ZWQg\nYXQiIGFuZCB0aGVpciBoZWFkZXJzIHdvdWxkIGhhdmUgYmVlbiByZW5hbWVk\nIHRvICJUaXRsZSIgYW5kCiJDcmVhdGVkIG9uIi4KCioqRmllbGRzIC0gT3V0\ncHV0IGZvcm1hdHRpbmcqKgoKVGhlIGZpZWxkJ3Mgb3V0cHV0IGNhbiBiZSBt\nb2RpZmllZDoKCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAog\nICAgICBjb25maWcubW9kZWwgVGVhbSBkbwogICAgICAgIGxpc3QgZG8KICAg\nICAgICAgIGZpZWxkIDpuYW1lIGRvCiAgICAgICAgICAgIGZvcm1hdHRlZF92\nYWx1ZSBkbwogICAgICAgICAgICAgIHZhbHVlLnRvX3MudXBjYXNlCiAgICAg\nICAgICAgIGVuZAogICAgICAgICAgZW5kCiAgICAgICAgICBmaWVsZCA6Y3Jl\nYXRlZF9hdAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKVGhpcyB3\nb3VsZCByZW5kZXIgYWxsIHRoZSB0ZWFtcycgbmFtZXMgdXBwZXJjYXNlZC4K\nClRoZSBmaWVsZCBkZWNsYXJhdGlvbnMgYWxzbyBoYXZlIGFjY2VzcyB0byBh\nIGJpbmRpbmdzIGhhc2ggd2hpY2ggY29udGFpbnMgdGhlCmN1cnJlbnQgcmVj\nb3JkIGluc3RhbmNlIGluIGtleSA6b2JqZWN0IGFuZCB0aGUgdmlldyBpbnN0\nYW5jZSBpbiBrZXkgOnZpZXcuClZpYSA6b2JqZWN0IHdlIGNhbiBhY2Nlc3Mg\nb3RoZXIgY29sdW1ucycgdmFsdWVzIGFuZCB2aWEgOnZpZXcgd2UgY2FuIGFj\nY2VzcyBvdXIKYXBwbGljYXRpb24ncyB2aWV3IGhlbHBlcnM6CgogICAgUmFp\nbHNBZG1pbi5jb25maWcgZG8gfGNvbmZpZ3wKICAgICAgY29uZmlnLm1vZGVs\nIFRlYW0gZG8KICAgICAgICBsaXN0IGRvCiAgICAgICAgICBmaWVsZCA6bmFt\nZSBkbwogICAgICAgICAgICBmb3JtYXR0ZWRfdmFsdWUgZG8KICAgICAgICAg\nICAgICBiaW5kaW5nc1s6dmlld10udGFnKDppbWcsIHsgOnNyYyA9PiBiaW5k\naW5nc1s6b2JqZWN0XS5sb2dvX3VybCB9KSA8PCB2YWx1ZQogICAgICAgICAg\nICBlbmQKICAgICAgICAgIGVuZAogICAgICAgICAgZmllbGQgOmNyZWF0ZWRf\nYXQKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKClRoaXMgd291bGQg\nb3V0cHV0IHRoZSBuYW1lIGNvbHVtbiBwcmVwZW5kZWQgd2l0aCB0ZWFtJ3Mg\nbG9nbyB1c2luZyB0aGUgYHRhZ2AKdmlldyBoZWxwZXIuIFRoaXMgZXhhbXBs\nZSB1c2VzIGB2YWx1ZWAgbWV0aG9kIHRvIGFjY2VzcyB0aGUgbmFtZSBmaWVs\nZCdzIHZhbHVlLApidXQgdGhhdCBjb3VsZCBiZSB3cml0dGVuIG1vcmUgdmVy\nYm9zZWx5IGFzIGBiaW5kaW5nc1s6b2JqZWN0XS5uYW1lYC4KCkZpZWxkcyBv\nZiBkaWZmZXJlbnQgZGF0ZSB0eXBlcyAoZGF0ZSwgZGF0ZXRpbWUsIHRpbWUs\nIHRpbWVzdGFtcCkgaGF2ZSB0d28gZXh0cmEKb3B0aW9ucyB0byBzZXQgdGhl\nIHRpbWUgZm9ybWF0dGluZzoKCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8\nY29uZmlnfAogICAgICBjb25maWcubW9kZWwgVGVhbSBkbwogICAgICAgIGxp\nc3QgZG8KICAgICAgICAgIGZpZWxkIDpuYW1lCiAgICAgICAgICBmaWVsZCA6\nY3JlYXRlZF9hdCBkbwogICAgICAgICAgICBkYXRlX2Zvcm1hdCA6c2hvcnQK\nICAgICAgICAgIGVuZAogICAgICAgICAgZmllbGQgOnVwZGF0ZWRfYXQgZG8K\nICAgICAgICAgICAgc3RyZnRpbWVfZm9ybWF0ICIlWS0lbS0lZCIKICAgICAg\nICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKVGhpcyB3\nb3VsZCByZW5kZXIgYWxsIHRoZSB0ZWFtcycgImNyZWF0ZWQgYXQiIGRhdGVz\nIGluIHRoZSBzaG9ydCBmb3JtYXQgb2YgeW91cgphcHBsaWNhdGlvbidzIGxv\nY2FsZSBhbmQgInVwZGF0ZWQgYXQiIGRhdGVzIGluIGZvcm1hdCBZWVlZLU1N\nLURELiBJZiBib3RoCm9wdGlvbnMgYXJlIGRlZmluZWQgZm9yIGEgc2luZ2xl\nIGZpZWxkLCBgc3RyZnRpbWVfZm9ybWF0YCBoYXMgcHJlY2VkZW5jZSBvdmVy\nCmBkYXRlX2Zvcm1hdGAgb3B0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBh\nYm91dCBsb2NhbGl6aW5nIFJhaWxzIHNlZQpbUmFpbHMgSW50ZXJuYXRpb25h\nbGl6YXRpb24gQVBJXShodHRwOi8vZWRnZWd1aWRlcy5ydWJ5b25yYWlscy5v\ncmcvaTE4bi5odG1sI2FkZGluZy1kYXRlLXRpbWUtZm9ybWF0cykKYW5kIFtS\nYWlscyBJMThuIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9zdmVu\nZnVjaHMvcmFpbHMtaTE4bi90cmVlL21hc3Rlci9yYWlscy9sb2NhbGUpLgoK\nKipGaWVsZHMgLSBTb3J0YWJpbGl0eSoqCgpZb3UgY2FuIG1ha2UgYSBjb2x1\nbW4gbm9uLXNvcnRhYmxlIGJ5IHNldHRpbmcgdGhlIHNvcnRhYmxlIG9wdGlv\nbiB0byBmYWxzZToKCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmln\nfAogICAgICBjb25maWcubW9kZWwgVGVhbSBkbwogICAgICAgIGxpc3QgZG8K\nICAgICAgICAgIGZpZWxkIDpuYW1lCiAgICAgICAgICBmaWVsZCA6Y3JlYXRl\nZF9hdCBkbwogICAgICAgICAgICBzb3J0YWJsZSBmYWxzZQogICAgICAgICAg\nZW5kCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgoqKkZpZWxkcyAt\nIENvbHVtbiBDU1MgY2xhc3MqKgoKQnkgZGVmYXVsdCBlYWNoIGNvbHVtbiBo\nYXMgYSBDU1MgY2xhc3Mgc2V0IGFjY29yZGluZyB0byBmaWVsZCdzIGRhdGEg\ndHlwZS4gWW91CmNhbiBjdXN0b21pemUgdGhpcyBieToKCiAgICBSYWlsc0Fk\nbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBjb25maWcubW9kZWwgVGVh\nbSBkbwogICAgICAgIGxpc3QgZG8KICAgICAgICAgIGZpZWxkIDpuYW1lCiAg\nICAgICAgICBmaWVsZCA6Y3JlYXRlZF9hdCBkbwogICAgICAgICAgICBjc3Nf\nY2xhc3MgImN1c3RvbUNsYXNzIgogICAgICAgICAgZW5kCiAgICAgICAgZW5k\nCiAgICAgIGVuZAogICAgZW5kCgpUaGlzIHdvdWxkIHJlbmRlciB0aGUgImNy\nZWF0ZWQgYXQiIGZpZWxkJ3MgaGVhZGVyIGFuZCBib2R5IGNvbHVtbnMgd2l0\naCBhIENTUyBjbGFzcyBuYW1lZAoiY3VzdG9tQ2xhc3MiLgoKKipGaWVsZHMg\nLSBDb2x1bW4gd2lkdGgqKgoKQnkgZGVmYXVsdCBjb2x1bW5zJyB3aWR0aHMg\nYXJlIGNhbGN1bGF0ZWQgZnJvbSBjZXJ0YWluIHByZS1kZWZpbmVkLApkYXRh\nLXR5cGUtc3BlY2lmaWMgcGl4ZWwgdmFsdWVzLiBJZiB5b3Ugd2FudCB0byBl\nbnN1cmUgYSBtaW5pbXVtIHdpZHRoIGZvciBhCmNvbHVtbiwgeW91IGNhbjoK\nCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBjb25m\naWcubW9kZWwgVGVhbSBkbwogICAgICAgIGxpc3QgZG8KICAgICAgICAgIGZp\nZWxkIDpuYW1lIGRvCiAgICAgICAgICAgIGNvbHVtbl93aWR0aCAyMDAKICAg\nICAgICAgIGVuZAogICAgICAgICAgZmllbGQgOmNyZWF0ZWRfYXQKICAgICAg\nICBlbmQKICAgICAgZW5kCiAgICBlbmQKCioqRmllbGRzIC0gVGhlIG9iamVj\ndF9sYWJlbCBtZXRob2QqKgoKTGlzdCBzZWN0aW9uIGhhcyBhIGNvbmZpZ3Vy\nYXRpb24gb3B0aW9uIGBvYmplY3RfbGFiZWxgIHdoaWNoIGNvbmZpZ3VyZXMK\ndGhlIHRpdGxlIG9mIGEgc2luZ2xlIGRhdGFiYXNlIHJlY29yZC4KCkJ5IGRl\nZmF1bHQgaXQgcXVlcmllcyBpZiB0aGUgcmVjb3JkIGluIHF1ZXN0aW9uIGhh\ncyBjb2x1bW5zIG5hbWVkICJuYW1lIiBvcgoidGl0bGUiLiBJZiBuZWl0aGVy\nIGlzIGZvdW5kIGl0IHJldHVybnMgdGhlIG1vZGVsJ3MgY2xhc3NuYW1lIGFw\ncGVuZGVkIHdpdGggaXRzCmRhdGFiYXNlIGlkZW50aWZpZXIuCgpUaGlzIHZh\nbHVlIGlzIHVzZWQgaW4gYSBudW1iZXIgb2YgcGxhY2VzIGluIFJhaWxzQWRt\naW4gLSBmb3IgaW5zdGFuY2UgYXMgdGhlCm91dHB1dCBvZiBiZWxvbmdzIHRv\nIGFzc29jaWF0aW9ucyBpbiB0aGUgbGlzdGluZyB2aWV3cyBvZiByZWxhdGVk\nIG1vZGVscywgYXMKdGhlIG9wdGlvbiBsYWJlbHMgb2YgdGhlIHJlbGF0aW9u\nYWwgZmllbGRzJyBpbnB1dCB3aWRnZXRzIGluIHRoZSBlZGl0IHZpZXdzIG9m\nCnJlbGF0ZWQgbW9kZWxzIGFuZCBhcyBwYXJ0IG9mIHRoZSBhdWRpdCBpbmZv\ncm1hdGlvbiBzdG9yZWQgaW4gdGhlIGhpc3RvcnkKcmVjb3JkcyAtIHNvIGtl\nZXAgaW4gbWluZCB0aGF0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gaGFz\nIHdpZGVzcHJlYWQKZWZmZWN0cy4KCiAgICBSYWlsc0FkbWluLmNvbmZpZyBk\nbyB8Y29uZmlnfAogICAgICBjb25maWcubW9kZWwgVGVhbSBkbwogICAgICAg\nIGxpc3QgZG8KICAgICAgICAgIG9iamVjdF9sYWJlbCBkbwogICAgICAgICAg\nICAiI3tiaW5kaW5nc1s6b2JqZWN0XS5uYW1lfSAtICN7YmluZGluZ3NbOm9i\namVjdF0ubGVhZ3VlLm5hbWV9IgogICAgICAgICAgZW5kCiAgICAgICAgZW5k\nCiAgICAgIGVuZAogICAgZW5kCgpUaGlzIHdvdWxkIG91dHB1dCAiVGVhbSdz\nIG5hbWUgLSBUZWFtJ3MgbGVhZ3VlJ3MgbmFtZSIgaW4gYWxsIHRoZSBwbGFj\nZXMKbWVudGlvbmVkIGluIHBhcmFncmFwaCBhYm92ZSBleGFtcGxlLgoKIyMj\nIENyZWF0ZSBhbmQgdXBkYXRlIHZpZXdzCgoqIEZpZWxkIGdyb3VwaW5ncwog\nICogVmlzaWJpbGl0eQogICogTGFiZWxzCiAgKiBTeW50YXgKKiBGaWVsZHMK\nICAqIFJlbmRlcmluZwogICogT3ZlcnJpZGluZyBmaWVsZCB0eXBlCiAgKiBB\ndmFpbGFibGUgZmllbGQgdHlwZXMKICAqIENyZWF0aW5nIGEgY3VzdG9tIGZp\nZWxkIHR5cGUKICAqIENyZWF0aW5nIGEgY3VzdG9tIGZpZWxkIGZhY3RvcnkK\nCioqRmllbGQgZ3JvdXBpbmdzKioKCkJ5IGRlZmF1bHQgUmFpbHNBZG1pbiBn\ncm91cHMgZmllbGRzIGluIHRoZSBlZGl0IHZpZXdzIChjcmVhdGUgYW5kIHVw\nZGF0ZSB2aWV3cykKYnkgaW5jbHVkaW5nIGFsbCBkYXRhYmFzZSBjb2x1bW5z\nIGFuZCBiZWxvbmdzIHRvIGFzc29jaWF0aW9ucyB0byAiQmFzaWMgaW5mbyIK\nZ3JvdXAgd2hpY2ggaXMgZGlzcGxheWVkIG9uIHRvcCBvZiBmb3JtLiBCZWxv\ndyB0aGF0IGFyZSBkaXNwbGF5ZWQgYWxsIHRoZSBvdGhlcgphc3NvY2lhdGlv\nbnMgYSBtb2RlbCBoYXMsIG9uZSBncm91cCBwZXIgYXNzb2NpYXRpb24uCgpU\naGUgY29uZmlndXJhdGlvbiBhY2Nlc3NvcnMgYXJlIGBlZGl0YCwgYGNyZWF0\nZWAgYW5kIGB1cGRhdGVgLiBGaXJzdCBvbmUgaXMgYQpiYXRjaCBhY2Nlc3Nv\nciB3aGljaCBjb25maWd1cmVzIGJvdGggY3JlYXRlIGFuZCB1cGRhdGUgdmll\nd3MuIEZvciBjb25zaXN0ZW5jeSwKdGhlc2UgZXhhbXBsZXMgb25seSBpbmNs\ndWRlIHRoZSBiYXRjaCBhY2Nlc3NvciBgZWRpdGAsIGJ1dCBpZiB5b3UgbmVl\nZCBkaWZmZXJpbmcKY3JlYXRlIGFuZCB1cGRhdGUgdmlld3MganVzdCByZXBs\nYWNlIGBlZGl0YCB3aXRoIGBjcmVhdGVgIG9yIGB1cGRhdGVgLgoKKipGaWVs\nZCBncm91cGluZ3MgLSB2aXNpYmlsaXR5KioKCkZpZWxkIGdyb3VwcyBjYW4g\nYmUgaGlkZGVuOgoKICAgIFJhaWxzQWRtaW4uY29uZmlnIGRvIHxjb25maWd8\nCiAgICAgIGNvbmZpZy5tb2RlbCBUZWFtIGRvCiAgICAgICAgZWRpdCBkbwog\nICAgICAgICAgZ3JvdXAgOmRlZmF1bHQgZG8KICAgICAgICAgICAgaGlkZQog\nICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgpU\naGlzIHdvdWxkIGhpZGUgdGhlICJCYXNpYyBpbmZvIiBncm91cCB3aGljaCBp\ncyBhY2Nlc3NlZCBieSB0aGUgc3ltYm9sIDpkZWZhdWx0LgpBc3NvY2lhdGlv\nbnMnIGdyb3VwcyBjYW4gYmUgYWNjZXNzZWQgYnkgdGhlIG5hbWUgb2YgdGhl\nIGFzc29jaWF0aW9uLCBzdWNoIGFzCjpmYW5zIG9yIDpwbGF5ZXJzLiBUaGUg\naGlkZSBtZXRob2QgaXMganVzdCBhIHNob3J0Y3V0IGZvciB0aGUgYWN0dWFs\nIGB2aXNpYmxlYApvcHRpb24gd2hpY2ggd2FzIG1lbnRpb25lZCBpbiB0aGUg\nYmVnaW5uaW5nIG9mIHRoZSBuYXZpZ2F0aW9uIHNlY3Rpb24uCgoqKkZpZWxk\nIGdyb3VwaW5ncyAtIGxhYmVscyoqCgpGaWVsZCBncm91cHMgY2FuIGJlIHJl\nbmFtZWQ6CgogICAgUmFpbHNBZG1pbi5jb25maWcgZG8gfGNvbmZpZ3wKICAg\nICAgY29uZmlnLm1vZGVsIFRlYW0gZG8KICAgICAgICBlZGl0IGRvCiAgICAg\nICAgICBncm91cCA6ZGVmYXVsdCBkbwogICAgICAgICAgICBsYWJlbCAiVGVh\nbSBpbmZvcm1hdGlvbiIKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAg\nICBlbmQKICAgIGVuZAoKVGhpcyB3b3VsZCByZW5kZXIgIlRlYW0gaW5mb3Jt\nYXRpb24iIGluc3RlYWQgb2YgIkJhc2ljIGluZm8iIGFzIHRoZSBncm91cHMg\nbGFiZWwuCgoqKkZpZWxkIGdyb3VwaW5ncyAtIHN5bnRheCoqCgpBcyBpbiB0\naGUgbGlzdCB2aWV3LCB0aGUgZWRpdCB2aWV3cycgY29uZmlndXJhdGlvbiBi\nbG9ja3MgY2FuIGRpcmVjdGx5CmNvbnRhaW4gZmllbGQgY29uZmlndXJhdGlv\nbnMsIGJ1dCBpbiBlZGl0IHZpZXdzIHRob3NlIGNvbmZpZ3VyYXRpb25zIGNh\nbgphbHNvIGJlIG5lc3RlZCB3aXRoaW4gZ3JvdXAgY29uZmlndXJhdGlvbnMu\nIEJlbG93IGV4YW1wbGVzIHJlc3VsdCBhbgplcXVhbCBjb25maWd1cmF0aW9u\nOgoKICAgIFJhaWxzQWRtaW4uY29uZmlnIGRvIHxjb25maWd8CiAgICAgIGNv\nbmZpZy5tb2RlbCBUZWFtIGRvCiAgICAgICAgZWRpdCBkbwogICAgICAgICAg\nZ3JvdXAgOmRlZmF1bHQgZG8KICAgICAgICAgICAgbGFiZWwgIkRlZmF1bHQg\nZ3JvdXAiCiAgICAgICAgICBlbmQKICAgICAgICAgIGZpZWxkIDpuYW1lIGRv\nCiAgICAgICAgICAgIGxhYmVsICJUaXRsZSIKICAgICAgICAgICAgZ3JvdXAg\nOmRlZmF1bHQKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQK\nICAgIGVuZAoKICAgIFJhaWxzQWRtaW4uY29uZmlnIGRvIHxjb25maWd8CiAg\nICAgIGNvbmZpZy5tb2RlbCBUZWFtIGRvCiAgICAgICAgZWRpdCBkbwogICAg\nICAgICAgZ3JvdXAgOmRlZmF1bHQgZG8KICAgICAgICAgICAgbGFiZWwgIkRl\nZmF1bHQgZ3JvdXAiCiAgICAgICAgICAgIGZpZWxkIDpuYW1lIGRvCiAgICAg\nICAgICAgICAgbGFiZWwgIlRpdGxlIgogICAgICAgICAgICBlbmQKICAgICAg\nICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKSW4gZmFj\ndCB0aGUgZmlyc3QgZXhhbXBsZXMgYGdyb3VwIDpkZWZhdWx0YCBjb25maWd1\ncmF0aW9uIGlzIHVubmVjZXNzYXJ5CmFzIHRoZSBkZWZhdWx0IGdyb3VwIGhh\ncyBhbHJlYWR5IGluaXRpYWxpemVkIGFsbCBmaWVsZHMgYW5kIGJlbG9uZ3Mg\ndG8KYXNzb2NpYXRpb25zIGZvciBpdHNlbGYuCgoqKkZpZWxkcyoqCgpKdXN0\nIGxpa2UgaW4gdGhlIGxpc3QgdmlldywgYWxsIGZpZWxkcyBhcmUgdmlzaWJs\nZSBieSBkZWZhdWx0LiBJZiB5b3Ugc3BlY2lmaWNhbGx5CmRlY2xhcmUgZmll\nbGRzLCBvbmx5IGRlZmluZWQgZmllbGRzIHdpbGwgYmUgdmlzaWJsZSBhbmQg\ndGhleSB3aWxsIGJlIHByZXNlbnRlZAppbiB0aGUgb3JkZXIgZGVmaW5lZC4g\nVGh1cyBib3RoIGV4YW1wbGVzIHdvdWxkIHJlbmRlciBhIGZvcm0gd2l0aApv\nbmx5IG9uZSBncm91cCAobGFiZWxlZCAiRGVmYXVsdCBncm91cCIpIHRoYXQg\nd291bGQgY29udGFpbiBvbmx5IG9uZQplbGVtZW50IChsYWJlbGVkICJUaXRs\nZSIpLgoKSW4gdGhlIGxpc3QgdmlldyBsYWJlbCBpcyB0aGUgdGV4dCBkaXNw\nbGF5ZWQgaW4gdGhlIGZpZWxkJ3MgY29sdW1uIGhlYWRlciwgYnV0CmluIHRo\nZSBlZGl0IHZpZXdzIGxhYmVsIGxpdGVyYWxseSBtZWFucyB0aGUgaHRtbCBs\nYWJlbCBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aApmaWVsZCdzIGlucHV0IGVs\nZW1lbnQuCgpOYXR1cmFsbHkgZWRpdCB2aWV3cycgZmllbGRzIGFsc28gaGF2\nZSB0aGUgdmlzaWJsZSBvcHRpb24gYWxvbmcgd2l0aApoaWRlIGFuZCBzaG93\nIGFjY2Vzc29ycyBhcyB0aGUgbGlzdCB2aWV3IGhhcy4KCioqRmllbGRzIC0g\ncmVuZGVyaW5nKioKClRoZSBlZGl0IHZpZXcncyBmaWVsZHMgYXJlIHJlbmRl\ncmVkIHVzaW5nIHBhcnRpYWxzLiBFYWNoIGZpZWxkIHR5cGUgaGFzIGl0cyBv\nd24KcGFydGlhbCBwZXIgZGVmYXVsdCwgYnV0IHRoYXQgY2FuIGJlIG92ZXJy\naWRkZW46CgogICAgUmFpbHNBZG1pbi5jb25maWcgZG8gfGNvbmZpZ3wKICAg\nICAgY29uZmlnLm1vZGVsIFRlYW0gZG8KICAgICAgICBlZGl0IGRvCiAgICAg\nICAgICBmaWVsZCA6bmFtZSBkbwogICAgICAgICAgICBwYXJ0aWFsICJteV9h\nd2Vzb21lX3BhcnRpYWwiCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAg\nICAgZW5kCiAgICBlbmQKClRoZSBwYXJ0aWFsIHNob3VsZCBiZSBwbGFjZWQg\naW4geW91ciBhcHBsaWNhdGlvbnMgdGVtcGxhdGUgZm9sZGVyLCBzdWNoIGFz\nCmBhcHAvdmlld3MvcmFpbHNfYWRtaW4vbWFpbi9fbXlfYXdlc29tZV9wYXJ0\naWFsLmh0bWwuZXJiYC4KCk9uZSBjYW4gYWxzbyBjb21wbGV0ZWx5IG92ZXJy\naWRlIHRoZSByZW5kZXJpbmcgbG9naWM6CgogICAgUmFpbHNBZG1pbi5jb25m\naWcgZG8gfGNvbmZpZ3wKICAgICAgY29uZmlnLm1vZGVsIFRlYW0gZG8KICAg\nICAgICBlZGl0IGRvCiAgICAgICAgICBmaWVsZCA6bmFtZSBkbwogICAgICAg\nICAgICByZW5kZXIgZG8KICAgICAgICAgICAgICBiaW5kaW5nc1s6dmlld10u\ncmVuZGVyIDpwYXJ0aWFsID0+IHBhcnRpYWwudG9fcywgOmxvY2FscyA9PiB7\nOmZpZWxkID0+IHNlbGZ9CiAgICAgICAgICAgIGVuZAogICAgICAgICAgZW5k\nCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgpUaGF0IGV4YW1wbGUg\naXMganVzdCB0aGUgZGVmYXVsdCByZW5kZXJpbmcgbWV0aG9kLCBidXQgaXQg\nc2hvd3MgeW91IHRoYXQgeW91CmhhdmUgYWNjZXNzIHRvIHRoZSBjdXJyZW50\nIHRlbXBsYXRlJ3Mgc2NvcGUgd2l0aCBiaW5kaW5nc1s6dmlld10uIFRoZXJl\nJ3MgYWxzbwpiaW5kaW5nc1s6b2JqZWN0XSBhdmFpbGFibGUsIHdoaWNoIGlz\nIHRoZSBkYXRhYmFzZSByZWNvcmQgYmVpbmcgZWRpdGVkLgpCaW5kaW5ncyBj\nb25jZXB0IHdhcyBpbnRyb2R1Y2VkIGVhcmxpZXIgaW4gdGhpcyBkb2N1bWVu\ndCBhbmQgdGhlCmZ1bmN0aW9uYWxpdHkgaXMgdGhlIHNhbWUuCgoqKkZpZWxk\ncyAtIG92ZXJyaWRpbmcgZmllbGQgdHlwZSoqCgpJZiB5b3UnZCBsaWtlIHRv\nIG92ZXJyaWRlIHRoZSB0eXBlIG9mIHRoZSBmaWVsZCB0aGF0IGdldHMgaW5z\ndGFudGlhdGVkLCB0aGUKZmllbGQgbWV0aG9kIHByb3ZpZGVzIHNlY29uZCBw\nYXJhbWV0ZXIgd2hpY2ggaXMgZmllbGQgdHlwZSBhcyBhIHN5bWJvbC4gRm9y\nCmluc3RhbmNlLCBpZiB3ZSBoYXZlIGEgY29sdW1uIHRoYXQncyBhIHRleHQg\nY29sdW1uIGluIHRoZSBkYXRhYmFzZSwgYnV0IHdlJ2QKbGlrZSB0byBoYXZl\nIGl0IGFzIGEgc3RyaW5nIHR5cGUgd2UgY291bGQgYWNjb21wbGlzaCB0aGF0\nIGxpa2UgdGhpczoKCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmln\nfAogICAgICBjb25maWcubW9kZWwgVGVhbSBkbwogICAgICAgIGVkaXQgZG8K\nICAgICAgICAgIGZpZWxkIDpkZXNjcmlwdGlvbiwgOnN0cmluZyBkbwogICAg\nICAgICAgICAgIyBjb25maWd1cmF0aW9uIGhlcmUKICAgICAgICAgIGVuZAog\nICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKSWYgbm8gY29uZmlndXJh\ndGlvbiBuZWVkcyB0byB0YWtlIHBsYWNlIHRoZSBjb25maWd1cmF0aW9uIGJs\nb2NrIGNvdWxkIGhhdmUgYmVlbgpsZWZ0IG91dDoKCiAgICBSYWlsc0FkbWlu\nLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBjb25maWcubW9kZWwgVGVhbSBk\nbwogICAgICAgIGVkaXQgZG8KICAgICAgICAgIGZpZWxkIDpkZXNjcmlwdGlv\nbiwgOnN0cmluZwogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKQSB3\nb3JkIG9mIHdhcm5pbmcsIGlmIHlvdSBtYWtlIGZpZWxkIGRlY2xhcmF0aW9u\ncyBmb3IgdGhlIHNhbWUgZmllbGQgYSBudW1iZXIKb2YgdGltZXMgd2l0aCBh\nIHR5cGUgZGVmaW5pbmcgc2Vjb25kIGFyZ3VtZW50IGluIHBsYWNlLCB0aGUg\ndHlwZSBkZWZpbml0aW9uCndpbGwgZGl0Y2ggdGhlIG9sZCBmaWVsZCBjb25m\naWd1cmF0aW9uIGFuZCBsb2FkIGEgbmV3IGZpZWxkIGluc3RhbmNlIGluIHBs\nYWNlLgoKKipGaWVsZHMgLSBBdmFpbGFibGUgZmllbGQgdHlwZXMqKgoKUmFp\nbHNBZG1pbiBzaGlwcyB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGQgdHlwZXM6\nCgoqIGJlbG9uZ3NfdG9fYXNzb2NpYXRpb24KKiBib29sZWFuCiogZGF0ZQoq\nIGRhdGV0aW1lCiogZGVjaW1hbAoqIGZpbGVfdXBsb2FkIF9kb2VzIG5vdCBp\nbml0aWFsaXplIGF1dG9tYXRpY2FsbHlfCiogcGFwZXJjbGlwX2ZpbGUgX2lu\naXRpYWxpemVzIGF1dG9tYXRpY2FsbHkgaWYgUGFwZXJjbGlwIGlzIHByZXNl\nbnRfCiogZmxvYXQKKiBoYXNfYW5kX2JlbG9uZ3NfdG9fbWFueV9hc3NvY2lh\ndGlvbgoqIGhhc19tYW55X2Fzc29jaWF0aW9uCiogaGFzX29uZV9hc3NvY2lh\ndGlvbgoqIGludGVnZXIKKiBwYXNzd29yZCBfaW5pdGlhbGl6ZXMgaWYgc3Ry\naW5nIHR5cGUgY29sdW1uJ3MgbmFtZSBpcyBwYXNzd29yZF8KKiBzdHJpbmcK\nKiB0ZXh0CiogdGltZQoqIHRpbWVzdGFtcAoqIHZpcnR1YWwgX3VzZWZ1bCBm\nb3IgZGlzcGxheWluZyBkYXRhIHRoYXQgaXMgY2FsY3VsYXRlZCBhIHJ1bnRp\nbWUKKGZvciBleGFtcGxlIGEgbWV0aG9kIGNhbGwgb24gbW9kZWwgaW5zdGFu\nY2UpXwoKKipGaWVsZHMgLSBDcmVhdGluZyBhIGN1c3RvbSBmaWVsZCB0eXBl\nKioKCklmIHlvdSBoYXZlIGEgcmV1c2VhYmxlIGZpZWxkIHlvdSBjYW4gZGVm\naW5lIGEgY3VzdG9tIGNsYXNzIGV4dGVuZGluZwpgUmFpbHNBZG1pbjo6Q29u\nZmlnOjpGaWVsZHM6OkJhc2VgIGFuZCByZWdpc3RlciBpdCBmb3IgUmFpbHNB\nZG1pbjoKCiAgICBSYWlsc0FkbWluOjpDb25maWc6OkZpZWxkczo6VHlwZXM6\nOnJlZ2lzdGVyKDpteV9hd2Vzb21lX3R5cGUsIE15QXdlc29tZUZpZWxkQ2xh\nc3MpCgpUaGVuIHlvdSBjYW4gdXNlIHlvdXIgY3VzdG9tIGNsYXNzIGluIGEg\nZmllbGQ6CgogICAgUmFpbHNBZG1pbi5jb25maWcgZG8gfGNvbmZpZ3wKICAg\nICAgY29uZmlnLm1vZGVsIFRlYW0gZG8KICAgICAgICBlZGl0IGRvCiAgICAg\nICAgICBmaWVsZCA6bmFtZSwgOm15X2F3ZXNvbWVfdHlwZSBkbwogICAgICAg\nICAgICAgIyBjb25maWd1cmF0aW9uIGhlcmUKICAgICAgICAgIGVuZAogICAg\nICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKKipGaWVsZHMgLSBDcmVhdGlu\nZyBhIGN1c3RvbSBmaWVsZCBmYWN0b3J5KioKClR5cGUgZ3Vlc3NpbmcgY2Fu\nIGJlIG92ZXJyaWRkZW4gYnkgcmVnaXN0ZXJpbmcgYSBjdXN0b20gZmllbGQg\nImZhY3RvcnkiLCBidXQKZm9yIG5vdyB5b3UgbmVlZCB0byBzdHVkeSBgbGli\nL3JhaWxzX2FkbWluL2NvbmZpZy9maWVsZHMvZmFjdG9yaWVzLypgIGZvcgpl\neGFtcGxlcyBpZiB5b3Ugd2FudCB0byB1c2UgdGhhdCBtZWNoYW5pc20uCgoj\nIyMgTWFzcyBBc3NpZ25tZW50IE9wZXJhdGlvbnMgIyMjCgoqIE1hc3MgYXNz\naWduIGZvciBldmVyeSBtb2RlbCBjb25maWd1cmF0aW9uCiogTWFzcyBhc3Np\nZ24gZm9yIGV2ZXJ5IHNlY3Rpb24gKGNyZWF0ZSwgbGlzdCwgbmF2aWdhdGlv\nbiBhbmQgdXBkYXRlKQoqIE1hc3MgYXNzaWduIGJ5IGZpZWxkIHR5cGUKCioq\nTWFzcyBhc3NpZ24gZm9yIGV2ZXJ5IG1vZGVsIGNvbmZpZ3VyYXRpb24qKgoK\nTWFzcyBhc3NpZ25tZW50IG9wZXJhdGlvbnMgYXJlIHVzZWQgdG8gcGFzcyBp\nbiBjb25maWd1cmF0aW9uIGJsb2NrcyBmb3IKbXVsdGlwbGUgdGFyZ2V0cyBh\ndCBvbmNlLiBGb3IgaW5zdGFuY2UsIHRoZSBjb2RlIGJlbG93IGNvbmZpZ3Vy\nZXMgZXZlcnkgbW9kZWxzJwpsYWJlbCBkaXNwbGF5ZWQgdXBwZXJjYXNlZCBp\nbiB0aGUgbGlzdCB2aWV3LgoKICAgIFJhaWxzQWRtaW4uY29uZmlnIGRvIHxj\nb25maWd8CiAgICAgIGNvbmZpZy5tb2RlbHMgZG8KICAgICAgICBsaXN0IGRv\nCiAgICAgICAgICBsYWJlbCBkbwogICAgICAgICAgICBsYWJlbC51cGNhc2Ug\nIyBpbiB0aGlzIGNvbnRleHQgbGFiZWwgcmVmZXJzIHRvIGRlZmF1bHQgbGFi\nZWwgbWV0aG9kCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgZW5k\nCiAgICBlbmQKCioqTWFzcyBhc3NpZ24gZm9yIGV2ZXJ5IHNlY3Rpb24gKGNy\nZWF0ZSwgbGlzdCwgbmF2aWdhdGlvbiBhbmQgdXBkYXRlKSoqCgpJZiBvbmUg\nd291bGQgbGlrZSB0byBhc3NpZ24gdGhhdCBzYW1lIGJlaGF2aW9yIGZvciBh\nbGwgdGhlIGRpZmZlcmVudCB2aWV3cyBpbgpSYWlsc0FkbWluIChjcmVhdGUs\nIGxpc3QsIG5hdmlnYXRpb24gYW5kIHVwZGF0ZSkgb25lIGNvdWxkIHBhc3Mg\ndGhlIGxhYmVsCmRlZmluaXRpb24gb25lIGxldmVsIGhpZ2hlcjoKCiAgICBS\nYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBjb25maWcubW9k\nZWxzIGRvCiAgICAgICAgbGFiZWwgZG8KICAgICAgICAgIGxhYmVsLnVwY2Fz\nZQogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKTmF0dXJhbGx5IHRo\naXMgYWxzbyB3b3JrcyBmb3IgYSBzaW5nbGUgbW9kZWwgY29uZmlndXJhdGlv\nbjoKCiAgICBSYWlsc0FkbWluLmNvbmZpZyBkbyB8Y29uZmlnfAogICAgICBj\nb25maWcubW9kZWwgVGVhbSBkbwogICAgICAgIGxhYmVsIGRvCiAgICAgICAg\nICBsYWJlbC51cGNhc2UKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQK\nCioqTWFzcyBhc3NpZ24gYnkgZmllbGQgdHlwZSoqCgpPbmUgY2FuIGFsc28g\nYXNzaWduIGNvbmZpZ3VyYXRpb25zIGZvciBhbGwgZmllbGRzIGJ5IHR5cGUu\nIEZvciBpbnN0YW5jZQptb2RpZnlpbmcgdGhlIGRhdGUgcHJlc2VudGF0aW9u\nIG9mIGFsbCBkYXRldGltZSBmaWVsZHMgaW4gYWxsIHNlY3Rpb25zIGNhbiBi\nZQphY2NvbXBsaXNoZWQgbGlrZSB0aGlzOgoKICAgIFJhaWxzQWRtaW4uY29u\nZmlnIGRvIHxjb25maWd8CiAgICAgIGNvbmZpZy5tb2RlbHMgZG8KICAgICAg\nICBmaWVsZHNfb2ZfdHlwZSA6ZGF0ZXRpbWUgZG8KICAgICAgICAgIHN0cmZ0\naW1lX2Zvcm1hdCAiJVktJW0tJWQiCiAgICAgICAgZW5kCiAgICAgIGVuZAog\nICAgZW5kCgpBdXRob3JpemF0aW9uCi0tLS0tLS0tLS0tLS0KClJhaWxzIEFk\nbWluIGhhcyBubyBzcGVjaWZpYyBhdXRob3JpemF0aW9uIHJlcXVpcmVtZW50\ncyBzbyB5b3UgY2FuIHVzZQp3aGljaGV2ZXIgYXV0aHogZnJhbWV3b3JrIGJl\nc3Qgc3VpdHMgeW91ciBuZWVkcy4KCiMjIyBEZWNsYXJhdGl2ZSBBdXRob3Jp\nemF0aW9uCgpbRGVjbGFyYXRpdmUgQXV0aG9yaXphdGlvbl0oaHR0cHM6Ly9n\naXRodWIuY29tL3N0ZmZuL2RlY2xhcmF0aXZlX2F1dGhvcml6YXRpb24pCndv\ncmtzIHdlbGwgd2l0aCBSYWlscyBBZG1pbi4gIFlvdSBuZWVkIHRvIGhvb2sK\nZGVjbGFyYXRpdmVfYXV0aG9yaXphdGlvbidzIGNvZGUgaW50byBSYWlscyBB\nZG1pbidzIGNvbnRyb2xsZXJzIGFuZAp3cml0ZSBhcHByb3ByaWF0ZSBhdXRo\nb3JpemF0aW9uIGRlY2xhcmF0aW9ucy4KCllvdSBjYW4gaG9vayBkZWNsYXJh\ndGl2ZV9hdXRob3JpemF0aW9uIGludG8gUmFpbHMgQWRtaW4gdXNpbmcgY29k\nZQpsaWtlIHRoaXMgaW4gYW4gaW5pdGlhbGl6ZXIgKGUuZy4sIGNvbmZpZy9p\nbml0aWFsaXplcnMvcmFpbHNfYWRtaW4ucmIpOgoKICAgIHJlcXVpcmUgInJh\naWxzX2FkbWluL2FwcGxpY2F0aW9uX2NvbnRyb2xsZXIiCgogICAgbW9kdWxl\nIFJhaWxzQWRtaW4KICAgICAgY2xhc3MgQXBwbGljYXRpb25Db250cm9sbGVy\nIDwgOjpBcHBsaWNhdGlvbkNvbnRyb2xsZXIKICAgICAgICBmaWx0ZXJfYWNj\nZXNzX3RvIDphbGwKICAgICAgZW5kCiAgICBlbmQKCkJ5IGRlZmF1bHQsIGFj\nY2VzcyB0byB0aGUgY29udHJvbGxlcnMgd2lsbCBiZSBkZW5pZWQgdG8gYWxs\nIHVzZXJzLCBzbwp5b3UgbmVlZCB0byB3cml0ZSBzb21lIGF1dGh6IHJ1bGVz\nIHNvIHRoYXQgdGhlIGFwcHJvcHJpYXRlIHVzZXJzIGNhbgpnZXQgYWNjZXNz\nLiAgVGhlc2UgcnVsZXMgd2lsbCB2YXJ5LCBidXQgaGVyZSdzIGFuIGV4YW1w\nbGU6CgogICAgYXV0aG9yaXphdGlvbiBkbwogICAgICByb2xlIDphZG1pbiBk\nbwogICAgICAgIGhhc19wZXJtaXNzaW9uX29uIDpyYWlsc19hZG1pbl9oaXN0\nb3J5LCA6dG8gPT4gOmxpc3QKICAgICAgICBoYXNfcGVybWlzc2lvbl9vbiA6\ncmFpbHNfYWRtaW5fbWFpbiwgOnRvID0+IFs6aW5kZXgsIDpzaG93LCA6bmV3\nLCA6ZWRpdCwgOmNyZWF0ZSwgOnVwZGF0ZSwgOmRlc3Ryb3ksIDpsaXN0LCA6\nZGVsZXRlLCA6Z2V0X3BhZ2VzLCA6c2hvd19oaXN0b3J5XQogICAgICBlbmQK\nICAgIGVuZAoKVGhpcyB3aWxsIGFsbG93IHRoZSA6YWRtaW4gcm9sZSB0byBk\nbyBldmVyeXRoaW5nLCBhbmQgd2lsbCBwcmV2ZW50IGFsbApvdGhlciByb2xl\ncyBmcm9tIGRvaW5nIGFueXRoaW5nLgoKQ29udHJpYnV0aW5nCi0tLS0tLS0t\nLS0tLQpJbiB0aGUgc3Bpcml0IG9mIFtmcmVlIHNvZnR3YXJlXShodHRwOi8v\nd3d3LmZzZi5vcmcvbGljZW5zaW5nL2Vzc2F5cy9mcmVlLXN3Lmh0bWwpLCAq\nKmV2ZXJ5b25lKiogaXMgZW5jb3VyYWdlZCB0byBoZWxwIGltcHJvdmUgdGhp\ncyBwcm9qZWN0LgoKSGVyZSBhcmUgc29tZSB3YXlzICp5b3UqIGNhbiBjb250\ncmlidXRlOgoKKiBieSB1c2luZyBhbHBoYSwgYmV0YSwgYW5kIHByZXJlbGVh\nc2UgdmVyc2lvbnMKKiBieSByZXBvcnRpbmcgYnVncwoqIGJ5IHN1Z2dlc3Rp\nbmcgbmV3IGZlYXR1cmVzCiogYnkgW3RyYW5zbGF0aW5nIHRvIGEgbmV3IGxh\nbmd1YWdlXShodHRwczovL2dpdGh1Yi5jb20vc2ZlcmlrL3JhaWxzX2FkbWlu\nL3RyZWUvbWFzdGVyL2NvbmZpZy9sb2NhbGVzKQoqIGJ5IHdyaXRpbmcgb3Ig\nZWRpdGluZyBkb2N1bWVudGF0aW9uCiogYnkgd3JpdGluZyBzcGVjaWZpY2F0\naW9ucwoqIGJ5IHdyaXRpbmcgY29kZSAoKipubyBwYXRjaCBpcyB0b28gc21h\nbGwqKjogZml4IHR5cG9zLCBhZGQgY29tbWVudHMsIGNsZWFuIHVwIGluY29u\nc2lzdGVudCB3aGl0ZXNwYWNlKQoqIGJ5IHJlZmFjdG9yaW5nIGNvZGUKKiBi\neSByZXNvbHZpbmcgW2lzc3Vlc10oaHR0cDovL2dpdGh1Yi5jb20vc2Zlcmlr\nL3JhaWxzX2FkbWluL2lzc3VlcykKKiBieSByZXZpZXdpbmcgcGF0Y2hlcwoK\nU3VibWl0dGluZyBhbiBJc3N1ZQotLS0tLS0tLS0tLS0tLS0tLS0tCldlIHVz\nZSB0aGUgW0dpdEh1YiBpc3N1ZSB0cmFja2VyXShodHRwOi8vZ2l0aHViLmNv\nbS9zZmVyaWsvcmFpbHNfYWRtaW4vaXNzdWVzKSB0byB0cmFjayBidWdzIGFu\nZApmZWF0dXJlcy4gQmVmb3JlIHN1Ym1pdHRpbmcgYSBidWcgcmVwb3J0IG9y\nIGZlYXR1cmUgcmVxdWVzdCwgY2hlY2sgdG8gbWFrZSBzdXJlIGl0IGhhc24n\ndCBhbHJlYWR5CmJlZW4gc3VibWl0dGVkLiBZb3UgY2FuIGluZGljYXRlIHN1\ncHBvcnQgZm9yIGFuIGV4aXN0aW5nIGlzc3VzZSBieSB2b3RpbmcgaXQgdXAu\nIFdoZW4gc3VibWl0dGluZyBhCmJ1ZyByZXBvcnQsIHBsZWFzZSBpbmNsdWRl\nIGEgW0dpc3RdKGh0dHA6Ly9naXN0LmdpdGh1Yi5jb20vKSB0aGF0IGluY2x1\nZGVzIGEgc3RhY2sgdHJhY2UgYW5kIGFueQpkZXRhaWxzIHRoYXQgbWF5IGJl\nIG5lY2Vzc2FyeSB0byByZXByb2R1Y2UgdGhlIGJ1ZywgaW5jbHVkaW5nIHlv\ndXIgZ2VtIHZlcnNpb24sIFJ1YnkgdmVyc2lvbiwgYW5kCm9wZXJhdGluZyBz\neXN0ZW0uIElkZWFsbHksIGEgYnVnIHJlcG9ydCBzaG91bGQgaW5jbHVkZSBh\nIHB1bGwgcmVxdWVzdCB3aXRoIGZhaWxpbmcgc3BlY3MuCgpTdWJtaXR0aW5n\nIGEgUHVsbCBSZXF1ZXN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMS4g\nRm9yayB0aGUgcHJvamVjdC4KMi4gQ3JlYXRlIGEgdG9waWMgYnJhbmNoLgoz\nLiBJbXBsZW1lbnQgeW91ciBmZWF0dXJlIG9yIGJ1ZyBmaXguICAqTk9URSog\nLSB0aGVyZSdzIGEgc21hbGwgdGVzdCBhcHAgbG9jYXRlZCBpbiB0aGUgc3Bl\nYy9kdW1teV9hcHAgZGlyZWN0b3J5IHRoYXQgeW91IGNhbiB1c2UgdG8gZXhw\nZXJpbWVudCB3aXRoIHJhaWxzX2FkbWluLgo0LiBBZGQgZG9jdW1lbnRhdGlv\nbiBmb3IgeW91ciBmZWF0dXJlIG9yIGJ1ZyBmaXguCjUuIFJ1biBgYnVuZGxl\nIGV4ZWMgcmFrZSBkb2M6eWFyZGAuIElmIHlvdXIgY2hhbmdlcyBhcmUgbm90\nIDEwMCUgZG9jdW1lbnRlZCwgZ28gYmFjayB0byBzdGVwIDQuCjYuIEFkZCBz\ncGVjcyBmb3IgeW91ciBmZWF0dXJlIG9yIGJ1ZyBmaXguCjcuIFJ1biBgYnVu\nZGxlIGV4ZWMgcmFrZSBzcGVjYC4gSWYgeW91ciBjaGFuZ2VzIGFyZSBub3Qg\nMTAwJSBjb3ZlcmVkLCBnbyBiYWNrIHRvIHN0ZXAgNi4KOC4gQ29tbWl0IGFu\nZCBwdXNoIHlvdXIgY2hhbmdlcy4KOS4gU3VibWl0IGEgcHVsbCByZXF1ZXN0\nLiBQbGVhc2UgZG8gbm90IGluY2x1ZGUgY2hhbmdlcyB0byB0aGUgZ2Vtc3Bl\nYywgdmVyc2lvbiwgb3IgaGlzdG9yeSBmaWxlLiAoSWYgeW91IHdhbnQgdG8g\nY3JlYXRlIHlvdXIgb3duIHZlcnNpb24gZm9yIHNvbWUgcmVhc29uLCBwbGVh\nc2UgZG8gc28gaW4gYSBzZXBhcmF0ZSBjb21taXQuKQoKQ29udGFjdAotLS0t\nLS0tCklmIHlvdSBoYXZlIHF1ZXN0aW9ucyBhYm91dCBjb250cmlidXRpbmcg\ndG8gUmFpbHNBZG1pbiwgcGxlYXNlIGNvbnRhY3QgW0VyaWsgTWljaGFlbHMt\nT2Jlcl0oaHR0cDovL2dpdGh1Yi5jb20vc2ZlcmlrKSBhbmQgW0JvZ2RhbiBH\nYXphXShodHRwOi8vZ2l0aHViLmNvbS9odXJyeWNhbmUpLgo=\n",
|
4
|
+
"size": 25325,
|
5
|
+
"encoding": "base64",
|
6
|
+
"sha": "94616fa57520ac8147522c7cf9f03d555595c5ea"
|
7
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
{
|
2
|
+
"commit_id": "629e9fd9d4df25528e84d31afdc8ebeb0f56fbb3",
|
3
|
+
"created_at": "2012-01-12T18:34:03Z",
|
4
|
+
"position": null,
|
5
|
+
"line": null,
|
6
|
+
"body": " (1) I do not agree with 'needs to be fixed'.\r\n\r\nwhy can't tests be order dependent after all? it doesn't hurt actually, and I have yet to see a refactoring case where it became a PITA.\r\n\r\n (2) Even if you don't care about the reason builds fail ('a.k.a needs to be fixed'), you are supposing that tests are not order dependent because of the 'order random'. But in reality you are just checking a random subset of random (hem..), you can't assert that with the color. \r\n\r\nA green build can then mean 2 things: \r\n\r\n* build is green\r\n* build is greenish, order dependent\r\n\r\nWhich doesn't help with (1)\r\n\r\n (3) When comparing builds on Travis or with git dissect, (2) will bite you while debugging at 12pm and make you cry your Mum that you really don't give a shit about (1)\r\n\r\nI guess.",
|
7
|
+
"url": "https://api.github.com/repos/sferik/rails_admin/comments/861907",
|
8
|
+
"updated_at": "2012-01-12T18:35:59Z",
|
9
|
+
"user": {
|
10
|
+
"url": "https://api.github.com/users/bbenezech",
|
11
|
+
"login": "bbenezech",
|
12
|
+
"gravatar_id": "c1607873b99845b2cd53f8634860d4d4",
|
13
|
+
"avatar_url": "https://secure.gravatar.com/avatar/c1607873b99845b2cd53f8634860d4d4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
14
|
+
"id": 26794
|
15
|
+
},
|
16
|
+
"path": null,
|
17
|
+
"id": 861907,
|
18
|
+
"html_url": "https://github.com/sferik/rails_admin/commit/629e9fd9d4#commitcomment-861907"
|
19
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"commit_id": "629e9fd9d4df25528e84d31afdc8ebeb0f56fbb3",
|
4
|
+
"created_at": "2012-01-12T10:21:32Z",
|
5
|
+
"position": null,
|
6
|
+
"line": null,
|
7
|
+
"body": "Hey Eric,\r\n\r\nI think it's a terrible idea: for a number of reasons (dissections, etc.), test suite should stay deterministic IMO.\r\n",
|
8
|
+
"url": "https://api.github.com/repos/sferik/rails_admin/comments/860296",
|
9
|
+
"html_url": "https://github.com/sferik/rails_admin/commit/629e9fd9d4#commitcomment-860296",
|
10
|
+
"updated_at": "2012-01-12T10:21:32Z",
|
11
|
+
"user": {
|
12
|
+
"url": "https://api.github.com/users/bbenezech",
|
13
|
+
"avatar_url": "https://secure.gravatar.com/avatar/c1607873b99845b2cd53f8634860d4d4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
14
|
+
"login": "bbenezech",
|
15
|
+
"gravatar_id": "c1607873b99845b2cd53f8634860d4d4",
|
16
|
+
"id": 26794
|
17
|
+
},
|
18
|
+
"path": null,
|
19
|
+
"id": 860296
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"commit_id": "629e9fd9d4df25528e84d31afdc8ebeb0f56fbb3",
|
23
|
+
"created_at": "2012-01-12T17:09:17Z",
|
24
|
+
"position": null,
|
25
|
+
"line": null,
|
26
|
+
"body": "I'm not sure what you mean by \"dissections\". Could you please spell out the reasons you're against this?\r\n\r\nI want to make sure our tests pass regardless of what order they're run in. For example, if one test creates something and the next test depends on that thing exiting for it to pass, that indicates an incomplete test that needs to be fixed.",
|
27
|
+
"url": "https://api.github.com/repos/sferik/rails_admin/comments/861577",
|
28
|
+
"html_url": "https://github.com/sferik/rails_admin/commit/629e9fd9d4#commitcomment-861577",
|
29
|
+
"updated_at": "2012-01-12T17:09:17Z",
|
30
|
+
"user": {
|
31
|
+
"url": "https://api.github.com/users/sferik",
|
32
|
+
"avatar_url": "https://secure.gravatar.com/avatar/1f74b13f1e5c6c69cb5d7fbaabb1e2cb?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
33
|
+
"login": "sferik",
|
34
|
+
"gravatar_id": "1f74b13f1e5c6c69cb5d7fbaabb1e2cb",
|
35
|
+
"id": 10308
|
36
|
+
},
|
37
|
+
"path": null,
|
38
|
+
"id": 861577
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"commit_id": "629e9fd9d4df25528e84d31afdc8ebeb0f56fbb3",
|
42
|
+
"created_at": "2012-01-12T18:34:03Z",
|
43
|
+
"position": null,
|
44
|
+
"line": null,
|
45
|
+
"body": " (1) I do not agree with 'needs to be fixed'.\r\n\r\nwhy can't tests be order dependent after all? it doesn't hurt actually, and I have yet to see a refactoring case where it became a PITA.\r\n\r\n (2) Even if you don't care about the reason builds fail ('a.k.a needs to be fixed'), you are supposing that tests are not order dependent because of the 'order random'. But in reality you are just checking a random subset of random (hem..), you can't assert that with the color. \r\n\r\nA green build can then mean 2 things: \r\n\r\n* build is green\r\n* build is greenish, order dependent\r\n\r\nWhich doesn't help with (1)\r\n\r\n (3) When comparing builds on Travis or with git dissect, (2) will bite you while debugging at 12pm and make you cry your Mum that you really don't give a shit about (1)\r\n\r\nI guess.",
|
46
|
+
"url": "https://api.github.com/repos/sferik/rails_admin/comments/861907",
|
47
|
+
"html_url": "https://github.com/sferik/rails_admin/commit/629e9fd9d4#commitcomment-861907",
|
48
|
+
"updated_at": "2012-01-12T18:35:59Z",
|
49
|
+
"user": {
|
50
|
+
"url": "https://api.github.com/users/bbenezech",
|
51
|
+
"avatar_url": "https://secure.gravatar.com/avatar/c1607873b99845b2cd53f8634860d4d4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
52
|
+
"login": "bbenezech",
|
53
|
+
"gravatar_id": "c1607873b99845b2cd53f8634860d4d4",
|
54
|
+
"id": 26794
|
55
|
+
},
|
56
|
+
"path": null,
|
57
|
+
"id": 861907
|
58
|
+
},
|
59
|
+
{
|
60
|
+
"commit_id": "629e9fd9d4df25528e84d31afdc8ebeb0f56fbb3",
|
61
|
+
"created_at": "2012-01-12T18:52:25Z",
|
62
|
+
"position": null,
|
63
|
+
"line": null,
|
64
|
+
"body": "From the [RSpec 2.8 release notes](http://blog.davidchelimsky.net/2012/01/04/rspec-28-is-released/): \r\n\r\n> When you use --order random, RSpec prints out the random number it used to seed the randomizer. When you think you’ve found an order-dependency bug, you can pass the seed along and the order will remain consistent:\r\n\r\n> --order rand:3455\r\n\r\nSo specs can be made deterministic for any particular seed.\r\n\r\nOver time, we should catch all of the order-dependency bugs in the specs.",
|
65
|
+
"url": "https://api.github.com/repos/sferik/rails_admin/comments/861948",
|
66
|
+
"html_url": "https://github.com/sferik/rails_admin/commit/629e9fd9d4#commitcomment-861948",
|
67
|
+
"updated_at": "2012-01-12T18:52:25Z",
|
68
|
+
"user": {
|
69
|
+
"url": "https://api.github.com/users/sferik",
|
70
|
+
"avatar_url": "https://secure.gravatar.com/avatar/1f74b13f1e5c6c69cb5d7fbaabb1e2cb?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
71
|
+
"login": "sferik",
|
72
|
+
"gravatar_id": "1f74b13f1e5c6c69cb5d7fbaabb1e2cb",
|
73
|
+
"id": 10308
|
74
|
+
},
|
75
|
+
"path": null,
|
76
|
+
"id": 861948
|
77
|
+
}
|
78
|
+
]
|
@@ -0,0 +1,212 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"avatar_url": "https://secure.gravatar.com/avatar/6d8ca4feec71d59cc926a9bfb8fd3869?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
4
|
+
"gravatar_id": "6d8ca4feec71d59cc926a9bfb8fd3869",
|
5
|
+
"login": "puls",
|
6
|
+
"url": "https://api.github.com/users/puls",
|
7
|
+
"id": 9763
|
8
|
+
},
|
9
|
+
{
|
10
|
+
"avatar_url": "https://secure.gravatar.com/avatar/68f4393247277300e4fbb2cdde3f95aa?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
11
|
+
"gravatar_id": "68f4393247277300e4fbb2cdde3f95aa",
|
12
|
+
"login": "joearasin",
|
13
|
+
"url": "https://api.github.com/users/joearasin",
|
14
|
+
"id": 3767
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"avatar_url": "https://secure.gravatar.com/avatar/4151a046d8e438a1631a9dd91f33c803?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
18
|
+
"gravatar_id": "4151a046d8e438a1631a9dd91f33c803",
|
19
|
+
"login": "webiest",
|
20
|
+
"url": "https://api.github.com/users/webiest",
|
21
|
+
"id": 10476
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"avatar_url": "https://secure.gravatar.com/avatar/57b01ce246316b789dcc48eaa5a52c38?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
25
|
+
"gravatar_id": "57b01ce246316b789dcc48eaa5a52c38",
|
26
|
+
"login": "burritovoltron",
|
27
|
+
"url": "https://api.github.com/users/burritovoltron",
|
28
|
+
"id": 103470
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"avatar_url": "https://secure.gravatar.com/avatar/f408a65f2087f77973910a2cadabbc6d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
32
|
+
"gravatar_id": "f408a65f2087f77973910a2cadabbc6d",
|
33
|
+
"login": "kevn",
|
34
|
+
"url": "https://api.github.com/users/kevn",
|
35
|
+
"id": 15676
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"avatar_url": "https://secure.gravatar.com/avatar/074d18f816c0eef8468da7cde2d81dcd?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
39
|
+
"gravatar_id": "074d18f816c0eef8468da7cde2d81dcd",
|
40
|
+
"login": "kanevski",
|
41
|
+
"url": "https://api.github.com/users/kanevski",
|
42
|
+
"id": 59267
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"avatar_url": "https://secure.gravatar.com/avatar/b6ddac83c489cb2fe1d072a5e0ffa124?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
46
|
+
"gravatar_id": "b6ddac83c489cb2fe1d072a5e0ffa124",
|
47
|
+
"login": "pk",
|
48
|
+
"url": "https://api.github.com/users/pk",
|
49
|
+
"id": 14301
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"avatar_url": "https://secure.gravatar.com/avatar/3cd8add6bfd84c56eb92ab22a22a6de2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
53
|
+
"gravatar_id": "3cd8add6bfd84c56eb92ab22a22a6de2",
|
54
|
+
"login": "mmcgrana",
|
55
|
+
"url": "https://api.github.com/users/mmcgrana",
|
56
|
+
"id": 2432
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"avatar_url": "https://secure.gravatar.com/avatar/b74e5610efa082944d3200c13a5d92e9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
60
|
+
"gravatar_id": "b74e5610efa082944d3200c13a5d92e9",
|
61
|
+
"login": "intelliot",
|
62
|
+
"url": "https://api.github.com/users/intelliot",
|
63
|
+
"id": 81505
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"avatar_url": "https://secure.gravatar.com/avatar/023ae16f906f11189baa874b0c36aca1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
67
|
+
"gravatar_id": "023ae16f906f11189baa874b0c36aca1",
|
68
|
+
"login": "trafnar",
|
69
|
+
"url": "https://api.github.com/users/trafnar",
|
70
|
+
"id": 6732
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"avatar_url": "https://secure.gravatar.com/avatar/1b0913ce73ee61d8305608037bcc4a0a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
74
|
+
"gravatar_id": "1b0913ce73ee61d8305608037bcc4a0a",
|
75
|
+
"login": "hoverbird",
|
76
|
+
"url": "https://api.github.com/users/hoverbird",
|
77
|
+
"id": 279
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"avatar_url": "https://secure.gravatar.com/avatar/ed64926147995b3fce2ed2bc04f94537?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
81
|
+
"gravatar_id": "ed64926147995b3fce2ed2bc04f94537",
|
82
|
+
"login": "collin",
|
83
|
+
"url": "https://api.github.com/users/collin",
|
84
|
+
"id": 7783
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"avatar_url": "https://secure.gravatar.com/avatar/29eeded35880f6999ea06ba788476b28?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
88
|
+
"gravatar_id": "29eeded35880f6999ea06ba788476b28",
|
89
|
+
"login": "ryanemmm",
|
90
|
+
"url": "https://api.github.com/users/ryanemmm",
|
91
|
+
"id": 100411
|
92
|
+
},
|
93
|
+
{
|
94
|
+
"avatar_url": "https://secure.gravatar.com/avatar/c7e2ce5b40f683dfb6c1bdf5e6af0c72?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
95
|
+
"gravatar_id": "c7e2ce5b40f683dfb6c1bdf5e6af0c72",
|
96
|
+
"login": "joshbuddy",
|
97
|
+
"url": "https://api.github.com/users/joshbuddy",
|
98
|
+
"id": 8898
|
99
|
+
},
|
100
|
+
{
|
101
|
+
"avatar_url": "https://secure.gravatar.com/avatar/33fa6a2d8baf81dfaec946b6a1e6aae5?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
102
|
+
"gravatar_id": "33fa6a2d8baf81dfaec946b6a1e6aae5",
|
103
|
+
"login": "jaigouk",
|
104
|
+
"url": "https://api.github.com/users/jaigouk",
|
105
|
+
"id": 6720
|
106
|
+
},
|
107
|
+
{
|
108
|
+
"avatar_url": "https://secure.gravatar.com/avatar/974dfefd383e9a95d65da3400df373e6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
109
|
+
"gravatar_id": "974dfefd383e9a95d65da3400df373e6",
|
110
|
+
"login": "dianakimball",
|
111
|
+
"url": "https://api.github.com/users/dianakimball",
|
112
|
+
"id": 153317
|
113
|
+
},
|
114
|
+
{
|
115
|
+
"avatar_url": "https://secure.gravatar.com/avatar/7f67a350859f0ab846c91afa1f66cc4f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
116
|
+
"gravatar_id": "7f67a350859f0ab846c91afa1f66cc4f",
|
117
|
+
"login": "jamiew",
|
118
|
+
"url": "https://api.github.com/users/jamiew",
|
119
|
+
"id": 1903
|
120
|
+
},
|
121
|
+
{
|
122
|
+
"avatar_url": "https://secure.gravatar.com/avatar/bb108e4ccd3d3d79350b167b62e2db2a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
123
|
+
"gravatar_id": "bb108e4ccd3d3d79350b167b62e2db2a",
|
124
|
+
"login": "bry4n",
|
125
|
+
"url": "https://api.github.com/users/bry4n",
|
126
|
+
"id": 73400
|
127
|
+
},
|
128
|
+
{
|
129
|
+
"avatar_url": "https://secure.gravatar.com/avatar/22c07ebd300e450d75e9e9ee9e974793?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
130
|
+
"gravatar_id": "22c07ebd300e450d75e9e9ee9e974793",
|
131
|
+
"login": "bumi",
|
132
|
+
"url": "https://api.github.com/users/bumi",
|
133
|
+
"id": 318
|
134
|
+
},
|
135
|
+
{
|
136
|
+
"avatar_url": "https://secure.gravatar.com/avatar/258773b239789d2ac268d5d5fa23198a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
137
|
+
"gravatar_id": "258773b239789d2ac268d5d5fa23198a",
|
138
|
+
"login": "timtrueman",
|
139
|
+
"url": "https://api.github.com/users/timtrueman",
|
140
|
+
"id": 20725
|
141
|
+
},
|
142
|
+
{
|
143
|
+
"avatar_url": "https://secure.gravatar.com/avatar/49e8a75b7e9c4c8b30c00bdc9eda0533?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
144
|
+
"gravatar_id": "49e8a75b7e9c4c8b30c00bdc9eda0533",
|
145
|
+
"login": "diegorv",
|
146
|
+
"url": "https://api.github.com/users/diegorv",
|
147
|
+
"id": 24455
|
148
|
+
},
|
149
|
+
{
|
150
|
+
"avatar_url": "https://secure.gravatar.com/avatar/3f5d173a9cc051b60305646dbf5d2916?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
151
|
+
"gravatar_id": "3f5d173a9cc051b60305646dbf5d2916",
|
152
|
+
"login": "gleuch",
|
153
|
+
"url": "https://api.github.com/users/gleuch",
|
154
|
+
"id": 9039
|
155
|
+
},
|
156
|
+
{
|
157
|
+
"avatar_url": "https://secure.gravatar.com/avatar/a5e507a14ed7b8f9a5d88b9fa86bed18?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
158
|
+
"gravatar_id": "a5e507a14ed7b8f9a5d88b9fa86bed18",
|
159
|
+
"login": "demet8",
|
160
|
+
"url": "https://api.github.com/users/demet8",
|
161
|
+
"id": 165866
|
162
|
+
},
|
163
|
+
{
|
164
|
+
"avatar_url": "https://secure.gravatar.com/avatar/e34dfbb343e2913dd9e77a7d4e883e60?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
165
|
+
"gravatar_id": "e34dfbb343e2913dd9e77a7d4e883e60",
|
166
|
+
"login": "deepthawtz",
|
167
|
+
"url": "https://api.github.com/users/deepthawtz",
|
168
|
+
"id": 31030
|
169
|
+
},
|
170
|
+
{
|
171
|
+
"avatar_url": "https://secure.gravatar.com/avatar/8ff2e3d23012979b285f97c33c8f43ba?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
172
|
+
"gravatar_id": "8ff2e3d23012979b285f97c33c8f43ba",
|
173
|
+
"login": "reddavis",
|
174
|
+
"url": "https://api.github.com/users/reddavis",
|
175
|
+
"id": 3002
|
176
|
+
},
|
177
|
+
{
|
178
|
+
"avatar_url": "https://secure.gravatar.com/avatar/1ccb5123d1af92e24b32cec62abcf9a8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
179
|
+
"gravatar_id": "1ccb5123d1af92e24b32cec62abcf9a8",
|
180
|
+
"login": "jackdempsey",
|
181
|
+
"url": "https://api.github.com/users/jackdempsey",
|
182
|
+
"id": 479
|
183
|
+
},
|
184
|
+
{
|
185
|
+
"avatar_url": "https://secure.gravatar.com/avatar/e841415081a623b7f4d2cf02ae2320a2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
186
|
+
"gravatar_id": "e841415081a623b7f4d2cf02ae2320a2",
|
187
|
+
"login": "aaronblohowiak",
|
188
|
+
"url": "https://api.github.com/users/aaronblohowiak",
|
189
|
+
"id": 29454
|
190
|
+
},
|
191
|
+
{
|
192
|
+
"avatar_url": "https://secure.gravatar.com/avatar/6e3d1578114e5d3951a7f90579fff74c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
193
|
+
"gravatar_id": "6e3d1578114e5d3951a7f90579fff74c",
|
194
|
+
"login": "hasimo",
|
195
|
+
"url": "https://api.github.com/users/hasimo",
|
196
|
+
"id": 26832
|
197
|
+
},
|
198
|
+
{
|
199
|
+
"avatar_url": "https://secure.gravatar.com/avatar/777b569e52d0c3510308e314b220fd8e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
200
|
+
"gravatar_id": "777b569e52d0c3510308e314b220fd8e",
|
201
|
+
"login": "heycarsten",
|
202
|
+
"url": "https://api.github.com/users/heycarsten",
|
203
|
+
"id": 700
|
204
|
+
},
|
205
|
+
{
|
206
|
+
"avatar_url": "https://secure.gravatar.com/avatar/33c797b50c0863be6dc6853bc84a0d2b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
|
207
|
+
"gravatar_id": "33c797b50c0863be6dc6853bc84a0d2b",
|
208
|
+
"login": "smallacts",
|
209
|
+
"url": "https://api.github.com/users/smallacts",
|
210
|
+
"id": 7128
|
211
|
+
}
|
212
|
+
]
|